我正try 在iOS中构建一个现有的Reaction-Native项目.这个项目用的是expo ,所以跑完yarn
,我就跑了npx expo prebuild
.然后我运行expo run:ios
并得到以下输出.我try 过直接清理和重新安装/ios
文件夹中的Pod,更改 node 版本,并删除Podfile.lock
.
☐编译日志(log):
❯ yarn ios
yarn run v1.22.19
$ expo run:ios
✔ Created native project | gitignore skipped
› Metro skipped: Project metro.config.js does not match prebuild template.
› Ensure the project uses expo/metro-config.
Learn more
✔ Updated package.json and added index.js entry point for iOS and Android
› Installing using yarn
> yarn install
✔ Config synced
✔ Installed pods and initialized Xcode workspace.
› Signing and building iOS app with: Apple Development: myemail@example.com (MY_APPLE_ID)
› Planning build
› Preparing Pods/expo-dev-menu-EXDevMenu » ResourceBundle-EXDevMenu-expo-dev-menu-Info.plist
› Preparing react-native Pods/React-Core-AccessibilityResources » ResourceBundle-AccessibilityResources-React-Core-Info.plist
› Preparing Pods/expo-dev-launcher-EXDevLauncher » ResourceBundle-EXDevLauncher-expo-dev-launcher-Info.plist
› Preparing Pods/RNImageCropPicker-QBImagePicker » ResourceBundle-QBImagePicker-RNImageCropPicker-Info.plist
› Preparing expo-updates Pods/EXUpdates-EXUpdates » ResourceBundle-EXUpdates-EXUpdates-Info.plist
› Preparing expo-constants Pods/EXConstants-EXConstants » ResourceBundle-EXConstants-EXConstants-Info.plist
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/Base.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/Base.lproj
› Preparing Pods/TOCropViewController-TOCropViewControllerBundle » ResourceBundle-TOCropViewControllerBundle-TOCropViewController-Info.plist
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/zh-Hant.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/zh-Hant.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/zh-Hans.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/zh-Hans.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/vi.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/vi.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/ru.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/ru.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/tr.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/tr.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/ro.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/ro.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/sk.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/sk.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/pt.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/pt.lproj
› Executing react-native Pods/hermes-engine » [CP] Copy XCFrameworks
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/pt-BR.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/pt-BR.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/pl.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/pl.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/nl.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/nl.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/ms.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/ms.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/ko.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/ko.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/ja.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/ja.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/it.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/it.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/id.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/id.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/hu.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/hu.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/fr.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/fr.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/fi.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/fi.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/fa.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/fa.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/fa-IR.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/fa-IR.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/es.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/es.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/en.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/en.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/de.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/de.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/da-DK.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/da-DK.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/ca.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/ca.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/cs.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/cs.lproj
› Copying TOCropViewController/TOCropViewControllerBundle.bundle/ar.lproj ➜ ios/Pods/TOCropViewController/Objective-C/TOCropViewController/Resources/ar.lproj
› Compiling expo-image Pods/libaom » wedge_utils.c
› Compiling expo-image Pods/libaom » yv12config.c
› Compiling expo-image Pods/libaom » yv12extend.c
› Compiling expo-image Pods/libaom » vmaf.c
› Compiling expo-image Pods/libaom » warped_motion.c
› Compiling expo-image Pods/libaom » variance.c
--- expo-image COMPILATION LOGS CONT ---
› Compiling react-native Pods/libevent » strlcpy.c
› Compiling react-native Pods/libevent » signal.c
› Compiling react-native Pods/libevent » select.c
› Compiling react-native Pods/libevent » poll.c
› Compiling react-native Pods/libevent » log.c
› Compiling react-native Pods/libevent » listener.c
› Compiling react-native Pods/libevent » libevent-dummy.m
› Compiling react-native Pods/libevent » kqueue.c
› Compiling react-native Pods/libevent » http.c
› Compiling react-native Pods/libevent » evutil_time.c
› Compiling react-native Pods/libevent » evutil_rand.c
› Compiling react-native Pods/libevent » evutil.c
› Compiling react-native Pods/libevent » evthread.c
› Compiling react-native Pods/libevent » evrpc.c
› Compiling react-native Pods/libevent » evmap.c
› Compiling react-native Pods/libevent » event_tagging.c
› Compiling react-native Pods/libevent » event.c
› Compiling react-native Pods/libevent » evdns.c
› Compiling react-native Pods/libevent » bufferevent_sock.c
› Compiling react-native Pods/libevent » bufferevent_ratelim.c
› Compiling react-native Pods/libevent » bufferevent_pair.c
› Compiling react-native Pods/libevent » bufferevent_filter.c
› Compiling react-native Pods/libevent » bufferevent.c
› Compiling react-native Pods/libevent » buffer.c
› Compiling expo-image Pods/libavif » write.c
› Compiling expo-image Pods/libavif » utils.c
› Compiling expo-image Pods/libavif » stream.c
-- expo-image COMPILATION LOGS CONT ---
› Compiling react-native Pods/glog » vlog_is_on.cc
› Compiling react-native Pods/glog » utilities.cc
› Compiling react-native Pods/glog » symbolize.cc
› Compiling rn-fetch-blob Pods/rn-fetch-blob » rn-fetch-blob-dummy.m
› Compiling rn-fetch-blob Pods/rn-fetch-blob » RNFetchBlobRequest.m
› Compiling rn-fetch-blob Pods/rn-fetch-blob » RNFetchBlobFS.m
› Compiling rn-fetch-blob Pods/rn-fetch-blob » RNFetchBlobConst.m
› Compiling rn-fetch-blob Pods/rn-fetch-blob » RNFetchBlob.m
› Compiling react-native-splash-screen Pods/react-native-splash-screen » react-native-splash-screen-dummy.m
› Compiling react-native-splash-screen Pods/react-native-splash-screen » RNSplashScreen.m
› Compiling react-native-safe-area-context Pods/react-native-safe-area-context » react-native-safe-area-context-dummy.m
› Compiling react-native-safe-area-context Pods/react-native-safe-area-context » RNCSafeAreaViewMode.m
› Compiling react-native-pager-view Pods/react-native-pager-view » UIViewController+CreateExtension.m
› Compiling react-native-pager-view Pods/react-native-pager-view » ReactViewPagerManager.m
› Compiling react-native Pods/glog » signalhandler.cc
› Compiling react-native Pods/glog » raw_logging.cc
› Compiling react-native-image-crop-picker Pods/TOCropViewController » UIImage+CropRotate.m
› Compiling react-native-image-crop-picker Pods/TOCropViewController » TOCroppedImageAttributes.m
› Compiling react-native-image-crop-picker Pods/TOCropViewController » TOCropViewControllerTransitioning.m
› Compiling react-native-image-crop-picker Pods/TOCropViewController » TOCropViewController.m
› Compiling react-native-image-crop-picker Pods/TOCropViewController » TOCropViewController-dummy.m
› Compiling react-native-image-crop-picker Pods/TOCropViewController » TOCropView.m
› Compiling react-native-image-crop-picker Pods/TOCropViewController » TOCropToolbar.m
› Compiling react-native-image-crop-picker Pods/TOCropViewController » TOCropScrollView.m
› Compiling react-native-image-crop-picker Pods/TOCropViewController » TOCropOverlayView.m
› Compiling react-native-image-crop-picker Pods/TOCropViewController » TOActivityCroppedImageProvider.m
› Packaging react-native Pods/Yoga » libYoga.a
› Compiling Pods/Sentry » fishhook.c
› Compiling Pods/Sentry » UIViewController+Sentry.m
› Compiling Pods/Sentry » UIView+Sentry.m
› Compiling Pods/Sentry » SentryViewHierarchyIntegration.m
› Compiling Pods/Sentry » SentryViewHierarchy.m
› Compiling Pods/Sentry » SentryUserFeedback.m
› Compiling Pods/Sentry » SentryUser.m
› Compiling Pods/Sentry » SentryUIViewControllerSwizzling.m
› Packaging react-native-image-crop-picker Pods/TOCropViewController » libTOCropViewController.a
--- Pods/Sentry COMPILATION LOGS CONT ---
› Packaging Pods/Sentry » libSentry.a
_
› Compiling expo-image Pods/SDWebImageAVIFCoder » Conversion.m
❌ (/my-app/ios/Pods/SDWebImageAVIFCoder/SDWebImageAVIFCoder/Classes/Conversion.m:158:28)
156 | state->biasY = (state->yuvRange == AVIF_RANGE_LIMITED) ? (float)(16 << (state->yuvDepth - 8)) : 0.0f;
157 | state->biasUV = (float)(1 << (state->yuvDepth - 1));
> 158 | state->biasA = (image->alphaRange == AVIF_RANGE_LIMITED) ? (float)(16 << (state->yuvDepth - 8)) : 0.0f;
| ^ no member named 'alphaRange' in 'struct avifImage'; did you mean 'alphaPlane'?
159 | state->rangeY = (float)((state->yuvRange == AVIF_RANGE_LIMITED) ? (219 << (state->yuvDepth - 8)) : state->yuvMaxChannel);
160 | state->rangeUV = (float)((state->yuvRange == AVIF_RANGE_LIMITED) ? (224 << (state->yuvDepth - 8)) : state->yuvMaxChannel);
161 | state->rangeA = (float)((image->alphaRange == AVIF_RANGE_LIMITED) ? (219 << (state->yuvDepth - 8)) : state->yuvMaxChannel);
❌ (/my-app/ios/Pods/SDWebImageAVIFCoder/SDWebImageAVIFCoder/Classes/Conversion.m:158:12)
156 | state->biasY = (state->yuvRange == AVIF_RANGE_LIMITED) ? (float)(16 << (state->yuvDepth - 8)) : 0.0f;
157 | state->biasUV = (float)(1 << (state->yuvDepth - 1));
> 158 | state->biasA = (image->alphaRange == AVIF_RANGE_LIMITED) ? (float)(16 << (state->yuvDepth - 8)) : 0.0f;
| ^ no member named 'biasA' in 'struct avifReformatState'; did you mean 'biasY'?
159 | state->rangeY = (float)((state->yuvRange == AVIF_RANGE_LIMITED) ? (219 << (state->yuvDepth - 8)) : state->yuvMaxChannel);
160 | state->rangeUV = (float)((state->yuvRange == AVIF_RANGE_LIMITED) ? (224 << (state->yuvDepth - 8)) : state->yuvMaxChannel);
161 | state->rangeA = (float)((image->alphaRange == AVIF_RANGE_LIMITED) ? (219 << (state->yuvDepth - 8)) : state->yuvMaxChannel);
❌ (/my-app/ios/Pods/SDWebImageAVIFCoder/SDWebImageAVIFCoder/Classes/Conversion.m:161:37)
159 | state->rangeY = (float)((state->yuvRange == AVIF_RANGE_LIMITED) ? (219 << (state->yuvDepth - 8)) : state->yuvMaxChannel);
160 | state->rangeUV = (float)((state->yuvRange == AVIF_RANGE_LIMITED) ? (224 << (state->yuvDepth - 8)) : state->yuvMaxChannel);
> 161 | state->rangeA = (float)((image->alphaRange == AVIF_RANGE_LIMITED) ? (219 << (state->yuvDepth - 8)) : state->yuvMaxChannel);
| ^ no member named 'alphaRange' in 'struct avifImage'; did you mean 'alphaPlane'?
162 |
163 | uint32_t cpCount = 1 << image->depth;
164 | if (state->mode == AVIF_REFORMAT_MODE_IDENTITY) {
❌ (/my-app/ios/Pods/SDWebImageAVIFCoder/SDWebImageAVIFCoder/Classes/Conversion.m:161:12)
159 | state->rangeY = (float)((state->yuvRange == AVIF_RANGE_LIMITED) ? (219 << (state->yuvDepth - 8)) : state->yuvMaxChannel);
160 | state->rangeUV = (float)((state->yuvRange == AVIF_RANGE_LIMITED) ? (224 << (state->yuvDepth - 8)) : state->yuvMaxChannel);
> 161 | state->rangeA = (float)((image->alphaRange == AVIF_RANGE_LIMITED) ? (219 << (state->yuvDepth - 8)) : state->yuvMaxChannel);
| ^ no member named 'rangeA' in 'struct avifReformatState'; did you mean 'rangeY'?
162 |
163 | uint32_t cpCount = 1 << image->depth;
164 | if (state->mode == AVIF_REFORMAT_MODE_IDENTITY) {
❌ (/my-app/ios/Pods/SDWebImageAVIFCoder/SDWebImageAVIFCoder/Classes/Conversion.m:570:18)
568 | if(hasAlpha) { // alpha
569 | vImage_Buffer alphaBuffer = {0};
> 570 | if(avif->alphaRange == AVIF_RANGE_LIMITED) {
| ^ no member named 'alphaRange' in 'struct avifImage'; did you mean 'alphaPlane'?
571 | float* floatAlphaBufferData = NULL;
572 | floatAlphaBufferData = calloc(avif->width * avif->height, sizeof(float));
573 | scaledAlphaBufferData = calloc(avif->width * avif->height, sizeof(uint8_t));
❌ (/my-app/ios/Pods/SDWebImageAVIFCoder/SDWebImageAVIFCoder/Classes/Conversion.m:865:22)
863 | float rangeMax = 0.0f;
864 | if(avif->depth == 10) {
> 865 | if(avif->alphaRange == AVIF_RANGE_LIMITED) {
| ^ no member named 'alphaRange' in 'struct avifImage'; did you mean 'alphaPlane'?
866 | offset = 64.0f;
867 | rangeMax = 940.0f;
868 | } else {
❌ (/my-app/ios/Pods/SDWebImageAVIFCoder/SDWebImageAVIFCoder/Classes/Conversion.m:873:22)
871 | }
872 | } else if(avif->depth == 12) {
> 873 | if(avif->alphaRange == AVIF_RANGE_LIMITED) {
| ^ no member named 'alphaRange' in 'struct avifImage'; did you mean 'alphaPlane'?
874 | offset = 256.0f;
875 | rangeMax = 3760.0f;
876 | } else {
› Compiling expo-image Pods/SDWebImageAVIFCoder » ColorSpace.m
› Compiling expo-image Pods/SDWebImage » UIView+WebCacheOperation.m
› Compiling expo-image Pods/SDWebImage » UIView+WebCache.m
› Compiling expo-image Pods/SDWebImage » UIImageView+WebCache.m
› Compiling expo-image Pods/SDWebImage » UIImageView+HighlightedWebCache.m
› Compiling expo-image Pods/SDWebImage » UIImage+Transform.m
› Compiling expo-image Pods/SDWebImage » UIImage+MultiFormat.m
› Compiling expo-image Pods/SDWebImage » UIImage+Metadata.m
⚠️警告:
Run script build phase '[CP-User] Generate app.manifest for expo-updates' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'EXUpdates' from project 'Pods')
Run script build phase 'Start Packager' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'MyApp' from project 'MyApp')
Run script build phase 'Bundle React Native code and images' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'MyApp' from project 'MyApp')
Run script build phase 'Upload Debug Symbols to Sentry' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'MyApp' from project 'MyApp')
Run script build phase '[CP-User] Generate app.config for prebuilt Constants.manifest' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'EXConstants' from project 'Pods')
› 7 error(s), and 5 warning(s)
CommandError: Failed to build iOS project. "xcodebuild" exited with error code 65.
error Command failed with exit code 1.
package.json
个
"scripts": {
"postinstall": "patch-package",
"prebuild": "expo prebuild",
"android": "expo run:android",
"ios": "expo run:ios",
"web": "expo start --web",
"build-web": "expo export:web && node ./scripts/post-web-build.js && cp --verbose ./web-build/static/js/*.* ./bskyweb/static/js/",
"start": "expo start --dev-client",
"clean-cache": "rm -rf node_modules/.cache/babel-loader/*",
"test": "jest --forceExit --testTimeout=20000 --bail",
"test-watch": "jest --watchAll",
"test-ci": "jest --ci --forceExit --reporters=default --reporters=jest-junit",
"test-coverage": "jest --coverage",
"lint": "eslint ./src --ext .js,.jsx,.ts,.tsx",
"e2e:mock-server": "ts-node __e2e__/mock-server.ts",
"e2e:metro": "RN_SRC_EXT=e2e.ts,e2e.tsx expo run:ios",
"e2e:build": "detox build -c ios.sim.debug",
"e2e:run": "detox test --configuration ios.sim.debug --take-screenshots all"
},
"dependencies": {
"@atproto/api": "0.3.3",
"@bam.tech/react-native-image-resizer": "^3.0.4",
"@braintree/sanitize-url": "^6.0.2",
"@expo/webpack-config": "^18.0.1",
"@fortawesome/fontawesome-svg-core": "^6.1.1",
"@fortawesome/free-regular-svg-icons": "^6.1.1",
"@fortawesome/free-solid-svg-icons": "^6.1.1",
"@fortawesome/react-native-fontawesome": "^0.3.0",
"@gorhom/bottom-sheet": "^4",
"@mattermost/react-native-paste-input": "^0.6.0",
"@miblanchard/react-native-slider": "^2.2.0",
"@notifee/react-native": "^7.4.0",
"@react-native-async-storage/async-storage": "^1.17.6",
"@react-native-camera-roll/camera-roll": "^5.2.2",
"@react-native-clipboard/clipboard": "^1.10.0",
"@react-native-community/blur": "^4.3.0",
"@react-native-community/datetimepicker": "6.7.3",
"@react-navigation/bottom-tabs": "^6.5.7",
"@react-navigation/drawer": "^6.6.2",
"@react-navigation/native": "^6.1.6",
"@react-navigation/native-stack": "^6.9.12",
"@segment/analytics-next": "^1.51.3",
"@segment/analytics-react": "^1.0.0-rc1",
"@segment/analytics-react-native": "^2.10.1",
"@segment/sovran-react-native": "^0.4.5",
"@sentry/react-native": "4.13.0",
"@tiptap/core": "^2.0.0-beta.220",
"@tiptap/extension-document": "^2.0.0-beta.220",
"@tiptap/extension-hard-break": "^2.0.3",
"@tiptap/extension-history": "^2.0.3",
"@tiptap/extension-link": "^2.0.0-beta.220",
"@tiptap/extension-mention": "^2.0.0-beta.220",
"@tiptap/extension-paragraph": "^2.0.0-beta.220",
"@tiptap/extension-placeholder": "^2.0.0-beta.220",
"@tiptap/extension-text": "^2.0.0-beta.220",
"@tiptap/pm": "^2.0.0-beta.220",
"@tiptap/react": "^2.0.0-beta.220",
"@tiptap/suggestion": "^2.0.0-beta.220",
"@types/node": "^18.16.2",
"@zxing/text-encoding": "^0.9.0",
"await-lock": "^2.2.2",
"base64-js": "^1.5.1",
"email-validator": "^2.0.4",
"eslint-plugin-react-native-a11y": "^3.3.0",
"expo": "~48.0.15",
"expo-application": "~5.1.1",
"expo-build-properties": "~0.5.1",
"expo-camera": "~13.2.1",
"expo-constants": "~14.2.1",
"expo-dev-client": "~2.1.1",
"expo-device": "~5.2.1",
"expo-image": "^1.2.1",
"expo-image-manipulator": "^11.1.1",
"expo-image-picker": "^14.1.1",
"expo-localization": "~14.1.1",
"expo-media-library": "~15.2.3",
"expo-sharing": "~11.2.2",
"expo-splash-screen": "~0.18.2",
"expo-status-bar": "~1.4.4",
"expo-system-ui": "~2.2.1",
"expo-updates": "~0.16.4",
"fast-text-encoding": "^1.0.6",
"graphemer": "^1.4.0",
"he": "^1.2.0",
"history": "^5.3.0",
"js-sha256": "^0.9.0",
"lande": "^1.0.10",
"lodash.chunk": "^4.2.0",
"lodash.clonedeep": "^4.5.0",
"lodash.debounce": "^4.0.8",
"lodash.isequal": "^4.5.0",
"lodash.omit": "^4.5.0",
"lodash.samplesize": "^4.2.0",
"lodash.set": "^4.3.2",
"lodash.shuffle": "^4.2.0",
"lru_map": "^0.4.1",
"mobx": "^6.6.1",
"mobx-react-lite": "^3.4.0",
"mobx-utils": "^6.0.6",
"normalize-url": "^8.0.0",
"patch-package": "^6.5.1",
"postinstall-postinstall": "^2.1.0",
"react": "18.2.0",
"react-avatar-editor": "^13.0.0",
"react-circular-progressbar": "^2.1.0",
"react-dom": "^18.2.0",
"react-native": "0.71.7",
"react-native-appstate-hook": "^1.0.6",
"react-native-background-fetch": "^4.1.8",
"react-native-drawer-layout": "^3.2.0",
"react-native-fs": "^2.20.0",
"react-native-gesture-handler": "~2.9.0",
"react-native-get-random-values": "^1.8.0",
"react-native-haptic-feedback": "^1.14.0",
"react-native-image-crop-picker": "^0.38.1",
"react-native-inappbrowser-reborn": "^3.6.3",
"react-native-linear-gradient": "^2.6.2",
"react-native-pager-view": "6.1.4",
"react-native-progress": "bluesky-social/react-native-progress",
"react-native-reanimated": "~2.14.4",
"react-native-root-siblings": "^4.1.1",
"react-native-safe-area-context": "^4.4.1",
"react-native-screens": "^3.13.1",
"react-native-splash-screen": "^3.3.0",
"react-native-svg": "13.4.0",
"react-native-url-polyfill": "^1.3.0",
"react-native-uuid": "^2.0.1",
"react-native-version-number": "^0.3.6",
"react-native-web": "^0.18.11",
"react-native-web-linear-gradient": "^1.1.2",
"react-responsive": "^9.0.2",
"rn-fetch-blob": "^0.12.0",
"sentry-expo": "~6.1.0",
"tippy.js": "^6.3.7",
"tlds": "^1.234.0",
"zod": "^3.20.2"
},
"devDependencies": {
"@atproto/pds": "^0.1.8",
"@babel/core": "^7.20.0",
"@babel/preset-env": "^7.20.0",
"@babel/runtime": "^7.20.0",
"@did-plc/server": "^0.0.1",
"@react-native-community/eslint-config": "^3.0.0",
"@testing-library/jest-native": "^5.4.1",
"@testing-library/react-native": "^11.5.2",
"@tsconfig/react-native": "^2.0.3",
"@types/he": "^1.1.2",
"@types/jest": "^29.4.0",
"@types/lodash.chunk": "^4.2.7",
"@types/lodash.clonedeep": "^4.5.7",
"@types/lodash.debounce": "^4.0.7",
"@types/lodash.isequal": "^4.5.6",
"@types/lodash.omit": "^4.5.7",
"@types/lodash.samplesize": "^4.2.7",
"@types/lodash.set": "^4.3.7",
"@types/lodash.shuffle": "^4.2.7",
"@types/react-avatar-editor": "^13.0.0",
"@types/react-native": "^0.67.3",
"@types/react-responsive": "^8.0.5",
"@types/react-test-renderer": "^17.0.1",
"@typescript-eslint/eslint-plugin": "^5.48.2",
"@typescript-eslint/parser": "^5.48.2",
"babel-jest": "^29.4.2",
"babel-loader": "^9.1.2",
"babel-plugin-module-resolver": "^5.0.0",
"babel-plugin-react-native-web": "^0.18.12",
"detox": "^20.1.2",
"eslint": "^8.19.0",
"eslint-plugin-detox": "^1.0.0",
"eslint-plugin-ft-flow": "^2.0.3",
"html-webpack-plugin": "^5.5.0",
"jest": "^29.4.3",
"jest-expo": "^48.0.2",
"jest-junit": "^15.0.0",
"metro-react-native-babel-preset": "^0.73.7",
"prettier": "^2.8.3",
"react-native-dotenv": "^3.3.1",
"react-scripts": "^5.0.1",
"react-test-renderer": "18.2.0",
"ts-node": "^10.9.1",
"typescript": "^4.4.4",
"url-loader": "^4.1.1",
"webpack": "^5.75.0",
"webpack-cli": "^5.0.1",
"webpack-dev-server": "^4.11.1"
},
"resolutions": {
"@types/react": "^17"
},
"jest": {
"preset": "jest-expo/ios",
"setupFilesAfterEnv": [
"./jest/jestSetup.js",
"@testing-library/jest-native/extend-expect"
],
"moduleFileExtensions": [
"ts",
"tsx",
"js",
"jsx",
"json",
"node"
],
"transformIgnorePatterns": [
"node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|normalize-url|react-native-svg|@sentry/.*|sentry-expo)"
],
"modulePathIgnorePatterns": [
"__tests__/.*/__mocks__",
"__e2e__/.*"
],
"coveragePathIgnorePatterns": [
"<rootDir>/node_modules/",
"<rootDir>/src/platform",
"<rootDir>/src/third-party",
"<rootDir>/src/view/com/util",
"<rootDir>/src/state/lib",
"<rootDir>/__tests__/test-utils.js"
],
"reporters": [
"default",
"jest-junit"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}