From 279313623576e03ab341deab04adcb78ebc7f71e Mon Sep 17 00:00:00 2001 From: Ronen Mars Date: Sat, 25 Jul 2026 23:36:34 +0300 Subject: [PATCH] fix(ios): align expo module set to SDK 57.0.8 and gate dyld symbols Build 173 crashed at launch on every device with EXC_CRASH (SIGABRT) / "DYLD 4 Symbol missing": ExpoCamera 57.0.1 referenced AnyModule._decorateExpoObject(object:in:appContext:), but the bundled ExpoModulesCore 57.0.7 renamed that protocol requirement to the two-argument _decorateModule(object:in:). The skew came from #412, which pinned expo-modules-core forward to 57.0.7 via npm overrides to get ColorCompat for the Android R8 minify step, without moving the rest of the Expo module set with it. ExpoModulesCore ships as a precompiled xcframework, so the mismatch was invisible at compile time and only surfaced in dyld. Bump expo to 57.0.8 and align all 22 expo-*/@expo/* modules to that SDK's bundled native module set, which supplies expo-modules-core 57.0.7 legitimately and moves expo-camera to 57.0.3. The override is now redundant and is removed; the Android ColorCompat fix is preserved because core stays at 57.0.7. Also bump react-native-screens to 4.26.2 to match what expo-router 57.0.8 requires, removing a duplicate nested copy. expo-image-manipulator was still on 57.0.1 and referenced the same missing symbol, so the original fix was incomplete. Add two guardrails, both verified against a real Release build: - scripts/verify-dyld-symbols.sh resolves every cross-framework symbol in the archive before altool upload, so a launch-crashing build cannot reach TestFlight. - npm run check:native-deps fails CI on duplicate native modules, which is the npm-level shape of this bug. --- .github/workflows/test.yml | 21 + ios/Podfile.lock | 202 +++-- package-lock.json | 1545 +++++++++++++++++++------------- package.json | 54 +- scripts/archive-and-upload.sh | 6 + scripts/check-native-deps.js | 60 ++ scripts/verify-dyld-symbols.sh | 105 +++ 7 files changed, 1230 insertions(+), 763 deletions(-) create mode 100644 scripts/check-native-deps.js create mode 100755 scripts/verify-dyld-symbols.sh diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 998e5619..c96763a5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -167,6 +167,27 @@ jobs: with: run: npm run test:i18n + # ── Native dependency coherence ────────────────────────────────────────────── + # Two versions of one native module resolve fine for npm and compile fine for + # Xcode, then abort at launch in dyld with "Symbol not found" — a pod built + # against one version of a shared dependency against a different version of it + # bundled. TestFlight build 173 shipped that way (expo-camera 57.0.1 against + # expo-modules-core 57.0.7) and crashed on every launch with a green CI. + # `expo-doctor` catches the duplicate at the npm level in seconds, on Linux; + # `scripts/verify-dyld-symbols.sh` is the belt-and-braces check at ship time. + native-deps: + name: Native deps + runs-on: ubuntu-latest + needs: [gate, setup] + steps: + - uses: actions/checkout@v5 + + - name: Duplicate native modules + if: needs.gate.outputs.skip != 'true' + uses: ./.github/actions/run-ci + with: + run: npm run check:native-deps + # ── Maestro E2E (iOS sim, monthly schedule only) ───────────────────────────── # Runs once per month (00:00 UTC on the 1st) via the schedule trigger above. # The macOS runner + iOS app build is ~15 minutes and ~$3/run, so this acts diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 54776a61..4ef95f04 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -21,16 +21,16 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - EASClient (57.0.0): + - EASClient (57.0.1): - ExpoModulesCore - - EXApplication (57.0.0): + - EXApplication (57.0.2): - ExpoModulesCore - - EXConstants (57.0.2): + - EXConstants (57.0.7): - ExpoModulesCore - - EXJSONUtils (57.0.0) - - EXManifests (57.0.0): + - EXJSONUtils (57.0.1) + - EXManifests (57.0.1): - ExpoModulesCore - - Expo (57.0.1): + - Expo (57.0.8): - ExpoModulesCore - ExpoModulesJSI - hermes-engine @@ -56,15 +56,15 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-client (57.0.3): + - expo-dev-client (57.0.9): - EXManifests - expo-dev-launcher - expo-dev-menu - expo-dev-menu-interface - EXUpdatesInterface - - expo-dev-launcher (57.0.3): + - expo-dev-launcher (57.0.9): - EXManifests - - expo-dev-launcher/Main (= 57.0.3) + - expo-dev-launcher/Main (= 57.0.9) - expo-dev-menu - expo-dev-menu-interface - ExpoModulesCore @@ -93,7 +93,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-launcher/Main (57.0.3): + - expo-dev-launcher/Main (57.0.9): - EXManifests - expo-dev-launcher/Unsafe - expo-dev-menu @@ -124,7 +124,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-launcher/Unsafe (57.0.3): + - expo-dev-launcher/Unsafe (57.0.9): - EXManifests - expo-dev-menu - expo-dev-menu-interface @@ -154,8 +154,8 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - expo-dev-menu (57.0.3): - - expo-dev-menu/Main (= 57.0.3) + - expo-dev-menu (57.0.9): + - expo-dev-menu/Main (= 57.0.9) - hermes-engine - RCTRequired - RCTTypeSafety @@ -178,7 +178,7 @@ PODS: - ReactNativeDependencies - Yoga - expo-dev-menu-interface (57.0.0) - - expo-dev-menu/Main (57.0.3): + - expo-dev-menu/Main (57.0.9): - EXManifests - expo-dev-menu-interface - ExpoModulesCore @@ -204,47 +204,47 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - ExpoAsset (57.0.2): + - ExpoAsset (57.0.7): - ExpoModulesCore - - ExpoBlur (57.0.0): + - ExpoBlur (57.0.2): - ExpoModulesCore - - ExpoCamera (57.0.1): + - ExpoCamera (57.0.3): - ExpoModulesCore - - ExpoCameraBarcodeScanning (57.0.1): + - ExpoCameraBarcodeScanning (57.0.3): - ExpoCamera - - ExpoClipboard (57.0.0): + - ExpoClipboard (57.0.1): - ExpoModulesCore - - ExpoDevice (57.0.0): + - ExpoDevice (57.0.1): - ExpoModulesCore - - ExpoDocumentPicker (57.0.0): + - ExpoDocumentPicker (57.0.1): - ExpoModulesCore - - ExpoDomWebView (57.0.0): + - ExpoDomWebView (57.0.1): - ExpoModulesCore - - ExpoFileSystem (57.0.0): + - ExpoFileSystem (57.0.1): - ExpoModulesCore - - ExpoFont (57.0.0): + - ExpoFont (57.0.1): - ExpoModulesCore - - ExpoGlassEffect (57.0.0): + - ExpoGlassEffect (57.0.1): - ExpoModulesCore - - ExpoHaptics (57.0.0): + - ExpoHaptics (57.0.1): - ExpoModulesCore - - ExpoImageManipulator (57.0.1): + - ExpoImageManipulator (57.0.6): - ExpoModulesCore - - ExpoImagePicker (57.0.1): + - ExpoImagePicker (57.0.6): - ExpoModulesCore - - ExpoKeepAwake (57.0.0): + - ExpoKeepAwake (57.0.1): - ExpoModulesCore - - ExpoLinearGradient (57.0.0): + - ExpoLinearGradient (57.0.1): - ExpoModulesCore - - ExpoLinking (57.0.1): + - ExpoLinking (57.0.4): - ExpoModulesCore - - ExpoLocalAuthentication (57.0.0): + - ExpoLocalAuthentication (57.0.2): - ExpoModulesCore - - ExpoLocalization (57.0.0): + - ExpoLocalization (57.0.1): - ExpoModulesCore - - ExpoLogBox (57.0.0): + - ExpoLogBox (57.0.1): - React-Core - - ExpoMailComposer (57.0.0): + - ExpoMailComposer (57.0.1): - ExpoModulesCore - ExpoModulesCore (57.0.7): - ExpoModulesJSI @@ -281,27 +281,27 @@ PODS: - ExpoModulesJSI - ExpoModulesWorklets - RNWorklets - - ExpoNotifications (57.0.2): + - ExpoNotifications (57.0.7): - ExpoModulesCore - - ExpoRouter (57.0.4): + - ExpoRouter (57.0.8): - ExpoModulesCore - RNScreens - - ExpoSecureStore (57.0.0): + - ExpoSecureStore (57.0.1): - ExpoModulesCore - ExpoSpeechRecognition (56.0.1): - ExpoModulesCore - - ExpoSplashScreen (57.0.1): + - ExpoSplashScreen (57.0.5): - ExpoModulesCore - - ExpoSymbols (57.0.0): + - ExpoSymbols (57.0.1): - ExpoModulesCore - - ExpoSystemUI (57.0.0): + - ExpoSystemUI (57.0.1): - ExpoModulesCore - - ExpoUI (57.0.4): + - ExpoUI (57.0.7): - ExpoModulesCore - ExpoModulesWorklets - React-RCTFabric - EXStructuredHeaders (57.0.0) - - EXUpdates (57.0.4): + - EXUpdates (57.0.10): - EASClient - EXManifests - ExpoModulesCore @@ -329,7 +329,7 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - EXUpdatesInterface (57.0.0): + - EXUpdatesInterface (57.0.1): - ExpoModulesCore - FBLazyVector (0.86.0) - hermes-engine (250829098.0.14): @@ -1759,8 +1759,28 @@ PODS: - ReactCommon/turbomodule/core - ReactNativeDependencies - Yoga - - react-native-get-random-values (1.11.0): + - react-native-get-random-values (2.0.0): + - hermes-engine + - RCTRequired + - RCTTypeSafety - React-Core + - React-Core-prebuilt + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - Yoga - react-native-keyboard-controller (1.21.9): - hermes-engine - RCTRequired @@ -2460,7 +2480,7 @@ PODS: - ReactNativeDependencies - RNWorklets - Yoga - - RNScreens (4.25.2): + - RNScreens (4.26.2): - hermes-engine - RCTRequired - RCTTypeSafety @@ -2482,9 +2502,9 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - ReactNativeDependencies - - RNScreens/common (= 4.25.2) + - RNScreens/common (= 4.26.2) - Yoga - - RNScreens/common (4.25.2): + - RNScreens/common (4.26.2): - hermes-engine - RCTRequired - RCTTypeSafety @@ -3064,54 +3084,54 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: AsyncStorage: 163ab23f6aa37a58b7f2379d0b4ee7ac84d6655c - EASClient: 7d3aa729ae2cd433b5bc314a6d3543fad381fa1c - EXApplication: 7283a281903a90230466ab545ab87a8c48cf4e12 - EXConstants: ac0976f6962735f39a25730074869614cb1a5d85 - EXJSONUtils: 55eca2b6f8fc320cb36933cf45c4f2200a441589 - EXManifests: 66a0e4af8cdb58c0983d462d886136b6d56eee38 - Expo: 15f5a16e9369278c1781ad3aa17d364245703635 - expo-dev-client: c75c8b9f0cbea96a0959438102d7ce2b0ad49465 - expo-dev-launcher: 24fe56ae4a0754d7bffcce0ad5c8b16bf3c02d61 - expo-dev-menu: d592b33bf68fd8a672d43e857d290800cb6fe9e6 + EASClient: 81f44ce9f07ec3d01606507213d21510a5f97388 + EXApplication: bbd517d50878ca1d121fb3843392beb210181e28 + EXConstants: fa5647482320b7bde855057f8b86580456d4b9f0 + EXJSONUtils: 7a1683cfa2cbe6d11fca97097d51a496755b0287 + EXManifests: f9888c0bf5aaa6ddb7e3d4b224d6d54ac4ca84a4 + Expo: 4a3b7c95f7f7251c884c75699d60d653555ff9b9 + expo-dev-client: c638e315c5aff7b6c4147c45ffdf43aabfa1ae43 + expo-dev-launcher: c999a63ea4daa61bcc188568f2120c8983033226 + expo-dev-menu: adff9ec508e3c027a9d7c1b9e154b062cd501a8b expo-dev-menu-interface: 7a59e803916fbfd1b96c75ff91ea8dddac7e722f - ExpoAsset: f9f1fc226653b9f7ab995873d9b4f929d2a916c7 - ExpoBlur: 14d0cc31e6a1910b9712dfce1bd8a43d698cd5ae - ExpoCamera: d30fb3af6f5e97d1567c3b2d84413707a78d9005 - ExpoCameraBarcodeScanning: 0cd97b138b31f7534201816611dd164543429b37 - ExpoClipboard: 67d46a8be4a50ec610c7b2f4966c0475aec6d969 - ExpoDevice: 090ee05e20e40ca981d39263e3e95c46ed850782 - ExpoDocumentPicker: 1160f4221c6ed4fed906aad0761549ea163b7a01 - ExpoDomWebView: 73ba90107a5acc0017a09b06e66d8eb238e089b8 - ExpoFileSystem: ffcd56066188802f263254b6b2e60f74b6a0bdae - ExpoFont: 35fd7ad72f697d3a9656545909972d8b9f60d5da - ExpoGlassEffect: 72e96f2f6cae69f970238b80656d869d1a9a98ff - ExpoHaptics: c6d063c3bfda1c1d6d7fdf237ffb612c4fc09954 - ExpoImageManipulator: db2be3b3fe592c57d5993886f3bdf57d4a4d5041 - ExpoImagePicker: 0afefebdfe3aacd2281535eada9d59345afa3118 - ExpoKeepAwake: 8a96e2075b75641001f55393d7e6600a5b808f09 - ExpoLinearGradient: cb6781ae9bd07bcb2ab58221ce7612aadd81e1f4 - ExpoLinking: db6d7a9e9348cca9ada7c39127ab30963deddba3 - ExpoLocalAuthentication: 4f2c3ddae58a42e93564fcf2be4518c463fbdd71 - ExpoLocalization: 543cb852ec9d4a6c732344f94ebd96d18897eaab - ExpoLogBox: b39a76aab749833d58111c3be1264bb90f3b92d4 - ExpoMailComposer: 93f4d65c12dd45331f69e0906773aa0e7b74344c - ExpoModulesCore: a4d8d4e58d500b54a51f9c5c47e9bb77ab205f08 + ExpoAsset: 98143758ff37e14c9ff2a4e7673097db00473011 + ExpoBlur: 69e67b4fbfed6f7325377af2aefa8aa4f00cd2af + ExpoCamera: a5e9d9ce2fc06689eb2dd676f1f8d5f22f8aa292 + ExpoCameraBarcodeScanning: b869ac87ebe30bb99b26c55b0e0471301383c90b + ExpoClipboard: 95055b11758f339b61d4d8064dd799df1cf03b7f + ExpoDevice: 93a72d7c2bd656a4f0c0d580523e390e9ee7fba5 + ExpoDocumentPicker: 6fb67a6f39ba9beb53a4b4a3f2949e0b5e9bc3bf + ExpoDomWebView: beaec034e51bd028428b98bb1f2633ab79c6d095 + ExpoFileSystem: e441dae0ae671fc451640517550973d9e024fdf0 + ExpoFont: 59e1faf66ba9bcd232ae1e2ce58d202a48b6f65e + ExpoGlassEffect: 4b62afb489e6b84357701737ce002137c9d5fdbc + ExpoHaptics: 4503d2da51ff7109712ccdfe0e4939f66818183e + ExpoImageManipulator: d3c962dabd86b331980f8ec6794c6073b3cb541a + ExpoImagePicker: 8edc8d1215d9c8c95c44101e42d577f8beb898c9 + ExpoKeepAwake: c26f14275017370cc8a4b7b43a0e23361f2053a5 + ExpoLinearGradient: 903b3f5fe566c666ff78b2599add51d094483613 + ExpoLinking: 5a796f9284535c0349537a844dd40680229b7fcb + ExpoLocalAuthentication: 96989637e567a10cdeabe61e5c6026d30c0dc53f + ExpoLocalization: 659243b03b3a3e9589793cee2f728a899e181329 + ExpoLogBox: 8a3cfa2897e088083cd49fc1ff7fdb2de4385547 + ExpoMailComposer: 101933dc6bdb4d7a46495d1dd87420365325adb9 + ExpoModulesCore: 3082834d5d10d2ea67c1fbfcd7f191518ed3aec4 ExpoModulesJSI: b20fefa4cdd9097e7e6b715466d1900b8c5d4711 ExpoModulesWorklets: b21b8f233b5fd71ca74327217601fa4ead9ddaaf ExpoModulesWorkletsAdapter: 6b3dffb299973f4f2b1a96738aa2cb46987b18e1 - ExpoNotifications: 9e7946eed73d94bbe0b7188906be41b0cc236c40 - ExpoRouter: a322bf2e409071b05ae9d4d86d5f283902364d65 - ExpoSecureStore: be2276d312c1f213605c0864772510239605ec37 + ExpoNotifications: a2f19a01dad3ee8631ec283561882ff9f302f3e4 + ExpoRouter: c086c97b2229152334ab68200ade40b64f75515b + ExpoSecureStore: 94793113049a2d7478dfe1a13aa15081e9f61755 ExpoSpeechRecognition: 119acf84448579e53f841d040aad76982f945e2d - ExpoSplashScreen: 70840fce2f0a181eb5060cde8a727e999ac4c941 - ExpoSymbols: db28b9ea52c96fe67ff9c362f5dbc6bee240ca2d - ExpoSystemUI: 4f343f83e81951d737b199ac9c0d9db0d577f942 - ExpoUI: 6dfd6c01cc124afb1f729548568f40fb00976f26 + ExpoSplashScreen: 247464c0fe484f766892db0d66c3fe54f92a624e + ExpoSymbols: 7c7c7bd3c52f0b6dcbba6e8af4088b0dc1ea7d29 + ExpoSystemUI: 6f2ce8968292aaa91f4aa553c23bdd8cee5cdc85 + ExpoUI: 19f2ca6e82d91240530ee9762dedccc31fc6f429 EXStructuredHeaders: 1423c3602a30eb078e03b63b251ef912267dd4c0 - EXUpdates: 6bfc710fb7d7219ec3da729e72ae003e523f0c17 - EXUpdatesInterface: 492cdb30f3889cc35d9e737a4b5fc3aec39d1131 + EXUpdates: cbdbe424e30c11983c2841930050114c1b8bea0c + EXUpdatesInterface: 92d2aa5194b6fb93ca8ab749db75665cb28b2e60 FBLazyVector: b3e7ad108f0d882e30445c5527d774e3fd432f3d - hermes-engine: 9ebc7f0a63131d493547a3adcab94ba6e73775a6 + hermes-engine: 7a039a55e4e8ca01b3efce17360bea8c248fb90d RCTDeprecation: 2a74a2c57675e64419bd89078efde81f7c1de90b RCTRequired: 30451112e6fef4e6f31b4e7eee0845156e35e4b0 RCTSwiftUI: 5aaf0b07e747ba749dc6acc94d8bd41eea4b570f @@ -3150,7 +3170,7 @@ SPEC CHECKSUMS: React-Mapbuffer: ce449ccdf3b80384415b925606be8a4bdcfc65d3 React-microtasksnativemodule: 2eb3f49d0d8e77b5343455eccd057010b8d38b6b React-mutationobservernativemodule: f0a0d5ae9b51caf7becbeabf836d716cfedb6bf2 - react-native-get-random-values: d16467cf726c618e9c7a8c3c39c31faa2244bbba + react-native-get-random-values: 68792987aef40e8aa72dc448d97e009d1f440c88 react-native-keyboard-controller: d4796248609d4c03cd6b5f73a9fd083d7c5f33d6 react-native-netinfo: 2f906d5d9a639090ed1c079135d6485a95f749f1 react-native-pager-view: c9f0c94cc64041ac70f28f79527ea2ac664cf25c @@ -3193,7 +3213,7 @@ SPEC CHECKSUMS: RNCMaskedView: eb2b2e538afa907f05a5848a1a1ac26092e6fec9 RNGestureHandler: 92172e79df6e88e0e93b6341f9dcd8b5a02746ba RNReanimated: a9bf68fb5f19ce1c363b7d1413dcf8ee323185b8 - RNScreens: f94000b3cb1eb14cbb8d08dd6074fdd6ccf0e6b0 + RNScreens: c1a06fd73d0581a2a28a160577be393f579662b9 RNSentry: 7bb2dcf95d8e545ffcb96155c9e5ebfbb95c8916 RNSVG: 6cae8d4082913be2eb43eaec2a456222c42195ed RNWorklets: 53439575fed8525fb8d1cabcc05a3d4d91e6ffe4 diff --git a/package-lock.json b/package-lock.json index 79445115..f3a8fa0a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "MIT", "dependencies": { - "@expo/metro-runtime": "~57.0.3", + "@expo/metro-runtime": "~57.0.7", "@gorhom/bottom-sheet": "^5.2.13", "@react-native-async-storage/async-storage": "3.1.1", "@react-native-community/netinfo": "12.0.1", @@ -19,32 +19,32 @@ "@tanstack/react-query": "^5.101.2", "@tanstack/react-query-persist-client": "^5.101.1", "clsx": "^2.1.1", - "expo": "^57.0.1", - "expo-blur": "~57.0.0", - "expo-build-properties": "~57.0.2", - "expo-camera": "~57.0.1", - "expo-clipboard": "~57.0.0", - "expo-constants": "~57.0.2", - "expo-dev-client": "~57.0.3", - "expo-device": "~57.0.0", - "expo-document-picker": "~57.0.0", - "expo-font": "~57.0.0", - "expo-haptics": "~57.0.0", - "expo-image-manipulator": "~57.0.1", - "expo-image-picker": "~57.0.1", + "expo": "^57.0.8", + "expo-blur": "~57.0.2", + "expo-build-properties": "~57.0.7", + "expo-camera": "~57.0.3", + "expo-clipboard": "~57.0.1", + "expo-constants": "~57.0.7", + "expo-dev-client": "~57.0.8", + "expo-device": "~57.0.1", + "expo-document-picker": "~57.0.1", + "expo-font": "~57.0.1", + "expo-haptics": "~57.0.1", + "expo-image-manipulator": "~57.0.6", + "expo-image-picker": "~57.0.6", "expo-linear-gradient": "~57.0.1", - "expo-linking": "~57.0.1", - "expo-local-authentication": "~57.0.0", - "expo-localization": "~57.0.0", - "expo-mail-composer": "^57.0.0", - "expo-notifications": "~57.0.2", - "expo-router": "~57.0.6", - "expo-secure-store": "~57.0.0", + "expo-linking": "~57.0.4", + "expo-local-authentication": "~57.0.2", + "expo-localization": "~57.0.1", + "expo-mail-composer": "~57.0.1", + "expo-notifications": "~57.0.7", + "expo-router": "~57.0.8", + "expo-secure-store": "~57.0.1", "expo-speech-recognition": "56.0.1", - "expo-splash-screen": "~57.0.1", - "expo-status-bar": "~57.0.0", - "expo-system-ui": "~57.0.0", - "expo-updates": "~57.0.4", + "expo-splash-screen": "~57.0.5", + "expo-status-bar": "~57.0.1", + "expo-system-ui": "~57.0.1", + "expo-updates": "~57.0.9", "i18next": "^26.3.6", "intl-pluralrules": "^2.0.1", "nativewind": "^4.2.6", @@ -62,7 +62,7 @@ "react-native-pager-view": "8.0.2", "react-native-reanimated": "4.5.0", "react-native-safe-area-context": "~5.7.0", - "react-native-screens": "4.25.2", + "react-native-screens": "4.26.2", "react-native-svg": "15.15.5", "react-native-web": "^0.21.2", "react-native-worklets": "0.10.2", @@ -1571,6 +1571,232 @@ "integrity": "sha512-BKNSJ6oFGWi+aXu6PF+1EdI43J8Ag+Sm7Ste1SXYmC2eYOJasyjXHkKjgkIieBB1eDZQJSPWuPv421Vg6N5tCQ==", "license": "MIT AND Apache-2.0" }, + "node_modules/@expo/cli": { + "version": "57.0.10", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-57.0.10.tgz", + "integrity": "sha512-mP+B9ZrTnRE94bxPM/kCVKPyuVuOTRvvsqbXVxdXtrAfOfF94YIZLGUtw/151cGFtdUPbsBsJ9gW02LhU+QMZA==", + "license": "MIT", + "dependencies": { + "@expo/code-signing-certificates": "^0.0.6", + "@expo/config": "~57.0.6", + "@expo/config-plugins": "~57.0.6", + "@expo/devcert": "^1.2.1", + "@expo/env": "~2.4.2", + "@expo/image-utils": "^0.11.4", + "@expo/inline-modules": "^0.1.3", + "@expo/json-file": "^11.0.1", + "@expo/log-box": "^57.0.1", + "@expo/metro": "~56.0.0", + "@expo/metro-config": "~57.0.7", + "@expo/metro-file-map": "^57.0.1", + "@expo/osascript": "^2.7.1", + "@expo/package-manager": "^1.13.1", + "@expo/plist": "^0.8.1", + "@expo/prebuild-config": "^57.0.9", + "@expo/require-utils": "^57.0.4", + "@expo/router-server": "^57.0.4", + "@expo/schema-utils": "^57.0.2", + "@expo/spawn-async": "^1.8.0", + "@expo/ws-tunnel": "^2.0.0", + "@expo/xcpretty": "^4.4.4", + "@react-native/dev-middleware": "0.86.0", + "accepts": "^1.3.8", + "agent-cli-detector": "^0.1.2", + "arg": "^5.0.2", + "bplist-creator": "0.1.0", + "bplist-parser": "^0.3.1", + "chalk": "^4.0.0", + "ci-info": "^3.3.0", + "compression": "^1.7.4", + "connect": "^3.7.0", + "debug": "^4.3.4", + "dnssd-advertise": "^1.1.4", + "expo-server": "^57.0.1", + "fetch-nodeshim": "^0.4.10", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "lan-network": "^0.2.1", + "multitars": "^1.0.0", + "node-forge": "^1.3.3", + "npm-package-arg": "^11.0.0", + "ora": "^3.4.0", + "picomatch": "^4.0.4", + "pretty-format": "^29.7.0", + "progress": "^2.0.3", + "prompts": "^2.3.2", + "resolve-from": "^5.0.0", + "semver": "^7.6.0", + "send": "^0.19.0", + "slugify": "^1.3.4", + "stacktrace-parser": "^0.1.10", + "structured-headers": "^0.4.1", + "terminal-link": "^2.1.1", + "toqr": "^0.1.1", + "wrap-ansi": "^7.0.0", + "ws": "^8.12.1", + "zod": "^3.25.76" + }, + "bin": { + "expo-internal": "main.js" + }, + "peerDependencies": { + "expo": "*", + "expo-router": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "expo-router": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/@expo/cli/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@expo/cli/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/cli/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@expo/cli/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@expo/cli/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@expo/cli/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@expo/cli/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@expo/cli/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/@expo/cli/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/cli/node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@expo/cli/node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@expo/cli/node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/@expo/cli/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/@expo/code-signing-certificates": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.6.tgz", @@ -1581,15 +1807,15 @@ } }, "node_modules/@expo/config": { - "version": "57.0.1", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-57.0.1.tgz", - "integrity": "sha512-qj/OJ508aiRxoc8Ca9Ku8snDkiu5XjAx35vGP282CoQiUViM6RI3zAJUkOx7xpEzlj2z7mlbMBxLBy1Nf4v1Ug==", + "version": "57.0.6", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-57.0.6.tgz", + "integrity": "sha512-VpMJpB/De/fb9bBFVVBiK6Ntg9lt0kAleLH9hcZz85CYRUQ3jVFVA8rNC5f8y4cp2+FiiPNFp62+kEOFI6pDiw==", "license": "MIT", "dependencies": { - "@expo/config-plugins": "~57.0.1", - "@expo/config-types": "^57.0.1", - "@expo/json-file": "^11.0.0", - "@expo/require-utils": "^57.0.0", + "@expo/config-plugins": "~57.0.6", + "@expo/config-types": "^57.0.2", + "@expo/json-file": "^11.0.1", + "@expo/require-utils": "^57.0.4", "deepmerge": "^4.3.1", "getenv": "^2.0.0", "glob": "^13.0.0", @@ -1599,15 +1825,15 @@ } }, "node_modules/@expo/config-plugins": { - "version": "57.0.1", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-57.0.1.tgz", - "integrity": "sha512-X8qOqWAhTWBEyxiSWV7jdXvV3R2rCBd2/GKK+crh31H/KzOGwV0ddHTQwgP3WjvdFzU4f8jQIoym7mHnz5eP1w==", + "version": "57.0.6", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-57.0.6.tgz", + "integrity": "sha512-7CmKrS5Rnu8aSZyNlxH2qzA7Ls1HEa4EQvEVOAkHDKPr1e4Cg/nz7I7dUl09QDTVjMvkKYDH4Th0DuAsgqASaw==", "license": "MIT", "dependencies": { - "@expo/config-types": "^57.0.1", - "@expo/json-file": "~11.0.0", - "@expo/plist": "^0.8.0", - "@expo/require-utils": "^57.0.0", + "@expo/config-types": "^57.0.2", + "@expo/json-file": "~11.0.1", + "@expo/plist": "^0.8.1", + "@expo/require-utils": "^57.0.4", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", @@ -1632,9 +1858,9 @@ } }, "node_modules/@expo/config-types": { - "version": "57.0.1", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-57.0.1.tgz", - "integrity": "sha512-fo7d/Ym28uwGzdTV2leEvpsb9t+7i8YHjy471m31+cmDt4BRd/l7e94JHyrXAq4SWOBVus16S0JLqm89SRCCdw==", + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-57.0.2.tgz", + "integrity": "sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==", "license": "MIT" }, "node_modules/@expo/config/node_modules/semver": { @@ -1669,9 +1895,9 @@ } }, "node_modules/@expo/devtools": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-57.0.0.tgz", - "integrity": "sha512-i8ITQmf/wB0JNQ2gASFOKvqo1zRWCl/VfPlFRXdz6UkHen4s31NmMy0zmumS+pMpwn0+gA6oU4FF4zRDRG488Q==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-57.0.1.tgz", + "integrity": "sha512-GyUf+wFNkbttaX0jR7MZa9bm77U0IrLg6d2AjpxdyoXw/w4abHoXG0oFufwLMgP9zLTd5+Ct4X/ffNUTnlzZgg==", "license": "MIT", "dependencies": { "chalk": "^4.1.2" @@ -1701,9 +1927,9 @@ } }, "node_modules/@expo/env": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.4.0.tgz", - "integrity": "sha512-tSlakVnFqdWlXnw5KCFSC1rQU8W5l0Ko8Pb96wi5XU4lCqc0UeLuZCQFpCeAhZGmd91Lo89mCNmr5tnXzZwtFA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.4.2.tgz", + "integrity": "sha512-28pqaEqwnmLduZ00Pq9HkSzE5wbj1MTwp5/n8nm8rD8MCjR9eUnVOwmNksPI3Be2ReAPO/DbPn1puy0mvoocsQ==", "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -1721,12 +1947,12 @@ "license": "MIT" }, "node_modules/@expo/fingerprint": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.20.1.tgz", - "integrity": "sha512-cSI7UsxcaaQAxykEZkiwX9c+sw976JBQpBN16fFgpFJVA92CfSpEIO0EcjVEXBrIZWfETxMJ6iyNk0gSu8cEzg==", + "version": "0.20.6", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.20.6.tgz", + "integrity": "sha512-cmC/6BOPRbdKr77Mgjwszb8aM0hY2RKBpMRCmjSdn9zIcn2FGor/ic4fHVr46cQFa1G6RDGg1GyAjRw3US4CCQ==", "license": "MIT", "dependencies": { - "@expo/env": "^2.4.0", + "@expo/env": "^2.4.2", "@expo/spawn-async": "^1.8.0", "arg": "^5.0.2", "chalk": "^4.1.2", @@ -1770,12 +1996,12 @@ } }, "node_modules/@expo/image-utils": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.11.0.tgz", - "integrity": "sha512-tXFTMAl79rOiK3q8cCw00CioMxv1XfM31B6B+9IK/yeWKJrwny8sSIJ0IzZWqHy6F23rW5AQVIyT5PJZ5p/hmA==", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.11.4.tgz", + "integrity": "sha512-pn/4770DIEOcYZr484uazuwg20FX/qaDkeMRF6J+oxejynDmEmO8wLsCudaNShFE0BhyKGQTYrs2rsRhqrqESw==", "license": "MIT", "dependencies": { - "@expo/require-utils": "^57.0.0", + "@expo/require-utils": "^57.0.4", "@expo/spawn-async": "^1.8.0", "chalk": "^4.0.0", "getenv": "^2.0.0", @@ -1797,18 +2023,18 @@ } }, "node_modules/@expo/inline-modules": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@expo/inline-modules/-/inline-modules-0.1.1.tgz", - "integrity": "sha512-Jbp1d6LSOS2RZCrNeK6JehcRGcYGb+1xNsHUfjggMWMlz/J2SP3HHKg8cbTkVj7KKPn33AkyFBaSqlMsvrp7ow==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@expo/inline-modules/-/inline-modules-0.1.3.tgz", + "integrity": "sha512-eHSxWYfgq65mP3Qz8PclVjUkSrDIlGl3va9U7PMcTpGItOvee/i0ZzGinH5A25oARR5ouD64eESBKwtT/CwdHg==", "license": "MIT", "dependencies": { - "@expo/config-plugins": "~57.0.1" + "@expo/config-plugins": "~57.0.5" } }, "node_modules/@expo/json-file": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-11.0.0.tgz", - "integrity": "sha512-pHJCETqFL5x5BzNV6cEPwjwuECgGmnl0bNmfHIJ6LM1tlh2eVXi5HEdit3zby/JO/B8Otk5cgcqtJXgvvUat3A==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-11.0.1.tgz", + "integrity": "sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.20.0", @@ -1816,12 +2042,12 @@ } }, "node_modules/@expo/local-build-cache-provider": { - "version": "57.0.1", - "resolved": "https://registry.npmjs.org/@expo/local-build-cache-provider/-/local-build-cache-provider-57.0.1.tgz", - "integrity": "sha512-GU6VD75wXlOIK9myzHPhquLNDwWsr8IvnupmdifHIKcT9OdHWXaxIejFjf7iOX8ukaAPRnUnKwGNUQF0zKhjkQ==", + "version": "57.0.4", + "resolved": "https://registry.npmjs.org/@expo/local-build-cache-provider/-/local-build-cache-provider-57.0.4.tgz", + "integrity": "sha512-B/cI73shkLSYBYuFyh+zCbS+WhqJgawWPW4MPdMiNLJKv9RmV4dv1FGjsidiIiG2k4kYKerBDLK4bLbC7qERQQ==", "license": "MIT", "dependencies": { - "@expo/config": "~57.0.1", + "@expo/config": "~57.0.5", "chalk": "^4.1.2" } }, @@ -1890,19 +2116,19 @@ } }, "node_modules/@expo/metro-config": { - "version": "57.0.2", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-57.0.2.tgz", - "integrity": "sha512-jVCMnOJWpgt5Ssm7zN1Mk7rH+K8bKVGX01xfyOTN3eF1TFRhUCJpt8QuQpnFYdV1WhCPcIpdt2HtC72527VZnw==", + "version": "57.0.7", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-57.0.7.tgz", + "integrity": "sha512-bVfEkg4zF1cA62OqAdYXmFOooJ6TB/I+REi7Se6Ct+PbSC+89TwSqWXnYx34L08eIs4z+1ilgbATakTZpgefmQ==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.20.0", "@babel/core": "^7.20.0", "@babel/generator": "^7.20.5", - "@expo/config": "~57.0.1", - "@expo/env": "~2.4.0", - "@expo/json-file": "~11.0.0", + "@expo/config": "~57.0.6", + "@expo/env": "~2.4.2", + "@expo/json-file": "~11.0.1", "@expo/metro": "~56.0.0", - "@expo/require-utils": "^57.0.0", + "@expo/require-utils": "^57.0.4", "@expo/spawn-async": "^1.8.0", "@jridgewell/gen-mapping": "^0.3.13", "@jridgewell/remapping": "^2.3.5", @@ -1928,25 +2154,10 @@ } } }, - "node_modules/@expo/metro-config/node_modules/hermes-estree": { - "version": "0.36.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.36.1.tgz", - "integrity": "sha512-guv1nQ6IJ7S83NRFPWc3SA7IBZrdNC9kapwOq6uXvF4wP+sDCgjzQbKPCoyYmoyZRzztF/n/c36l/rccCZSiCw==", - "license": "MIT" - }, - "node_modules/@expo/metro-config/node_modules/hermes-parser": { - "version": "0.36.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.36.1.tgz", - "integrity": "sha512-GApNk4zLHi2UWoWZZkx7LNCOSzLSc5lB55pZ/PhK7ycFeg7u5LcF88p/WbpIi1XUDtE0MpHE3uRR3u3KB7TjSQ==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.36.1" - } - }, "node_modules/@expo/metro-file-map": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/@expo/metro-file-map/-/metro-file-map-57.0.0.tgz", - "integrity": "sha512-/sxwKQmwpYFYjFT6VYFpgldTwSv53OCx4/UCpLCv9iqQLVQ30hFEJsxGA9Jif8n9pacigK4P5/0ZJ2zMHm6arA==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/@expo/metro-file-map/-/metro-file-map-57.0.1.tgz", + "integrity": "sha512-8JXfVstZN7QnP4NianZZnlTVboOWR0sG8trUDNajOjnbGlPln29vponXM84tY+3tAHapz5/TxE53L0ixUwqPtA==", "license": "MIT", "dependencies": { "debug": "^4.3.4", @@ -1958,9 +2169,9 @@ } }, "node_modules/@expo/metro-runtime": { - "version": "57.0.5", - "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-57.0.5.tgz", - "integrity": "sha512-OBHbGgLeDROnoeWO2td9ZS9EFC5ADzlXaAVM4sdYDe8vrmOb4rIuSrwBSjnkmr7svwzqAhX0hg089A1bQvOu7g==", + "version": "57.0.7", + "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-57.0.7.tgz", + "integrity": "sha512-95UeoN/YsLellvskKsFGN9vKBwNc5k70ysO3skqfL3VusWlYIiYmPY+MpEWNz8A8W2CjLg9AKwZKAGrFj6znQg==", "license": "MIT", "dependencies": { "@expo/log-box": "^57.0.1", @@ -2015,9 +2226,9 @@ "license": "MIT" }, "node_modules/@expo/osascript": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.7.0.tgz", - "integrity": "sha512-wKIXL8UtbuX4KwavPasIW3CUcgTbYfjzLcgUhjyKUAYDEqMaf6gmU1bqz3ffBPTokmX+G8/vFG1ZuI9etQWukA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.7.1.tgz", + "integrity": "sha512-Zn03EX6In7ts2lPUW2ESUSkEhEWQN1qqsiXjadtZMJOuZRkMiAg1ZQHuvz9DjByDWNJ2pBwAGyrts9lj9k389g==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.8.0" @@ -2027,12 +2238,12 @@ } }, "node_modules/@expo/package-manager": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.13.0.tgz", - "integrity": "sha512-s3W3eZafJDEyVL7W/jxj2Nz3eONKxSCU604S5xj8ijrVaRz83x0DnZznLf/UXQEI1w+FyibH68nHeQyk767b1A==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.13.1.tgz", + "integrity": "sha512-y/K+CaYYpZpNGZhSX4HyLT/vyIunFjNfyoxNysPBCefeLKI/VCx6f9LNPzrxayr3rCYO5bl9O8H+HRQK265Nkg==", "license": "MIT", "dependencies": { - "@expo/json-file": "^11.0.0", + "@expo/json-file": "^11.0.1", "@expo/spawn-async": "^1.8.0", "chalk": "^4.0.0", "npm-package-arg": "^11.0.0", @@ -2041,9 +2252,9 @@ } }, "node_modules/@expo/plist": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.8.0.tgz", - "integrity": "sha512-24JlUJI4PwHN4PLydlzFEzCdiqybfaV5t04QBkOg8em3AjvHKbMgBGlKreiuOoc0rNa3DZ21ZqL+xLGMBLQNKQ==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.8.1.tgz", + "integrity": "sha512-3gTReGIUm0oRaMClsAJYxBnVPCl6fVpsl8HS+DTVxDhW4GyVyxg9E/Znm3BvcHtUJ51RJJI14pC1wvrNilCRHw==", "license": "MIT", "dependencies": { "@xmldom/xmldom": "^0.8.8", @@ -2052,19 +2263,19 @@ } }, "node_modules/@expo/prebuild-config": { - "version": "57.0.3", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-57.0.3.tgz", - "integrity": "sha512-jMMLZW+2OG/1FY3qCHzI1uMOnt2tIjIW3A6+FXz4rHtyZmD6SJvtuGEP/AZiegqAvOPX+PBWgFXuCzXvyIj6kg==", + "version": "57.0.9", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-57.0.9.tgz", + "integrity": "sha512-8g7RoXFvO/dxvLzRE/bvphzDL4bfV0w3/4Aj6DfwvgymZ1ULz5gW2x0js94opZRoZvWw4SolH6/74hLlZT3rAA==", "license": "MIT", "dependencies": { - "@expo/config": "~57.0.1", - "@expo/config-plugins": "~57.0.1", - "@expo/config-types": "^57.0.1", - "@expo/image-utils": "^0.11.0", - "@expo/json-file": "^11.0.0", + "@expo/config": "~57.0.6", + "@expo/config-plugins": "~57.0.6", + "@expo/config-types": "^57.0.2", + "@expo/image-utils": "^0.11.4", + "@expo/json-file": "^11.0.1", "@react-native/normalize-colors": "0.86.0", "debug": "^4.3.1", - "expo-modules-autolinking": "~57.0.3", + "expo-modules-autolinking": "~57.0.9", "resolve-from": "^5.0.0", "semver": "^7.6.0" } @@ -2082,9 +2293,9 @@ } }, "node_modules/@expo/require-utils": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/@expo/require-utils/-/require-utils-57.0.0.tgz", - "integrity": "sha512-6PPvmqdAz7ikxJUwg+g/JV1KKQJS1xkkh/r+z4tucvBelrM0vMnENV2QVVn4qDWS0FfSIcwuSYvvx+4od/Sa9w==", + "version": "57.0.4", + "resolved": "https://registry.npmjs.org/@expo/require-utils/-/require-utils-57.0.4.tgz", + "integrity": "sha512-e7xbg/9BTQcsZE/oErafZXtI7kh5IgfasLJ97J5sFSzX2cA74pDvdlhW1KHVSaDkQyQv6h1LSLhsY7dEeOk7hw==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.20.0", @@ -2092,7 +2303,7 @@ "@babel/plugin-transform-modules-commonjs": "^7.24.8" }, "peerDependencies": { - "typescript": "^5.0.0 || ^5.0.0-0 || ^6.0.0" + "typescript": "^5.0.0 || ^5.0.0-0 || ^6.0.0 || ^7.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -2100,6 +2311,40 @@ } } }, + "node_modules/@expo/router-server": { + "version": "57.0.4", + "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-57.0.4.tgz", + "integrity": "sha512-ucqCP0hK8nZb9+S8QJYdQxNCkfRClzkKdg2RpWYDKDYgRIHyoRyxEDRgDgvbhH+q78yfY83abU8OTx8MMOrf1g==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "@expo/metro-runtime": "^57.0.7", + "expo": "*", + "expo-constants": "^57.0.7", + "expo-font": "^57.0.1", + "expo-router": "*", + "expo-server": "^57.0.1", + "react": "*", + "react-dom": "*", + "react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1" + }, + "peerDependenciesMeta": { + "@expo/metro-runtime": { + "optional": true + }, + "expo-router": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-server-dom-webpack": { + "optional": true + } + } + }, "node_modules/@expo/schema-utils": { "version": "57.0.2", "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-57.0.2.tgz", @@ -2131,9 +2376,9 @@ "license": "MIT" }, "node_modules/@expo/ui": { - "version": "57.0.6", - "resolved": "https://registry.npmjs.org/@expo/ui/-/ui-57.0.6.tgz", - "integrity": "sha512-jmgU43PXq5u43DpXsjDJHNaUO6f3jxpShurwg0KTVoV4nxx2DNgVp5vRGUqqTGbpDaHlZXXsdg69jdM/umPhVA==", + "version": "57.0.7", + "resolved": "https://registry.npmjs.org/@expo/ui/-/ui-57.0.7.tgz", + "integrity": "sha512-WqRVabl8VpHf3+YLHVjUy7PMIuXXI6DG88Vgmavro7Nd8Ks13h9sEJH/RLSCaJE2daVnqzEKY1v797BibuY9aw==", "license": "MIT", "dependencies": { "sf-symbols-typescript": "^2.1.0", @@ -3034,23 +3279,24 @@ } }, "node_modules/@radix-ui/react-dialog": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.19.tgz", - "integrity": "sha512-+HhbN2+YtkRgVirjZ2afMeutQRuGOrdkWR5+EFC58SJojGmtyNQwYzgi6tHBpOxvFHefMtPeHdgtjz0BOGxFQg==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-dismissable-layer": "1.1.15", - "@radix-ui/react-focus-guards": "1.1.4", - "@radix-ui/react-focus-scope": "1.1.12", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-portal": "1.1.13", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-slot": "1.3.0", - "@radix-ui/react-use-controllable-state": "1.2.3", + "version": "1.1.23", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.23.tgz", + "integrity": "sha512-Ksw4WeROkO4rC9k/onilX/Ao2Cr1ku1unMNH+XSCcP4jSXYu7HDsg9n4ojMjVb22XpYjAQ9qfrFlVbru1vXDUA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", + "@radix-ui/react-dismissable-layer": "1.1.19", + "@radix-ui/react-focus-guards": "1.1.6", + "@radix-ui/react-focus-scope": "1.1.16", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-portal": "1.1.17", + "@radix-ui/react-presence": "1.1.10", + "@radix-ui/react-primitive": "2.1.10", + "@radix-ui/react-slot": "1.3.3", + "@radix-ui/react-use-controllable-state": "1.2.6", + "@radix-ui/react-use-layout-effect": "1.1.4", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, @@ -3070,15 +3316,30 @@ } }, "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.5.tgz", - "integrity": "sha512-d86WIWFYNtGA0H/d8exstrTRTp7eWJYlYJbtNofxr/3ljupZYn6EFDG/Qgu/0Kc8v7yMUxySagqJsL1+PdYjWg==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.7.tgz", + "integrity": "sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q==", "license": "MIT" }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.5.tgz", + "integrity": "sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.2.0.tgz", - "integrity": "sha512-fOE+JtN9rygNZkCnHRBEP0TAvLldlhyOxMsbwFvTP4nAs+nBmfnna+o/Zski2wkmY1YMrFC0aSzsHoLY47iLrg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.2.2.tgz", + "integrity": "sha512-RHCUGwKHDr0hDGg4X7ma4JG4/+12qxw8rkh5QKdDldlCvtja6nUx1Ef/8HVrJze81lEsgLQlqjzjGNHantgnQA==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -3090,13 +3351,31 @@ } } }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.4.tgz", + "integrity": "sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.7.tgz", - "integrity": "sha512-zBZ4QM5XG3JRanDmqXYf3MD6th4AFXFmgU6KNMFzUaV6F3uw9I5/zjMUvFriSEn5ewo1nxuibvyxJdmLlDcslA==", + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.10.tgz", + "integrity": "sha512-3wyzCQ6+ubRA+D4uv9m95JYLXxmOHp05qjrkjeA7uKHHtjpPggQzc6DAb0URl7j67oR0K2foO4ip27TiX037Bw==", "license": "MIT", "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.2" + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", @@ -3114,12 +3393,12 @@ } }, "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.7.tgz", - "integrity": "sha512-bC3NiwsprbxKjuon9l7X6BUTw7FPVzEYaL92MPEY5SCd/9hUTPXVFtVwRix7778wtRsVao+zE062gL79FZleeQ==", + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.10.tgz", + "integrity": "sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg==", "license": "MIT", "dependencies": { - "@radix-ui/react-slot": "1.3.0" + "@radix-ui/react-slot": "1.3.3" }, "peerDependencies": { "@types/react": "*", @@ -3137,12 +3416,12 @@ } }, "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.3.0.tgz", - "integrity": "sha512-MojKku4U/miO8Av4Dkb+ctMAQx7JmY96LmtDQlAarCRtd7rN52QCSzBF+XAvr5S6coSVj9HEPBgHAHKEJVk/WA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.3.3.tgz", + "integrity": "sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.3" + "@radix-ui/react-compose-refs": "1.1.5" }, "peerDependencies": { "@types/react": "*", @@ -3154,6 +3433,59 @@ } } }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.6.tgz", + "integrity": "sha512-uEQJGT97ZA/TgP/Hydw47lHu+/vQj6z/0jA+WeTbK1o9Rx45GImjpD0tc3W5ad3D6XTSR6e1yEO0FvGq6WQfVQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-use-effect-event": "0.0.5", + "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.5.tgz", + "integrity": "sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.4.tgz", + "integrity": "sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-direction": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.2.tgz", @@ -3170,16 +3502,16 @@ } }, "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.15.tgz", - "integrity": "sha512-b0XaRlzn2QKuo10XyNgi2DAJDf5XC9d1nD3FJcuvCjbR7+4Ad28zmZsLsqx+hvDEzMnRuZaZxZm9gYObV6RmRA==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.19.tgz", + "integrity": "sha512-8g4pfOL9HoKKLWGiypT+dphVqjFfmcXO5GBnhsG6zI+lxAx/8feQpr+1LSN8Re3hiZ+XkLNS4O9ztK11/LzQ6w==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-callback-ref": "1.1.2", - "@radix-ui/react-use-effect-event": "0.0.3" + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-primitive": "2.1.10", + "@radix-ui/react-use-callback-ref": "1.1.4", + "@radix-ui/react-use-effect-event": "0.0.5" }, "peerDependencies": { "@types/react": "*", @@ -3197,18 +3529,33 @@ } }, "node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/primitive": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.5.tgz", - "integrity": "sha512-d86WIWFYNtGA0H/d8exstrTRTp7eWJYlYJbtNofxr/3ljupZYn6EFDG/Qgu/0Kc8v7yMUxySagqJsL1+PdYjWg==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.7.tgz", + "integrity": "sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q==", "license": "MIT" }, + "node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.5.tgz", + "integrity": "sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-primitive": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.7.tgz", - "integrity": "sha512-bC3NiwsprbxKjuon9l7X6BUTw7FPVzEYaL92MPEY5SCd/9hUTPXVFtVwRix7778wtRsVao+zE062gL79FZleeQ==", + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.10.tgz", + "integrity": "sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg==", "license": "MIT", "dependencies": { - "@radix-ui/react-slot": "1.3.0" + "@radix-ui/react-slot": "1.3.3" }, "peerDependencies": { "@types/react": "*", @@ -3226,12 +3573,12 @@ } }, "node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-slot": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.3.0.tgz", - "integrity": "sha512-MojKku4U/miO8Av4Dkb+ctMAQx7JmY96LmtDQlAarCRtd7rN52QCSzBF+XAvr5S6coSVj9HEPBgHAHKEJVk/WA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.3.3.tgz", + "integrity": "sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.3" + "@radix-ui/react-compose-refs": "1.1.5" }, "peerDependencies": { "@types/react": "*", @@ -3243,10 +3590,58 @@ } } }, - "node_modules/@radix-ui/react-focus-guards": { + "node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.4.tgz", + "integrity": "sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.5.tgz", + "integrity": "sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-use-layout-effect": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.4.tgz", - "integrity": "sha512-cot/aB/mOm0IYVYTTmQcEEK1M48lZWi8FlYe5nDPQQ8NYZUlXEFgncJ9p2Kzer3RKSrY7cTTpEMLZKNo9QoP5Q==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.4.tgz", + "integrity": "sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.6.tgz", + "integrity": "sha512-RNOJjfZMTyBM6xYmV3IVGXkPjIhcBAuv48POevAXwrGJhkWZ9p1rFoIS1JFooPuT193AZmRsCPhpoVJxx6OPoQ==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -3259,14 +3654,14 @@ } }, "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.12.tgz", - "integrity": "sha512-jjk/lqTeNL0azUx5ZYzVrl4NgaDIrdzTNE4mABV9yBFI7FQqN7pIgzV1bTleUezP2QiTGA1BFTqY8MegDgWX9A==", + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.16.tgz", + "integrity": "sha512-wmRZ2WWLvmt6KHy2rNPOdPUjwq5xOHY02+m+udwJTn0aNIox/rkskAvJTyTLGhPK6KgrUjlJUJpgmx/+wFiFIQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-callback-ref": "1.1.2" + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-primitive": "2.1.10", + "@radix-ui/react-use-callback-ref": "1.1.4" }, "peerDependencies": { "@types/react": "*", @@ -3283,13 +3678,28 @@ } } }, + "node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.5.tgz", + "integrity": "sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.7.tgz", - "integrity": "sha512-bC3NiwsprbxKjuon9l7X6BUTw7FPVzEYaL92MPEY5SCd/9hUTPXVFtVwRix7778wtRsVao+zE062gL79FZleeQ==", + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.10.tgz", + "integrity": "sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg==", "license": "MIT", "dependencies": { - "@radix-ui/react-slot": "1.3.0" + "@radix-ui/react-slot": "1.3.3" }, "peerDependencies": { "@types/react": "*", @@ -3307,12 +3717,12 @@ } }, "node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-slot": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.3.0.tgz", - "integrity": "sha512-MojKku4U/miO8Av4Dkb+ctMAQx7JmY96LmtDQlAarCRtd7rN52QCSzBF+XAvr5S6coSVj9HEPBgHAHKEJVk/WA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.3.3.tgz", + "integrity": "sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.3" + "@radix-ui/react-compose-refs": "1.1.5" }, "peerDependencies": { "@types/react": "*", @@ -3324,6 +3734,21 @@ } } }, + "node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.4.tgz", + "integrity": "sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-id": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.2.tgz", @@ -3343,13 +3768,13 @@ } }, "node_modules/@radix-ui/react-portal": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.13.tgz", - "integrity": "sha512-z3oXfmaHLJTF1wktbjgD6cn9jiEbq3WSondB10LIuIt2m2Ym4iJlrW04/euMwENDdWDdE7z+OuY7Qyp1YpRSwA==", + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.17.tgz", + "integrity": "sha512-vKQLcWypUnwZVvfV7UkGahH2g6ySe8M8R+zYBwPrv5byZ9QAW6cQVvNKo7GgmD+p8aYb6D9JBuvy8/WhOno2wQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-layout-effect": "1.1.2" + "@radix-ui/react-primitive": "2.1.10", + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", @@ -3366,13 +3791,28 @@ } } }, + "node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.5.tgz", + "integrity": "sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.7.tgz", - "integrity": "sha512-bC3NiwsprbxKjuon9l7X6BUTw7FPVzEYaL92MPEY5SCd/9hUTPXVFtVwRix7778wtRsVao+zE062gL79FZleeQ==", + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.10.tgz", + "integrity": "sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg==", "license": "MIT", "dependencies": { - "@radix-ui/react-slot": "1.3.0" + "@radix-ui/react-slot": "1.3.3" }, "peerDependencies": { "@types/react": "*", @@ -3390,12 +3830,12 @@ } }, "node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-slot": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.3.0.tgz", - "integrity": "sha512-MojKku4U/miO8Av4Dkb+ctMAQx7JmY96LmtDQlAarCRtd7rN52QCSzBF+XAvr5S6coSVj9HEPBgHAHKEJVk/WA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.3.3.tgz", + "integrity": "sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.3" + "@radix-ui/react-compose-refs": "1.1.5" }, "peerDependencies": { "@types/react": "*", @@ -3407,6 +3847,21 @@ } } }, + "node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.4.tgz", + "integrity": "sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-presence": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.6.tgz", @@ -5380,6 +5835,18 @@ "node": ">= 6.0.0" } }, + "node_modules/agent-cli-detector": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/agent-cli-detector/-/agent-cli-detector-0.1.4.tgz", + "integrity": "sha512-qPgevFvpaQoBaRJVKzr8R7h1WPvV3DtbgRIQlne4le66KBzXx5hNBwo/+NTw67LgkKBlhCzksrdautpUdlls0Q==", + "license": "MIT", + "bin": { + "agent-cli-detector": "dist/cli.js" + }, + "engines": { + "node": ">=18.18" + } + }, "node_modules/ajv": { "version": "6.15.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", @@ -5906,9 +6373,9 @@ } }, "node_modules/babel-preset-expo": { - "version": "57.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-57.0.1.tgz", - "integrity": "sha512-ClW79dx27GJVwKf/YMKCrR18uer6jlREZtKVB00HQMIoyeM5Qxh9axKTT0GUNFkFq596wi216ovp1zcGMUhE8g==", + "version": "57.0.4", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-57.0.4.tgz", + "integrity": "sha512-EkFcNoE23HVzQT6ZNXs/adN8+G7rqEAF6tQn6LpRPYa1YY7wmX5GxhJF0kaYMNtBndNrMTN4+0rYE17VG13KFg==", "license": "MIT", "dependencies": { "@babel/generator": "^7.20.5", @@ -5957,7 +6424,7 @@ "peerDependencies": { "@babel/runtime": "^7.20.0", "expo": "*", - "expo-widgets": "^57.0.1", + "expo-widgets": "^57.0.6", "react-refresh": ">=0.14.0 <1.0.0" }, "peerDependenciesMeta": { @@ -8400,31 +8867,31 @@ "license": "MIT" }, "node_modules/expo": { - "version": "57.0.1", - "resolved": "https://registry.npmjs.org/expo/-/expo-57.0.1.tgz", - "integrity": "sha512-cJCgOAojkuHKKSWVuH2LXQrvYGZNQO0fTDMLUP9gDv2JWEAwIoFHlWocgZ/8HUvUQwMaF+C/82ZbVLbtwsp3cg==", + "version": "57.0.8", + "resolved": "https://registry.npmjs.org/expo/-/expo-57.0.8.tgz", + "integrity": "sha512-0IxxoPZbT54IH4fHL5NihkvED9HBVQx3uNdPvyv8pFUHWJ81RdFjL0aJys1IB7hbo09KTz4xW4I2aWVOXKAcJQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.0", - "@expo/cli": "^57.0.3", - "@expo/config": "~57.0.1", - "@expo/config-plugins": "~57.0.1", - "@expo/devtools": "~57.0.0", - "@expo/dom-webview": "~57.0.0", - "@expo/fingerprint": "^0.20.1", - "@expo/local-build-cache-provider": "^57.0.1", - "@expo/log-box": "^57.0.0", + "@expo/cli": "^57.0.10", + "@expo/config": "~57.0.6", + "@expo/config-plugins": "~57.0.6", + "@expo/devtools": "~57.0.1", + "@expo/dom-webview": "~57.0.1", + "@expo/fingerprint": "^0.20.6", + "@expo/local-build-cache-provider": "^57.0.4", + "@expo/log-box": "^57.0.1", "@expo/metro": "~56.0.0", - "@expo/metro-config": "~57.0.2", + "@expo/metro-config": "~57.0.7", "@ungap/structured-clone": "^1.3.0", - "babel-preset-expo": "~57.0.1", - "expo-asset": "~57.0.2", - "expo-constants": "~57.0.2", - "expo-file-system": "~57.0.0", - "expo-font": "~57.0.0", - "expo-keep-awake": "~57.0.0", - "expo-modules-autolinking": "~57.0.3", - "expo-modules-core": "~57.0.1", + "babel-preset-expo": "~57.0.4", + "expo-asset": "~57.0.7", + "expo-constants": "~57.0.7", + "expo-file-system": "~57.0.1", + "expo-font": "~57.0.1", + "expo-keep-awake": "~57.0.1", + "expo-modules-autolinking": "~57.0.9", + "expo-modules-core": "~57.0.7", "pretty-format": "^29.7.0", "react-refresh": "^0.14.2", "whatwg-url-minimum": "^0.1.2" @@ -8462,22 +8929,22 @@ } }, "node_modules/expo-application": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-57.0.0.tgz", - "integrity": "sha512-vNrnYlqtRS5pFUm1tjut4dogZxW/uhmMOD5GeLQ8Z9Ji3KMYKLOy5dG0BlUsMrcSgyPJvJqP0TFopkEZ02ec6g==", + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-57.0.2.tgz", + "integrity": "sha512-q31YwcXyymviAmdrtDfAg3Dld4VMxLCNAfgMHip7vZpPX4lzF/AfwsywqBJUAjQnJknzaNAkzqvMVjO5XmKYDA==", "license": "MIT", "peerDependencies": { "expo": "*" } }, "node_modules/expo-asset": { - "version": "57.0.2", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-57.0.2.tgz", - "integrity": "sha512-58QjXdeklQmauYS7VlxFAk2O/KNsHqpfplHKLcgDQhg3ek26+3LL+lxWwha92JOBcHNUQoqPN47SoEsD2Yjj8A==", + "version": "57.0.7", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-57.0.7.tgz", + "integrity": "sha512-TA6MRQq1HL0N6KGvNMzL6djdH5tGJ/eHPIhML+6bVu52mnXldmup2swdvP37zDnvoMUUXRVGsvwVHFmvhCbW6Q==", "license": "MIT", "dependencies": { - "@expo/image-utils": "^0.11.0", - "expo-constants": "~57.0.2" + "@expo/image-utils": "^0.11.4", + "expo-constants": "~57.0.7" }, "peerDependencies": { "expo": "*", @@ -8486,9 +8953,9 @@ } }, "node_modules/expo-blur": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-blur/-/expo-blur-57.0.0.tgz", - "integrity": "sha512-cn+LlmOdf7swx80v6yngW9AVl7m1F4cQGpfeJx/Jckgb6C4/sdA5jy/f4wBJCGCZs+2qpPEjlUkQ2Q2+7LQiuA==", + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/expo-blur/-/expo-blur-57.0.2.tgz", + "integrity": "sha512-Aoud8H8lmlNkbRufyvRLefmGFELdBf1n5Te/Xm+Zx8ORINH+aXL+gKb5mbftFSha860+I7pMArz77TBYz8HDVg==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -8497,12 +8964,12 @@ } }, "node_modules/expo-build-properties": { - "version": "57.0.2", - "resolved": "https://registry.npmjs.org/expo-build-properties/-/expo-build-properties-57.0.2.tgz", - "integrity": "sha512-6S1tXlb05sLNmBn5dyIgSNPlP22pGNuw2OeTxN7BXjeiQmfMJh0pZZGdmdi9d1KIhNWfbWnvffcfnoINaPm2vA==", + "version": "57.0.7", + "resolved": "https://registry.npmjs.org/expo-build-properties/-/expo-build-properties-57.0.7.tgz", + "integrity": "sha512-yo/2rp7tmWdmwHa2cA2EgOQNKmihNivTAiB9Dcg2s20b4g+QasGDyq4aOmwifUaLjK9bIRUs4D4xX5HzjSL1Hw==", "license": "MIT", "dependencies": { - "@expo/schema-utils": "^57.0.0", + "@expo/schema-utils": "^57.0.2", "resolve-from": "^5.0.0", "semver": "^7.6.0" }, @@ -8523,9 +8990,9 @@ } }, "node_modules/expo-camera": { - "version": "57.0.1", - "resolved": "https://registry.npmjs.org/expo-camera/-/expo-camera-57.0.1.tgz", - "integrity": "sha512-OtQOOFQ8djlB/UXlETa+Agu9m88P6d1go0VIO9b/a54AFUuowUqEH9vpzkq5iJ4jVhvJSblm/II7kLtwNnxW7Q==", + "version": "57.0.3", + "resolved": "https://registry.npmjs.org/expo-camera/-/expo-camera-57.0.3.tgz", + "integrity": "sha512-Q+3aZ63eQCkdB6/FZrO/lfacNAg/j8JCeKQL2nBdf6vBeOo1Y2PKYx1/vK+U5LaRnIo/0tMGmCOzZ1JGhTeMIw==", "license": "MIT", "dependencies": { "barcode-detector": "^3.0.0" @@ -8543,9 +9010,9 @@ } }, "node_modules/expo-clipboard": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-clipboard/-/expo-clipboard-57.0.0.tgz", - "integrity": "sha512-eIt47f6kvR33HOnIEWvs9l1AUAY4GeLY27szwamSuwRl7nntNythSFFbmnrEtiSUaz//y8XVqCG9WLpdMkOpjA==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-clipboard/-/expo-clipboard-57.0.1.tgz", + "integrity": "sha512-HWICri4+1ao7S6QEfcorxVumXDiDnx1guGGewjZgGJWLGxFYs0RgH8ujBs+lkTzBkMmlwADaWSlaesR+nDJt5Q==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -8554,12 +9021,12 @@ } }, "node_modules/expo-constants": { - "version": "57.0.2", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-57.0.2.tgz", - "integrity": "sha512-Bq0lIOB+olAQrYCS/fZi0cu1i8V0lo/YNr9fqMELerOfYYFkg8zTVrVaRjdFdMYBmz3dtym26UEBxV5dyUYZOg==", + "version": "57.0.7", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-57.0.7.tgz", + "integrity": "sha512-ShDwaKnh3UieCQ/dG0kO8PuicTTatn3WDGmXbq/fukyzPXWhdUxf37DINVDQS6D3DDG7nfqItij+QvnDHSQhTg==", "license": "MIT", "dependencies": { - "@expo/env": "~2.4.0" + "@expo/env": "~2.4.2" }, "peerDependencies": { "expo": "*", @@ -8567,30 +9034,30 @@ } }, "node_modules/expo-dev-client": { - "version": "57.0.3", - "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-57.0.3.tgz", - "integrity": "sha512-GcxWICRD3Y55bwV3/+FHsQvsNUQ7apQzWzeqUrr/TCsmn8JgCVHhIfHSiuW++r9+zVKtmtQ0uryEd8yXwWj7jg==", + "version": "57.0.9", + "resolved": "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-57.0.9.tgz", + "integrity": "sha512-DDqinc0EHMsqDUqkfad6c3pc5vr2oCxwAojSGVSBZe5paRIPgQTEWA+x76Qel13F1LO2LSG+DLs5W1vk3JwUow==", "license": "MIT", "dependencies": { - "expo-dev-launcher": "~57.0.3", - "expo-dev-menu": "~57.0.3", + "expo-dev-launcher": "~57.0.9", + "expo-dev-menu": "~57.0.9", "expo-dev-menu-interface": "~57.0.0", - "expo-manifests": "~57.0.0", - "expo-updates-interface": "~57.0.0" + "expo-manifests": "~57.0.1", + "expo-updates-interface": "~57.0.1" }, "peerDependencies": { "expo": "*" } }, "node_modules/expo-dev-launcher": { - "version": "57.0.3", - "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-57.0.3.tgz", - "integrity": "sha512-JBGCEsPBV5I/MgXTmEEMSD+LHxEJjMgsj0oqLwMXyM74+j3hAgEeeXwV9nzuggWWO1f8O6S06p8IykXmaMoueQ==", + "version": "57.0.9", + "resolved": "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-57.0.9.tgz", + "integrity": "sha512-f2LhS6FaQBKACSNQ1opPR7bg6ehAJnrDuEkewqINJkTDryhGY7Y6P21uoXWJzEc9IFJAjUKan8A8AOztibGtMQ==", "license": "MIT", "dependencies": { - "@expo/schema-utils": "^57.0.0", - "expo-dev-menu": "~57.0.3", - "expo-manifests": "~57.0.0" + "@expo/schema-utils": "^57.0.2", + "expo-dev-menu": "~57.0.9", + "expo-manifests": "~57.0.1" }, "peerDependencies": { "expo": "*", @@ -8598,9 +9065,9 @@ } }, "node_modules/expo-dev-menu": { - "version": "57.0.3", - "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-57.0.3.tgz", - "integrity": "sha512-WGhoVhXhunXWG00GUXTZrW9Z3z1YPTKb4kRN0Mvn9hPtXG00+OqjlnIqOjQTEJjLOcc9PNNiQsZX6Gif4DWjCA==", + "version": "57.0.9", + "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-57.0.9.tgz", + "integrity": "sha512-OGU3Apwx1fr8HDUD9F66tk/CuxiIhYkHci4837vX7ZckS6yI/yL6gvcmgqvNCoE4pDV9demjaGEZmSJ2xTrUhg==", "license": "MIT", "dependencies": { "expo-dev-menu-interface": "~57.0.0" @@ -8620,9 +9087,9 @@ } }, "node_modules/expo-device": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-57.0.0.tgz", - "integrity": "sha512-XiTtUhyS64xO8AtEY14FI1vJpUT5b+cyxhjAsHIsoAx6y4rLF719pVY2sNx1MJYb/l7qa9kxWAcMDfk8Q8Gcpg==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-57.0.1.tgz", + "integrity": "sha512-jyEMDUticH+dhcL3GHa2aiifOvGXJsmb3oVT2R2q4i8bN7Bddy61+NkpMmuS2VAZrvoLQwf0TJJ/1vi1ukvutA==", "license": "MIT", "dependencies": { "ua-parser-js": "^0.7.33" @@ -8632,24 +9099,24 @@ } }, "node_modules/expo-document-picker": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-document-picker/-/expo-document-picker-57.0.0.tgz", - "integrity": "sha512-foT1pA3tD7KvcqXwjQBh4qEDjHT9U9MhZ6H2aF38VolCiHRhXDQLtKQqCeXjbHxJhSf8HC/YPV3IRxDxFTL2sA==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-document-picker/-/expo-document-picker-57.0.1.tgz", + "integrity": "sha512-qBwM5oxDZ3I9kwFD3pUE1oK/WNv9artoEKO6UpqhQgNRr0XA1ALRVWYjkF4+ge9lUNDRehjTm/jenINkzqg84g==", "license": "MIT", "peerDependencies": { "expo": "*" } }, "node_modules/expo-eas-client": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-57.0.0.tgz", - "integrity": "sha512-HYroDzqYFpALIXW5tpQD2WHqij3iUal+fXzVJhIYV3OdVcbobxt+p6209OJDARlU431CANZwp4vPmS7yRCWTCw==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-57.0.1.tgz", + "integrity": "sha512-4w51+zsl/ziUHQMJgLgUdgsNhRPAwHBfySpPB1hpWU21X74QS9T4SqDftaRnrDagn/DfcrXUMJvHbDQUxLPJNA==", "license": "MIT" }, "node_modules/expo-file-system": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-57.0.0.tgz", - "integrity": "sha512-G+eytNuNGMiS7dbdj1j0nAYMowXnNr1vpO+jss6nQvBlRxshcGBFMtk8xfc67ynz0MUVkzod7WwKO7Vf1iOaJw==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-57.0.1.tgz", + "integrity": "sha512-w7/ERvQFrGP2apTO9lDtZ+O6JQIhfakL7+Xqzh+rfMO9B4LB4qwrz+YvLgir8KFRVX64JHBnRuYBVLY1oQZcqw==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -8657,9 +9124,9 @@ } }, "node_modules/expo-font": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-57.0.0.tgz", - "integrity": "sha512-zF+J7WrNFjqyAADwdvDgkFEoIQv9DqcjJ57HVstNEH7/7Tx1ThPEhKraodEQOwSjMYWirP+4BYsVbdb+/Zr4QQ==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-57.0.1.tgz", + "integrity": "sha512-QyS9L1Kh9sKJg4gfU6rdbpxpmH+DyzBX8z6jVvXMUDoqLr1GqmkO/Wu379KCXjL///kWbhpNlbi7AgBuj4VdIQ==", "license": "MIT", "dependencies": { "fontfaceobserver": "^2.1.0" @@ -8682,57 +9149,57 @@ } }, "node_modules/expo-haptics": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-haptics/-/expo-haptics-57.0.0.tgz", - "integrity": "sha512-va+uB/DoMlT9f0OJ8v24iNqs+YH6Q6wip+LLjVvalbJzGK8LvZQ+gIiauogFxAAFLQIJzrQVJGf+0BmV3q13bQ==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-haptics/-/expo-haptics-57.0.1.tgz", + "integrity": "sha512-8VhbnxlIrfXjP0syZr1JT197nafYicQu9119adOJnX62osU9Cw+PdDnAx/6LxuKJRzQdwxOMq7b7eWjhNL5zAQ==", "license": "MIT", "peerDependencies": { "expo": "*" } }, "node_modules/expo-image-loader": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-57.0.0.tgz", - "integrity": "sha512-EhwnoPC4T/EMdB7Nsg7qITzhO/qB0hUnmVghmtAKQwwDVaLWWYCGE4NLkes3zk9Ub451SmS/swgPp4PCPzOlnw==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-57.0.1.tgz", + "integrity": "sha512-uhrZKLT/cTl2mXyR28kPpVkS5O+PK9N1QA/07IFM4f5T4g0lTW1JHT3NEWwEEsGFldPmVX4j7LwUVVZxE+woug==", "license": "MIT", "peerDependencies": { "expo": "*" } }, "node_modules/expo-image-manipulator": { - "version": "57.0.1", - "resolved": "https://registry.npmjs.org/expo-image-manipulator/-/expo-image-manipulator-57.0.1.tgz", - "integrity": "sha512-6M+Ii1JlaOZxaJgvEpzJ6omKr6RxCnp3rAS3nyninGE9eX+SUFjvpCnidasQHhfZb0wBpzq3MXJI6T4rJ2WWUg==", + "version": "57.0.6", + "resolved": "https://registry.npmjs.org/expo-image-manipulator/-/expo-image-manipulator-57.0.6.tgz", + "integrity": "sha512-9eg0nTC0LRwnPgLajs27FoZvlvj1uSmn9dtADzR9RmnrsGLn345llMqm29IbN+WSbdHJF7E3GlengThLdKAQLg==", "license": "MIT", "dependencies": { - "expo-image-loader": "~57.0.0" + "expo-image-loader": "~57.0.1" }, "peerDependencies": { "expo": "*" } }, "node_modules/expo-image-picker": { - "version": "57.0.1", - "resolved": "https://registry.npmjs.org/expo-image-picker/-/expo-image-picker-57.0.1.tgz", - "integrity": "sha512-DHwFK48ZKkHbGKWgamwfedK/THpM2lvqIFADi60F7EnO5D7limVFz5ZR6UPCa+CKKmNNE7D5wW36oNs61372qA==", + "version": "57.0.6", + "resolved": "https://registry.npmjs.org/expo-image-picker/-/expo-image-picker-57.0.6.tgz", + "integrity": "sha512-6Of7SzyFVC+WFuFxhD4+nRTQ9joqldPhbiVWRsumg4ybttKmY8GxrnXAUSIDfa9DSk9PhgIAy2C1c5y1+CnU3g==", "license": "MIT", "dependencies": { - "expo-image-loader": "~57.0.0" + "expo-image-loader": "~57.0.1" }, "peerDependencies": { "expo": "*" } }, "node_modules/expo-json-utils": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-57.0.0.tgz", - "integrity": "sha512-GJMjJlS3ZRTXWkKJPXY9OjscEEyPxbvNURBJ9Gkd3KxS4Hzof+EdK8pF+3Ty4ec435ciYm9ll+IWznuVHYMiow==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-57.0.1.tgz", + "integrity": "sha512-cgTe1NqzQdYs/WN+3nIY5IZg8s0pb0xaTUbhYvxQDn137GbwRfHoGM2se3m3Vsl4Qu+B9G4RPEK5WJDEU2Do7g==", "license": "MIT" }, "node_modules/expo-keep-awake": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-57.0.0.tgz", - "integrity": "sha512-WqEoyDNSmUeAI9Gu7UaWKDjOhfaV+jGcms7N0hh/EAr7sqJrI2s0HpLSC3P9cWfXFUZCL1zZjd22m/NbsJYCKg==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-57.0.1.tgz", + "integrity": "sha512-28lkFImeXTS+bhAjuCFV7w7tW5bXg27BJVrxv+nC/nyYa86qEa0oFeHwqol6ha5k4pdVDQgBF09GM4A1k76Ssg==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -8751,12 +9218,12 @@ } }, "node_modules/expo-linking": { - "version": "57.0.1", - "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-57.0.1.tgz", - "integrity": "sha512-3Zr+UsTXPiUyGktGqqP0byXH02Yp7lsdmasenuZAMEn89cjD8Rs9j8o7kikjOzb+QnTR1lofgYu21QhpvCf6zg==", + "version": "57.0.4", + "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-57.0.4.tgz", + "integrity": "sha512-e1alfHNJdywIfJkCuKMc6M3hBfAGPd2gKMeF/6V7qwFWzHCS2mTBqU+KaO4FLpltA5Nt6CYEx6zmUlGfUF+8lA==", "license": "MIT", "dependencies": { - "expo-constants": "~57.0.2", + "expo-constants": "~57.0.7", "invariant": "^2.2.4" }, "peerDependencies": { @@ -8765,9 +9232,9 @@ } }, "node_modules/expo-local-authentication": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-local-authentication/-/expo-local-authentication-57.0.0.tgz", - "integrity": "sha512-/ZzS7OD5OaAEhSF/+zPWZqzT8xWy1rMICfDqP5ojJ6Flh4wgAOedG37p8UZlTQYJRR5u1NQ9AoAePV8H/ky14g==", + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/expo-local-authentication/-/expo-local-authentication-57.0.2.tgz", + "integrity": "sha512-8K4zcrQ5wZkRS1rwEWY8qHbeGVMNh35e9D1VTVKlMHz1O47itW+pW6iBVuqwGFLozN4fRBeEDQH8hu9Gt58YuQ==", "license": "MIT", "dependencies": { "invariant": "^2.2.4" @@ -8777,9 +9244,9 @@ } }, "node_modules/expo-localization": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-57.0.0.tgz", - "integrity": "sha512-6/o4SE4p1K8f0vXrm5oqt7SxyRPLomdhsANsZOwAqduTC/rzkLsqh5FidgppoTR6lPKT58z+jfk5R3grmbjQtA==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-57.0.1.tgz", + "integrity": "sha512-8Ffl4UTbOsQeGT0v5fxMbyPHyPMPnhSPDFQJa8p9rjJrthFoAtNi+fL6Ssmrvf1/7dmPq1mVY52MEt0TMEfgjA==", "license": "MIT", "dependencies": { "rtl-detect": "^1.0.2" @@ -8790,21 +9257,21 @@ } }, "node_modules/expo-mail-composer": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-mail-composer/-/expo-mail-composer-57.0.0.tgz", - "integrity": "sha512-1W3KPWZ6pTEwB5hlJi4tk9omS/kbrESavS140FeT6QA9bR7ZNuNlpbPFiLLE0iqe66f01rxQ35PK8Z08tTGvXw==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-mail-composer/-/expo-mail-composer-57.0.1.tgz", + "integrity": "sha512-6AFey5bULnkE2ZQD20Q31eM8CpoRgkhOcT/4Y08jBHFSxxEy8aAzsbrzc/RpVT42E7I/HSL2JHdfr+HZ9tofrA==", "license": "MIT", "peerDependencies": { "expo": "*" } }, "node_modules/expo-manifests": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-57.0.0.tgz", - "integrity": "sha512-JDKDuF1gd3wPywhu+VzH+qFNDlu91Unqpcre6R9b14MEMq5L3mG6XL9LOySChiWlLJAoObeNPdVV7Od6P++49g==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-57.0.1.tgz", + "integrity": "sha512-qB/mDG2dYdl+EvUeQuqP8KFYCFgFCQjJYdWIHo8SFBgDzMYmdF286DFY2M1M9Okr99wkb5M4tgA3aCcwv3aEQA==", "license": "MIT", "dependencies": { - "expo-json-utils": "~57.0.0" + "expo-json-utils": "~57.0.1" }, "peerDependencies": { "expo": "*" @@ -8908,12 +9375,12 @@ } }, "node_modules/expo-modules-autolinking": { - "version": "57.0.3", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-57.0.3.tgz", - "integrity": "sha512-qPMu2o/xXJFFZY0+gYDspPti6jTRynnqe4Spl1c/XM7e37p2/Bw+Ed8WX7AA5+bMg7H1gIke8P2IzvQiU3UqaA==", + "version": "57.0.9", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-57.0.9.tgz", + "integrity": "sha512-lj2nsAKMMRLXSFnGgaaQrWJ2fdSpLPc/bca6Rkiw4g8zYPn7qX4MRUJgavvzm/hBrzvMnlhXVgJtidOGuwBh+w==", "license": "MIT", "dependencies": { - "@expo/require-utils": "^57.0.0", + "@expo/require-utils": "^57.0.4", "@expo/spawn-async": "^1.8.0", "chalk": "^4.1.0", "commander": "^7.2.0" @@ -8953,16 +9420,16 @@ } }, "node_modules/expo-notifications": { - "version": "57.0.2", - "resolved": "https://registry.npmjs.org/expo-notifications/-/expo-notifications-57.0.2.tgz", - "integrity": "sha512-8acQPiwmIlmZ+MkieQkaFyJL7/2YpY6b9Rf/afvUA7b3Mxq2TgBYeq5mCv1LJOkuul/H1NdytZ/ExaYXKO/4Fw==", + "version": "57.0.7", + "resolved": "https://registry.npmjs.org/expo-notifications/-/expo-notifications-57.0.7.tgz", + "integrity": "sha512-77cqQ1E3B8RQ7FadKSl+bOeSzUfbMhbjMxklqQffXIHx1dILrRELFhq5/UkBW66r+F58KtGEMlw0atPVY2qJyQ==", "license": "MIT", "dependencies": { - "@expo/image-utils": "^0.11.0", + "@expo/image-utils": "^0.11.4", "abort-controller": "^3.0.0", "badgin": "^1.1.5", - "expo-application": "~57.0.0", - "expo-constants": "~57.0.2" + "expo-application": "~57.0.2", + "expo-constants": "~57.0.7" }, "peerDependencies": { "expo": "*", @@ -8971,15 +9438,15 @@ } }, "node_modules/expo-router": { - "version": "57.0.6", - "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-57.0.6.tgz", - "integrity": "sha512-lbLHrs9JRxUcI/UPkFmHoeZqkFeCvGf9ATC6eJOaiEwkS8wQXYUEfHF3nYXHWS601c9xwUFRf6J5PJhqepdRkA==", + "version": "57.0.8", + "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-57.0.8.tgz", + "integrity": "sha512-xAyTnZl597G9/r17GOuyTy6VlhjYCVmgzgmP00bhZ9b+VstPl3tTrOOhSFagVpeln47nKp7x7vgkANNheCv4eQ==", "license": "MIT", "dependencies": { "@expo/log-box": "^57.0.1", - "@expo/metro-runtime": "^57.0.5", + "@expo/metro-runtime": "^57.0.7", "@expo/schema-utils": "^57.0.2", - "@expo/ui": "^57.0.6", + "@expo/ui": "^57.0.7", "@radix-ui/react-slot": "^1.2.0", "@radix-ui/react-tabs": "^1.1.12", "@react-native-masked-view/masked-view": "^0.3.2", @@ -8999,7 +9466,7 @@ "react-fast-compare": "^3.2.2", "react-is": "^19.1.0", "react-native-drawer-layout": "^4.2.2", - "react-native-screens": "^4.25.2", + "react-native-screens": "^4.26.0", "server-only": "^0.0.1", "sf-symbols-typescript": "^2.1.0", "shallowequal": "^1.1.0", @@ -9008,18 +9475,18 @@ }, "peerDependencies": { "@expo/log-box": "^57.0.1", - "@expo/metro-runtime": "^57.0.5", + "@expo/metro-runtime": "^57.0.7", "@testing-library/react-native": ">= 13.2.0", "expo": "*", - "expo-constants": "^57.0.5", - "expo-linking": "^57.0.3", + "expo-constants": "^57.0.7", + "expo-linking": "^57.0.4", "react": "*", "react-dom": "*", "react-native": "*", "react-native-gesture-handler": "*", "react-native-reanimated": "*", "react-native-safe-area-context": ">= 5.4.0", - "react-native-screens": "^4.25.2", + "react-native-screens": "^4.26.0", "react-native-web": "*", "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" }, @@ -9045,9 +9512,9 @@ } }, "node_modules/expo-secure-store": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-secure-store/-/expo-secure-store-57.0.0.tgz", - "integrity": "sha512-vkP16rhW7b4bljW5BC4kKXBpNxQ0O1E9SpI5NIfh2biZnszLTpI/gUF4oBsvOY2nvkh7oXS2ERuUoA8cuS8FWQ==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-secure-store/-/expo-secure-store-57.0.1.tgz", + "integrity": "sha512-tLa1VmSadOq19mA/dwkl99RbHyjLE0T1qqBYMY3/OsguZTI+rlrDy/DDJjupqlVtmr95hD7o1pYqx5aL+B4YMA==", "license": "MIT", "peerDependencies": { "expo": "*" @@ -9074,13 +9541,13 @@ } }, "node_modules/expo-splash-screen": { - "version": "57.0.1", - "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-57.0.1.tgz", - "integrity": "sha512-fUKsRXp+9VI3velrxSdE7nmF5kVIHqXNd/o+qDS8wlFV/S5DlC49W1USDXh3QEDMJOX6hIcZ21B24hapxSOx6g==", + "version": "57.0.5", + "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-57.0.5.tgz", + "integrity": "sha512-ZN0LDXlhHRNFjXTYZDojXk8IfaoUIu7qa3hhoBTXgyj1UB/iewGlH6+M3Nvhun2lY2d/+xhwqMhv0hIRoBo09Q==", "license": "MIT", "dependencies": { - "@expo/config-plugins": "~57.0.1", - "@expo/image-utils": "^0.11.0", + "@expo/config-plugins": "~57.0.6", + "@expo/image-utils": "^0.11.4", "xml2js": "0.6.0" }, "peerDependencies": { @@ -9088,9 +9555,9 @@ } }, "node_modules/expo-status-bar": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-57.0.0.tgz", - "integrity": "sha512-wq1fDVAjfrzCj67hOcvEkGpgRrb6xVI7oSA3bfsQ08SFk8il7vGixJq+xyEbtdcrI9CDiNKQrT3ZIjgnyGbbBA==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-57.0.1.tgz", + "integrity": "sha512-Xwaq1gAoVRWx5dPG5VhT5RSbnI9OilhZnO5qoPBnUaBAa5VzRzfdS8q0/bsPt0jR2DKLtGuP0bQ6efMJ4RIMDg==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -9121,9 +9588,9 @@ } }, "node_modules/expo-system-ui": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-57.0.0.tgz", - "integrity": "sha512-jkGRY0RQsncEhaCPdoiNbRCPAe8q5kFrrMbkiLr7p0oFMMY8LOviSKBpUXLnuwzM1gHC/J531tntrhj+nwpFZA==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-57.0.1.tgz", + "integrity": "sha512-r8a6Jk2suL0vI7Uq4iKJab5Eesk8dkB56Q6HksVNkzuAExV0axoikQwZv8aAyHGbu2VHp0artB0N1/PQDLSgBg==", "license": "MIT", "dependencies": { "@react-native/normalize-colors": "0.86.0", @@ -9141,21 +9608,21 @@ } }, "node_modules/expo-updates": { - "version": "57.0.4", - "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-57.0.4.tgz", - "integrity": "sha512-H0Kp9iEKZjJ999KXgTGs2WwSkzG4R/Mm24Jaypapfz70k0+Xy6SF1CN3oeo+qqTOxANrW0zy21cGxYsh+yYTiw==", + "version": "57.0.10", + "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-57.0.10.tgz", + "integrity": "sha512-1j6wIrF7rFAnfiiMxaSfaA6nV5oOeJnAIpquQDpQ70Jd9hKGt9PPDtf0iByiz+AM+PgNbKFpGYuk13sGI+kd1g==", "license": "MIT", "dependencies": { "@expo/code-signing-certificates": "^0.0.6", - "@expo/plist": "^0.8.0", + "@expo/plist": "^0.8.1", "@expo/spawn-async": "^1.8.0", "arg": "^4.1.0", "chalk": "^4.1.2", "debug": "^4.3.4", - "expo-eas-client": "~57.0.0", - "expo-manifests": "~57.0.0", + "expo-eas-client": "~57.0.1", + "expo-manifests": "~57.0.1", "expo-structured-headers": "~57.0.0", - "expo-updates-interface": "~57.0.0", + "expo-updates-interface": "~57.0.1", "getenv": "^2.0.0", "glob": "^13.0.0", "ignore": "^5.3.1", @@ -9178,9 +9645,9 @@ } }, "node_modules/expo-updates-interface": { - "version": "57.0.0", - "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-57.0.0.tgz", - "integrity": "sha512-AQASxPDpUjHG55R4WXZ5mLu0rE4F2T/JfHOsXLfZPS1A268ynHHFv+MnZ99/Gb0xWvg3ZjNTgXPEWoRCShSJJg==", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-57.0.1.tgz", + "integrity": "sha512-+LUWwJ0gf/TEKMVdQAw/Gjih4dvrk+URgy24X9qEGKuuMDZqjBRm9T4yQyBVALGL5TTdPUaB6ILxx3lshm3pwQ==", "license": "MIT", "peerDependencies": { "expo": "*" @@ -9192,134 +9659,6 @@ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "license": "MIT" }, - "node_modules/expo/node_modules/@expo/cli": { - "version": "57.0.3", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-57.0.3.tgz", - "integrity": "sha512-py29skFzf5650QPClzGPsozIiok21Z4c1Dp+oCVlV1WcQJ52xKF8KdxhC+NdUOqW2GG0xPbPGvw1kocAGsSgGQ==", - "license": "MIT", - "dependencies": { - "@expo/code-signing-certificates": "^0.0.6", - "@expo/config": "~57.0.1", - "@expo/config-plugins": "~57.0.1", - "@expo/devcert": "^1.2.1", - "@expo/env": "~2.4.0", - "@expo/image-utils": "^0.11.0", - "@expo/inline-modules": "^0.1.1", - "@expo/json-file": "^11.0.0", - "@expo/log-box": "^57.0.0", - "@expo/metro": "~56.0.0", - "@expo/metro-config": "~57.0.2", - "@expo/metro-file-map": "^57.0.0", - "@expo/osascript": "^2.7.0", - "@expo/package-manager": "^1.13.0", - "@expo/plist": "^0.8.0", - "@expo/prebuild-config": "^57.0.3", - "@expo/require-utils": "^57.0.0", - "@expo/router-server": "^57.0.1", - "@expo/schema-utils": "^57.0.0", - "@expo/spawn-async": "^1.8.0", - "@expo/ws-tunnel": "^2.0.0", - "@expo/xcpretty": "^4.4.4", - "@react-native/dev-middleware": "0.86.0", - "accepts": "^1.3.8", - "arg": "^5.0.2", - "bplist-creator": "0.1.0", - "bplist-parser": "^0.3.1", - "chalk": "^4.0.0", - "ci-info": "^3.3.0", - "compression": "^1.7.4", - "connect": "^3.7.0", - "debug": "^4.3.4", - "dnssd-advertise": "^1.1.4", - "expo-server": "^57.0.0", - "fetch-nodeshim": "^0.4.10", - "getenv": "^2.0.0", - "glob": "^13.0.0", - "lan-network": "^0.2.1", - "multitars": "^1.0.0", - "node-forge": "^1.3.3", - "npm-package-arg": "^11.0.0", - "ora": "^3.4.0", - "picomatch": "^4.0.4", - "pretty-format": "^29.7.0", - "progress": "^2.0.3", - "prompts": "^2.3.2", - "resolve-from": "^5.0.0", - "semver": "^7.6.0", - "send": "^0.19.0", - "slugify": "^1.3.4", - "stacktrace-parser": "^0.1.10", - "structured-headers": "^0.4.1", - "terminal-link": "^2.1.1", - "toqr": "^0.1.1", - "wrap-ansi": "^7.0.0", - "ws": "^8.12.1", - "zod": "^3.25.76" - }, - "bin": { - "expo-internal": "main.js" - }, - "peerDependencies": { - "expo": "*", - "expo-router": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "expo-router": { - "optional": true - }, - "react-native": { - "optional": true - } - } - }, - "node_modules/expo/node_modules/@expo/cli/node_modules/@expo/router-server": { - "version": "57.0.1", - "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-57.0.1.tgz", - "integrity": "sha512-jZ+jHG34rRa8HyurTQq5r558dMcb77F3Mt0HMKotAJ8Wm5bJLULJsL3KVLkEVcYP254xI9zzeJVcN79Fck/nLQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "peerDependencies": { - "@expo/metro-runtime": "^57.0.2", - "expo": "*", - "expo-constants": "^57.0.2", - "expo-font": "^57.0.0", - "expo-router": "*", - "expo-server": "^57.0.0", - "react": "*", - "react-dom": "*", - "react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1" - }, - "peerDependenciesMeta": { - "@expo/metro-runtime": { - "optional": true - }, - "expo-router": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "react-server-dom-webpack": { - "optional": true - } - } - }, - "node_modules/expo/node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/expo/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", @@ -9332,45 +9671,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/expo/node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/expo/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/expo/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/expo/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/expo/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -9400,66 +9700,6 @@ "node": ">=0.10.0" } }, - "node_modules/expo/node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/expo/node_modules/send": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", - "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.4.1", - "range-parser": "~1.2.1", - "statuses": "~2.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expo/node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expo/node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/expo/node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/exponential-backoff": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", @@ -10317,6 +10557,21 @@ "integrity": "sha512-5meXwsZxgiqFaJjNzwjzI9IyUkuGGBisu+z9BvQWmGVpjH6nz11hgqkyxe4dl8UAdyIV4lTbz91+Dlnjz0VxqA==", "license": "MIT" }, + "node_modules/hermes-estree": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.36.1.tgz", + "integrity": "sha512-guv1nQ6IJ7S83NRFPWc3SA7IBZrdNC9kapwOq6uXvF4wP+sDCgjzQbKPCoyYmoyZRzztF/n/c36l/rccCZSiCw==", + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.36.1.tgz", + "integrity": "sha512-GApNk4zLHi2UWoWZZkx7LNCOSzLSc5lB55pZ/PhK7ycFeg7u5LcF88p/WbpIi1XUDtE0MpHE3uRR3u3KB7TjSQ==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.36.1" + } + }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -12724,9 +12979,9 @@ "license": "MIT" }, "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -12739,23 +12994,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", "cpu": [ "arm64" ], @@ -12773,9 +13028,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", "cpu": [ "arm64" ], @@ -12793,9 +13048,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", "cpu": [ "x64" ], @@ -12813,9 +13068,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", "cpu": [ "x64" ], @@ -12833,9 +13088,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", "cpu": [ "arm" ], @@ -12853,9 +13108,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", "cpu": [ "arm64" ], @@ -12876,9 +13131,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", "cpu": [ "arm64" ], @@ -12899,9 +13154,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", "cpu": [ "x64" ], @@ -12922,9 +13177,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", "cpu": [ "x64" ], @@ -12945,9 +13200,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", "cpu": [ "arm64" ], @@ -12965,9 +13220,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", "cpu": [ "x64" ], @@ -15770,9 +16025,9 @@ } }, "node_modules/react-native-screens": { - "version": "4.25.2", - "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.25.2.tgz", - "integrity": "sha512-1Nj1fusFd+rIMKU/qC9yGKVG+3ofh11d3OdBQKL1iVvQfKvcB8vhvTGQf2TkfxW3bamxN+hCZIXmNuU0mRkyDg==", + "version": "4.26.2", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.26.2.tgz", + "integrity": "sha512-2XnWsZToKj76trGtEZzx5ELD/qOICFEprEeUntImmitQFVUkea27fiWdUSITArI356Y1qynpXZINW+Unbhky/A==", "license": "MIT", "dependencies": { "react-freeze": "^1.0.0", @@ -15780,7 +16035,7 @@ }, "peerDependencies": { "react": "*", - "react-native": ">=0.82.0" + "react-native": "*" } }, "node_modules/react-native-svg": { diff --git a/package.json b/package.json index 279509d2..71d4e094 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "lint": "eslint \"**/*.{ts,tsx}\"", "lint:i18n": "eslint ./app ./components ./hooks ./services ./constants ./types --max-warnings=0", "typecheck": "tsc --noEmit", + "check:native-deps": "node scripts/check-native-deps.js", "test:scripts": "node_modules/.bin/jest --config jest.config.scripts.js --ci --forceExit", "dev:list-devices": "./scripts/list-ios-devices.sh", "dev:device": "./scripts/dev-device.sh", @@ -61,7 +62,7 @@ "status:all": "npm run status:ios && npm run status:android" }, "dependencies": { - "@expo/metro-runtime": "~57.0.3", + "@expo/metro-runtime": "~57.0.7", "@gorhom/bottom-sheet": "^5.2.13", "@react-native-async-storage/async-storage": "3.1.1", "@react-native-community/netinfo": "12.0.1", @@ -71,32 +72,32 @@ "@tanstack/react-query": "^5.101.2", "@tanstack/react-query-persist-client": "^5.101.1", "clsx": "^2.1.1", - "expo": "^57.0.1", - "expo-blur": "~57.0.0", - "expo-build-properties": "~57.0.2", - "expo-camera": "~57.0.1", - "expo-clipboard": "~57.0.0", - "expo-constants": "~57.0.2", - "expo-dev-client": "~57.0.3", - "expo-device": "~57.0.0", - "expo-document-picker": "~57.0.0", - "expo-font": "~57.0.0", - "expo-haptics": "~57.0.0", - "expo-image-manipulator": "~57.0.1", - "expo-image-picker": "~57.0.1", + "expo": "^57.0.8", + "expo-blur": "~57.0.2", + "expo-build-properties": "~57.0.7", + "expo-camera": "~57.0.3", + "expo-clipboard": "~57.0.1", + "expo-constants": "~57.0.7", + "expo-dev-client": "~57.0.8", + "expo-device": "~57.0.1", + "expo-document-picker": "~57.0.1", + "expo-font": "~57.0.1", + "expo-haptics": "~57.0.1", + "expo-image-manipulator": "~57.0.6", + "expo-image-picker": "~57.0.6", "expo-linear-gradient": "~57.0.1", - "expo-linking": "~57.0.1", - "expo-local-authentication": "~57.0.0", - "expo-localization": "~57.0.0", - "expo-mail-composer": "^57.0.0", - "expo-notifications": "~57.0.2", - "expo-router": "~57.0.6", - "expo-secure-store": "~57.0.0", + "expo-linking": "~57.0.4", + "expo-local-authentication": "~57.0.2", + "expo-localization": "~57.0.1", + "expo-mail-composer": "~57.0.1", + "expo-notifications": "~57.0.7", + "expo-router": "~57.0.8", + "expo-secure-store": "~57.0.1", "expo-speech-recognition": "56.0.1", - "expo-splash-screen": "~57.0.1", - "expo-status-bar": "~57.0.0", - "expo-system-ui": "~57.0.0", - "expo-updates": "~57.0.4", + "expo-splash-screen": "~57.0.5", + "expo-status-bar": "~57.0.1", + "expo-system-ui": "~57.0.1", + "expo-updates": "~57.0.9", "i18next": "^26.3.6", "intl-pluralrules": "^2.0.1", "nativewind": "^4.2.6", @@ -114,7 +115,7 @@ "react-native-pager-view": "8.0.2", "react-native-reanimated": "4.5.0", "react-native-safe-area-context": "~5.7.0", - "react-native-screens": "4.25.2", + "react-native-screens": "4.26.2", "react-native-svg": "15.15.5", "react-native-web": "^0.21.2", "react-native-worklets": "0.10.2", @@ -153,7 +154,6 @@ }, "overrides": { "uuid": "^11.1.1", - "expo-modules-core": "57.0.7", "minimatch": { "10.2.5": { "brace-expansion": "^5.0.7" diff --git a/scripts/archive-and-upload.sh b/scripts/archive-and-upload.sh index 689277a9..74479c35 100755 --- a/scripts/archive-and-upload.sh +++ b/scripts/archive-and-upload.sh @@ -59,6 +59,12 @@ if (( EXPORT_OK == 0 )); then exit 70 fi +# Gate the upload on dyld symbol resolution. A pod version skew archives and +# exports cleanly but aborts at launch ("DYLD 4 Symbol missing"), which no +# compile-time check catches — build 173 shipped that way. +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +"$SCRIPT_DIR/verify-dyld-symbols.sh" + # Upload IPA explicitly via altool so we get a real success/failure response. # (method: app-store exports only; xcodebuild's built-in upload with # method: app-store-connect silently drops builds on Apple's ingestion side.) diff --git a/scripts/check-native-deps.js b/scripts/check-native-deps.js new file mode 100644 index 00000000..548c806c --- /dev/null +++ b/scripts/check-native-deps.js @@ -0,0 +1,60 @@ +#!/usr/bin/env node +'use strict' +// check-native-deps.js — fail when two versions of one native module are installed. +// +// A native build can only contain one version of a given native module. When npm +// nests a second copy (a transitive dep wanting a newer version than the root +// pin), the pods still compile, but the binaries end up built against mismatched +// Swift signatures and dyld aborts at launch with "Symbol not found". TestFlight +// build 173 shipped exactly that way and crashed on every launch. +// +// `expo-doctor` detects this, but it exits non-zero for unrelated reasons too +// (patch drift, CNG config fields), so it can't gate CI directly. Run it and key +// on just the duplicate-native-module check. + +const { execFileSync } = require('child_process') + +let output +try { + output = execFileSync('npx', ['expo-doctor', '--verbose'], { + encoding: 'utf8', + stdio: ['ignore', 'pipe', 'pipe'], + }) +} catch (err) { + // expo-doctor exits non-zero whenever any check fails; we only care about one, + // so read its output rather than trusting the exit code. + output = `${err.stdout || ''}${err.stderr || ''}` +} + +if (!output.trim()) { + console.error('check-native-deps: expo-doctor produced no output') + process.exit(1) +} + +if (!/Check that no duplicate dependencies are installed/.test(output)) { + console.error('check-native-deps: could not find the duplicate-dependency check in expo-doctor output.') + console.error('expo-doctor may have renamed it — update this script.') + process.exit(1) +} + +const failed = /✖ Check that no duplicate dependencies are installed/.test(output) + +if (!failed) { + console.log('✓ no duplicate native modules') + process.exit(0) +} + +// expo-doctor prints the check name twice: once in the pass/fail list, then +// again heading the detail block. The details ("Found duplicates for X: …") +// follow the last occurrence and run until the next check's ✖/✔ heading. +const sections = output.split(/✖ Check that no duplicate dependencies are installed/) +const detail = sections[sections.length - 1] || '' +const report = detail.split(/\n(?=[✖✔])/)[0].trim() + +console.error('✗ duplicate native modules installed\n') +console.error(report || detail.trim()) +console.error('\nA native build may contain only one version of any native module; two copies') +console.error('link against mismatched signatures and crash at launch in dyld.') +console.error('Fix by aligning the root pin in package.json with what the transitive') +console.error('dependency requires (npx expo install --check), then reinstall.') +process.exit(1) diff --git a/scripts/verify-dyld-symbols.sh b/scripts/verify-dyld-symbols.sh new file mode 100755 index 00000000..f241a703 --- /dev/null +++ b/scripts/verify-dyld-symbols.sh @@ -0,0 +1,105 @@ +#!/usr/bin/env bash +# verify-dyld-symbols.sh — catch "Symbol not found" launch crashes before upload. +# +# A Swift ABI mismatch between two pods (e.g. ExpoCamera built against one +# expo-modules-core protocol signature, a different ExpoModulesCore bundled) +# compiles and archives cleanly, then aborts at launch in dyld with +# EXC_CRASH / "DYLD 4 Symbol missing". TestFlight build 173 shipped that way. +# +# Scope: only symbols that should come from a framework *inside the bundle*. +# Each binary's `otool -L` @rpath entries name its embedded dependencies; a +# Swift symbol mangled with one of those framework's module names must be +# exported by that framework. OS dylib symbols are ignored by construction — +# no denylist to maintain. +# +# Usage: ./scripts/verify-dyld-symbols.sh [path/to/Foo.app] +# Defaults to the .app inside build/Threadbase.xcarchive. +# Exit: 0 all resolved · 1 unresolved symbols found · 2 bad invocation + +set -euo pipefail + +APP_PATH="${1:-}" +if [[ -z "$APP_PATH" ]]; then + ARCHIVE_PATH="${ARCHIVE_PATH:-build/Threadbase.xcarchive}" + APP_PATH="$(find "$ARCHIVE_PATH/Products/Applications" -maxdepth 1 -name '*.app' 2>/dev/null | head -1 || true)" +fi + +if [[ -z "$APP_PATH" || ! -d "$APP_PATH" ]]; then + echo "verify-dyld-symbols: no .app found (looked for '${APP_PATH:-}')" >&2 + exit 2 +fi + +echo "▸ Verifying dynamic symbols in $(basename "$APP_PATH")" + +APP_NAME="$(basename "$APP_PATH" .app)" +BINARIES=() +[[ -f "$APP_PATH/$APP_NAME" ]] && BINARIES+=("$APP_PATH/$APP_NAME") +while IFS= read -r fw; do + fw_name="$(basename "$fw" .framework)" + [[ -f "$fw/$fw_name" ]] && BINARIES+=("$fw/$fw_name") +done < <(find "$APP_PATH/Frameworks" -maxdepth 1 -name '*.framework' 2>/dev/null | sort) + +if (( ${#BINARIES[@]} == 0 )); then + echo "verify-dyld-symbols: no Mach-O binaries found under $APP_PATH" >&2 + exit 2 +fi + +WORK="$(mktemp -d)" +trap 'rm -rf "$WORK"' EXIT + +# Module names of frameworks actually embedded in the bundle. Swift mangles a +# symbol's defining module into the name as , so these are the +# only prefixes we can attribute to in-bundle code. +MODULES=() +for bin in "${BINARIES[@]}"; do + MODULES+=("$(basename "$bin")") +done + +# Every symbol exported anywhere in the bundle. +for bin in "${BINARIES[@]}"; do + nm -arch arm64 -gU "$bin" 2>/dev/null | awk 'NF>=3 {print $3}' +done | sort -u > "$WORK/defined.txt" + +# Undefined symbols, tagged with the binary that references them. +for bin in "${BINARIES[@]}"; do + nm -arch arm64 -gu "$bin" 2>/dev/null | awk -v b="$(basename "$bin")" 'NF>=1 {print $NF"\t"b}' +done | sort -u > "$WORK/undefined.txt" + +# Keep only undefined symbols whose Swift-mangled module component names a +# framework bundled in this app. `_$s` is the Swift 5+ mangling prefix; the +# module follows as a length-prefixed identifier, so ExpoModulesCore appears +# literally as "15ExpoModulesCore". +: > "$WORK/patterns.txt" +for mod in "${MODULES[@]}"; do + printf '_\$s[0-9]*%s%s\n' "${#mod}" "$mod" >> "$WORK/patterns.txt" +done + +cut -f1 "$WORK/undefined.txt" | sort -u \ + | grep -E "$(paste -sd'|' "$WORK/patterns.txt")" > "$WORK/inbundle.txt" || true + +comm -23 "$WORK/inbundle.txt" "$WORK/defined.txt" > "$WORK/unresolved.txt" || true + +CHECKED=$(wc -l < "$WORK/inbundle.txt" | tr -d ' ') +echo " ${#BINARIES[@]} binaries · $CHECKED in-bundle symbol references checked" + +if [[ ! -s "$WORK/unresolved.txt" ]]; then + echo " ✓ all inter-framework symbols resolve" + exit 0 +fi + +COUNT=$(wc -l < "$WORK/unresolved.txt" | tr -d ' ') +echo >&2 +echo "✗ $COUNT unresolved symbol(s) — this build would crash at launch in dyld:" >&2 +echo >&2 +while IFS= read -r sym; do + needed_by="$(grep -F "$sym"$'\t' "$WORK/undefined.txt" | cut -f2 | sort -u | tr '\n' ' ')" + echo " $sym" >&2 + echo " referenced from: ${needed_by:-}" >&2 + demangled="$(xcrun swift-demangle --compact <<<"$sym" 2>/dev/null || true)" + [[ -n "$demangled" && "$demangled" != "$sym" ]] && echo " demangled: $demangled" >&2 +done < "$WORK/unresolved.txt" +echo >&2 +echo "Usually a pod version skew: two pods built against different versions of a" >&2 +echo "shared dependency. Check that the Expo module set in package.json is a" >&2 +echo "coherent SDK release (npx expo install --fix) and regenerate ios/Podfile.lock." >&2 +exit 1