diff --git a/.changeset/config.json b/.changeset/config.json index 51dc18f3..3f250ef7 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -14,7 +14,8 @@ "@callstack/brownfield-example-android-app", "@callstack/brownfield-example-ios-app", "@callstack/brownfield-example-rn-app", - "@callstack/brownfield-example-expo-app", + "@callstack/brownfield-example-expo-app-54", + "@callstack/brownfield-example-expo-app-55", "@callstack/react-native-brownfield-tester-integrated", "@callstack/brownfield-gradle-plugin-react" ], diff --git a/.changeset/wet-ears-cough.md b/.changeset/wet-ears-cough.md new file mode 100644 index 00000000..9b5bda36 --- /dev/null +++ b/.changeset/wet-ears-cough.md @@ -0,0 +1,5 @@ +--- +'@callstack/react-native-brownfield': minor +--- + +feat: support Expo 55 diff --git a/.github/actions/androidapp-road-test/action.yml b/.github/actions/androidapp-road-test/action.yml index 8cd2da4b..77796ffc 100644 --- a/.github/actions/androidapp-road-test/action.yml +++ b/.github/actions/androidapp-road-test/action.yml @@ -3,7 +3,7 @@ description: Package the given RN app as AAR, publish to Maven Local, and build inputs: flavor: - description: 'AndroidApp flavor to build (expo or vanilla)' + description: 'AndroidApp flavor to build (expo or vanilla)' required: true rn-project-path: @@ -42,14 +42,14 @@ runs: # == RN app == - name: Prebuild Expo app - if: ${{ inputs.flavor == 'expo' }} + if: ${{ startsWith(inputs.flavor, 'expo') }} run: | cd ${{ inputs.rn-project-path }} yarn run expo prebuild --platform android shell: bash - name: Patch ExpoApp Android build.gradle for CI - if: ${{ inputs.flavor == 'expo' }} + if: ${{ startsWith(inputs.flavor, 'expo') }} run: | cd ${{ inputs.rn-project-path }} yarn run brownfield:prepare:android:ci @@ -78,5 +78,5 @@ runs: # == AndroidApp == - name: Build native Android Brownfield app - run: yarn run build:example:android-consumer:${{ inputs.flavor }} + run: yarn run build:example:android-consumer:${{ startsWith(inputs.flavor, 'expo') && 'expo' || inputs.flavor }} shell: bash diff --git a/.github/actions/appleapp-road-test/action.yml b/.github/actions/appleapp-road-test/action.yml index b4bf7b4c..0c81240e 100644 --- a/.github/actions/appleapp-road-test/action.yml +++ b/.github/actions/appleapp-road-test/action.yml @@ -83,7 +83,7 @@ runs: - name: Build Brownfield iOS native app (${{ inputs.variant }}) run: | - yarn run build:example:ios-consumer:${{ inputs.variant }} + yarn run build:example:ios-consumer:${{ startsWith(inputs.variant, 'expo') && 'expo' || inputs.variant }} shell: bash # ============== diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 353b06e0..3b6c40cf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -84,19 +84,24 @@ jobs: run: yarn run build:tester-integrated:android android-androidapp-expo: - name: Android road test (RNApp & AndroidApp - Expo) + name: Android road test (RNApp & AndroidApp - Expo ${{ matrix.version }}) runs-on: ubuntu-latest needs: build-lint + strategy: + matrix: + include: + - version: '54' + - version: '55' steps: - name: Checkout uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - - name: Run RNApp -> AndroidApp road test (Expo) + - name: Run RNApp -> AndroidApp road test (Expo ${{ matrix.version }}) uses: ./.github/actions/androidapp-road-test with: - flavor: expo - rn-project-path: apps/ExpoApp + flavor: expo${{ matrix.version }} + rn-project-path: apps/ExpoApp${{ matrix.version }} rn-project-maven-path: com/callstack/rnbrownfield/demo/expoapp/brownfieldlib android-androidapp-vanilla: diff --git a/.yarnrc.yml b/.yarnrc.yml index da847f36..a4a2e259 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -2,8 +2,8 @@ compressionLevel: mixed enableGlobalCache: false -nodeLinker: node-modules - nmHoistingLimits: workspaces +nodeLinker: node-modules + yarnPath: .yarn/releases/yarn-4.12.0.cjs diff --git a/apps/AppleApp/package.json b/apps/AppleApp/package.json index 6f135c69..7de580c7 100644 --- a/apps/AppleApp/package.json +++ b/apps/AppleApp/package.json @@ -5,7 +5,9 @@ "type": "module", "scripts": { "internal::build::common": "xcodebuild -project \"Brownfield Apple App.xcodeproj\" -scheme \"Brownfield Apple App\" -sdk iphonesimulator build CODE_SIGNING_ALLOWED=NO -derivedDataPath ./build", - "build:example:ios-consumer:expo": "node prepareXCFrameworks.js --appName ExpoApp && yarn internal::build::common -configuration Release", + "build:example:ios-consumer:expo54": "node prepareXCFrameworks.js --appName ExpoApp54 && yarn internal::build::common -configuration Release", + "build:example:ios-consumer:expo55": "node prepareXCFrameworks.js --appName ExpoApp55 && yarn internal::build::common -configuration Release", + "build:example:ios-consumer:expo": "yarn build:example:ios-consumer:expo55", "build:example:ios-consumer:vanilla": "node prepareXCFrameworks.js --appName RNApp && yarn internal::build::common -configuration \"Release Vanilla\"" }, "devDependencies": { diff --git a/apps/ExpoApp/.gitignore b/apps/ExpoApp54/.gitignore similarity index 100% rename from apps/ExpoApp/.gitignore rename to apps/ExpoApp54/.gitignore diff --git a/apps/ExpoApp/BrownfieldStore.brownie.ts b/apps/ExpoApp54/BrownfieldStore.brownie.ts similarity index 100% rename from apps/ExpoApp/BrownfieldStore.brownie.ts rename to apps/ExpoApp54/BrownfieldStore.brownie.ts diff --git a/apps/ExpoApp/README.md b/apps/ExpoApp54/README.md similarity index 100% rename from apps/ExpoApp/README.md rename to apps/ExpoApp54/README.md diff --git a/apps/ExpoApp/RNApp.tsx b/apps/ExpoApp54/RNApp.tsx similarity index 100% rename from apps/ExpoApp/RNApp.tsx rename to apps/ExpoApp54/RNApp.tsx diff --git a/apps/ExpoApp/app.json b/apps/ExpoApp54/app.json similarity index 96% rename from apps/ExpoApp/app.json rename to apps/ExpoApp54/app.json index 293c5cda..27e1219d 100644 --- a/apps/ExpoApp/app.json +++ b/apps/ExpoApp54/app.json @@ -1,7 +1,7 @@ { "expo": { - "name": "ExpoApp", - "slug": "ExpoApp", + "name": "ExpoApp54", + "slug": "ExpoApp54", "version": "1.0.0", "orientation": "portrait", "icon": "./assets/images/icon.png", diff --git a/apps/ExpoApp/app/(tabs)/_layout.tsx b/apps/ExpoApp54/app/(tabs)/_layout.tsx similarity index 100% rename from apps/ExpoApp/app/(tabs)/_layout.tsx rename to apps/ExpoApp54/app/(tabs)/_layout.tsx diff --git a/apps/ExpoApp/app/(tabs)/explore.tsx b/apps/ExpoApp54/app/(tabs)/explore.tsx similarity index 100% rename from apps/ExpoApp/app/(tabs)/explore.tsx rename to apps/ExpoApp54/app/(tabs)/explore.tsx diff --git a/apps/ExpoApp/app/(tabs)/index.tsx b/apps/ExpoApp54/app/(tabs)/index.tsx similarity index 100% rename from apps/ExpoApp/app/(tabs)/index.tsx rename to apps/ExpoApp54/app/(tabs)/index.tsx diff --git a/apps/ExpoApp/app/_layout.tsx b/apps/ExpoApp54/app/_layout.tsx similarity index 100% rename from apps/ExpoApp/app/_layout.tsx rename to apps/ExpoApp54/app/_layout.tsx diff --git a/apps/ExpoApp/app/modal.tsx b/apps/ExpoApp54/app/modal.tsx similarity index 100% rename from apps/ExpoApp/app/modal.tsx rename to apps/ExpoApp54/app/modal.tsx diff --git a/apps/ExpoApp/assets/images/android-icon-background.png b/apps/ExpoApp54/assets/images/android-icon-background.png similarity index 100% rename from apps/ExpoApp/assets/images/android-icon-background.png rename to apps/ExpoApp54/assets/images/android-icon-background.png diff --git a/apps/ExpoApp/assets/images/android-icon-foreground.png b/apps/ExpoApp54/assets/images/android-icon-foreground.png similarity index 100% rename from apps/ExpoApp/assets/images/android-icon-foreground.png rename to apps/ExpoApp54/assets/images/android-icon-foreground.png diff --git a/apps/ExpoApp/assets/images/android-icon-monochrome.png b/apps/ExpoApp54/assets/images/android-icon-monochrome.png similarity index 100% rename from apps/ExpoApp/assets/images/android-icon-monochrome.png rename to apps/ExpoApp54/assets/images/android-icon-monochrome.png diff --git a/apps/ExpoApp/assets/images/favicon.png b/apps/ExpoApp54/assets/images/favicon.png similarity index 100% rename from apps/ExpoApp/assets/images/favicon.png rename to apps/ExpoApp54/assets/images/favicon.png diff --git a/apps/ExpoApp/assets/images/icon.png b/apps/ExpoApp54/assets/images/icon.png similarity index 100% rename from apps/ExpoApp/assets/images/icon.png rename to apps/ExpoApp54/assets/images/icon.png diff --git a/apps/ExpoApp/assets/images/partial-react-logo.png b/apps/ExpoApp54/assets/images/partial-react-logo.png similarity index 100% rename from apps/ExpoApp/assets/images/partial-react-logo.png rename to apps/ExpoApp54/assets/images/partial-react-logo.png diff --git a/apps/ExpoApp/assets/images/react-logo.png b/apps/ExpoApp54/assets/images/react-logo.png similarity index 100% rename from apps/ExpoApp/assets/images/react-logo.png rename to apps/ExpoApp54/assets/images/react-logo.png diff --git a/apps/ExpoApp/assets/images/react-logo@2x.png b/apps/ExpoApp54/assets/images/react-logo@2x.png similarity index 100% rename from apps/ExpoApp/assets/images/react-logo@2x.png rename to apps/ExpoApp54/assets/images/react-logo@2x.png diff --git a/apps/ExpoApp/assets/images/react-logo@3x.png b/apps/ExpoApp54/assets/images/react-logo@3x.png similarity index 100% rename from apps/ExpoApp/assets/images/react-logo@3x.png rename to apps/ExpoApp54/assets/images/react-logo@3x.png diff --git a/apps/ExpoApp/assets/images/splash-icon.png b/apps/ExpoApp54/assets/images/splash-icon.png similarity index 100% rename from apps/ExpoApp/assets/images/splash-icon.png rename to apps/ExpoApp54/assets/images/splash-icon.png diff --git a/apps/ExpoApp/components/counter/index.ios.tsx b/apps/ExpoApp54/components/counter/index.ios.tsx similarity index 100% rename from apps/ExpoApp/components/counter/index.ios.tsx rename to apps/ExpoApp54/components/counter/index.ios.tsx diff --git a/apps/ExpoApp/components/counter/index.tsx b/apps/ExpoApp54/components/counter/index.tsx similarity index 100% rename from apps/ExpoApp/components/counter/index.tsx rename to apps/ExpoApp54/components/counter/index.tsx diff --git a/apps/ExpoApp/components/external-link.tsx b/apps/ExpoApp54/components/external-link.tsx similarity index 100% rename from apps/ExpoApp/components/external-link.tsx rename to apps/ExpoApp54/components/external-link.tsx diff --git a/apps/ExpoApp/components/haptic-tab.tsx b/apps/ExpoApp54/components/haptic-tab.tsx similarity index 100% rename from apps/ExpoApp/components/haptic-tab.tsx rename to apps/ExpoApp54/components/haptic-tab.tsx diff --git a/apps/ExpoApp/components/hello-wave.tsx b/apps/ExpoApp54/components/hello-wave.tsx similarity index 100% rename from apps/ExpoApp/components/hello-wave.tsx rename to apps/ExpoApp54/components/hello-wave.tsx diff --git a/apps/ExpoApp/components/parallax-scroll-view.tsx b/apps/ExpoApp54/components/parallax-scroll-view.tsx similarity index 100% rename from apps/ExpoApp/components/parallax-scroll-view.tsx rename to apps/ExpoApp54/components/parallax-scroll-view.tsx diff --git a/apps/ExpoApp/components/themed-text.tsx b/apps/ExpoApp54/components/themed-text.tsx similarity index 100% rename from apps/ExpoApp/components/themed-text.tsx rename to apps/ExpoApp54/components/themed-text.tsx diff --git a/apps/ExpoApp/components/themed-view.tsx b/apps/ExpoApp54/components/themed-view.tsx similarity index 100% rename from apps/ExpoApp/components/themed-view.tsx rename to apps/ExpoApp54/components/themed-view.tsx diff --git a/apps/ExpoApp/components/ui/collapsible.tsx b/apps/ExpoApp54/components/ui/collapsible.tsx similarity index 100% rename from apps/ExpoApp/components/ui/collapsible.tsx rename to apps/ExpoApp54/components/ui/collapsible.tsx diff --git a/apps/ExpoApp/components/ui/icon-symbol.ios.tsx b/apps/ExpoApp54/components/ui/icon-symbol.ios.tsx similarity index 100% rename from apps/ExpoApp/components/ui/icon-symbol.ios.tsx rename to apps/ExpoApp54/components/ui/icon-symbol.ios.tsx diff --git a/apps/ExpoApp/components/ui/icon-symbol.tsx b/apps/ExpoApp54/components/ui/icon-symbol.tsx similarity index 100% rename from apps/ExpoApp/components/ui/icon-symbol.tsx rename to apps/ExpoApp54/components/ui/icon-symbol.tsx diff --git a/apps/ExpoApp/constants/theme.ts b/apps/ExpoApp54/constants/theme.ts similarity index 100% rename from apps/ExpoApp/constants/theme.ts rename to apps/ExpoApp54/constants/theme.ts diff --git a/apps/ExpoApp/entry.tsx b/apps/ExpoApp54/entry.tsx similarity index 100% rename from apps/ExpoApp/entry.tsx rename to apps/ExpoApp54/entry.tsx diff --git a/apps/ExpoApp/eslint.config.mjs b/apps/ExpoApp54/eslint.config.mjs similarity index 100% rename from apps/ExpoApp/eslint.config.mjs rename to apps/ExpoApp54/eslint.config.mjs diff --git a/apps/ExpoApp/hooks/use-color-scheme.ts b/apps/ExpoApp54/hooks/use-color-scheme.ts similarity index 100% rename from apps/ExpoApp/hooks/use-color-scheme.ts rename to apps/ExpoApp54/hooks/use-color-scheme.ts diff --git a/apps/ExpoApp/hooks/use-color-scheme.web.ts b/apps/ExpoApp54/hooks/use-color-scheme.web.ts similarity index 100% rename from apps/ExpoApp/hooks/use-color-scheme.web.ts rename to apps/ExpoApp54/hooks/use-color-scheme.web.ts diff --git a/apps/ExpoApp/hooks/use-theme-color.ts b/apps/ExpoApp54/hooks/use-theme-color.ts similarity index 100% rename from apps/ExpoApp/hooks/use-theme-color.ts rename to apps/ExpoApp54/hooks/use-theme-color.ts diff --git a/apps/ExpoApp/package.json b/apps/ExpoApp54/package.json similarity index 87% rename from apps/ExpoApp/package.json rename to apps/ExpoApp54/package.json index 4b2a56e8..38d3d137 100644 --- a/apps/ExpoApp/package.json +++ b/apps/ExpoApp54/package.json @@ -1,5 +1,5 @@ { - "name": "@callstack/brownfield-example-expo-app", + "name": "@callstack/brownfield-example-expo-app-54", "main": "./entry.tsx", "version": "1.0.0", "private": true, @@ -10,7 +10,7 @@ "web": "expo start --web", "lint": "expo lint", "prebuild": "expo prebuild", - "brownfield:prepare:android:ci": "node --experimental-strip-types --no-warnings ./scripts/prepare-android-build-gradle-for-ci.ts", + "brownfield:prepare:android:ci": "cd .. && node --experimental-strip-types --no-warnings ./scripts/prepare-android-build-gradle-for-ci.ts ExpoApp54", "brownfield:package:android": "brownfield package:android --module-name brownfieldlib --variant release", "brownfield:publish:android": "brownfield publish:android --module-name brownfieldlib", "brownfield:package:ios": "brownfield package:ios --scheme BrownfieldLib --configuration Release" diff --git a/apps/ExpoApp/tsconfig.json b/apps/ExpoApp54/tsconfig.json similarity index 100% rename from apps/ExpoApp/tsconfig.json rename to apps/ExpoApp54/tsconfig.json diff --git a/apps/ExpoApp55/.gitignore b/apps/ExpoApp55/.gitignore new file mode 100644 index 00000000..f8c6c2e8 --- /dev/null +++ b/apps/ExpoApp55/.gitignore @@ -0,0 +1,43 @@ +# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files + +# dependencies +node_modules/ + +# Expo +.expo/ +dist/ +web-build/ +expo-env.d.ts + +# Native +.kotlin/ +*.orig.* +*.jks +*.p8 +*.p12 +*.key +*.mobileprovision + +# Metro +.metro-health-check* + +# debug +npm-debug.* +yarn-debug.* +yarn-error.* + +# macOS +.DS_Store +*.pem + +# local env files +.env*.local + +# typescript +*.tsbuildinfo + +app-example + +# generated native folders +/ios +/android diff --git a/apps/ExpoApp55/BrownfieldStore.brownie.ts b/apps/ExpoApp55/BrownfieldStore.brownie.ts new file mode 100644 index 00000000..94e22c72 --- /dev/null +++ b/apps/ExpoApp55/BrownfieldStore.brownie.ts @@ -0,0 +1,21 @@ +import type { BrownieStore } from '@callstack/brownie'; + +export interface BrownfieldStore extends BrownieStore { + counter: number; + user: { + name: string; + }; +} + +export interface SettingsStore extends BrownieStore { + theme: 'light' | 'dark'; + notificationsEnabled: boolean; + privacyMode: boolean; +} + +declare module '@callstack/brownie' { + interface BrownieStores { + BrownfieldStore: BrownfieldStore; + SettingsStore: SettingsStore; + } +} diff --git a/apps/ExpoApp55/README.md b/apps/ExpoApp55/README.md new file mode 100644 index 00000000..48dd63ff --- /dev/null +++ b/apps/ExpoApp55/README.md @@ -0,0 +1,50 @@ +# Welcome to your Expo app 👋 + +This is an [Expo](https://expo.dev) project created with [`create-expo-app`](https://www.npmjs.com/package/create-expo-app). + +## Get started + +1. Install dependencies + + ```bash + npm install + ``` + +2. Start the app + + ```bash + npx expo start + ``` + +In the output, you'll find options to open the app in a + +- [development build](https://docs.expo.dev/develop/development-builds/introduction/) +- [Android emulator](https://docs.expo.dev/workflow/android-studio-emulator/) +- [iOS simulator](https://docs.expo.dev/workflow/ios-simulator/) +- [Expo Go](https://expo.dev/go), a limited sandbox for trying out app development with Expo + +You can start developing by editing the files inside the **app** directory. This project uses [file-based routing](https://docs.expo.dev/router/introduction). + +## Get a fresh project + +When you're ready, run: + +```bash +npm run reset-project +``` + +This command will move the starter code to the **app-example** directory and create a blank **app** directory where you can start developing. + +## Learn more + +To learn more about developing your project with Expo, look at the following resources: + +- [Expo documentation](https://docs.expo.dev/): Learn fundamentals, or go into advanced topics with our [guides](https://docs.expo.dev/guides). +- [Learn Expo tutorial](https://docs.expo.dev/tutorial/introduction/): Follow a step-by-step tutorial where you'll create a project that runs on Android, iOS, and the web. + +## Join the community + +Join our community of developers creating universal apps. + +- [Expo on GitHub](https://github.com/expo/expo): View our open source platform and contribute. +- [Discord community](https://chat.expo.dev): Chat with Expo users and ask questions. diff --git a/apps/ExpoApp55/RNApp.tsx b/apps/ExpoApp55/RNApp.tsx new file mode 100644 index 00000000..a87add22 --- /dev/null +++ b/apps/ExpoApp55/RNApp.tsx @@ -0,0 +1,38 @@ +import { SafeAreaView } from 'react-native-safe-area-context'; +import { StyleSheet, Text, View } from 'react-native'; +import Counter from './components/counter'; + +export default function RNApp() { + return ( + + Expo React Native Brownfield + + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: '#eeeeee', + paddingTop: 20, + }, + title: { + fontSize: 20, + fontWeight: 'bold', + textAlign: 'center', + }, + content: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + text: { + fontSize: 18, + textAlign: 'center', + marginBottom: 5, + }, +}); diff --git a/apps/ExpoApp55/app.json b/apps/ExpoApp55/app.json new file mode 100644 index 00000000..33c56b62 --- /dev/null +++ b/apps/ExpoApp55/app.json @@ -0,0 +1,47 @@ +{ + "expo": { + "name": "xd55", + "slug": "xd55", + "version": "1.0.0", + "orientation": "portrait", + "icon": "./assets/images/icon.png", + "scheme": "expoapp55", + "userInterfaceStyle": "automatic", + "ios": { + "icon": "./assets/expo.icon", + "bundleIdentifier": "com.callstack.rnbrownfield.demo.expoapp" + }, + "android": { + "adaptiveIcon": { + "backgroundColor": "#E6F4FE", + "foregroundImage": "./assets/images/android-icon-foreground.png", + "backgroundImage": "./assets/images/android-icon-background.png", + "monochromeImage": "./assets/images/android-icon-monochrome.png" + }, + "predictiveBackGestureEnabled": false, + "package": "com.callstack.rnbrownfield.demo.expoapp" + }, + "web": { + "output": "static", + "favicon": "./assets/images/favicon.png" + }, + "plugins": [ + "expo-router", + [ + "expo-splash-screen", + { + "backgroundColor": "#208AEF", + "android": { + "image": "./assets/images/splash-icon.png", + "imageWidth": 76 + } + } + ], + "@callstack/react-native-brownfield" + ], + "experiments": { + "typedRoutes": true, + "reactCompiler": true + } + } +} diff --git a/apps/ExpoApp55/assets/expo.icon/Assets/expo-symbol 2.svg b/apps/ExpoApp55/assets/expo.icon/Assets/expo-symbol 2.svg new file mode 100644 index 00000000..51d36767 --- /dev/null +++ b/apps/ExpoApp55/assets/expo.icon/Assets/expo-symbol 2.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/ExpoApp55/assets/expo.icon/Assets/grid.png b/apps/ExpoApp55/assets/expo.icon/Assets/grid.png new file mode 100644 index 00000000..eefea242 Binary files /dev/null and b/apps/ExpoApp55/assets/expo.icon/Assets/grid.png differ diff --git a/apps/ExpoApp55/assets/expo.icon/icon.json b/apps/ExpoApp55/assets/expo.icon/icon.json new file mode 100644 index 00000000..7a2c33cd --- /dev/null +++ b/apps/ExpoApp55/assets/expo.icon/icon.json @@ -0,0 +1,40 @@ +{ + "fill" : { + "automatic-gradient" : "extended-srgb:0.00000,0.47843,1.00000,1.00000" + }, + "groups" : [ + { + "layers" : [ + { + "image-name" : "expo-symbol 2.svg", + "name" : "expo-symbol 2", + "position" : { + "scale" : 1, + "translation-in-points" : [ + 1.1008400065293245e-05, + -16.046875 + ] + } + }, + { + "image-name" : "grid.png", + "name" : "grid" + } + ], + "shadow" : { + "kind" : "neutral", + "opacity" : 0.5 + }, + "translucency" : { + "enabled" : true, + "value" : 0.5 + } + } + ], + "supported-platforms" : { + "circles" : [ + "watchOS" + ], + "squares" : "shared" + } +} \ No newline at end of file diff --git a/apps/ExpoApp55/assets/images/android-icon-background.png b/apps/ExpoApp55/assets/images/android-icon-background.png new file mode 100644 index 00000000..5ffefc5b Binary files /dev/null and b/apps/ExpoApp55/assets/images/android-icon-background.png differ diff --git a/apps/ExpoApp55/assets/images/android-icon-foreground.png b/apps/ExpoApp55/assets/images/android-icon-foreground.png new file mode 100644 index 00000000..3a9e5016 Binary files /dev/null and b/apps/ExpoApp55/assets/images/android-icon-foreground.png differ diff --git a/apps/ExpoApp55/assets/images/android-icon-monochrome.png b/apps/ExpoApp55/assets/images/android-icon-monochrome.png new file mode 100644 index 00000000..77484ebd Binary files /dev/null and b/apps/ExpoApp55/assets/images/android-icon-monochrome.png differ diff --git a/apps/ExpoApp55/assets/images/expo-badge-white.png b/apps/ExpoApp55/assets/images/expo-badge-white.png new file mode 100644 index 00000000..28630679 Binary files /dev/null and b/apps/ExpoApp55/assets/images/expo-badge-white.png differ diff --git a/apps/ExpoApp55/assets/images/expo-badge.png b/apps/ExpoApp55/assets/images/expo-badge.png new file mode 100644 index 00000000..5d5c5bb5 Binary files /dev/null and b/apps/ExpoApp55/assets/images/expo-badge.png differ diff --git a/apps/ExpoApp55/assets/images/expo-logo.png b/apps/ExpoApp55/assets/images/expo-logo.png new file mode 100644 index 00000000..6b1642a0 Binary files /dev/null and b/apps/ExpoApp55/assets/images/expo-logo.png differ diff --git a/apps/ExpoApp55/assets/images/favicon.png b/apps/ExpoApp55/assets/images/favicon.png new file mode 100644 index 00000000..408bd746 Binary files /dev/null and b/apps/ExpoApp55/assets/images/favicon.png differ diff --git a/apps/ExpoApp55/assets/images/icon.png b/apps/ExpoApp55/assets/images/icon.png new file mode 100644 index 00000000..67c777a4 Binary files /dev/null and b/apps/ExpoApp55/assets/images/icon.png differ diff --git a/apps/ExpoApp55/assets/images/logo-glow.png b/apps/ExpoApp55/assets/images/logo-glow.png new file mode 100644 index 00000000..edc99be1 Binary files /dev/null and b/apps/ExpoApp55/assets/images/logo-glow.png differ diff --git a/apps/ExpoApp55/assets/images/react-logo.png b/apps/ExpoApp55/assets/images/react-logo.png new file mode 100644 index 00000000..9d72a9ff Binary files /dev/null and b/apps/ExpoApp55/assets/images/react-logo.png differ diff --git a/apps/ExpoApp55/assets/images/react-logo@2x.png b/apps/ExpoApp55/assets/images/react-logo@2x.png new file mode 100644 index 00000000..2229b130 Binary files /dev/null and b/apps/ExpoApp55/assets/images/react-logo@2x.png differ diff --git a/apps/ExpoApp55/assets/images/react-logo@3x.png b/apps/ExpoApp55/assets/images/react-logo@3x.png new file mode 100644 index 00000000..a99b2032 Binary files /dev/null and b/apps/ExpoApp55/assets/images/react-logo@3x.png differ diff --git a/apps/ExpoApp55/assets/images/splash-icon.png b/apps/ExpoApp55/assets/images/splash-icon.png new file mode 100644 index 00000000..6b1642a0 Binary files /dev/null and b/apps/ExpoApp55/assets/images/splash-icon.png differ diff --git a/apps/ExpoApp55/assets/images/tabIcons/explore.png b/apps/ExpoApp55/assets/images/tabIcons/explore.png new file mode 100644 index 00000000..73d82583 Binary files /dev/null and b/apps/ExpoApp55/assets/images/tabIcons/explore.png differ diff --git a/apps/ExpoApp55/assets/images/tabIcons/explore@2x.png b/apps/ExpoApp55/assets/images/tabIcons/explore@2x.png new file mode 100644 index 00000000..21b9bd26 Binary files /dev/null and b/apps/ExpoApp55/assets/images/tabIcons/explore@2x.png differ diff --git a/apps/ExpoApp55/assets/images/tabIcons/explore@3x.png b/apps/ExpoApp55/assets/images/tabIcons/explore@3x.png new file mode 100644 index 00000000..422202d5 Binary files /dev/null and b/apps/ExpoApp55/assets/images/tabIcons/explore@3x.png differ diff --git a/apps/ExpoApp55/assets/images/tabIcons/home.png b/apps/ExpoApp55/assets/images/tabIcons/home.png new file mode 100644 index 00000000..ad5699c4 Binary files /dev/null and b/apps/ExpoApp55/assets/images/tabIcons/home.png differ diff --git a/apps/ExpoApp55/assets/images/tabIcons/home@2x.png b/apps/ExpoApp55/assets/images/tabIcons/home@2x.png new file mode 100644 index 00000000..22a1f2c7 Binary files /dev/null and b/apps/ExpoApp55/assets/images/tabIcons/home@2x.png differ diff --git a/apps/ExpoApp55/assets/images/tabIcons/home@3x.png b/apps/ExpoApp55/assets/images/tabIcons/home@3x.png new file mode 100644 index 00000000..f5d1f9a4 Binary files /dev/null and b/apps/ExpoApp55/assets/images/tabIcons/home@3x.png differ diff --git a/apps/ExpoApp55/assets/images/tutorial-web.png b/apps/ExpoApp55/assets/images/tutorial-web.png new file mode 100644 index 00000000..e4a8c58f Binary files /dev/null and b/apps/ExpoApp55/assets/images/tutorial-web.png differ diff --git a/apps/ExpoApp55/entry.tsx b/apps/ExpoApp55/entry.tsx new file mode 100644 index 00000000..86abd0e1 --- /dev/null +++ b/apps/ExpoApp55/entry.tsx @@ -0,0 +1,12 @@ +import { ExpoRoot } from 'expo-router'; +import { AppRegistry } from 'react-native'; +import RNApp from './RNApp'; + +function App() { + const ctx = require.context('./app'); + return ; +} + +AppRegistry.registerComponent('RNApp', () => RNApp); +// Keep compatibility with Expo's default app key. +AppRegistry.registerComponent('main', () => App); diff --git a/apps/ExpoApp55/eslint.config.js b/apps/ExpoApp55/eslint.config.js new file mode 100644 index 00000000..5025da68 --- /dev/null +++ b/apps/ExpoApp55/eslint.config.js @@ -0,0 +1,10 @@ +// https://docs.expo.dev/guides/using-eslint/ +const { defineConfig } = require('eslint/config'); +const expoConfig = require('eslint-config-expo/flat'); + +module.exports = defineConfig([ + expoConfig, + { + ignores: ['dist/*'], + }, +]); diff --git a/apps/ExpoApp55/package.json b/apps/ExpoApp55/package.json new file mode 100644 index 00000000..f3331677 --- /dev/null +++ b/apps/ExpoApp55/package.json @@ -0,0 +1,54 @@ +{ + "name": "@callstack/brownfield-example-expo-app-55", + "main": "expo-router/entry", + "version": "1.0.0", + "scripts": { + "start": "expo start", + "android": "expo run:android", + "ios": "expo run:ios", + "web": "expo start --web", + "lint": "expo lint", + "prebuild": "expo prebuild", + "brownfield:prepare:android:ci": "cd .. && node --experimental-strip-types --no-warnings ./scripts/prepare-android-build-gradle-for-ci.ts ExpoApp54", + "brownfield:package:android": "brownfield package:android --module-name brownfieldlib --variant release", + "brownfield:publish:android": "brownfield publish:android --module-name brownfieldlib", + "brownfield:package:ios": "brownfield package:ios --scheme BrownfieldLib --configuration Release" + }, + "dependencies": { + "@callstack/brownie": "workspace:^", + "@callstack/react-native-brownfield": "workspace:^", + "@expo/vector-icons": "^15.0.2", + "@react-navigation/bottom-tabs": "^7.7.3", + "@react-navigation/elements": "^2.8.1", + "@react-navigation/native": "^7.1.28", + "expo": "~55.0.0-preview.12", + "expo-constants": "~55.0.6", + "expo-device": "~55.0.8", + "expo-font": "~55.0.4", + "expo-glass-effect": "~55.0.6", + "expo-image": "~55.0.4", + "expo-linking": "~55.0.6", + "expo-router": "~55.0.0-preview.9", + "expo-splash-screen": "~55.0.8", + "expo-status-bar": "~55.0.3", + "expo-symbols": "~55.0.4", + "expo-system-ui": "~55.0.8", + "expo-web-browser": "~55.0.8", + "react": "19.2.0", + "react-dom": "19.2.0", + "react-native": "0.83.2", + "react-native-gesture-handler": "~2.30.0", + "react-native-reanimated": "~4.2.1", + "react-native-safe-area-context": "~5.6.2", + "react-native-screens": "~4.23.0", + "react-native-web": "~0.21.0", + "react-native-worklets": "0.7.2" + }, + "devDependencies": { + "@types/react": "~19.2.2", + "eslint": "^9.25.0", + "eslint-config-expo": "~55.0.0", + "typescript": "~5.9.2" + }, + "private": true +} diff --git a/apps/ExpoApp55/src/app/_layout.tsx b/apps/ExpoApp55/src/app/_layout.tsx new file mode 100644 index 00000000..b04d0a83 --- /dev/null +++ b/apps/ExpoApp55/src/app/_layout.tsx @@ -0,0 +1,16 @@ +import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native'; +import React from 'react'; +import { useColorScheme } from 'react-native'; + +import { AnimatedSplashOverlay } from '@/components/animated-icon'; +import AppTabs from '@/components/app-tabs'; + +export default function TabLayout() { + const colorScheme = useColorScheme(); + return ( + + + + + ); +} diff --git a/apps/ExpoApp55/src/app/explore.tsx b/apps/ExpoApp55/src/app/explore.tsx new file mode 100644 index 00000000..f08c5d37 --- /dev/null +++ b/apps/ExpoApp55/src/app/explore.tsx @@ -0,0 +1,181 @@ +import { Image } from 'expo-image'; +import { SymbolView } from 'expo-symbols'; +import React from 'react'; +import { Platform, Pressable, ScrollView, StyleSheet } from 'react-native'; +import { useSafeAreaInsets } from 'react-native-safe-area-context'; + +import { ExternalLink } from '@/components/external-link'; +import { ThemedText } from '@/components/themed-text'; +import { ThemedView } from '@/components/themed-view'; +import { Collapsible } from '@/components/ui/collapsible'; +import { WebBadge } from '@/components/web-badge'; +import { BottomTabInset, MaxContentWidth, Spacing } from '@/constants/theme'; +import { useTheme } from '@/hooks/use-theme'; + +export default function TabTwoScreen() { + const safeAreaInsets = useSafeAreaInsets(); + const insets = { + ...safeAreaInsets, + bottom: safeAreaInsets.bottom + BottomTabInset + Spacing.three, + }; + const theme = useTheme(); + + const contentPlatformStyle = Platform.select({ + android: { + paddingTop: insets.top, + paddingLeft: insets.left, + paddingRight: insets.right, + paddingBottom: insets.bottom, + }, + web: { + paddingTop: Spacing.six, + paddingBottom: Spacing.four, + }, + }); + + return ( + + + + Explore + + This starter app includes example{'\n'}code to help you get started. + + + + pressed && styles.pressed}> + + Expo documentation + + + + + + + + + + This app has two screens: src/app/index.tsx and{' '} + src/app/explore.tsx + + + The layout file in src/app/_layout.tsx sets up + the tab navigator. + + + Learn more + + + + + + + You can open this project on Android, iOS, and the web. To open the web version, + press w in the terminal running this + project. + + + + + + + + For static images, you can use the @2x and{' '} + @3x suffixes to provide files for different + screen densities. + + + + Learn more + + + + + + This template has light and dark mode support. The{' '} + useColorScheme() hook lets you inspect what the + user's current color scheme is, and so you can adjust UI colors accordingly. + + + Learn more + + + + + + This template includes an example of an animated component. The{' '} + src/components/ui/collapsible.tsx component uses + the powerful react-native-reanimated library to + animate opening this hint. + + + + {Platform.OS === 'web' && } + + + ); +} + +const styles = StyleSheet.create({ + scrollView: { + flex: 1, + }, + contentContainer: { + flexDirection: 'row', + justifyContent: 'center', + }, + container: { + maxWidth: MaxContentWidth, + flexGrow: 1, + }, + titleContainer: { + gap: Spacing.three, + alignItems: 'center', + paddingHorizontal: Spacing.four, + paddingVertical: Spacing.six, + }, + centerText: { + textAlign: 'center', + }, + pressed: { + opacity: 0.7, + }, + linkButton: { + flexDirection: 'row', + paddingHorizontal: Spacing.four, + paddingVertical: Spacing.two, + borderRadius: Spacing.five, + justifyContent: 'center', + gap: Spacing.one, + alignItems: 'center', + }, + sectionsWrapper: { + gap: Spacing.five, + paddingHorizontal: Spacing.four, + paddingTop: Spacing.three, + }, + collapsibleContent: { + alignItems: 'center', + }, + imageTutorial: { + width: '100%', + aspectRatio: 296 / 171, + borderRadius: Spacing.three, + marginTop: Spacing.two, + }, + imageReact: { + width: 100, + height: 100, + alignSelf: 'center', + }, +}); diff --git a/apps/ExpoApp55/src/app/index.tsx b/apps/ExpoApp55/src/app/index.tsx new file mode 100644 index 00000000..8ec3e6fa --- /dev/null +++ b/apps/ExpoApp55/src/app/index.tsx @@ -0,0 +1,98 @@ +import * as Device from 'expo-device'; +import { Platform, StyleSheet } from 'react-native'; +import { SafeAreaView } from 'react-native-safe-area-context'; + +import { AnimatedIcon } from '@/components/animated-icon'; +import { HintRow } from '@/components/hint-row'; +import { ThemedText } from '@/components/themed-text'; +import { ThemedView } from '@/components/themed-view'; +import { WebBadge } from '@/components/web-badge'; +import { BottomTabInset, MaxContentWidth, Spacing } from '@/constants/theme'; + +function getDevMenuHint() { + if (Platform.OS === 'web') { + return use browser devtools; + } + if (Device.isDevice) { + return ( + + shake device or press m in terminal + + ); + } + const shortcut = Platform.OS === 'android' ? 'cmd+m (or ctrl+m)' : 'cmd+d'; + return ( + + press {shortcut} + + ); +} + +export default function HomeScreen() { + return ( + + + + + + Welcome to Expo + + + + + get started + + + + src/app/index.tsx} + /> + + npm run reset-project} + /> + + + {Platform.OS === 'web' && } + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + flexDirection: 'row', + }, + safeArea: { + flex: 1, + paddingHorizontal: Spacing.four, + alignItems: 'center', + gap: Spacing.three, + paddingBottom: BottomTabInset + Spacing.three, + maxWidth: MaxContentWidth, + }, + heroSection: { + alignItems: 'center', + justifyContent: 'center', + flex: 1, + paddingHorizontal: Spacing.four, + gap: Spacing.four, + }, + title: { + textAlign: 'center', + }, + code: { + textTransform: 'uppercase', + }, + stepContainer: { + gap: Spacing.three, + alignSelf: 'stretch', + paddingHorizontal: Spacing.three, + paddingVertical: Spacing.four, + borderRadius: Spacing.four, + }, +}); diff --git a/apps/ExpoApp55/src/components/animated-icon.module.css b/apps/ExpoApp55/src/components/animated-icon.module.css new file mode 100644 index 00000000..f8156fec --- /dev/null +++ b/apps/ExpoApp55/src/components/animated-icon.module.css @@ -0,0 +1,6 @@ +.expoLogoBackground { + background-image: linear-gradient(180deg, #3c9ffe, #0274df); + border-radius: 40px; + width: 128px; + height: 128px; +} diff --git a/apps/ExpoApp55/src/components/animated-icon.tsx b/apps/ExpoApp55/src/components/animated-icon.tsx new file mode 100644 index 00000000..91a480fc --- /dev/null +++ b/apps/ExpoApp55/src/components/animated-icon.tsx @@ -0,0 +1,132 @@ +import { Image } from 'expo-image'; +import { useState } from 'react'; +import { Dimensions, StyleSheet, View } from 'react-native'; +import Animated, { Easing, Keyframe } from 'react-native-reanimated'; +import { scheduleOnRN } from 'react-native-worklets'; + +const INITIAL_SCALE_FACTOR = Dimensions.get('screen').height / 90; +const DURATION = 600; + +export function AnimatedSplashOverlay() { + const [visible, setVisible] = useState(true); + + if (!visible) return null; + + const splashKeyframe = new Keyframe({ + 0: { + transform: [{ scale: INITIAL_SCALE_FACTOR }], + opacity: 1, + }, + 20: { + opacity: 1, + }, + 70: { + opacity: 0, + easing: Easing.elastic(0.7), + }, + 100: { + opacity: 0, + transform: [{ scale: 1 }], + easing: Easing.elastic(0.7), + }, + }); + + return ( + { + 'worklet'; + if (finished) { + scheduleOnRN(setVisible, false); + } + })} + style={styles.backgroundSolidColor} + /> + ); +} + +const keyframe = new Keyframe({ + 0: { + transform: [{ scale: INITIAL_SCALE_FACTOR }], + }, + 100: { + transform: [{ scale: 1 }], + easing: Easing.elastic(0.7), + }, +}); + +const logoKeyframe = new Keyframe({ + 0: { + transform: [{ scale: 1.3 }], + opacity: 0, + }, + 40: { + transform: [{ scale: 1.3 }], + opacity: 0, + easing: Easing.elastic(0.7), + }, + 100: { + opacity: 1, + transform: [{ scale: 1 }], + easing: Easing.elastic(0.7), + }, +}); + +const glowKeyframe = new Keyframe({ + 0: { + transform: [{ rotateZ: '0deg' }], + }, + 100: { + transform: [{ rotateZ: '7200deg' }], + }, +}); + +export function AnimatedIcon() { + return ( + + + + + + + + + + + ); +} + +const styles = StyleSheet.create({ + imageContainer: { + justifyContent: 'center', + alignItems: 'center', + }, + glow: { + width: 201, + height: 201, + position: 'absolute', + }, + iconContainer: { + justifyContent: 'center', + alignItems: 'center', + width: 128, + height: 128, + zIndex: 100, + }, + image: { + position: 'absolute', + width: 76, + height: 71, + }, + background: { + borderRadius: 40, + experimental_backgroundImage: `linear-gradient(180deg, #3C9FFE, #0274DF)`, + width: 128, + height: 128, + position: 'absolute', + }, + backgroundSolidColor: { + ...StyleSheet.absoluteFillObject, + backgroundColor: '#208AEF', + zIndex: 1000, + }, +}); diff --git a/apps/ExpoApp55/src/components/animated-icon.web.tsx b/apps/ExpoApp55/src/components/animated-icon.web.tsx new file mode 100644 index 00000000..dfbb1fd7 --- /dev/null +++ b/apps/ExpoApp55/src/components/animated-icon.web.tsx @@ -0,0 +1,108 @@ +import { Image } from 'expo-image'; +import { StyleSheet, View } from 'react-native'; +import Animated, { Keyframe, Easing } from 'react-native-reanimated'; + +import classes from './animated-icon.module.css'; +const DURATION = 300; + +export function AnimatedSplashOverlay() { + return null; +} + +const keyframe = new Keyframe({ + 0: { + transform: [{ scale: 0 }], + }, + 60: { + transform: [{ scale: 1.2 }], + easing: Easing.elastic(1.2), + }, + 100: { + transform: [{ scale: 1 }], + easing: Easing.elastic(1.2), + }, +}); + +const logoKeyframe = new Keyframe({ + 0: { + opacity: 0, + }, + 60: { + transform: [{ scale: 1.2 }], + opacity: 0, + easing: Easing.elastic(1.2), + }, + 100: { + transform: [{ scale: 1 }], + opacity: 1, + easing: Easing.elastic(1.2), + }, +}); + +const glowKeyframe = new Keyframe({ + 0: { + transform: [{ rotateZ: '-180deg' }, { scale: 0.8 }], + opacity: 0, + }, + [DURATION / 1000]: { + transform: [{ rotateZ: '0deg' }, { scale: 1 }], + opacity: 1, + easing: Easing.elastic(0.7), + }, + 100: { + transform: [{ rotateZ: '7200deg' }], + }, +}); + +export function AnimatedIcon() { + return ( + + + + + + +
+ + + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + alignItems: 'center', + width: '100%', + zIndex: 1000, + position: 'absolute', + top: 128 / 2 + 138, + }, + imageContainer: { + justifyContent: 'center', + alignItems: 'center', + }, + glow: { + width: 201, + height: 201, + position: 'absolute', + }, + iconContainer: { + justifyContent: 'center', + alignItems: 'center', + width: 128, + height: 128, + }, + image: { + position: 'absolute', + width: 76, + height: 71, + }, + background: { + width: 128, + height: 128, + position: 'absolute', + }, +}); diff --git a/apps/ExpoApp55/src/components/app-tabs.tsx b/apps/ExpoApp55/src/components/app-tabs.tsx new file mode 100644 index 00000000..3fee2204 --- /dev/null +++ b/apps/ExpoApp55/src/components/app-tabs.tsx @@ -0,0 +1,27 @@ +import { NativeTabs } from 'expo-router/unstable-native-tabs'; +import React from 'react'; +import { useColorScheme } from 'react-native'; + +import { Colors } from '@/constants/theme'; + +export default function AppTabs() { + const scheme = useColorScheme(); + const colors = Colors[scheme === 'unspecified' ? 'light' : scheme]; + + return ( + + + Home + + + + + Explore + + + + ); +} diff --git a/apps/ExpoApp55/src/components/app-tabs.web.tsx b/apps/ExpoApp55/src/components/app-tabs.web.tsx new file mode 100644 index 00000000..f74288a6 --- /dev/null +++ b/apps/ExpoApp55/src/components/app-tabs.web.tsx @@ -0,0 +1,116 @@ +import { + Tabs, + TabList, + TabTrigger, + TabSlot, + TabTriggerSlotProps, + TabListProps, +} from 'expo-router/ui'; +import { SymbolView } from 'expo-symbols'; +import React from 'react'; +import { Pressable, useColorScheme, View, StyleSheet } from 'react-native'; + +import { ExternalLink } from './external-link'; +import { ThemedText } from './themed-text'; +import { ThemedView } from './themed-view'; + +import { Colors, MaxContentWidth, Spacing } from '@/constants/theme'; + +export default function AppTabs() { + return ( + + + + + + Home + + + Explore + + + + + ); +} + +export function TabButton({ children, isFocused, ...props }: TabTriggerSlotProps) { + return ( + pressed && styles.pressed}> + + + {children} + + + + ); +} + +export function CustomTabList(props: TabListProps) { + const scheme = useColorScheme(); + const colors = Colors[scheme === 'unspecified' ? 'light' : scheme]; + + return ( + + + + Expo Starter + + + {props.children} + + + + Doc + + + + + + ); +} + +const styles = StyleSheet.create({ + tabListContainer: { + position: 'absolute', + width: '100%', + padding: Spacing.three, + justifyContent: 'center', + alignItems: 'center', + flexDirection: 'row', + }, + innerContainer: { + paddingVertical: Spacing.two, + paddingHorizontal: Spacing.five, + borderRadius: Spacing.five, + flexDirection: 'row', + alignItems: 'center', + flexGrow: 1, + gap: Spacing.two, + maxWidth: MaxContentWidth, + }, + brandText: { + marginRight: 'auto', + }, + pressed: { + opacity: 0.7, + }, + tabButtonView: { + paddingVertical: Spacing.one, + paddingHorizontal: Spacing.three, + borderRadius: Spacing.three, + }, + externalPressable: { + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + gap: Spacing.one, + marginLeft: Spacing.three, + }, +}); diff --git a/apps/ExpoApp55/src/components/external-link.tsx b/apps/ExpoApp55/src/components/external-link.tsx new file mode 100644 index 00000000..883e515a --- /dev/null +++ b/apps/ExpoApp55/src/components/external-link.tsx @@ -0,0 +1,25 @@ +import { Href, Link } from 'expo-router'; +import { openBrowserAsync, WebBrowserPresentationStyle } from 'expo-web-browser'; +import { type ComponentProps } from 'react'; + +type Props = Omit, 'href'> & { href: Href & string }; + +export function ExternalLink({ href, ...rest }: Props) { + return ( + { + if (process.env.EXPO_OS !== 'web') { + // Prevent the default behavior of linking to the default browser on native. + event.preventDefault(); + // Open the link in an in-app browser. + await openBrowserAsync(href, { + presentationStyle: WebBrowserPresentationStyle.AUTOMATIC, + }); + } + }} + /> + ); +} diff --git a/apps/ExpoApp55/src/components/hint-row.tsx b/apps/ExpoApp55/src/components/hint-row.tsx new file mode 100644 index 00000000..a66062b6 --- /dev/null +++ b/apps/ExpoApp55/src/components/hint-row.tsx @@ -0,0 +1,35 @@ +import React, { type ReactNode } from 'react'; +import { View, StyleSheet } from 'react-native'; + +import { ThemedText } from './themed-text'; +import { ThemedView } from './themed-view'; + +import { Spacing } from '@/constants/theme'; + +type HintRowProps = { + title?: string; + hint?: ReactNode; +}; + +export function HintRow({ title = 'Try editing', hint = 'app/index.tsx' }: HintRowProps) { + return ( + + {title} + + {hint} + + + ); +} + +const styles = StyleSheet.create({ + stepRow: { + flexDirection: 'row', + justifyContent: 'space-between', + }, + codeSnippet: { + borderRadius: Spacing.two, + paddingVertical: Spacing.half, + paddingHorizontal: Spacing.two, + }, +}); diff --git a/apps/ExpoApp55/src/components/themed-text.tsx b/apps/ExpoApp55/src/components/themed-text.tsx new file mode 100644 index 00000000..799c8b13 --- /dev/null +++ b/apps/ExpoApp55/src/components/themed-text.tsx @@ -0,0 +1,73 @@ +import { Platform, StyleSheet, Text, type TextProps } from 'react-native'; + +import { Fonts, ThemeColor } from '@/constants/theme'; +import { useTheme } from '@/hooks/use-theme'; + +export type ThemedTextProps = TextProps & { + type?: 'default' | 'title' | 'small' | 'smallBold' | 'subtitle' | 'link' | 'linkPrimary' | 'code'; + themeColor?: ThemeColor; +}; + +export function ThemedText({ style, type = 'default', themeColor, ...rest }: ThemedTextProps) { + const theme = useTheme(); + + return ( + + ); +} + +const styles = StyleSheet.create({ + small: { + fontSize: 14, + lineHeight: 20, + fontWeight: 500, + }, + smallBold: { + fontSize: 14, + lineHeight: 20, + fontWeight: 700, + }, + default: { + fontSize: 16, + lineHeight: 24, + fontWeight: 500, + }, + title: { + fontSize: 48, + fontWeight: 600, + lineHeight: 52, + }, + subtitle: { + fontSize: 32, + lineHeight: 44, + fontWeight: 600, + }, + link: { + lineHeight: 30, + fontSize: 14, + }, + linkPrimary: { + lineHeight: 30, + fontSize: 14, + color: '#3c87f7', + }, + code: { + fontFamily: Fonts.mono, + fontWeight: Platform.select({ android: 700 }) ?? 500, + fontSize: 12, + }, +}); diff --git a/apps/ExpoApp55/src/components/themed-view.tsx b/apps/ExpoApp55/src/components/themed-view.tsx new file mode 100644 index 00000000..c710df9b --- /dev/null +++ b/apps/ExpoApp55/src/components/themed-view.tsx @@ -0,0 +1,16 @@ +import { View, type ViewProps } from 'react-native'; + +import { ThemeColor } from '@/constants/theme'; +import { useTheme } from '@/hooks/use-theme'; + +export type ThemedViewProps = ViewProps & { + lightColor?: string; + darkColor?: string; + type?: ThemeColor; +}; + +export function ThemedView({ style, lightColor, darkColor, type, ...otherProps }: ThemedViewProps) { + const theme = useTheme(); + + return ; +} diff --git a/apps/ExpoApp55/src/components/ui/collapsible.tsx b/apps/ExpoApp55/src/components/ui/collapsible.tsx new file mode 100644 index 00000000..d0d745b4 --- /dev/null +++ b/apps/ExpoApp55/src/components/ui/collapsible.tsx @@ -0,0 +1,65 @@ +import { SymbolView } from 'expo-symbols'; +import { PropsWithChildren, useState } from 'react'; +import { Pressable, StyleSheet } from 'react-native'; +import Animated, { FadeIn } from 'react-native-reanimated'; + +import { ThemedText } from '@/components/themed-text'; +import { ThemedView } from '@/components/themed-view'; +import { Spacing } from '@/constants/theme'; +import { useTheme } from '@/hooks/use-theme'; + +export function Collapsible({ children, title }: PropsWithChildren & { title: string }) { + const [isOpen, setIsOpen] = useState(false); + const theme = useTheme(); + + return ( + + [styles.heading, pressed && styles.pressedHeading]} + onPress={() => setIsOpen((value) => !value)}> + + + + + {title} + + {isOpen && ( + + + {children} + + + )} + + ); +} + +const styles = StyleSheet.create({ + heading: { + flexDirection: 'row', + alignItems: 'center', + gap: Spacing.two, + }, + pressedHeading: { + opacity: 0.7, + }, + button: { + width: Spacing.four, + height: Spacing.four, + borderRadius: 12, + justifyContent: 'center', + alignItems: 'center', + }, + content: { + marginTop: Spacing.three, + borderRadius: Spacing.three, + marginLeft: Spacing.four, + padding: Spacing.four, + }, +}); diff --git a/apps/ExpoApp55/src/components/web-badge.tsx b/apps/ExpoApp55/src/components/web-badge.tsx new file mode 100644 index 00000000..23933d29 --- /dev/null +++ b/apps/ExpoApp55/src/components/web-badge.tsx @@ -0,0 +1,44 @@ +import { version } from 'expo/package.json'; +import { Image } from 'expo-image'; +import React from 'react'; +import { useColorScheme, StyleSheet } from 'react-native'; + +import { ThemedText } from './themed-text'; +import { ThemedView } from './themed-view'; + +import { Spacing } from '@/constants/theme'; + +export function WebBadge() { + const scheme = useColorScheme(); + + return ( + + + v{version} + + + + ); +} + +const styles = StyleSheet.create({ + container: { + padding: Spacing.five, + alignItems: 'center', + gap: Spacing.two, + }, + versionText: { + textAlign: 'center', + }, + badgeImage: { + width: 123, + aspectRatio: 123 / 24, + }, +}); diff --git a/apps/ExpoApp55/src/constants/theme.ts b/apps/ExpoApp55/src/constants/theme.ts new file mode 100644 index 00000000..c10ed272 --- /dev/null +++ b/apps/ExpoApp55/src/constants/theme.ts @@ -0,0 +1,65 @@ +/** + * Below are the colors that are used in the app. The colors are defined in the light and dark mode. + * There are many other ways to style your app. For example, [Nativewind](https://www.nativewind.dev/), [Tamagui](https://tamagui.dev/), [unistyles](https://reactnativeunistyles.vercel.app), etc. + */ + +import '@/global.css'; + +import { Platform } from 'react-native'; + +export const Colors = { + light: { + text: '#000000', + background: '#ffffff', + backgroundElement: '#F0F0F3', + backgroundSelected: '#E0E1E6', + textSecondary: '#60646C', + }, + dark: { + text: '#ffffff', + background: '#000000', + backgroundElement: '#212225', + backgroundSelected: '#2E3135', + textSecondary: '#B0B4BA', + }, +} as const; + +export type ThemeColor = keyof typeof Colors.light & keyof typeof Colors.dark; + +export const Fonts = Platform.select({ + ios: { + /** iOS `UIFontDescriptorSystemDesignDefault` */ + sans: 'system-ui', + /** iOS `UIFontDescriptorSystemDesignSerif` */ + serif: 'ui-serif', + /** iOS `UIFontDescriptorSystemDesignRounded` */ + rounded: 'ui-rounded', + /** iOS `UIFontDescriptorSystemDesignMonospaced` */ + mono: 'ui-monospace', + }, + default: { + sans: 'normal', + serif: 'serif', + rounded: 'normal', + mono: 'monospace', + }, + web: { + sans: 'var(--font-display)', + serif: 'var(--font-serif)', + rounded: 'var(--font-rounded)', + mono: 'var(--font-mono)', + }, +}); + +export const Spacing = { + half: 2, + one: 4, + two: 8, + three: 16, + four: 24, + five: 32, + six: 64, +} as const; + +export const BottomTabInset = Platform.select({ ios: 50, android: 80 }) ?? 0; +export const MaxContentWidth = 800; diff --git a/apps/ExpoApp55/src/global.css b/apps/ExpoApp55/src/global.css new file mode 100644 index 00000000..c8fe5031 --- /dev/null +++ b/apps/ExpoApp55/src/global.css @@ -0,0 +1,9 @@ +:root { + --font-display: + Spline Sans, Inter, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, + Segoe UI Symbol, Noto Color Emoji; + --font-mono: + ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; + --font-rounded: 'SF Pro Rounded', 'Hiragino Maru Gothic ProN', Meiryo, 'MS PGothic', sans-serif; + --font-serif: Georgia, 'Times New Roman', serif; +} diff --git a/apps/ExpoApp55/src/hooks/use-color-scheme.ts b/apps/ExpoApp55/src/hooks/use-color-scheme.ts new file mode 100644 index 00000000..17e3c63e --- /dev/null +++ b/apps/ExpoApp55/src/hooks/use-color-scheme.ts @@ -0,0 +1 @@ +export { useColorScheme } from 'react-native'; diff --git a/apps/ExpoApp55/src/hooks/use-color-scheme.web.ts b/apps/ExpoApp55/src/hooks/use-color-scheme.web.ts new file mode 100644 index 00000000..7eb1c1b7 --- /dev/null +++ b/apps/ExpoApp55/src/hooks/use-color-scheme.web.ts @@ -0,0 +1,21 @@ +import { useEffect, useState } from 'react'; +import { useColorScheme as useRNColorScheme } from 'react-native'; + +/** + * To support static rendering, this value needs to be re-calculated on the client side for web + */ +export function useColorScheme() { + const [hasHydrated, setHasHydrated] = useState(false); + + useEffect(() => { + setHasHydrated(true); + }, []); + + const colorScheme = useRNColorScheme(); + + if (hasHydrated) { + return colorScheme; + } + + return 'light'; +} diff --git a/apps/ExpoApp55/src/hooks/use-theme.ts b/apps/ExpoApp55/src/hooks/use-theme.ts new file mode 100644 index 00000000..677e0151 --- /dev/null +++ b/apps/ExpoApp55/src/hooks/use-theme.ts @@ -0,0 +1,14 @@ +/** + * Learn more about light and dark modes: + * https://docs.expo.dev/guides/color-schemes/ + */ + +import { Colors } from '@/constants/theme'; +import { useColorScheme } from '@/hooks/use-color-scheme'; + +export function useTheme() { + const scheme = useColorScheme(); + const theme = scheme === 'unspecified' ? 'light' : scheme; + + return Colors[theme]; +} diff --git a/apps/ExpoApp55/tsconfig.json b/apps/ExpoApp55/tsconfig.json new file mode 100644 index 00000000..2e9a6695 --- /dev/null +++ b/apps/ExpoApp55/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "expo/tsconfig.base", + "compilerOptions": { + "strict": true, + "paths": { + "@/*": [ + "./src/*" + ], + "@/assets/*": [ + "./assets/*" + ] + } + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ".expo/types/**/*.ts", + "expo-env.d.ts" + ] +} diff --git a/apps/README.md b/apps/README.md index 1f930ad8..12df1dd4 100644 --- a/apps/README.md +++ b/apps/README.md @@ -3,7 +3,8 @@ This directory contains demo projects showcasing the usage of the `react-native-brownfield` library. - `RNApp` - the React Native application that is packaged to AAR and XCFramework archives and integrated into native projects -- `ExpoApp` - the Expo application that is packaged analogously to the above using React Native Brownfield Expo config plugin +- `ExpoApp54` - the Expo application that is packaged analogously to the above using React Native Brownfield Expo config plugin; this app uses Expo SDK v54, which is an important test case since pre-55 versions require additional configuration steps +- `ExpoApp` - another Expo application similar to `ExpoApp55`, but using Expo SDK v55 - `AndroidApp` - the native Android application that integrates the RNApp AAR package (a "consumer" of the RNApp library); it comes in two flavors: - `expo` - which uses the artifact produced from `ExpoApp` - `vanilla` - which uses the artifact produced from `RNApp` @@ -11,3 +12,7 @@ This directory contains demo projects showcasing the usage of the `react-native- - `expo` - which uses the artifact produced from `ExpoApp` - `vanilla` - which uses the artifact produced from `RNApp` - `TesterIntegrated` - a native tester application that integrates the native projects with and React Native project inside a single application, consuming the brownfield module directly, without packaging to an artifact; this is mostly useful for internal development purposes and is not as meaningful for end users of React Native Brownfield + +## Additional notes + +There are 2 demo apps for Expo: `ExpoApp` (Expo 55 SDK) and `ExpoApp54` (Expo 54 SDK). This is to test our setup works with bost pre- and post-55 Expo SDK versions. It is important since the pre-55 Expo versions require additional handling, which is not applied by our Expo config plugin for Expo >= 55. diff --git a/apps/ExpoApp/scripts/prepare-android-build-gradle-for-ci.ts b/apps/scripts/prepare-android-build-gradle-for-ci.ts similarity index 90% rename from apps/ExpoApp/scripts/prepare-android-build-gradle-for-ci.ts rename to apps/scripts/prepare-android-build-gradle-for-ci.ts index 140b4f1d..15b76cc7 100644 --- a/apps/ExpoApp/scripts/prepare-android-build-gradle-for-ci.ts +++ b/apps/scripts/prepare-android-build-gradle-for-ci.ts @@ -2,10 +2,20 @@ import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; +const projectDirName = process.argv[2]; +if (!projectDirName) { + throw new Error('Project directory name is required'); +} + const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const SNAPSHOT_VERSION = '1.0.0-SNAPSHOT'; -const targetPath = path.resolve(__dirname, '..', 'android', 'build.gradle'); +const targetPath = path.resolve( + __dirname, + projectDirName, + 'android', + 'build.gradle' +); function ensureMavenLocalInBuildscriptRepositories(contents: string): string { const buildscriptReposRegex = diff --git a/docs/docs/docs/getting-started/examples.mdx b/docs/docs/docs/getting-started/examples.mdx index 4277a835..d76ff80a 100644 --- a/docs/docs/docs/getting-started/examples.mdx +++ b/docs/docs/docs/getting-started/examples.mdx @@ -5,7 +5,8 @@ You can find example projects demonstrating the usage of React Native Brownfield It contains the following apps: - `RNApp` - a React Native app that is packaged using React Native Brownfield to an artifact consumed in native apps, in which you can refer to an exemplar usage of the library for packaging a React Native app to a consumable artifact -- `ExpoApp` - an Expo app that is packaged analogously to the above using React Native Brownfield Expo config plugin +- `ExpoApp54` - the Expo application that is packaged analogously to the above using React Native Brownfield Expo config plugin; this app uses Expo SDK v54, which is an important test case since pre-55 versions require additional configuration steps +- `ExpoApp` - another Expo application similar to `ExpoApp55`, but using Expo SDK v55 - `AndroidApp` - an Android app consuming the packaged artifact from `RNApp` or `ExpoApp`, in which you can refer to an exemplar usage of the library for integrating React Native Brownfield into a native Android app; this app comes in two flavors: - `expo` - which uses the artifact produced from `ExpoApp` - `vanilla` - which uses the artifact produced from `RNApp` @@ -13,3 +14,7 @@ It contains the following apps: - `expo` - which uses the artifact produced from `ExpoApp` - `vanilla` - which uses the artifact produced from `RNApp` - `TesterIntegrated` - a native app (iOS and Android) with React Native Brownfield integrated directly into the native project without the intermediate step of packaging an artifact; this app serves mostly internal repo testing purposes + +## Additional notes + +There are 2 demo apps for Expo: `ExpoApp` (Expo 55 SDK) and `ExpoApp54` (Expo 54 SDK). This is to test our setup works with bost pre- and post-55 Expo SDK versions. It is important since the pre-55 Expo versions require additional handling, which is not applied by our Expo config plugin for Expo >= 55. diff --git a/packages/react-native-brownfield/src/expo-config-plugin/android/withAndroidModuleFiles.ts b/packages/react-native-brownfield/src/expo-config-plugin/android/withAndroidModuleFiles.ts index 5dad5b1b..9ee66bf0 100644 --- a/packages/react-native-brownfield/src/expo-config-plugin/android/withAndroidModuleFiles.ts +++ b/packages/react-native-brownfield/src/expo-config-plugin/android/withAndroidModuleFiles.ts @@ -9,6 +9,7 @@ import type { } from '../types'; import { Logger } from '../logging'; import { renderTemplate } from '../template/engine'; +import { getExpoInfo } from '../expoUtils'; /** * Creates the Android library module directory structure and files @@ -17,7 +18,13 @@ export function createAndroidModule({ androidDir, config, rnVersion, + isExpoPre55, }: { + /** + * Whether the Expo project is pre-55 + */ + isExpoPre55: boolean; + /** * The root Android directory path */ @@ -62,9 +69,15 @@ export function createAndroidModule({ }, { relativePath: `src/main/java/${config.android.packageName.replace(/\./g, '/')}/ReactNativeHostManager.kt`, - content: renderTemplate('android', 'ReactNativeHostManager.kt', { - '{{PACKAGE_NAME}}': android.packageName, - }), + content: renderTemplate( + 'android', + isExpoPre55 + ? 'ReactNativeHostManager-pre55.kt' + : 'ReactNativeHostManager-post55.kt', + { + '{{PACKAGE_NAME}}': android.packageName, + } + ), }, { relativePath: 'consumer-rules.pro', @@ -127,10 +140,13 @@ export const withAndroidModuleFiles: ConfigPlugin< ); } + const { isExpoPre55 } = getExpoInfo(config); + createAndroidModule({ androidDir, config: props, rnVersion, + isExpoPre55, }); return dangerousConfig; diff --git a/packages/react-native-brownfield/src/expo-config-plugin/expoUtils.ts b/packages/react-native-brownfield/src/expo-config-plugin/expoUtils.ts new file mode 100644 index 00000000..b4c8f3a3 --- /dev/null +++ b/packages/react-native-brownfield/src/expo-config-plugin/expoUtils.ts @@ -0,0 +1,12 @@ +import type { ExpoConfig } from '@expo/config-types'; + +export function getExpoInfo(config: ExpoConfig) { + const expoMajor = config.sdkVersion + ? parseInt(config.sdkVersion.split('.')[0], 10) + : -1; + const isExpoPre55 = expoMajor < 55; + return { + expoMajor, + isExpoPre55, + }; +} diff --git a/packages/react-native-brownfield/src/expo-config-plugin/ios/withBrownfieldIos.ts b/packages/react-native-brownfield/src/expo-config-plugin/ios/withBrownfieldIos.ts index 894af550..58da907a 100644 --- a/packages/react-native-brownfield/src/expo-config-plugin/ios/withBrownfieldIos.ts +++ b/packages/react-native-brownfield/src/expo-config-plugin/ios/withBrownfieldIos.ts @@ -14,6 +14,7 @@ import { modifyPodfile } from './podfileHelpers'; import { withIosFrameworkFiles } from './withIosFrameworkFiles'; import type { ResolvedBrownfieldPluginConfigWithIos } from '../types'; import { Logger } from '../logging'; +import { getExpoInfo } from '../expoUtils'; /** * iOS Config Plugin for integration with @callstack/react-native-brownfield. @@ -28,10 +29,8 @@ import { Logger } from '../logging'; export const withBrownfieldIos: ConfigPlugin< ResolvedBrownfieldPluginConfigWithIos > = (config, props) => { - const expoMajor = config.sdkVersion - ? parseInt(config.sdkVersion.split('.')[0], 10) - : -1; - const isExpoPre55 = expoMajor < 55; + const { isExpoPre55 } = getExpoInfo(config); + // Step 1: modify the Xcode project to add framework target & config = withXcodeProject(config, (xcodeConfig) => { const { modResults: project, modRequest } = xcodeConfig; diff --git a/packages/react-native-brownfield/src/expo-config-plugin/template/android/ReactNativeHostManager-post55.kt b/packages/react-native-brownfield/src/expo-config-plugin/template/android/ReactNativeHostManager-post55.kt new file mode 100644 index 00000000..f7db6bef --- /dev/null +++ b/packages/react-native-brownfield/src/expo-config-plugin/template/android/ReactNativeHostManager-post55.kt @@ -0,0 +1,32 @@ +package {{PACKAGE_NAME}} + +import android.app.Application +import android.content.res.Configuration +import com.callstack.reactnativebrownfield.OnJSBundleLoaded +import com.callstack.reactnativebrownfield.ReactNativeBrownfield +import com.facebook.react.PackageList +import com.facebook.react.ReactHost +import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative +import expo.modules.ApplicationLifecycleDispatcher +import expo.modules.ExpoReactHostFactory + +object ReactNativeHostManager { + fun initialize(application: Application, onJSBundleLoaded: OnJSBundleLoaded? = null) { + loadReactNative(application) + + ApplicationLifecycleDispatcher.onApplicationCreate(application) + + val reactHost: ReactHost by lazy { + ExpoReactHostFactory.getDefaultReactHost( + context = application.applicationContext, + packageList = PackageList(application).packages, + ) + } + + ReactNativeBrownfield.initialize(application, reactHost, onJSBundleLoaded) + } + + fun onConfigurationChanged(application: Application, newConfig: Configuration) { + ApplicationLifecycleDispatcher.onConfigurationChanged(application, newConfig) + } +} diff --git a/packages/react-native-brownfield/src/expo-config-plugin/template/android/ReactNativeHostManager.kt b/packages/react-native-brownfield/src/expo-config-plugin/template/android/ReactNativeHostManager-pre55.kt similarity index 100% rename from packages/react-native-brownfield/src/expo-config-plugin/template/android/ReactNativeHostManager.kt rename to packages/react-native-brownfield/src/expo-config-plugin/template/android/ReactNativeHostManager-pre55.kt diff --git a/yarn.lock b/yarn.lock index 8d24767a..aa8e1632 100644 --- a/yarn.lock +++ b/yarn.lock @@ -64,6 +64,17 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/code-frame@npm:7.29.0" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.28.5" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10/199e15ff89007dd30675655eec52481cb245c9fdf4f81e4dc1f866603b0217b57aff25f5ffa0a95bbc8e31eb861695330cd7869ad52cc211aa63016320ef72c5 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.27.2, @babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.5": version: 7.28.5 resolution: "@babel/compat-data@npm:7.28.5" @@ -164,6 +175,19 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.29.0, @babel/generator@npm:^7.29.1": + version: 7.29.1 + resolution: "@babel/generator@npm:7.29.1" + dependencies: + "@babel/parser": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" + "@jridgewell/gen-mapping": "npm:^0.3.12" + "@jridgewell/trace-mapping": "npm:^0.3.28" + jsesc: "npm:^3.0.2" + checksum: 10/61fe4ddd6e817aa312a14963ccdbb5c9a8c57e8b97b98d19a8a99ccab2215fda1a5f52bc8dd8d2e3c064497ddeb3ab8ceb55c76fa0f58f8169c34679d2256fe0 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.27.1, @babel/helper-annotate-as-pure@npm:^7.27.3": version: 7.27.3 resolution: "@babel/helper-annotate-as-pure@npm:7.27.3" @@ -482,6 +506,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/parser@npm:7.29.0" + dependencies: + "@babel/types": "npm:^7.29.0" + bin: + parser: ./bin/babel-parser.js + checksum: 10/b1576dca41074997a33ee740d87b330ae2e647f4b7da9e8d2abd3772b18385d303b0cee962b9b88425e0f30d58358dbb8d63792c1a2d005c823d335f6a029747 + languageName: node + linkType: hard + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.28.5": version: 7.28.5 resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.28.5" @@ -850,6 +885,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-typescript@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-syntax-typescript@npm:7.28.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/5c55f9c63bd36cf3d7e8db892294c8f85000f9c1526c3a1cc310d47d1e174f5c6f6605e5cc902c4636d885faba7a9f3d5e5edc6b35e4f3b1fd4c2d58d0304fa5 + languageName: node + linkType: hard + "@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" @@ -862,7 +908,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.0.0-0, @babel/plugin-transform-arrow-functions@npm:^7.24.7, @babel/plugin-transform-arrow-functions@npm:^7.27.1": +"@babel/plugin-transform-arrow-functions@npm:7.27.1, @babel/plugin-transform-arrow-functions@npm:^7.0.0-0, @babel/plugin-transform-arrow-functions@npm:^7.24.7, @babel/plugin-transform-arrow-functions@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-arrow-functions@npm:7.27.1" dependencies: @@ -958,27 +1004,27 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:^7.0.0-0, @babel/plugin-transform-class-properties@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-class-properties@npm:7.28.6" +"@babel/plugin-transform-class-properties@npm:7.27.1, @babel/plugin-transform-class-properties@npm:^7.25.4, @babel/plugin-transform-class-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.28.6" - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/200f30d44b36a768fa3a8cf690db9e333996af2ad14d9fa1b4c91a427ed9302907873b219b4ce87517ca1014a810eb2e929a6a66be68473f72b546fc64d04fbc + checksum: 10/475a6e5a9454912fe1bdc171941976ca10ea4e707675d671cdb5ce6b6761d84d1791ac61b6bca81a2e5f6430cb7b9d8e4b2392404110e69c28207a754e196294 languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:^7.25.4, @babel/plugin-transform-class-properties@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" +"@babel/plugin-transform-class-properties@npm:^7.0.0-0, @babel/plugin-transform-class-properties@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-class-properties@npm:7.28.6" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/475a6e5a9454912fe1bdc171941976ca10ea4e707675d671cdb5ce6b6761d84d1791ac61b6bca81a2e5f6430cb7b9d8e4b2392404110e69c28207a754e196294 + checksum: 10/200f30d44b36a768fa3a8cf690db9e333996af2ad14d9fa1b4c91a427ed9302907873b219b4ce87517ca1014a810eb2e929a6a66be68473f72b546fc64d04fbc languageName: node linkType: hard @@ -1006,35 +1052,35 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.0.0-0, @babel/plugin-transform-classes@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-classes@npm:7.28.6" +"@babel/plugin-transform-classes@npm:7.28.4, @babel/plugin-transform-classes@npm:^7.25.4, @babel/plugin-transform-classes@npm:^7.28.4": + version: 7.28.4 + resolution: "@babel/plugin-transform-classes@npm:7.28.4" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-compilation-targets": "npm:^7.28.6" + "@babel/helper-compilation-targets": "npm:^7.27.2" "@babel/helper-globals": "npm:^7.28.0" - "@babel/helper-plugin-utils": "npm:^7.28.6" - "@babel/helper-replace-supers": "npm:^7.28.6" - "@babel/traverse": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" + "@babel/traverse": "npm:^7.28.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/9c3278a314d1c4bcda792bb22aced20e30c735557daf9bcc56397c0f3eb54761b21c770219e4581036a10dabda3e597321ed093bc245d5f4d561e19ceff66a6d + checksum: 10/1f8423d0ba287ba4ae3aac89299e704a666ef2fc5950cd581e056c068486917a460efd5731fdd0d0fb0a8a08852e13b31c1add089028e89a8991a7fdfaff5c43 languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.25.4, @babel/plugin-transform-classes@npm:^7.28.4": - version: 7.28.4 - resolution: "@babel/plugin-transform-classes@npm:7.28.4" +"@babel/plugin-transform-classes@npm:^7.0.0-0, @babel/plugin-transform-classes@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-classes@npm:7.28.6" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-compilation-targets": "npm:^7.28.6" "@babel/helper-globals": "npm:^7.28.0" - "@babel/helper-plugin-utils": "npm:^7.27.1" - "@babel/helper-replace-supers": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.4" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-replace-supers": "npm:^7.28.6" + "@babel/traverse": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/1f8423d0ba287ba4ae3aac89299e704a666ef2fc5950cd581e056c068486917a460efd5731fdd0d0fb0a8a08852e13b31c1add089028e89a8991a7fdfaff5c43 + checksum: 10/9c3278a314d1c4bcda792bb22aced20e30c735557daf9bcc56397c0f3eb54761b21c770219e4581036a10dabda3e597321ed093bc245d5f4d561e19ceff66a6d languageName: node linkType: hard @@ -1389,25 +1435,25 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.0.0-0, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.28.6" +"@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/88106952ca4f4fea8f97222a25f9595c6859d458d76905845dfa54f54e7d345e3dc338932e8c84a9c57a6c88b2f6d9ebff47130ce508a49c2b6e6a9f03858750 + checksum: 10/15333f4888ffedc449a2a21a0b1ca7983e089f43faa00cfb71d2466e20221a5fd979cdb1a3f57bc20fc62c67bd3ff3dde054133fb6324a58be8f64d20aefacd2 languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.0.0-0, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.28.6" dependencies: - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/15333f4888ffedc449a2a21a0b1ca7983e089f43faa00cfb71d2466e20221a5fd979cdb1a3f57bc20fc62c67bd3ff3dde054133fb6324a58be8f64d20aefacd2 + checksum: 10/88106952ca4f4fea8f97222a25f9595c6859d458d76905845dfa54f54e7d345e3dc338932e8c84a9c57a6c88b2f6d9ebff47130ce508a49c2b6e6a9f03858750 languageName: node linkType: hard @@ -1497,6 +1543,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-optional-chaining@npm:7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/34b0f96400c259a2722740d17a001fe45f78d8ff052c40e29db2e79173be72c1cfe8d9681067e3f5da3989e4a557402df5c982c024c18257587a41e022f95640 + languageName: node + linkType: hard + "@babel/plugin-transform-optional-chaining@npm:^7.0.0-0, @babel/plugin-transform-optional-chaining@npm:^7.28.6": version: 7.28.6 resolution: "@babel/plugin-transform-optional-chaining@npm:7.28.6" @@ -1737,7 +1795,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.0.0-0, @babel/plugin-transform-shorthand-properties@npm:^7.24.7, @babel/plugin-transform-shorthand-properties@npm:^7.27.1": +"@babel/plugin-transform-shorthand-properties@npm:7.27.1, @babel/plugin-transform-shorthand-properties@npm:^7.0.0-0, @babel/plugin-transform-shorthand-properties@npm:^7.24.7, @babel/plugin-transform-shorthand-properties@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-shorthand-properties@npm:7.27.1" dependencies: @@ -1794,7 +1852,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.0.0-0, @babel/plugin-transform-template-literals@npm:^7.27.1": +"@babel/plugin-transform-template-literals@npm:7.27.1, @babel/plugin-transform-template-literals@npm:^7.0.0-0, @babel/plugin-transform-template-literals@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-template-literals@npm:7.27.1" dependencies: @@ -1831,6 +1889,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-typescript@npm:^7.27.1": + version: 7.28.6 + resolution: "@babel/plugin-transform-typescript@npm:7.28.6" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.3" + "@babel/helper-create-class-features-plugin": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + "@babel/plugin-syntax-typescript": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/a0bccc531fa8710a45b0b593140273741e0e4a0721b1ef6ef9dfefae0bbe61528440d65aab7936929551fd76793272257d74f60cf66891352f793294930a4b67 + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-escapes@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-unicode-escapes@npm:7.27.1" @@ -1866,7 +1939,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.0.0-0, @babel/plugin-transform-unicode-regex@npm:^7.24.7, @babel/plugin-transform-unicode-regex@npm:^7.27.1": +"@babel/plugin-transform-unicode-regex@npm:7.27.1, @babel/plugin-transform-unicode-regex@npm:^7.0.0-0, @babel/plugin-transform-unicode-regex@npm:^7.24.7, @babel/plugin-transform-unicode-regex@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-unicode-regex@npm:7.27.1" dependencies: @@ -2091,6 +2164,21 @@ __metadata: languageName: node linkType: hard +"@babel/preset-typescript@npm:7.27.1": + version: 7.27.1 + resolution: "@babel/preset-typescript@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-option": "npm:^7.27.1" + "@babel/plugin-syntax-jsx": "npm:^7.27.1" + "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" + "@babel/plugin-transform-typescript": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/9d8e75326b3c93fa016ba7aada652800fc77bc05fcc181888700a049935e8cf1284b549de18a5d62ef3591d02f097ea6de1111f7d71a991aaf36ba74657bd145 + languageName: node + linkType: hard + "@babel/preset-typescript@npm:^7.16.7, @babel/preset-typescript@npm:^7.23.0, @babel/preset-typescript@npm:^7.24.7, @babel/preset-typescript@npm:^7.27.1, @babel/preset-typescript@npm:^7.28.5": version: 7.28.5 resolution: "@babel/preset-typescript@npm:7.28.5" @@ -2106,7 +2194,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.20.0": +"@babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.20.0": version: 7.28.6 resolution: "@babel/runtime@npm:7.28.6" checksum: 10/fbcd439cb74d4a681958eb064c509829e3f46d8a4bfaaf441baa81bb6733d1e680bccc676c813883d7741bcaada1d0d04b15aa320ef280b5734e2192b50decf9 @@ -2172,6 +2260,21 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/traverse@npm:7.29.0" + dependencies: + "@babel/code-frame": "npm:^7.29.0" + "@babel/generator": "npm:^7.29.0" + "@babel/helper-globals": "npm:^7.28.0" + "@babel/parser": "npm:^7.29.0" + "@babel/template": "npm:^7.28.6" + "@babel/types": "npm:^7.29.0" + debug: "npm:^4.3.1" + checksum: 10/3a0d0438f1ba9fed4fbe1706ea598a865f9af655a16ca9517ab57bda526e224569ca1b980b473fb68feea5e08deafbbf2cf9febb941f92f2d2533310c3fc4abc + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.28.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": version: 7.28.5 resolution: "@babel/types@npm:7.28.5" @@ -2192,6 +2295,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/types@npm:7.29.0" + dependencies: + "@babel/helper-string-parser": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.28.5" + checksum: 10/bfc2b211210f3894dcd7e6a33b2d1c32c93495dc1e36b547376aa33441abe551ab4bc1640d4154ee2acd8e46d3bbc925c7224caae02fcaf0e6a771e97fccc661 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -2251,9 +2364,9 @@ __metadata: languageName: unknown linkType: soft -"@callstack/brownfield-example-expo-app@workspace:apps/ExpoApp": +"@callstack/brownfield-example-expo-app-54@workspace:apps/ExpoApp54": version: 0.0.0-use.local - resolution: "@callstack/brownfield-example-expo-app@workspace:apps/ExpoApp" + resolution: "@callstack/brownfield-example-expo-app-54@workspace:apps/ExpoApp54" dependencies: "@callstack/brownie": "workspace:^" "@callstack/react-native-brownfield": "workspace:^" @@ -2284,6 +2397,45 @@ __metadata: languageName: unknown linkType: soft +"@callstack/brownfield-example-expo-app-55@workspace:apps/ExpoApp55": + version: 0.0.0-use.local + resolution: "@callstack/brownfield-example-expo-app-55@workspace:apps/ExpoApp55" + dependencies: + "@callstack/brownie": "workspace:^" + "@callstack/react-native-brownfield": "workspace:^" + "@expo/vector-icons": "npm:^15.0.2" + "@react-navigation/bottom-tabs": "npm:^7.7.3" + "@react-navigation/elements": "npm:^2.8.1" + "@react-navigation/native": "npm:^7.1.28" + "@types/react": "npm:~19.2.2" + eslint: "npm:^9.25.0" + eslint-config-expo: "npm:~55.0.0" + expo: "npm:~55.0.0-preview.12" + expo-constants: "npm:~55.0.6" + expo-device: "npm:~55.0.8" + expo-font: "npm:~55.0.4" + expo-glass-effect: "npm:~55.0.6" + expo-image: "npm:~55.0.4" + expo-linking: "npm:~55.0.6" + expo-router: "npm:~55.0.0-preview.9" + expo-splash-screen: "npm:~55.0.8" + expo-status-bar: "npm:~55.0.3" + expo-symbols: "npm:~55.0.4" + expo-system-ui: "npm:~55.0.8" + expo-web-browser: "npm:~55.0.8" + react: "npm:19.2.0" + react-dom: "npm:19.2.0" + react-native: "npm:0.83.2" + react-native-gesture-handler: "npm:~2.30.0" + react-native-reanimated: "npm:~4.2.1" + react-native-safe-area-context: "npm:~5.6.2" + react-native-screens: "npm:~4.23.0" + react-native-web: "npm:~0.21.0" + react-native-worklets: "npm:0.7.2" + typescript: "npm:~5.9.2" + languageName: unknown + linkType: soft + "@callstack/brownfield-example-ios-app@workspace:apps/AppleApp": version: 0.0.0-use.local resolution: "@callstack/brownfield-example-ios-app@workspace:apps/AppleApp" @@ -2942,6 +3094,15 @@ __metadata: languageName: node linkType: hard +"@egjs/hammerjs@npm:^2.0.17": + version: 2.0.17 + resolution: "@egjs/hammerjs@npm:2.0.17" + dependencies: + "@types/hammerjs": "npm:^2.0.36" + checksum: 10/f695129d45edfcfd6c5f2d1d36186da36ffade013991972ce23721a6b7ad7f214ce282abc4023e3f6b63062620852a63e897b523f247804afc7acd188fee9d9d + languageName: node + linkType: hard + "@emnapi/core@npm:^1.4.3, @emnapi/core@npm:^1.5.0": version: 1.8.1 resolution: "@emnapi/core@npm:1.8.1" @@ -3287,6 +3448,13 @@ __metadata: languageName: node linkType: hard +"@expo-google-fonts/material-symbols@npm:^0.4.1": + version: 0.4.23 + resolution: "@expo-google-fonts/material-symbols@npm:0.4.23" + checksum: 10/2ba19f9860f7c9b8c4431764be06d89bbb90c52be85f0eebf7d40ea7efadbfc9530f6febba226698b4aa5dd66f70892d5f98ab204dedc825b2709763c974f885 + languageName: node + linkType: hard + "@expo/cli@npm:54.0.21": version: 54.0.21 resolution: "@expo/cli@npm:54.0.21" @@ -3369,6 +3537,83 @@ __metadata: languageName: node linkType: hard +"@expo/cli@npm:55.0.10": + version: 55.0.10 + resolution: "@expo/cli@npm:55.0.10" + dependencies: + "@expo/code-signing-certificates": "npm:^0.0.6" + "@expo/config": "npm:~55.0.7" + "@expo/config-plugins": "npm:~55.0.5" + "@expo/devcert": "npm:^1.2.1" + "@expo/env": "npm:~2.1.1" + "@expo/image-utils": "npm:^0.8.12" + "@expo/json-file": "npm:^10.0.12" + "@expo/log-box": "npm:55.0.7" + "@expo/metro": "npm:~54.2.0" + "@expo/metro-config": "npm:~55.0.7" + "@expo/osascript": "npm:^2.4.2" + "@expo/package-manager": "npm:^1.10.3" + "@expo/plist": "npm:^0.5.2" + "@expo/prebuild-config": "npm:^55.0.6" + "@expo/require-utils": "npm:^55.0.1" + "@expo/router-server": "npm:^55.0.7" + "@expo/schema-utils": "npm:^55.0.2" + "@expo/spawn-async": "npm:^1.7.2" + "@expo/ws-tunnel": "npm:^1.0.1" + "@expo/xcpretty": "npm:^4.4.0" + "@react-native/dev-middleware": "npm:0.83.2" + accepts: "npm:^1.3.8" + arg: "npm:^5.0.2" + better-opn: "npm:~3.0.2" + bplist-creator: "npm:0.1.0" + bplist-parser: "npm:^0.3.1" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.3.0" + compression: "npm:^1.7.4" + connect: "npm:^3.7.0" + debug: "npm:^4.3.4" + dnssd-advertise: "npm:^1.1.3" + expo-server: "npm:^55.0.4" + fetch-nodeshim: "npm:^0.4.6" + getenv: "npm:^2.0.0" + glob: "npm:^13.0.0" + lan-network: "npm:^0.2.0" + minimatch: "npm:^9.0.0" + multitars: "npm:^0.2.3" + node-forge: "npm:^1.3.3" + npm-package-arg: "npm:^11.0.0" + ora: "npm:^3.4.0" + picomatch: "npm:^3.0.1" + pretty-format: "npm:^29.7.0" + progress: "npm:^2.0.3" + prompts: "npm:^2.3.2" + resolve-from: "npm:^5.0.0" + semver: "npm:^7.6.0" + send: "npm:^0.19.0" + slugify: "npm:^1.3.4" + source-map-support: "npm:~0.5.21" + stacktrace-parser: "npm:^0.1.10" + structured-headers: "npm:^0.4.1" + terminal-link: "npm:^2.1.1" + toqr: "npm:^0.1.1" + wrap-ansi: "npm:^7.0.0" + ws: "npm:^8.12.1" + zod: "npm:^3.25.76" + peerDependencies: + expo: "*" + expo-router: "*" + react-native: "*" + peerDependenciesMeta: + expo-router: + optional: true + react-native: + optional: true + bin: + expo-internal: build/bin/cli + checksum: 10/7eb2c8f7c2a7c36c0a320b9316816a02ba7990c0ee31d84686e67ce0c4d3314ca4d1410658b57ddb8a04d950e7a24623db52f4c074078977bcb26d1bfc6cd9fc + languageName: node + linkType: hard + "@expo/code-signing-certificates@npm:^0.0.6": version: 0.0.6 resolution: "@expo/code-signing-certificates@npm:0.0.6" @@ -3400,6 +3645,27 @@ __metadata: languageName: node linkType: hard +"@expo/config-plugins@npm:~55.0.5": + version: 55.0.5 + resolution: "@expo/config-plugins@npm:55.0.5" + dependencies: + "@expo/config-types": "npm:^55.0.4" + "@expo/json-file": "npm:~10.0.12" + "@expo/plist": "npm:^0.5.2" + "@expo/sdk-runtime-versions": "npm:^1.0.0" + chalk: "npm:^4.1.2" + debug: "npm:^4.3.5" + getenv: "npm:^2.0.0" + glob: "npm:^13.0.0" + resolve-from: "npm:^5.0.0" + semver: "npm:^7.5.4" + slugify: "npm:^1.6.6" + xcode: "npm:^3.0.1" + xml2js: "npm:0.6.0" + checksum: 10/6194c7c6ae91236bdbbd57929d71f0bde2dac603ca70233a943175445eb86b28c747366e4bed418bd1012084a6e16e7c41946fef69a9dec78cf48e040bda93ca + languageName: node + linkType: hard + "@expo/config-types@npm:^54.0.10": version: 54.0.10 resolution: "@expo/config-types@npm:54.0.10" @@ -3407,6 +3673,13 @@ __metadata: languageName: node linkType: hard +"@expo/config-types@npm:^55.0.4": + version: 55.0.4 + resolution: "@expo/config-types@npm:55.0.4" + checksum: 10/0f08e6c453f1e1952da89c4ed33594ead5f01e9e99d49f62ed60d9e1273579566305287a24bff7f83e4371a2a9431dada5ffffffd6c25ab11fed996fe93d903c + languageName: node + linkType: hard + "@expo/config@npm:^12.0.13, @expo/config@npm:~12.0.13": version: 12.0.13 resolution: "@expo/config@npm:12.0.13" @@ -3428,6 +3701,25 @@ __metadata: languageName: node linkType: hard +"@expo/config@npm:~55.0.7": + version: 55.0.7 + resolution: "@expo/config@npm:55.0.7" + dependencies: + "@expo/config-plugins": "npm:~55.0.5" + "@expo/config-types": "npm:^55.0.4" + "@expo/json-file": "npm:^10.0.12" + "@expo/require-utils": "npm:^55.0.1" + deepmerge: "npm:^4.3.1" + getenv: "npm:^2.0.0" + glob: "npm:^13.0.0" + resolve-from: "npm:^5.0.0" + resolve-workspace-root: "npm:^2.0.0" + semver: "npm:^7.6.0" + slugify: "npm:^1.3.4" + checksum: 10/9fed59c27a5e2ee49f69c8ac181581cbd74f0e2e3c15d64f6ba57f62a67adee8d775035aefcf4dc9e78806068bbdcbe8e14ce5d8185eabe69294b3536a55726b + languageName: node + linkType: hard + "@expo/devcert@npm:^1.2.1": version: 1.2.1 resolution: "@expo/devcert@npm:1.2.1" @@ -3455,6 +3747,45 @@ __metadata: languageName: node linkType: hard +"@expo/devtools@npm:55.0.2": + version: 55.0.2 + resolution: "@expo/devtools@npm:55.0.2" + dependencies: + chalk: "npm:^4.1.2" + peerDependencies: + react: "*" + react-native: "*" + peerDependenciesMeta: + react: + optional: true + react-native: + optional: true + checksum: 10/0a43121fb5a7993dfe0c112e287e292358c099c4f02dbd1f80e67fe8bb7cff21be77cf389fefcc84f86e2955066e4b0e70e447cf48ca8772de47c6eef114ecdd + languageName: node + linkType: hard + +"@expo/dom-webview@npm:^55.0.3": + version: 55.0.3 + resolution: "@expo/dom-webview@npm:55.0.3" + peerDependencies: + expo: "*" + react: "*" + react-native: "*" + checksum: 10/e93ec71dc764b57fb109ed97794b8b033a88ab9656bee875853f838777590ff85bc7614f1af95e9ea528a3424e18fa27be80fe252565f0dff980e8766a56d7f9 + languageName: node + linkType: hard + +"@expo/env@npm:^2.0.11, @expo/env@npm:~2.1.1": + version: 2.1.1 + resolution: "@expo/env@npm:2.1.1" + dependencies: + chalk: "npm:^4.0.0" + debug: "npm:^4.3.4" + getenv: "npm:^2.0.0" + checksum: 10/19be4c7131b1d718a456018dfe3133b6c021b71b8689b11b208d03aae947c0f0848ce21996adf9010c1b87d765b46b14484f1d1f30f73db466b9500024bfac53 + languageName: node + linkType: hard + "@expo/env@npm:~2.0.8": version: 2.0.8 resolution: "@expo/env@npm:2.0.8" @@ -3489,6 +3820,42 @@ __metadata: languageName: node linkType: hard +"@expo/fingerprint@npm:0.16.4": + version: 0.16.4 + resolution: "@expo/fingerprint@npm:0.16.4" + dependencies: + "@expo/env": "npm:^2.0.11" + "@expo/spawn-async": "npm:^1.7.2" + arg: "npm:^5.0.2" + chalk: "npm:^4.1.2" + debug: "npm:^4.3.4" + getenv: "npm:^2.0.0" + glob: "npm:^13.0.0" + ignore: "npm:^5.3.1" + minimatch: "npm:^9.0.0" + resolve-from: "npm:^5.0.0" + semver: "npm:^7.6.0" + bin: + fingerprint: bin/cli.js + checksum: 10/c1f71030d9ef019e705de67279aaab281c2e5499860a0ea49b675b25e70ec9f9ba6133269811bc4cf860ad211b3baf594102ae1ed8eba6047f489345d662d1ca + languageName: node + linkType: hard + +"@expo/image-utils@npm:^0.8.12": + version: 0.8.12 + resolution: "@expo/image-utils@npm:0.8.12" + dependencies: + "@expo/spawn-async": "npm:^1.7.2" + chalk: "npm:^4.0.0" + getenv: "npm:^2.0.0" + jimp-compact: "npm:0.16.1" + parse-png: "npm:^2.1.0" + resolve-from: "npm:^5.0.0" + semver: "npm:^7.6.0" + checksum: 10/fb474558bb4009f39c640fb028a57cfae721e52dae0085bb2505390c6968d30cdc82eb195c15de82f30879c710104c08e60120de8f49613183437701f19dd363 + languageName: node + linkType: hard + "@expo/image-utils@npm:^0.8.8": version: 0.8.8 resolution: "@expo/image-utils@npm:0.8.8" @@ -3507,6 +3874,16 @@ __metadata: languageName: node linkType: hard +"@expo/json-file@npm:^10.0.12, @expo/json-file@npm:~10.0.12": + version: 10.0.12 + resolution: "@expo/json-file@npm:10.0.12" + dependencies: + "@babel/code-frame": "npm:^7.20.0" + json5: "npm:^2.2.3" + checksum: 10/547f5b9d1c5b10147ef0780d079d853e3b2e8ec0b09080420cb48592060a4399308622fd205aaec5e157c41d37c5b69dffa9aaa96c01fe444b0258f78c3bb85f + languageName: node + linkType: hard + "@expo/json-file@npm:^10.0.8, @expo/json-file@npm:~10.0.8": version: 10.0.8 resolution: "@expo/json-file@npm:10.0.8" @@ -3517,6 +3894,32 @@ __metadata: languageName: node linkType: hard +"@expo/local-build-cache-provider@npm:55.0.5": + version: 55.0.5 + resolution: "@expo/local-build-cache-provider@npm:55.0.5" + dependencies: + "@expo/config": "npm:~55.0.7" + chalk: "npm:^4.1.2" + checksum: 10/aaee5951bfa05be64a4ab73ddccc69a3f04f46898e6f316baa8dd550754e27001644c5e2afe56804541b08ba7c44ed7677ab2e30cf2d1a33b42d6afe1045059e + languageName: node + linkType: hard + +"@expo/log-box@npm:55.0.7": + version: 55.0.7 + resolution: "@expo/log-box@npm:55.0.7" + dependencies: + "@expo/dom-webview": "npm:^55.0.3" + anser: "npm:^1.4.9" + stacktrace-parser: "npm:^0.1.10" + peerDependencies: + "@expo/dom-webview": ^55.0.3 + expo: "*" + react: "*" + react-native: "*" + checksum: 10/812ea909c527d21a284d6ce273351836b8848618611d6cece0e2a284a7314f9cd7d8ba0deed96125790cdbdd993bdcb68c45d1612604ea4e300021e13f80302b + languageName: node + linkType: hard + "@expo/metro-config@npm:54.0.13, @expo/metro-config@npm:~54.0.13": version: 54.0.13 resolution: "@expo/metro-config@npm:54.0.13" @@ -3551,6 +3954,59 @@ __metadata: languageName: node linkType: hard +"@expo/metro-config@npm:55.0.7, @expo/metro-config@npm:~55.0.7": + version: 55.0.7 + resolution: "@expo/metro-config@npm:55.0.7" + dependencies: + "@babel/code-frame": "npm:^7.20.0" + "@babel/core": "npm:^7.20.0" + "@babel/generator": "npm:^7.20.5" + "@expo/config": "npm:~55.0.7" + "@expo/env": "npm:~2.1.1" + "@expo/json-file": "npm:~10.0.12" + "@expo/metro": "npm:~54.2.0" + "@expo/spawn-async": "npm:^1.7.2" + browserslist: "npm:^4.25.0" + chalk: "npm:^4.1.0" + debug: "npm:^4.3.2" + getenv: "npm:^2.0.0" + glob: "npm:^13.0.0" + hermes-parser: "npm:^0.29.1" + jsc-safe-url: "npm:^0.2.4" + lightningcss: "npm:^1.30.1" + minimatch: "npm:^9.0.0" + postcss: "npm:~8.4.32" + resolve-from: "npm:^5.0.0" + peerDependencies: + expo: "*" + peerDependenciesMeta: + expo: + optional: true + checksum: 10/6fda8cdce5f8f2105c7289af257b36227f47328240aaeceb5138199e7c61c00c83b328fdf761ed0a3693d0629fa211969117786c36338c5f5b5411ab59f74c81 + languageName: node + linkType: hard + +"@expo/metro-runtime@npm:^55.0.6": + version: 55.0.6 + resolution: "@expo/metro-runtime@npm:55.0.6" + dependencies: + "@expo/log-box": "npm:55.0.7" + anser: "npm:^1.4.9" + pretty-format: "npm:^29.7.0" + stacktrace-parser: "npm:^0.1.10" + whatwg-fetch: "npm:^3.0.0" + peerDependencies: + expo: "*" + react: "*" + react-dom: "*" + react-native: "*" + peerDependenciesMeta: + react-dom: + optional: true + checksum: 10/cae7fc019f65be573709bc86ef8eaad297bc1c8cd5ed8ed7a4ddb2342faf5a6021217a82344583d60079ceea694ab2613bd15afdcc5cf3390c0528198fe3aaa9 + languageName: node + linkType: hard + "@expo/metro-runtime@npm:^6.1.2": version: 6.1.2 resolution: "@expo/metro-runtime@npm:6.1.2" @@ -3603,6 +4059,29 @@ __metadata: languageName: node linkType: hard +"@expo/osascript@npm:^2.4.2": + version: 2.4.2 + resolution: "@expo/osascript@npm:2.4.2" + dependencies: + "@expo/spawn-async": "npm:^1.7.2" + checksum: 10/5609b926bd68120b6a01edea0c7b14d4fa9fcd454bbcb49b89988f7acdb540f3b9c1c133acbbd3f9cd6a6937ce2a950c9cdde2a98ec8769d8a8b1481666a67d9 + languageName: node + linkType: hard + +"@expo/package-manager@npm:^1.10.3": + version: 1.10.3 + resolution: "@expo/package-manager@npm:1.10.3" + dependencies: + "@expo/json-file": "npm:^10.0.12" + "@expo/spawn-async": "npm:^1.7.2" + chalk: "npm:^4.0.0" + npm-package-arg: "npm:^11.0.0" + ora: "npm:^3.4.0" + resolve-workspace-root: "npm:^2.0.0" + checksum: 10/cac9008ec362af0b54ebf55cb64514e3f4258423f0be9a0d1adb2815380e912783be78750c898e393f7bebe7a1b8288d449052b0ce9f790400d185a29b8274bd + languageName: node + linkType: hard + "@expo/package-manager@npm:^1.9.9": version: 1.9.10 resolution: "@expo/package-manager@npm:1.9.10" @@ -3628,6 +4107,17 @@ __metadata: languageName: node linkType: hard +"@expo/plist@npm:^0.5.2": + version: 0.5.2 + resolution: "@expo/plist@npm:0.5.2" + dependencies: + "@xmldom/xmldom": "npm:^0.8.8" + base64-js: "npm:^1.5.1" + xmlbuilder: "npm:^15.1.1" + checksum: 10/ab9350226a2f651c030f9704a0c66474b616b9772e7c6209d2d8271a6e5cc5d713b3b755c2c790a3b96d6f29af35b5ef18353611dc9e6f58d1827b207036ec81 + languageName: node + linkType: hard + "@expo/prebuild-config@npm:^54.0.8": version: 54.0.8 resolution: "@expo/prebuild-config@npm:54.0.8" @@ -3648,6 +4138,68 @@ __metadata: languageName: node linkType: hard +"@expo/prebuild-config@npm:^55.0.6": + version: 55.0.6 + resolution: "@expo/prebuild-config@npm:55.0.6" + dependencies: + "@expo/config": "npm:~55.0.7" + "@expo/config-plugins": "npm:~55.0.5" + "@expo/config-types": "npm:^55.0.4" + "@expo/image-utils": "npm:^0.8.12" + "@expo/json-file": "npm:^10.0.12" + "@react-native/normalize-colors": "npm:0.83.2" + debug: "npm:^4.3.1" + resolve-from: "npm:^5.0.0" + semver: "npm:^7.6.0" + xml2js: "npm:0.6.0" + peerDependencies: + expo: "*" + checksum: 10/e158bc8b595146b4956bce10564c285b483faa714f8d03a20eb4d699cc381e9289c9e02549e091b779f1cbec7a2d01b18f864782ce3e16ec9486d12642d6ab25 + languageName: node + linkType: hard + +"@expo/require-utils@npm:^55.0.1": + version: 55.0.1 + resolution: "@expo/require-utils@npm:55.0.1" + dependencies: + "@babel/code-frame": "npm:^7.20.0" + peerDependencies: + typescript: ^5.0.0 || ^5.0.0-0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/1da315c31a95fe3cb78a27c89b128f09c0934874c8d6ad0bf9bff76772bfe53a82a2f54aa3fe41d45b8bb66c84d39176dbf1f7f6193a35582de74f0b776df2ca + languageName: node + linkType: hard + +"@expo/router-server@npm:^55.0.7": + version: 55.0.7 + resolution: "@expo/router-server@npm:55.0.7" + dependencies: + debug: "npm:^4.3.4" + peerDependencies: + "@expo/metro-runtime": ^55.0.6 + expo: "*" + expo-constants: ^55.0.6 + expo-font: ^55.0.4 + expo-router: "*" + expo-server: ^55.0.4 + 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 + checksum: 10/d8fa58fe94bece678e1d79ab3f85954f814902d0d96c70def3d693533450dc3735fd1879eeed669c504610a81faa32d775fb663d839e35838619834d12f3f2c4 + languageName: node + linkType: hard + "@expo/schema-utils@npm:^0.1.8": version: 0.1.8 resolution: "@expo/schema-utils@npm:0.1.8" @@ -3655,6 +4207,13 @@ __metadata: languageName: node linkType: hard +"@expo/schema-utils@npm:^55.0.2": + version: 55.0.2 + resolution: "@expo/schema-utils@npm:55.0.2" + checksum: 10/a5ded5555112f0490af0a9794d876f8c0433a14c46f9f315c581920782d9e8c6e830f401e03e174a5ca245f90d8b07143f3e98f762cd2644d307413792f58dd7 + languageName: node + linkType: hard + "@expo/sdk-runtime-versions@npm:^1.0.0": version: 1.0.0 resolution: "@expo/sdk-runtime-versions@npm:1.0.0" @@ -3678,6 +4237,17 @@ __metadata: languageName: node linkType: hard +"@expo/vector-icons@npm:^15.0.2": + version: 15.1.1 + resolution: "@expo/vector-icons@npm:15.1.1" + peerDependencies: + expo-font: ">=14.0.4" + react: "*" + react-native: "*" + checksum: 10/204fafd5141c81bd55dd33f6c00cdc48ec1d37b6460be6fa3f851ccb235e1fad1097f22d034470daa49a5b839d058bbcadda1efd349c670c2fdce2ae65fb9bba + languageName: node + linkType: hard + "@expo/vector-icons@npm:^15.0.3": version: 15.0.3 resolution: "@expo/vector-icons@npm:15.0.3" @@ -3710,6 +4280,19 @@ __metadata: languageName: node linkType: hard +"@expo/xcpretty@npm:^4.4.0": + version: 4.4.1 + resolution: "@expo/xcpretty@npm:4.4.1" + dependencies: + "@babel/code-frame": "npm:^7.20.0" + chalk: "npm:^4.1.0" + js-yaml: "npm:^4.1.0" + bin: + excpretty: build/cli.js + checksum: 10/56d4c7d54f2b2d4a04d24f77c8e6926c0760c2983c5ac54018a35b754e261d3f31b7cd509342ff161dfbe852c03d5d62096927130069e6020db29c33ca3fa580 + languageName: node + linkType: hard + "@glideapps/ts-necessities@npm:2.2.3": version: 2.2.3 resolution: "@glideapps/ts-necessities@npm:2.2.3" @@ -5162,6 +5745,13 @@ __metadata: languageName: node linkType: hard +"@react-native/assets-registry@npm:0.83.2": + version: 0.83.2 + resolution: "@react-native/assets-registry@npm:0.83.2" + checksum: 10/62a4bfd803209795079878ed57ea9275c50added84b3ad514ffae43b0036f7e3319b0241c47f29f454d52b4739c42bf5e0171205697c2b8b45366b37bfca7e1d + languageName: node + linkType: hard + "@react-native/babel-plugin-codegen@npm:0.81.5": version: 0.81.5 resolution: "@react-native/babel-plugin-codegen@npm:0.81.5" @@ -5182,6 +5772,16 @@ __metadata: languageName: node linkType: hard +"@react-native/babel-plugin-codegen@npm:0.83.2": + version: 0.83.2 + resolution: "@react-native/babel-plugin-codegen@npm:0.83.2" + dependencies: + "@babel/traverse": "npm:^7.25.3" + "@react-native/codegen": "npm:0.83.2" + checksum: 10/fa28a674da9d4c515ccde850858bd27b1b508825f02bd415f4e48f8e2f0becf41a6d2f96e8578e0670d50dc1b36d2fe7403194c0f52d31bf87728982a13399d1 + languageName: node + linkType: hard + "@react-native/babel-preset@npm:0.81.5": version: 0.81.5 resolution: "@react-native/babel-preset@npm:0.81.5" @@ -5233,13 +5833,68 @@ __metadata: react-refresh: "npm:^0.14.0" peerDependencies: "@babel/core": "*" - checksum: 10/c077e01b093be9f93e08b36dd7bc425d897749f76f9a2912cff8589f9ad3e36be0d6b54542ec6fbf13bd4b87ff7648b17a275930c546665d7b8accf4c89b6ff3 + checksum: 10/c077e01b093be9f93e08b36dd7bc425d897749f76f9a2912cff8589f9ad3e36be0d6b54542ec6fbf13bd4b87ff7648b17a275930c546665d7b8accf4c89b6ff3 + languageName: node + linkType: hard + +"@react-native/babel-preset@npm:0.82.1": + version: 0.82.1 + resolution: "@react-native/babel-preset@npm:0.82.1" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/plugin-proposal-export-default-from": "npm:^7.24.7" + "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" + "@babel/plugin-syntax-export-default-from": "npm:^7.24.7" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-transform-arrow-functions": "npm:^7.24.7" + "@babel/plugin-transform-async-generator-functions": "npm:^7.25.4" + "@babel/plugin-transform-async-to-generator": "npm:^7.24.7" + "@babel/plugin-transform-block-scoping": "npm:^7.25.0" + "@babel/plugin-transform-class-properties": "npm:^7.25.4" + "@babel/plugin-transform-classes": "npm:^7.25.4" + "@babel/plugin-transform-computed-properties": "npm:^7.24.7" + "@babel/plugin-transform-destructuring": "npm:^7.24.8" + "@babel/plugin-transform-flow-strip-types": "npm:^7.25.2" + "@babel/plugin-transform-for-of": "npm:^7.24.7" + "@babel/plugin-transform-function-name": "npm:^7.25.1" + "@babel/plugin-transform-literals": "npm:^7.25.2" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.24.7" + "@babel/plugin-transform-modules-commonjs": "npm:^7.24.8" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.24.7" + "@babel/plugin-transform-numeric-separator": "npm:^7.24.7" + "@babel/plugin-transform-object-rest-spread": "npm:^7.24.7" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.24.7" + "@babel/plugin-transform-optional-chaining": "npm:^7.24.8" + "@babel/plugin-transform-parameters": "npm:^7.24.7" + "@babel/plugin-transform-private-methods": "npm:^7.24.7" + "@babel/plugin-transform-private-property-in-object": "npm:^7.24.7" + "@babel/plugin-transform-react-display-name": "npm:^7.24.7" + "@babel/plugin-transform-react-jsx": "npm:^7.25.2" + "@babel/plugin-transform-react-jsx-self": "npm:^7.24.7" + "@babel/plugin-transform-react-jsx-source": "npm:^7.24.7" + "@babel/plugin-transform-regenerator": "npm:^7.24.7" + "@babel/plugin-transform-runtime": "npm:^7.24.7" + "@babel/plugin-transform-shorthand-properties": "npm:^7.24.7" + "@babel/plugin-transform-spread": "npm:^7.24.7" + "@babel/plugin-transform-sticky-regex": "npm:^7.24.7" + "@babel/plugin-transform-typescript": "npm:^7.25.2" + "@babel/plugin-transform-unicode-regex": "npm:^7.24.7" + "@babel/template": "npm:^7.25.0" + "@react-native/babel-plugin-codegen": "npm:0.82.1" + babel-plugin-syntax-hermes-parser: "npm:0.32.0" + babel-plugin-transform-flow-enums: "npm:^0.0.2" + react-refresh: "npm:^0.14.0" + peerDependencies: + "@babel/core": "*" + checksum: 10/981cfbeff8b66b466398e8fe21aaff507d4bff22ee3e6468909eabb5a6f219a5e4d517393c994c0288b173a5ecf7626227deeec923e324d9cfa75697c2949954 languageName: node linkType: hard -"@react-native/babel-preset@npm:0.82.1": - version: 0.82.1 - resolution: "@react-native/babel-preset@npm:0.82.1" +"@react-native/babel-preset@npm:0.83.2": + version: 0.83.2 + resolution: "@react-native/babel-preset@npm:0.83.2" dependencies: "@babel/core": "npm:^7.25.2" "@babel/plugin-proposal-export-default-from": "npm:^7.24.7" @@ -5282,13 +5937,13 @@ __metadata: "@babel/plugin-transform-typescript": "npm:^7.25.2" "@babel/plugin-transform-unicode-regex": "npm:^7.24.7" "@babel/template": "npm:^7.25.0" - "@react-native/babel-plugin-codegen": "npm:0.82.1" + "@react-native/babel-plugin-codegen": "npm:0.83.2" babel-plugin-syntax-hermes-parser: "npm:0.32.0" babel-plugin-transform-flow-enums: "npm:^0.0.2" react-refresh: "npm:^0.14.0" peerDependencies: "@babel/core": "*" - checksum: 10/981cfbeff8b66b466398e8fe21aaff507d4bff22ee3e6468909eabb5a6f219a5e4d517393c994c0288b173a5ecf7626227deeec923e324d9cfa75697c2949954 + checksum: 10/e35d3bd86caaf49abc2703d43319aa68195f8f9c48b42f8dc70ead5127b41178bda5d6a39c64f39c12a3b1eeafc1ddd4746e2d108fec1619adcc0d664702e7d5 languageName: node linkType: hard @@ -5326,6 +5981,23 @@ __metadata: languageName: node linkType: hard +"@react-native/codegen@npm:0.83.2": + version: 0.83.2 + resolution: "@react-native/codegen@npm:0.83.2" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/parser": "npm:^7.25.3" + glob: "npm:^7.1.1" + hermes-parser: "npm:0.32.0" + invariant: "npm:^2.2.4" + nullthrows: "npm:^1.1.1" + yargs: "npm:^17.6.2" + peerDependencies: + "@babel/core": "*" + checksum: 10/757095d1b7b20574012751bd647242bb2e5b67b14afb6c5a2b80e51bb36e474aaf34c6c6600cc09b23745bc38469dab99ec56c53f7a8737ca1ec4b9aa52fbdde + languageName: node + linkType: hard + "@react-native/community-cli-plugin@npm:0.81.5": version: 0.81.5 resolution: "@react-native/community-cli-plugin@npm:0.81.5" @@ -5372,6 +6044,29 @@ __metadata: languageName: node linkType: hard +"@react-native/community-cli-plugin@npm:0.83.2": + version: 0.83.2 + resolution: "@react-native/community-cli-plugin@npm:0.83.2" + dependencies: + "@react-native/dev-middleware": "npm:0.83.2" + debug: "npm:^4.4.0" + invariant: "npm:^2.2.4" + metro: "npm:^0.83.3" + metro-config: "npm:^0.83.3" + metro-core: "npm:^0.83.3" + semver: "npm:^7.1.3" + peerDependencies: + "@react-native-community/cli": "*" + "@react-native/metro-config": "*" + peerDependenciesMeta: + "@react-native-community/cli": + optional: true + "@react-native/metro-config": + optional: true + checksum: 10/2683c34c2c8c56fa9d765baf97701893ff57816f606d115938be0684ac7829782721d927d7957e7075d8399d7cbfa71af205f79fae3bc7e633b5c54ed1de8dbb + languageName: node + linkType: hard + "@react-native/debugger-frontend@npm:0.81.5": version: 0.81.5 resolution: "@react-native/debugger-frontend@npm:0.81.5" @@ -5386,6 +6081,13 @@ __metadata: languageName: node linkType: hard +"@react-native/debugger-frontend@npm:0.83.2": + version: 0.83.2 + resolution: "@react-native/debugger-frontend@npm:0.83.2" + checksum: 10/17e9452c73fc464daa13655d8a9e5868298e47b6b3e67ca41d624f176c6c493ae37c4a56a4b1106edf0a85902127501e8e29d1bf70dcf5205bba7a81a304f359 + languageName: node + linkType: hard + "@react-native/debugger-shell@npm:0.82.1": version: 0.82.1 resolution: "@react-native/debugger-shell@npm:0.82.1" @@ -5396,6 +6098,16 @@ __metadata: languageName: node linkType: hard +"@react-native/debugger-shell@npm:0.83.2": + version: 0.83.2 + resolution: "@react-native/debugger-shell@npm:0.83.2" + dependencies: + cross-spawn: "npm:^7.0.6" + fb-dotslash: "npm:0.5.8" + checksum: 10/214590025f5dd7781dc906c2945dd21f595bc5534c807e2af29133175dcb05d9be979a95857ff186bcc97cc307a99d26a6b993798c643cee7d5203bb56c64b47 + languageName: node + linkType: hard + "@react-native/dev-middleware@npm:0.81.5": version: 0.81.5 resolution: "@react-native/dev-middleware@npm:0.81.5" @@ -5435,6 +6147,26 @@ __metadata: languageName: node linkType: hard +"@react-native/dev-middleware@npm:0.83.2": + version: 0.83.2 + resolution: "@react-native/dev-middleware@npm:0.83.2" + dependencies: + "@isaacs/ttlcache": "npm:^1.4.1" + "@react-native/debugger-frontend": "npm:0.83.2" + "@react-native/debugger-shell": "npm:0.83.2" + chrome-launcher: "npm:^0.15.2" + chromium-edge-launcher: "npm:^0.2.0" + connect: "npm:^3.6.5" + debug: "npm:^4.4.0" + invariant: "npm:^2.2.4" + nullthrows: "npm:^1.1.1" + open: "npm:^7.0.3" + serve-static: "npm:^1.16.2" + ws: "npm:^7.5.10" + checksum: 10/cb5f90aa8c64c20efeaa36a9cc66ea8e7180a8d5b6c1068d52f42e269d4786049829a9b620f5090542c48f0dbb4100527bb61fbe0db8b39050cfc0f76a94388e + languageName: node + linkType: hard + "@react-native/eslint-config@npm:0.82.1": version: 0.82.1 resolution: "@react-native/eslint-config@npm:0.82.1" @@ -5479,6 +6211,13 @@ __metadata: languageName: node linkType: hard +"@react-native/gradle-plugin@npm:0.83.2": + version: 0.83.2 + resolution: "@react-native/gradle-plugin@npm:0.83.2" + checksum: 10/09517663800636f2352ce95c183e51c5c69037baf93bf6cf3cad947fe062510b77aca38dc8e85164fad54c73db8a8e83968652f76ee1d9965e2e417da45522c0 + languageName: node + linkType: hard + "@react-native/js-polyfills@npm:0.81.5": version: 0.81.5 resolution: "@react-native/js-polyfills@npm:0.81.5" @@ -5493,6 +6232,13 @@ __metadata: languageName: node linkType: hard +"@react-native/js-polyfills@npm:0.83.2": + version: 0.83.2 + resolution: "@react-native/js-polyfills@npm:0.83.2" + checksum: 10/da869dba00ff02561e1dd017d617ac1b48286a465e419ce750bec0963cead0b51bd100507e977cd6c9ba6bb983b5e76eb0fecc7842fed69db23e6a968557c18e + languageName: node + linkType: hard + "@react-native/metro-babel-transformer@npm:0.82.1": version: 0.82.1 resolution: "@react-native/metro-babel-transformer@npm:0.82.1" @@ -5533,6 +6279,20 @@ __metadata: languageName: node linkType: hard +"@react-native/normalize-colors@npm:0.83.2": + version: 0.83.2 + resolution: "@react-native/normalize-colors@npm:0.83.2" + checksum: 10/57e09d151ac697b55207fd9ef47de79598682610c13d6d6c40be2de40abd1c0bc2b52e8acadead779ab19538e8a56e17f205a3c13ab7fa51b368e342c9f94d08 + languageName: node + linkType: hard + +"@react-native/normalize-colors@npm:^0.74.1": + version: 0.74.89 + resolution: "@react-native/normalize-colors@npm:0.74.89" + checksum: 10/2e2e2f950cc4c2896af6094cb045f1d6e8d73101960b9cadb67b944b1254a9204b8f78a075dafd22cff39bc154a0cbe48b57f262b5d319ecb823c84519352545 + languageName: node + linkType: hard + "@react-native/typescript-config@npm:0.82.1": version: 0.82.1 resolution: "@react-native/typescript-config@npm:0.82.1" @@ -5574,6 +6334,40 @@ __metadata: languageName: node linkType: hard +"@react-native/virtualized-lists@npm:0.83.2": + version: 0.83.2 + resolution: "@react-native/virtualized-lists@npm:0.83.2" + dependencies: + invariant: "npm:^2.2.4" + nullthrows: "npm:^1.1.1" + peerDependencies: + "@types/react": ^19.2.0 + react: "*" + react-native: "*" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/ba4d794330f869f51565abb1717af929a817bcfdfabb6684b3307e4289706345db174062ed79ca6b340f5a7b2952e02e62a821cfb86bc24f41bbf2ee931a882c + languageName: node + linkType: hard + +"@react-navigation/bottom-tabs@npm:7.10.1": + version: 7.10.1 + resolution: "@react-navigation/bottom-tabs@npm:7.10.1" + dependencies: + "@react-navigation/elements": "npm:^2.9.5" + color: "npm:^4.2.3" + sf-symbols-typescript: "npm:^2.1.0" + peerDependencies: + "@react-navigation/native": ^7.1.28 + react: ">= 18.2.0" + react-native: "*" + react-native-safe-area-context: ">= 4.0.0" + react-native-screens: ">= 4.0.0" + checksum: 10/449e12ee6ad015da92acaac8f93453994cc5ab81102d09638ea2d90a675ae7ca2ff0846294b33b9439ce4825c0d0a9c3fb0ea58f8d2f408df67e743791d467e0 + languageName: node + linkType: hard + "@react-navigation/bottom-tabs@npm:^7.4.0": version: 7.9.1 resolution: "@react-navigation/bottom-tabs@npm:7.9.1" @@ -5591,6 +6385,23 @@ __metadata: languageName: node linkType: hard +"@react-navigation/bottom-tabs@npm:^7.7.3": + version: 7.14.0 + resolution: "@react-navigation/bottom-tabs@npm:7.14.0" + dependencies: + "@react-navigation/elements": "npm:^2.9.5" + color: "npm:^4.2.3" + sf-symbols-typescript: "npm:^2.1.0" + peerDependencies: + "@react-navigation/native": ^7.1.28 + react: ">= 18.2.0" + react-native: "*" + react-native-safe-area-context: ">= 4.0.0" + react-native-screens: ">= 4.0.0" + checksum: 10/0a81b2bc9b58234898bfecc5fb70a578729bfd4d1205284c598e3a3f59beedb151b4c35381ac7be139d28ffaa18d53cf2eacf7cec30c7a3f9f4738527eb5e6f1 + languageName: node + linkType: hard + "@react-navigation/core@npm:^7.13.7": version: 7.13.7 resolution: "@react-navigation/core@npm:7.13.7" @@ -5609,6 +6420,44 @@ __metadata: languageName: node linkType: hard +"@react-navigation/core@npm:^7.14.0": + version: 7.14.0 + resolution: "@react-navigation/core@npm:7.14.0" + dependencies: + "@react-navigation/routers": "npm:^7.5.3" + escape-string-regexp: "npm:^4.0.0" + fast-deep-equal: "npm:^3.1.3" + nanoid: "npm:^3.3.11" + query-string: "npm:^7.1.3" + react-is: "npm:^19.1.0" + use-latest-callback: "npm:^0.2.4" + use-sync-external-store: "npm:^1.5.0" + peerDependencies: + react: ">= 18.2.0" + checksum: 10/fa43ad12304f0dfa60688c73f59ac374c1900d1bad1823ab2b1454ab7e6376d0038ec2a597f67fa09fabe4381bfd210fb048518d61ad4fc44d6d608a0ceb6a1a + languageName: node + linkType: hard + +"@react-navigation/elements@npm:^2.8.1, @react-navigation/elements@npm:^2.9.5": + version: 2.9.5 + resolution: "@react-navigation/elements@npm:2.9.5" + dependencies: + color: "npm:^4.2.3" + use-latest-callback: "npm:^0.2.4" + use-sync-external-store: "npm:^1.5.0" + peerDependencies: + "@react-native-masked-view/masked-view": ">= 0.2.0" + "@react-navigation/native": ^7.1.28 + react: ">= 18.2.0" + react-native: "*" + react-native-safe-area-context: ">= 4.0.0" + peerDependenciesMeta: + "@react-native-masked-view/masked-view": + optional: true + checksum: 10/b71c367082527dda303dfaa319af930ccbb1622f2cbe018382c8070c91944b59891fcabe048a76590d52ee07eac7ca9acb33e03fdacd8092aff1d58a165b0762 + languageName: node + linkType: hard + "@react-navigation/elements@npm:^2.9.3": version: 2.9.3 resolution: "@react-navigation/elements@npm:2.9.3" @@ -5649,6 +6498,24 @@ __metadata: languageName: node linkType: hard +"@react-navigation/native-stack@npm:7.10.1": + version: 7.10.1 + resolution: "@react-navigation/native-stack@npm:7.10.1" + dependencies: + "@react-navigation/elements": "npm:^2.9.5" + color: "npm:^4.2.3" + sf-symbols-typescript: "npm:^2.1.0" + warn-once: "npm:^0.1.1" + peerDependencies: + "@react-navigation/native": ^7.1.28 + react: ">= 18.2.0" + react-native: "*" + react-native-safe-area-context: ">= 4.0.0" + react-native-screens: ">= 4.0.0" + checksum: 10/cd8d2228980434d28f7d40da8e0b93d0934a898e651179b416b858c1d953add88b61f6b0e9eaaad26977f9038c80868668e47a8f7ea38b2f6604f836aa455f3a + languageName: node + linkType: hard + "@react-navigation/native-stack@npm:^7.2.1": version: 7.9.0 resolution: "@react-navigation/native-stack@npm:7.9.0" @@ -5685,6 +6552,22 @@ __metadata: languageName: node linkType: hard +"@react-navigation/native@npm:7.1.28, @react-navigation/native@npm:^7.1.28": + version: 7.1.28 + resolution: "@react-navigation/native@npm:7.1.28" + dependencies: + "@react-navigation/core": "npm:^7.14.0" + escape-string-regexp: "npm:^4.0.0" + fast-deep-equal: "npm:^3.1.3" + nanoid: "npm:^3.3.11" + use-latest-callback: "npm:^0.2.4" + peerDependencies: + react: ">= 18.2.0" + react-native: "*" + checksum: 10/64f2d3136ad4034315b2aaf81d0ffd3d73425787aebf3ef7934dfb50931d50cbc3322378fdc240df5d795f5c1ab361038c3200cc24c266c8a089706ca1f4edb7 + languageName: node + linkType: hard + "@react-navigation/native@npm:^7.0.15": version: 7.1.26 resolution: "@react-navigation/native@npm:7.1.26" @@ -6673,6 +7556,13 @@ __metadata: languageName: node linkType: hard +"@types/hammerjs@npm:^2.0.36": + version: 2.0.46 + resolution: "@types/hammerjs@npm:2.0.46" + checksum: 10/1b6502d668f45ca49fb488c01f7938d3aa75e989d70c64801c8feded7d659ca1a118f745c1b604d220efe344c93231767d5cc68c05e00e069c14539b6143cfd9 + languageName: node + linkType: hard + "@types/hast@npm:^3.0.0, @types/hast@npm:^3.0.4": version: 3.0.4 resolution: "@types/hast@npm:3.0.4" @@ -7436,6 +8326,16 @@ __metadata: languageName: node linkType: hard +"accepts@npm:^2.0.0": + version: 2.0.0 + resolution: "accepts@npm:2.0.0" + dependencies: + mime-types: "npm:^3.0.0" + negotiator: "npm:^1.0.0" + checksum: 10/ea1343992b40b2bfb3a3113fa9c3c2f918ba0f9197ae565c48d3f84d44b174f6b1d5cd9989decd7655963eb03a272abc36968cc439c2907f999bd5ef8653d5a7 + languageName: node + linkType: hard + "acorn-jsx@npm:^5.0.0, acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -7802,7 +8702,7 @@ __metadata: languageName: node linkType: hard -"asap@npm:~2.0.6": +"asap@npm:~2.0.3, asap@npm:~2.0.6": version: 2.0.6 resolution: "asap@npm:2.0.6" checksum: 10/b244c0458c571945e4b3be0b14eb001bea5596f9868cc50cc711dc03d58a7e953517d3f0dad81ccde3ff37d1f074701fa76a6f07d41aaa992d7204a37b915dda @@ -8119,6 +9019,49 @@ __metadata: languageName: node linkType: hard +"babel-preset-expo@npm:~55.0.6": + version: 55.0.6 + resolution: "babel-preset-expo@npm:55.0.6" + dependencies: + "@babel/generator": "npm:^7.20.5" + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/plugin-proposal-decorators": "npm:^7.12.9" + "@babel/plugin-proposal-export-default-from": "npm:^7.24.7" + "@babel/plugin-syntax-export-default-from": "npm:^7.24.7" + "@babel/plugin-transform-class-static-block": "npm:^7.27.1" + "@babel/plugin-transform-export-namespace-from": "npm:^7.25.9" + "@babel/plugin-transform-flow-strip-types": "npm:^7.25.2" + "@babel/plugin-transform-modules-commonjs": "npm:^7.24.8" + "@babel/plugin-transform-object-rest-spread": "npm:^7.24.7" + "@babel/plugin-transform-parameters": "npm:^7.24.7" + "@babel/plugin-transform-private-methods": "npm:^7.24.7" + "@babel/plugin-transform-private-property-in-object": "npm:^7.24.7" + "@babel/plugin-transform-runtime": "npm:^7.24.7" + "@babel/preset-react": "npm:^7.22.15" + "@babel/preset-typescript": "npm:^7.23.0" + "@react-native/babel-preset": "npm:0.83.2" + babel-plugin-react-compiler: "npm:^1.0.0" + babel-plugin-react-native-web: "npm:~0.21.0" + babel-plugin-syntax-hermes-parser: "npm:^0.29.1" + babel-plugin-transform-flow-enums: "npm:^0.0.2" + debug: "npm:^4.3.4" + resolve-from: "npm:^5.0.0" + peerDependencies: + "@babel/runtime": ^7.20.0 + expo: "*" + expo-widgets: ^55.0.0-alpha.8 + react-refresh: ">=0.14.0 <1.0.0" + peerDependenciesMeta: + "@babel/runtime": + optional: true + expo: + optional: true + expo-widgets: + optional: true + checksum: 10/c97b547a54511058c13ebe8de15ada56d57bd599483c6c30b1e42ea4e6b095a42946d224878ba8c4c65a4a134df7906db7ad8941e00c60b8b86e856eedd5be7f + languageName: node + linkType: hard + "babel-preset-jest@npm:30.2.0": version: 30.2.0 resolution: "babel-preset-jest@npm:30.2.0" @@ -8956,7 +9899,7 @@ __metadata: languageName: node linkType: hard -"convert-source-map@npm:^2.0.0": +"convert-source-map@npm:2.0.0, convert-source-map@npm:^2.0.0": version: 2.0.0 resolution: "convert-source-map@npm:2.0.0" checksum: 10/c987be3ec061348cdb3c2bfb924bec86dea1eacad10550a85ca23edb0fe3556c3a61c7399114f3331ccb3499d7fd0285ab24566e5745929412983494c3926e15 @@ -9032,6 +9975,15 @@ __metadata: languageName: node linkType: hard +"cross-fetch@npm:^3.1.5": + version: 3.2.0 + resolution: "cross-fetch@npm:3.2.0" + dependencies: + node-fetch: "npm:^2.7.0" + checksum: 10/e4ab1d390a5b6ca8bb0605f028af2ffc1127d2e407b954654949f506d04873c4863ece264662c074865d7874060e35f938cec74fe7b5736d46d545e2685f6aec + languageName: node + linkType: hard + "cross-fetch@npm:^4.0.0": version: 4.1.0 resolution: "cross-fetch@npm:4.1.0" @@ -9059,6 +10011,15 @@ __metadata: languageName: node linkType: hard +"css-in-js-utils@npm:^3.1.0": + version: 3.1.0 + resolution: "css-in-js-utils@npm:3.1.0" + dependencies: + hyphenate-style-name: "npm:^1.0.3" + checksum: 10/bd2f569f1870389004cfacfd7b798c0f40933d34af1f040c391a08322d097790b9a9524affb2ba4d26122e9cb8f4256afb59edb6077dbe607506944a9c673c67 + languageName: node + linkType: hard + "csstype@npm:^3.0.2": version: 3.2.3 resolution: "csstype@npm:3.2.3" @@ -9341,6 +10302,13 @@ __metadata: languageName: node linkType: hard +"dnssd-advertise@npm:^1.1.3": + version: 1.1.3 + resolution: "dnssd-advertise@npm:1.1.3" + checksum: 10/76cb498953c7e455d85b2092a977eba7c347ba7b14892d812b2a089587c97e72d87d47967c5c77e64cdbe6706a8153b848e9df790c91b15cc829e2415e1afa6e + languageName: node + linkType: hard + "doctrine@npm:^2.1.0": version: 2.1.0 resolution: "doctrine@npm:2.1.0" @@ -9924,6 +10892,24 @@ __metadata: languageName: node linkType: hard +"eslint-config-expo@npm:~55.0.0": + version: 55.0.0 + resolution: "eslint-config-expo@npm:55.0.0" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:^8.18.2" + "@typescript-eslint/parser": "npm:^8.18.2" + eslint-import-resolver-typescript: "npm:^3.6.3" + eslint-plugin-expo: "npm:^1.0.0" + eslint-plugin-import: "npm:^2.30.0" + eslint-plugin-react: "npm:^7.37.3" + eslint-plugin-react-hooks: "npm:^5.1.0" + globals: "npm:^16.0.0" + peerDependencies: + eslint: ">=8.10" + checksum: 10/84a1ed8de53f6eec32357193c37785559b1c30f65267f42ba5b58aed2e96c50924a878f417ef469dac96a570455751bde0b017272a56b1b4ff7fd1a57dc6c2e0 + languageName: node + linkType: hard + "eslint-config-prettier@npm:^10.1.8": version: 10.1.8 resolution: "eslint-config-prettier@npm:10.1.8" @@ -10553,16 +11539,54 @@ __metadata: languageName: node linkType: hard +"expo-asset@npm:~55.0.6": + version: 55.0.6 + resolution: "expo-asset@npm:55.0.6" + dependencies: + "@expo/image-utils": "npm:^0.8.12" + expo-constants: "npm:~55.0.6" + peerDependencies: + expo: "*" + react: "*" + react-native: "*" + checksum: 10/e8d592c32bbb7a15e5bb91ae91e62aaeb4379da1609d1ada5f26cae3d5c18a342d4f8b18d56e4ccf09935c371afffc527fb88e2c67231bcf23af6b2c818c669c + languageName: node + linkType: hard + "expo-constants@npm:~18.0.12, expo-constants@npm:~18.0.13": version: 18.0.13 resolution: "expo-constants@npm:18.0.13" dependencies: - "@expo/config": "npm:~12.0.13" - "@expo/env": "npm:~2.0.8" + "@expo/config": "npm:~12.0.13" + "@expo/env": "npm:~2.0.8" + peerDependencies: + expo: "*" + react-native: "*" + checksum: 10/f29c72b6f5798bd37550aafcc89c3f1a630c4910a5b69c1e19d03544f6ebf0cb65adf39db600ccbeb6e60545b2b231d244373ef3139e3c75991b380940065c6b + languageName: node + linkType: hard + +"expo-constants@npm:~55.0.6": + version: 55.0.6 + resolution: "expo-constants@npm:55.0.6" + dependencies: + "@expo/config": "npm:~55.0.7" + "@expo/env": "npm:~2.1.1" + peerDependencies: + expo: "*" + react-native: "*" + checksum: 10/c890715e84fdc85904d76ec365624c18a7dcf50b75d6ef84e4b832149ec381b64885ab6335c58ab587b920e50d8675f899504e7f1c7c6480f349cd1d2aa7818e + languageName: node + linkType: hard + +"expo-device@npm:~55.0.8": + version: 55.0.8 + resolution: "expo-device@npm:55.0.8" + dependencies: + ua-parser-js: "npm:^0.7.33" peerDependencies: expo: "*" - react-native: "*" - checksum: 10/f29c72b6f5798bd37550aafcc89c3f1a630c4910a5b69c1e19d03544f6ebf0cb65adf39db600ccbeb6e60545b2b231d244373ef3139e3c75991b380940065c6b + checksum: 10/651f3e1988383383529c2dd3a153b8c1836eb024262f5ad66eb24ba1254f46901baed4c2846a88794b4b178f54460843fb67115873f402a81fd6a250ac2b836b languageName: node linkType: hard @@ -10576,6 +11600,16 @@ __metadata: languageName: node linkType: hard +"expo-file-system@npm:~55.0.8": + version: 55.0.8 + resolution: "expo-file-system@npm:55.0.8" + peerDependencies: + expo: "*" + react-native: "*" + checksum: 10/04e8dda8329b994931e5f1cd800a090538e56a693a14ce9a98b757d50631e4599c8d005a5192c495d5a983dfcf9421652d3ae5beeed49c95aa85de9f5c281904 + languageName: node + linkType: hard + "expo-font@npm:~14.0.10": version: 14.0.10 resolution: "expo-font@npm:14.0.10" @@ -10589,6 +11623,30 @@ __metadata: languageName: node linkType: hard +"expo-font@npm:~55.0.4": + version: 55.0.4 + resolution: "expo-font@npm:55.0.4" + dependencies: + fontfaceobserver: "npm:^2.1.0" + peerDependencies: + expo: "*" + react: "*" + react-native: "*" + checksum: 10/d590354e45c5a4a7a801ab04e4eec6b2a0bf42a2dde7e618f13cdf799d6ce86ccbfabb124de6b1f9ec0a077e74532429169d737948a1bdb0496b762fbf503c31 + languageName: node + linkType: hard + +"expo-glass-effect@npm:^55.0.6, expo-glass-effect@npm:~55.0.6": + version: 55.0.6 + resolution: "expo-glass-effect@npm:55.0.6" + peerDependencies: + expo: "*" + react: "*" + react-native: "*" + checksum: 10/b6f9fa52146c47c735feb9b597d8324ac2d0dcc90a81ba6a4f3ac6636cb75bfe0ac9e02bc0e743b8f37d91c2c9369eda1c16cdaf0c3e3ff84395bceb139e3ed7 + languageName: node + linkType: hard + "expo-haptics@npm:~15.0.8": version: 15.0.8 resolution: "expo-haptics@npm:15.0.8" @@ -10598,6 +11656,23 @@ __metadata: languageName: node linkType: hard +"expo-image@npm:^55.0.4, expo-image@npm:~55.0.4": + version: 55.0.4 + resolution: "expo-image@npm:55.0.4" + dependencies: + sf-symbols-typescript: "npm:^2.2.0" + peerDependencies: + expo: "*" + react: "*" + react-native: "*" + react-native-web: "*" + peerDependenciesMeta: + react-native-web: + optional: true + checksum: 10/f41bbd5068a7b8e996198764d161f059322d62f1d1bd45d5d1ac5a3d36a5d16d897d8e556bd66eab0ab55c7331acddeb08740f201394bf996860b4952e605a6f + languageName: node + linkType: hard + "expo-image@npm:~3.0.11": version: 3.0.11 resolution: "expo-image@npm:3.0.11" @@ -10623,6 +11698,29 @@ __metadata: languageName: node linkType: hard +"expo-keep-awake@npm:~55.0.4": + version: 55.0.4 + resolution: "expo-keep-awake@npm:55.0.4" + peerDependencies: + expo: "*" + react: "*" + checksum: 10/02c47078b3600be15a59574f4840ba7b9a65c491bd8436e7147d3e02d61993fc14f2ade5897301c18652fb206203001416a1b66242a239ebb9f29519560eae3a + languageName: node + linkType: hard + +"expo-linking@npm:~55.0.6": + version: 55.0.6 + resolution: "expo-linking@npm:55.0.6" + dependencies: + expo-constants: "npm:~55.0.6" + invariant: "npm:^2.2.4" + peerDependencies: + react: "*" + react-native: "*" + checksum: 10/a585771c256eff94bfdcf8a371c55ea8bb821f47d5ed93f82a6ab643bdcbec8e7458bb466215874845e5c5a79dba20a7b5b9a7934068baa89fa294c75a6a2153 + languageName: node + linkType: hard + "expo-linking@npm:~8.0.11": version: 8.0.11 resolution: "expo-linking@npm:8.0.11" @@ -10651,6 +11749,20 @@ __metadata: languageName: node linkType: hard +"expo-modules-autolinking@npm:55.0.7": + version: 55.0.7 + resolution: "expo-modules-autolinking@npm:55.0.7" + dependencies: + "@expo/require-utils": "npm:^55.0.1" + "@expo/spawn-async": "npm:^1.7.2" + chalk: "npm:^4.1.0" + commander: "npm:^7.2.0" + bin: + expo-modules-autolinking: bin/expo-modules-autolinking.js + checksum: 10/cd99467de0e60167b4638475de04891cd5b9cdbfde2491c0721c9306a1a5879a43e713c2471435720e00ab28dd3512a6dba97c9e62d689aaabe674322ac04b5a + languageName: node + linkType: hard + "expo-modules-core@npm:3.0.29": version: 3.0.29 resolution: "expo-modules-core@npm:3.0.29" @@ -10663,6 +11775,84 @@ __metadata: languageName: node linkType: hard +"expo-modules-core@npm:55.0.10": + version: 55.0.10 + resolution: "expo-modules-core@npm:55.0.10" + dependencies: + invariant: "npm:^2.2.4" + peerDependencies: + react: "*" + react-native: "*" + checksum: 10/4b440415ac1e1a2a23514e0c60c8039fcae4ee5fa37fbda09be43f43c9694f18fa97965040139696dc9c6b2339d1baac590006cbce7009eec6643fe165ce2f88 + languageName: node + linkType: hard + +"expo-router@npm:~55.0.0-preview.9": + version: 55.0.0-preview.9 + resolution: "expo-router@npm:55.0.0-preview.9" + dependencies: + "@expo/metro-runtime": "npm:^55.0.6" + "@expo/schema-utils": "npm:^55.0.2" + "@radix-ui/react-slot": "npm:1.2.0" + "@radix-ui/react-tabs": "npm:^1.1.12" + "@react-navigation/bottom-tabs": "npm:7.10.1" + "@react-navigation/native": "npm:7.1.28" + "@react-navigation/native-stack": "npm:7.10.1" + client-only: "npm:^0.0.1" + debug: "npm:^4.3.4" + escape-string-regexp: "npm:^4.0.0" + expo-glass-effect: "npm:^55.0.6" + expo-image: "npm:^55.0.4" + expo-server: "npm:^55.0.4" + expo-symbols: "npm:^55.0.4" + fast-deep-equal: "npm:^3.1.3" + invariant: "npm:^2.2.4" + nanoid: "npm:^3.3.8" + query-string: "npm:^7.1.3" + react-fast-compare: "npm:^3.2.2" + react-native-is-edge-to-edge: "npm:^1.1.6" + semver: "npm:~7.6.3" + server-only: "npm:^0.0.1" + sf-symbols-typescript: "npm:^2.1.0" + shallowequal: "npm:^1.1.0" + use-latest-callback: "npm:^0.2.1" + vaul: "npm:^1.1.2" + peerDependencies: + "@expo/log-box": 55.0.7 + "@expo/metro-runtime": ^55.0.6 + "@react-navigation/drawer": ^7.7.2 + "@testing-library/react-native": ">= 13.2.0" + expo: "*" + expo-constants: ^55.0.6 + expo-linking: ^55.0.5 + react: "*" + react-dom: "*" + react-native: "*" + react-native-gesture-handler: "*" + react-native-reanimated: "*" + react-native-safe-area-context: ">= 5.4.0" + react-native-screens: "*" + react-native-web: "*" + react-server-dom-webpack: ~19.0.4 || ~19.1.5 || ~19.2.4 + peerDependenciesMeta: + "@react-navigation/drawer": + optional: true + "@testing-library/react-native": + optional: true + react-dom: + optional: true + react-native-gesture-handler: + optional: true + react-native-reanimated: + optional: true + react-native-web: + optional: true + react-server-dom-webpack: + optional: true + checksum: 10/6ca6aa7cac25a24774ab75263b7ede40b309a09a1284f9c7da25468829f3feb2cdb3b3abfb344787c97a1dac9fa8697faf0081af577087209d024f56b2cb153a + languageName: node + linkType: hard + "expo-router@npm:~6.0.21": version: 6.0.21 resolution: "expo-router@npm:6.0.21" @@ -10732,6 +11922,13 @@ __metadata: languageName: node linkType: hard +"expo-server@npm:^55.0.4": + version: 55.0.4 + resolution: "expo-server@npm:55.0.4" + checksum: 10/3269d29acf41adeaaf38b6a366576fdd4504eef43e880be95543fda3451fd1efa161599e1c401907b42309a8c1db0fdf6b7d9d6b8a89b47802c276d2ca233707 + languageName: node + linkType: hard + "expo-splash-screen@npm:~31.0.13": version: 31.0.13 resolution: "expo-splash-screen@npm:31.0.13" @@ -10743,6 +11940,17 @@ __metadata: languageName: node linkType: hard +"expo-splash-screen@npm:~55.0.8": + version: 55.0.8 + resolution: "expo-splash-screen@npm:55.0.8" + dependencies: + "@expo/prebuild-config": "npm:^55.0.6" + peerDependencies: + expo: "*" + checksum: 10/b552542443047bb5e1d5dc534defe83dc502d344223302ee7d83700b3cfcdf75769c8e5b1dc85dbe10edb084e32947c54c3df07129f11ee453ad0c473201deee + languageName: node + linkType: hard + "expo-status-bar@npm:~3.0.9": version: 3.0.9 resolution: "expo-status-bar@npm:3.0.9" @@ -10755,6 +11963,33 @@ __metadata: languageName: node linkType: hard +"expo-status-bar@npm:~55.0.3": + version: 55.0.3 + resolution: "expo-status-bar@npm:55.0.3" + dependencies: + react-native-is-edge-to-edge: "npm:^1.2.1" + peerDependencies: + react: "*" + react-native: "*" + checksum: 10/e55fa741d675ca0d1a996a2e457df4f9b9d41eae37d06ebba6cd281f87102bb3b8ed558aa5f3a7817292c6697c86f3ae32526164aac06495ab3f566a91b5c165 + languageName: node + linkType: hard + +"expo-symbols@npm:^55.0.4, expo-symbols@npm:~55.0.4": + version: 55.0.4 + resolution: "expo-symbols@npm:55.0.4" + dependencies: + "@expo-google-fonts/material-symbols": "npm:^0.4.1" + sf-symbols-typescript: "npm:^2.0.0" + peerDependencies: + expo: "*" + expo-font: "*" + react: "*" + react-native: "*" + checksum: 10/f5350f6124886c4ab2493a2530c2d252998f3098326bfef81e7259336c43382ceab504834dfcd2dcb242dc650df6cf53889cb77b81114918bc8fbd4b537fbc8c + languageName: node + linkType: hard + "expo-symbols@npm:~1.0.8": version: 1.0.8 resolution: "expo-symbols@npm:1.0.8" @@ -10767,6 +12002,23 @@ __metadata: languageName: node linkType: hard +"expo-system-ui@npm:~55.0.8": + version: 55.0.8 + resolution: "expo-system-ui@npm:55.0.8" + dependencies: + "@react-native/normalize-colors": "npm:0.83.2" + debug: "npm:^4.3.2" + peerDependencies: + expo: "*" + react-native: "*" + react-native-web: "*" + peerDependenciesMeta: + react-native-web: + optional: true + checksum: 10/646f29e828f4f631aba83b36d86455642397e1a6908c4ebfb71062a90e9b4915154e58fe54b4613bf1268f3bf0027ac2dc9fd66870435ee74681637fcbf41d55 + languageName: node + linkType: hard + "expo-system-ui@npm:~6.0.9": version: 6.0.9 resolution: "expo-system-ui@npm:6.0.9" @@ -10794,6 +12046,16 @@ __metadata: languageName: node linkType: hard +"expo-web-browser@npm:~55.0.8": + version: 55.0.8 + resolution: "expo-web-browser@npm:55.0.8" + peerDependencies: + expo: "*" + react-native: "*" + checksum: 10/820cb90c959219b89aaede94af47573072c31465e396df4c1e704b80c550e245a068e2de1eb76695b15cd17969a861ec446ae768d9e899db029dfafe0d6f9bfa + languageName: node + linkType: hard + "expo@npm:~54.0.31": version: 54.0.31 resolution: "expo@npm:54.0.31" @@ -10840,6 +12102,54 @@ __metadata: languageName: node linkType: hard +"expo@npm:~55.0.0-preview.12": + version: 55.0.0-preview.12 + resolution: "expo@npm:55.0.0-preview.12" + dependencies: + "@babel/runtime": "npm:^7.20.0" + "@expo/cli": "npm:55.0.10" + "@expo/config": "npm:~55.0.7" + "@expo/config-plugins": "npm:~55.0.5" + "@expo/devtools": "npm:55.0.2" + "@expo/fingerprint": "npm:0.16.4" + "@expo/local-build-cache-provider": "npm:55.0.5" + "@expo/log-box": "npm:55.0.7" + "@expo/metro": "npm:~54.2.0" + "@expo/metro-config": "npm:55.0.7" + "@expo/vector-icons": "npm:^15.0.2" + "@ungap/structured-clone": "npm:^1.3.0" + babel-preset-expo: "npm:~55.0.6" + expo-asset: "npm:~55.0.6" + expo-constants: "npm:~55.0.6" + expo-file-system: "npm:~55.0.8" + expo-font: "npm:~55.0.4" + expo-keep-awake: "npm:~55.0.4" + expo-modules-autolinking: "npm:55.0.7" + expo-modules-core: "npm:55.0.10" + pretty-format: "npm:^29.7.0" + react-refresh: "npm:^0.14.2" + whatwg-url-minimum: "npm:^0.1.1" + peerDependencies: + "@expo/dom-webview": "*" + "@expo/metro-runtime": "*" + react: "*" + react-native: "*" + react-native-webview: "*" + peerDependenciesMeta: + "@expo/dom-webview": + optional: true + "@expo/metro-runtime": + optional: true + react-native-webview: + optional: true + bin: + expo: bin/cli + expo-modules-autolinking: bin/autolinking + fingerprint: bin/fingerprint + checksum: 10/3c6db567fc1f2a0f4d26004032b6a4dfbd021fc5e09cb2978ab02a56721ac43e005d478a029cd01ee00692aeab5baa1faeb53e7a218b2dc6505781464759dcf2 + languageName: node + linkType: hard + "exponential-backoff@npm:^3.1.1": version: 3.1.3 resolution: "exponential-backoff@npm:3.1.3" @@ -10956,6 +12266,28 @@ __metadata: languageName: node linkType: hard +"fbjs-css-vars@npm:^1.0.0": + version: 1.0.2 + resolution: "fbjs-css-vars@npm:1.0.2" + checksum: 10/72baf6d22c45b75109118b4daecb6c8016d4c83c8c0f23f683f22e9d7c21f32fff6201d288df46eb561e3c7d4bb4489b8ad140b7f56444c453ba407e8bd28511 + languageName: node + linkType: hard + +"fbjs@npm:^3.0.4": + version: 3.0.5 + resolution: "fbjs@npm:3.0.5" + dependencies: + cross-fetch: "npm:^3.1.5" + fbjs-css-vars: "npm:^1.0.0" + loose-envify: "npm:^1.0.0" + object-assign: "npm:^4.1.0" + promise: "npm:^7.1.1" + setimmediate: "npm:^1.0.5" + ua-parser-js: "npm:^1.0.35" + checksum: 10/71252595b00b06fb0475a295c74d81ada1cc499b7e11f2cde51fef04618affa568f5b7f4927f61720c23254b9144be28f8acb2086a5001cf65df8eec87c6ca5c + languageName: node + linkType: hard + "fdir@npm:^6.5.0": version: 6.5.0 resolution: "fdir@npm:6.5.0" @@ -10968,6 +12300,13 @@ __metadata: languageName: node linkType: hard +"fetch-nodeshim@npm:^0.4.6": + version: 0.4.8 + resolution: "fetch-nodeshim@npm:0.4.8" + checksum: 10/a478a9af8fb1f1515e8ff1be242d1f8bc96b430cc511c3862f6d76c084b673015b20de709f4e4cfe7ff518eeb958570e6f957a2801367a7991bf32fffe6238b7 + languageName: node + linkType: hard + "file-entry-cache@npm:^6.0.1": version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" @@ -11799,6 +13138,13 @@ __metadata: languageName: node linkType: hard +"hermes-compiler@npm:0.14.1": + version: 0.14.1 + resolution: "hermes-compiler@npm:0.14.1" + checksum: 10/dbb0f4886532b26262721fa34de5947502b265cea8574f6094915abf59d31c757da6a41730cb6f6d088ec7607d659e8b4036782d227dcf072e9a49152bbef756 + languageName: node + linkType: hard + "hermes-estree@npm:0.28.1": version: 0.28.1 resolution: "hermes-estree@npm:0.28.1" @@ -11820,6 +13166,13 @@ __metadata: languageName: node linkType: hard +"hermes-estree@npm:0.33.3": + version: 0.33.3 + resolution: "hermes-estree@npm:0.33.3" + checksum: 10/dfaac7eb91e282cf04f26c8f557fcadbfb78f630062c7abc1e75b9765918103ebee1359dffbe6c5e42a52c7cee0b14420affda984d534f76ba3d7e8d9ba98215 + languageName: node + linkType: hard + "hermes-parser@npm:0.28.1": version: 0.28.1 resolution: "hermes-parser@npm:0.28.1" @@ -11847,6 +13200,24 @@ __metadata: languageName: node linkType: hard +"hermes-parser@npm:0.33.3": + version: 0.33.3 + resolution: "hermes-parser@npm:0.33.3" + dependencies: + hermes-estree: "npm:0.33.3" + checksum: 10/709dac7283a9eab706f3fff5c6f09deee5197a1a38751da66fdf499a307120ba3ef14ce734715430a838145531973a8c0b69874bf5bc615cca10059ee87f5ff3 + languageName: node + linkType: hard + +"hoist-non-react-statics@npm:^3.3.0": + version: 3.3.2 + resolution: "hoist-non-react-statics@npm:3.3.2" + dependencies: + react-is: "npm:^16.7.0" + checksum: 10/1acbe85f33e5a39f90c822ad4d28b24daeb60f71c545279431dc98c312cd28a54f8d64788e477fe21dc502b0e3cf58589ebe5c1ad22af27245370391c2d24ea6 + languageName: node + linkType: hard + "hookable@npm:^6.0.1": version: 6.0.1 resolution: "hookable@npm:6.0.1" @@ -11972,6 +13343,13 @@ __metadata: languageName: node linkType: hard +"hyphenate-style-name@npm:^1.0.3": + version: 1.1.0 + resolution: "hyphenate-style-name@npm:1.1.0" + checksum: 10/b9ed74e29181d96bd58a2d0e62fc4a19879db591dba268275829ff0ae595fcdf11faafaeaa63330a45c3004664d7db1f0fc7cdb372af8ee4615ed8260302c207 + languageName: node + linkType: hard + "iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -12130,6 +13508,15 @@ __metadata: languageName: node linkType: hard +"inline-style-prefixer@npm:^7.0.1": + version: 7.0.1 + resolution: "inline-style-prefixer@npm:7.0.1" + dependencies: + css-in-js-utils: "npm:^3.1.0" + checksum: 10/a430c962693f32a36bcec0124c9798bcf3725bb90468d493108c0242446a9cc92ff1967bdf99b6ce5331e7a9b75e6836bc9ba1b3d4756876b8ef48036acb2509 + languageName: node + linkType: hard + "internal-slot@npm:^1.1.0": version: 1.1.0 resolution: "internal-slot@npm:1.1.0" @@ -13546,6 +14933,15 @@ __metadata: languageName: node linkType: hard +"lan-network@npm:^0.2.0": + version: 0.2.0 + resolution: "lan-network@npm:0.2.0" + bin: + lan-network: dist/lan-network-cli.js + checksum: 10/221291b52503454b37b0f51670f4b4a2844b727e73a706ce6b5167813ac00d06be333e2a8c6be3dc645222b99cc246d68f59642dd892c80d76bd294802b28f94 + languageName: node + linkType: hard + "launch-editor@npm:^2.9.1": version: 2.12.0 resolution: "launch-editor@npm:2.12.0" @@ -14365,6 +15761,13 @@ __metadata: languageName: node linkType: hard +"memoize-one@npm:^6.0.0": + version: 6.0.0 + resolution: "memoize-one@npm:6.0.0" + checksum: 10/28feaf7e9a870efef1187df110b876ce42deaf86c955f4111d72d23b96e44eed573469316e6ad0d2cc7fa3b1526978215617b126158015f957242c7493babca9 + languageName: node + linkType: hard + "meow@npm:^12.0.1": version: 12.1.1 resolution: "meow@npm:12.1.1" @@ -14398,6 +15801,18 @@ __metadata: languageName: node linkType: hard +"metro-babel-transformer@npm:0.83.4": + version: 0.83.4 + resolution: "metro-babel-transformer@npm:0.83.4" + dependencies: + "@babel/core": "npm:^7.25.2" + flow-enums-runtime: "npm:^0.0.6" + hermes-parser: "npm:0.33.3" + nullthrows: "npm:^1.1.1" + checksum: 10/931bbb895bbf6f9feec6faaac425b7f85365ff9e1c5d2019b3310bc977354b6b804365562071510fbcd9ec079a934ee416cf315d954bb4bb1f31973bfd0e2956 + languageName: node + linkType: hard + "metro-cache-key@npm:0.83.3": version: 0.83.3 resolution: "metro-cache-key@npm:0.83.3" @@ -14407,15 +15822,36 @@ __metadata: languageName: node linkType: hard -"metro-cache@npm:0.83.3": - version: 0.83.3 - resolution: "metro-cache@npm:0.83.3" +"metro-cache-key@npm:0.83.4": + version: 0.83.4 + resolution: "metro-cache-key@npm:0.83.4" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10/fb1b3dc077185454dbf981981da98cbf7af9aa16982bac6dac1eec96cf1023cec05985e011ddf15ab47a052f0829070a40450f867964e28bad677d13456a5480 + languageName: node + linkType: hard + +"metro-cache@npm:0.83.3": + version: 0.83.3 + resolution: "metro-cache@npm:0.83.3" + dependencies: + exponential-backoff: "npm:^3.1.1" + flow-enums-runtime: "npm:^0.0.6" + https-proxy-agent: "npm:^7.0.5" + metro-core: "npm:0.83.3" + checksum: 10/4bc263ac92f176451710ebd330d156675e40f028be02eb9659a9b024db9897f3ad8510809d699969cb6f06dc0f06d85c38ca7162fb9a70be44510fa03270e089 + languageName: node + linkType: hard + +"metro-cache@npm:0.83.4": + version: 0.83.4 + resolution: "metro-cache@npm:0.83.4" dependencies: exponential-backoff: "npm:^3.1.1" flow-enums-runtime: "npm:^0.0.6" https-proxy-agent: "npm:^7.0.5" - metro-core: "npm:0.83.3" - checksum: 10/4bc263ac92f176451710ebd330d156675e40f028be02eb9659a9b024db9897f3ad8510809d699969cb6f06dc0f06d85c38ca7162fb9a70be44510fa03270e089 + metro-core: "npm:0.83.4" + checksum: 10/0835cfa70dc912e54217eda871aa3610c6731f36d6e8154cdaa148313a3b10b1fdebc1462e51dc94c146a438297f0b3f9627b76ebc19aad79641c669bb564575 languageName: node linkType: hard @@ -14435,6 +15871,22 @@ __metadata: languageName: node linkType: hard +"metro-config@npm:0.83.4, metro-config@npm:^0.83.3": + version: 0.83.4 + resolution: "metro-config@npm:0.83.4" + dependencies: + connect: "npm:^3.6.5" + flow-enums-runtime: "npm:^0.0.6" + jest-validate: "npm:^29.7.0" + metro: "npm:0.83.4" + metro-cache: "npm:0.83.4" + metro-core: "npm:0.83.4" + metro-runtime: "npm:0.83.4" + yaml: "npm:^2.6.1" + checksum: 10/2056a0efb7c17ca7fc8bb8c157ff3fef1314ba53c92911aeed12eff362bd3eda3f670d69bdcab1d8fe466a81e750945a4f0cec05e7ab6961edad8f95fdede4c5 + languageName: node + linkType: hard + "metro-core@npm:0.83.3, metro-core@npm:^0.83.1": version: 0.83.3 resolution: "metro-core@npm:0.83.3" @@ -14446,6 +15898,17 @@ __metadata: languageName: node linkType: hard +"metro-core@npm:0.83.4, metro-core@npm:^0.83.3": + version: 0.83.4 + resolution: "metro-core@npm:0.83.4" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + lodash.throttle: "npm:^4.1.1" + metro-resolver: "npm:0.83.4" + checksum: 10/de8c156aab7d029547ae72f707c3a4943138044b9ed28fb10461869d4eb5bcb8a099c3c4073f2f50ec34b33aca989ce6056ff876297b5c69a12b8c73effac8bb + languageName: node + linkType: hard + "metro-file-map@npm:0.83.3": version: 0.83.3 resolution: "metro-file-map@npm:0.83.3" @@ -14463,6 +15926,23 @@ __metadata: languageName: node linkType: hard +"metro-file-map@npm:0.83.4": + version: 0.83.4 + resolution: "metro-file-map@npm:0.83.4" + dependencies: + debug: "npm:^4.4.0" + fb-watchman: "npm:^2.0.0" + flow-enums-runtime: "npm:^0.0.6" + graceful-fs: "npm:^4.2.4" + invariant: "npm:^2.2.4" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + nullthrows: "npm:^1.1.1" + walker: "npm:^1.0.7" + checksum: 10/afb9f03aba8e0b2a97e3594aa88101a3fae360efdd003675dce07322f0d672f0f3256b71cf20dfffd556cc898fbf2d0eeba3555003e36922a988c50b0d62de41 + languageName: node + linkType: hard + "metro-minify-terser@npm:0.83.3": version: 0.83.3 resolution: "metro-minify-terser@npm:0.83.3" @@ -14473,6 +15953,16 @@ __metadata: languageName: node linkType: hard +"metro-minify-terser@npm:0.83.4": + version: 0.83.4 + resolution: "metro-minify-terser@npm:0.83.4" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + terser: "npm:^5.15.0" + checksum: 10/3e3c7da77e1c8b256f2fc4a4db2f0db6227ef094297d6c57d67fa9d89cfe559867fa733b4d0373112a9a7ae9255a435943fb9755e4e4dcaaacbf85e1c690c27d + languageName: node + linkType: hard + "metro-resolver@npm:0.83.3": version: 0.83.3 resolution: "metro-resolver@npm:0.83.3" @@ -14482,6 +15972,15 @@ __metadata: languageName: node linkType: hard +"metro-resolver@npm:0.83.4": + version: 0.83.4 + resolution: "metro-resolver@npm:0.83.4" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10/4b51bc061a712cc0f79172cdaeef7eae4c7e1b4a38468df4a7d1a7fc76bc6669b0abc9a98a41ed25102efe04502ec5eb65f9112ed0d6d809f7a05f723f15bebf + languageName: node + linkType: hard + "metro-runtime@npm:0.83.3, metro-runtime@npm:^0.83.1": version: 0.83.3 resolution: "metro-runtime@npm:0.83.3" @@ -14492,6 +15991,16 @@ __metadata: languageName: node linkType: hard +"metro-runtime@npm:0.83.4, metro-runtime@npm:^0.83.3": + version: 0.83.4 + resolution: "metro-runtime@npm:0.83.4" + dependencies: + "@babel/runtime": "npm:^7.25.0" + flow-enums-runtime: "npm:^0.0.6" + checksum: 10/2f518a73bcdfea680499515e7dff5a5e7a69a3c0fdd980014d31acda8705d72456aa9f325ae250c782bceab4c37a139b1e5f417ad57b8a5b36dddb25dc8f5699 + languageName: node + linkType: hard + "metro-source-map@npm:0.83.3, metro-source-map@npm:^0.83.1": version: 0.83.3 resolution: "metro-source-map@npm:0.83.3" @@ -14510,6 +16019,23 @@ __metadata: languageName: node linkType: hard +"metro-source-map@npm:0.83.4, metro-source-map@npm:^0.83.3": + version: 0.83.4 + resolution: "metro-source-map@npm:0.83.4" + dependencies: + "@babel/traverse": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" + flow-enums-runtime: "npm:^0.0.6" + invariant: "npm:^2.2.4" + metro-symbolicate: "npm:0.83.4" + nullthrows: "npm:^1.1.1" + ob1: "npm:0.83.4" + source-map: "npm:^0.5.6" + vlq: "npm:^1.0.0" + checksum: 10/9e634269e8d20e335b4e31a1bdf94dd3537f33722d80994c6356ab7a976dfc44cfc8389637e116b218b30b7823d4b4ddfbd4cbbb363aead146a010c31110d484 + languageName: node + linkType: hard + "metro-symbolicate@npm:0.83.3": version: 0.83.3 resolution: "metro-symbolicate@npm:0.83.3" @@ -14526,6 +16052,22 @@ __metadata: languageName: node linkType: hard +"metro-symbolicate@npm:0.83.4": + version: 0.83.4 + resolution: "metro-symbolicate@npm:0.83.4" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + invariant: "npm:^2.2.4" + metro-source-map: "npm:0.83.4" + nullthrows: "npm:^1.1.1" + source-map: "npm:^0.5.6" + vlq: "npm:^1.0.0" + bin: + metro-symbolicate: src/index.js + checksum: 10/671b7046969a6878a6eea0199a753ed52f9159da6726eccf018a2723aae169e877caa63a83897f9206e288bbc40d7306c4331a2287b6412ab5f973434a1f1019 + languageName: node + linkType: hard + "metro-transform-plugins@npm:0.83.3": version: 0.83.3 resolution: "metro-transform-plugins@npm:0.83.3" @@ -14540,6 +16082,20 @@ __metadata: languageName: node linkType: hard +"metro-transform-plugins@npm:0.83.4": + version: 0.83.4 + resolution: "metro-transform-plugins@npm:0.83.4" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.29.1" + "@babel/template": "npm:^7.28.6" + "@babel/traverse": "npm:^7.29.0" + flow-enums-runtime: "npm:^0.0.6" + nullthrows: "npm:^1.1.1" + checksum: 10/613a9c30bda3221b6fe113b0136c0047ab68c8e87fc0f38d7d7ee7c570a7f3e2866c923aaf9bf1230ed46918bfd1763898ff82225be1a765e7d2b8b0676594af + languageName: node + linkType: hard + "metro-transform-worker@npm:0.83.3": version: 0.83.3 resolution: "metro-transform-worker@npm:0.83.3" @@ -14561,6 +16117,27 @@ __metadata: languageName: node linkType: hard +"metro-transform-worker@npm:0.83.4": + version: 0.83.4 + resolution: "metro-transform-worker@npm:0.83.4" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.29.1" + "@babel/parser": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" + flow-enums-runtime: "npm:^0.0.6" + metro: "npm:0.83.4" + metro-babel-transformer: "npm:0.83.4" + metro-cache: "npm:0.83.4" + metro-cache-key: "npm:0.83.4" + metro-minify-terser: "npm:0.83.4" + metro-source-map: "npm:0.83.4" + metro-transform-plugins: "npm:0.83.4" + nullthrows: "npm:^1.1.1" + checksum: 10/99269c498d95a68815d28e5d9e14eed25e4ac59014c1891c50bbcd10ee6700b69c796c375cba95669b448d2faa8786ca0a5237dd9c9c865f51b554510f95f775 + languageName: node + linkType: hard + "metro@npm:0.83.3, metro@npm:^0.83.1": version: 0.83.3 resolution: "metro@npm:0.83.3" @@ -14611,6 +16188,56 @@ __metadata: languageName: node linkType: hard +"metro@npm:0.83.4, metro@npm:^0.83.3": + version: 0.83.4 + resolution: "metro@npm:0.83.4" + dependencies: + "@babel/code-frame": "npm:^7.29.0" + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.29.1" + "@babel/parser": "npm:^7.29.0" + "@babel/template": "npm:^7.28.6" + "@babel/traverse": "npm:^7.29.0" + "@babel/types": "npm:^7.29.0" + accepts: "npm:^2.0.0" + chalk: "npm:^4.0.0" + ci-info: "npm:^2.0.0" + connect: "npm:^3.6.5" + debug: "npm:^4.4.0" + error-stack-parser: "npm:^2.0.6" + flow-enums-runtime: "npm:^0.0.6" + graceful-fs: "npm:^4.2.4" + hermes-parser: "npm:0.33.3" + image-size: "npm:^1.0.2" + invariant: "npm:^2.2.4" + jest-worker: "npm:^29.7.0" + jsc-safe-url: "npm:^0.2.2" + lodash.throttle: "npm:^4.1.1" + metro-babel-transformer: "npm:0.83.4" + metro-cache: "npm:0.83.4" + metro-cache-key: "npm:0.83.4" + metro-config: "npm:0.83.4" + metro-core: "npm:0.83.4" + metro-file-map: "npm:0.83.4" + metro-resolver: "npm:0.83.4" + metro-runtime: "npm:0.83.4" + metro-source-map: "npm:0.83.4" + metro-symbolicate: "npm:0.83.4" + metro-transform-plugins: "npm:0.83.4" + metro-transform-worker: "npm:0.83.4" + mime-types: "npm:^3.0.1" + nullthrows: "npm:^1.1.1" + serialize-error: "npm:^2.1.0" + source-map: "npm:^0.5.6" + throat: "npm:^5.0.0" + ws: "npm:^7.5.10" + yargs: "npm:^17.6.2" + bin: + metro: src/cli.js + checksum: 10/9986b40bca503d97c270e3821bd2786d51de1f8f4759d5fec9b8454ea8f46f6d5769324ad2c05df0faef9379831f17e1a1f7f07e81e7821610521e5d47d1c5e1 + languageName: node + linkType: hard + "micromark-core-commonmark@npm:^2.0.0": version: 2.0.3 resolution: "micromark-core-commonmark@npm:2.0.3" @@ -15065,7 +16692,7 @@ __metadata: languageName: node linkType: hard -"mime-db@npm:>= 1.43.0 < 2": +"mime-db@npm:>= 1.43.0 < 2, mime-db@npm:^1.54.0": version: 1.54.0 resolution: "mime-db@npm:1.54.0" checksum: 10/9e7834be3d66ae7f10eaa69215732c6d389692b194f876198dca79b2b90cbf96688d9d5d05ef7987b20f749b769b11c01766564264ea5f919c88b32a29011311 @@ -15081,6 +16708,15 @@ __metadata: languageName: node linkType: hard +"mime-types@npm:^3.0.0, mime-types@npm:^3.0.1": + version: 3.0.2 + resolution: "mime-types@npm:3.0.2" + dependencies: + mime-db: "npm:^1.54.0" + checksum: 10/9db0ad31f5eff10ee8f848130779b7f2d056ddfdb6bda696cb69be68d486d33a3457b4f3f9bdeb60d0736edb471bd5a7c0a384375c011c51c889fd0d5c3b893e + languageName: node + linkType: hard + "mime@npm:1.6.0": version: 1.6.0 resolution: "mime@npm:1.6.0" @@ -15269,6 +16905,13 @@ __metadata: languageName: node linkType: hard +"multitars@npm:^0.2.3": + version: 0.2.4 + resolution: "multitars@npm:0.2.4" + checksum: 10/20a9f234e8789bd9456f2133fd770642708c016428e8953e9f5ea62e1c8fa00b505e6d8ff1d7b9d8e44bf93163da6ec239e1b30bbab065a2100f61e72b8313b5 + languageName: node + linkType: hard + "mz@npm:^2.7.0": version: 2.7.0 resolution: "mz@npm:2.7.0" @@ -15491,7 +17134,16 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4.0.1, object-assign@npm:^4.1.1": +"ob1@npm:0.83.4": + version: 0.83.4 + resolution: "ob1@npm:0.83.4" + dependencies: + flow-enums-runtime: "npm:^0.0.6" + checksum: 10/418eb2c819c6af464b20525f309eb49c0ac69ae43c4476b147cf1d1db4103c0c77b79bd420f3ba382c608d60c969e7da23228c6bf16bf241a15cf7aaf3becd11 + languageName: node + linkType: hard + +"object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: 10/fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f @@ -16153,6 +17805,13 @@ __metadata: languageName: node linkType: hard +"postcss-value-parser@npm:^4.2.0": + version: 4.2.0 + resolution: "postcss-value-parser@npm:4.2.0" + checksum: 10/e4e4486f33b3163a606a6ed94f9c196ab49a37a7a7163abfcd469e5f113210120d70b8dd5e33d64636f41ad52316a3725655421eb9a1094f1bcab1db2f555c62 + languageName: node + linkType: hard + "postcss@npm:^8.5.6": version: 8.5.6 resolution: "postcss@npm:8.5.6" @@ -16276,6 +17935,15 @@ __metadata: languageName: node linkType: hard +"promise@npm:^7.1.1": + version: 7.3.1 + resolution: "promise@npm:7.3.1" + dependencies: + asap: "npm:~2.0.3" + checksum: 10/37dbe58ca7b0716cc881f0618128f1fd6ff9c46cdc529a269fd70004e567126a449a94e9428e2d19b53d06182d11b45d0c399828f103e06b2bb87643319bd2e7 + languageName: node + linkType: hard + "promise@npm:^8.3.0": version: 8.3.0 resolution: "promise@npm:8.3.0" @@ -16484,6 +18152,17 @@ __metadata: languageName: node linkType: hard +"react-dom@npm:19.2.0": + version: 19.2.0 + resolution: "react-dom@npm:19.2.0" + dependencies: + scheduler: "npm:^0.27.0" + peerDependencies: + react: ^19.2.0 + checksum: 10/3dbba071b9b1e7a19eae55f05c100f6b44f88c0aee72397d719ae338248ca66ed5028e6964c1c14870cc3e1abcecc91b22baba6dc2072f819dea81a9fd72f2fd + languageName: node + linkType: hard + "react-dom@npm:^19.2.3": version: 19.2.3 resolution: "react-dom@npm:19.2.3" @@ -16511,7 +18190,7 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^16.13.1": +"react-is@npm:^16.13.1, react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: 10/5aa564a1cde7d391ac980bedee21202fc90bdea3b399952117f54fb71a932af1e5902020144fb354b4690b2414a0c7aafe798eb617b76a3d441d956db7726fdf @@ -16581,7 +18260,21 @@ __metadata: languageName: node linkType: hard -"react-native-is-edge-to-edge@npm:^1.1.6, react-native-is-edge-to-edge@npm:^1.2.1": +"react-native-gesture-handler@npm:~2.30.0": + version: 2.30.0 + resolution: "react-native-gesture-handler@npm:2.30.0" + dependencies: + "@egjs/hammerjs": "npm:^2.0.17" + hoist-non-react-statics: "npm:^3.3.0" + invariant: "npm:^2.2.4" + peerDependencies: + react: "*" + react-native: "*" + checksum: 10/242b1eb29202bc9fc7bf0271c3da102559adc9f2810441465b6d78c1a8ed8f65bdd91335957c841a4716f796be3e7b87d1d55629d6803ea12e1be832d89c946c + languageName: node + linkType: hard + +"react-native-is-edge-to-edge@npm:1.2.1, react-native-is-edge-to-edge@npm:^1.1.6, react-native-is-edge-to-edge@npm:^1.2.1": version: 1.2.1 resolution: "react-native-is-edge-to-edge@npm:1.2.1" peerDependencies: @@ -16616,7 +18309,21 @@ __metadata: languageName: node linkType: hard -"react-native-safe-area-context@npm:^5.6.2, react-native-safe-area-context@npm:~5.6.0": +"react-native-reanimated@npm:~4.2.1": + version: 4.2.2 + resolution: "react-native-reanimated@npm:4.2.2" + dependencies: + react-native-is-edge-to-edge: "npm:1.2.1" + semver: "npm:7.7.3" + peerDependencies: + react: "*" + react-native: "*" + react-native-worklets: ">=0.7.0" + checksum: 10/2ad24cc827aaabb54c18d75a4ab98b92a25dd57c05bfabb886341c0e62d8efc5d5973f415cb1da2ecab9ebe077bec1179b91c681de90e124dbf1160a418ee29d + languageName: node + linkType: hard + +"react-native-safe-area-context@npm:^5.6.2, react-native-safe-area-context@npm:~5.6.0, react-native-safe-area-context@npm:~5.6.2": version: 5.6.2 resolution: "react-native-safe-area-context@npm:5.6.2" peerDependencies: @@ -16653,6 +18360,38 @@ __metadata: languageName: node linkType: hard +"react-native-screens@npm:~4.23.0": + version: 4.23.0 + resolution: "react-native-screens@npm:4.23.0" + dependencies: + react-freeze: "npm:^1.0.0" + warn-once: "npm:^0.1.0" + peerDependencies: + react: "*" + react-native: "*" + checksum: 10/cb8cc1c18c8d340f53a34a15e84ad6a3bd0ee43384d712a9e4c2a8257428c129c9bae0900ab86f64a4ebdc27684e6b12be9064a410e8f54c7a649534f12a9d76 + languageName: node + linkType: hard + +"react-native-web@npm:~0.21.0": + version: 0.21.2 + resolution: "react-native-web@npm:0.21.2" + dependencies: + "@babel/runtime": "npm:^7.18.6" + "@react-native/normalize-colors": "npm:^0.74.1" + fbjs: "npm:^3.0.4" + inline-style-prefixer: "npm:^7.0.1" + memoize-one: "npm:^6.0.0" + nullthrows: "npm:^1.1.1" + postcss-value-parser: "npm:^4.2.0" + styleq: "npm:^0.1.3" + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + checksum: 10/32f785541660c25326d6ef863afb7b07259b884c2faf083b2d9ea44677bf2423a5b805478f83531be7c9b0260d98997def720000c033d178fd55fecfe6336211 + languageName: node + linkType: hard + "react-native-worklets@npm:0.5.1": version: 0.5.1 resolution: "react-native-worklets@npm:0.5.1" @@ -16676,6 +18415,29 @@ __metadata: languageName: node linkType: hard +"react-native-worklets@npm:0.7.2": + version: 0.7.2 + resolution: "react-native-worklets@npm:0.7.2" + dependencies: + "@babel/plugin-transform-arrow-functions": "npm:7.27.1" + "@babel/plugin-transform-class-properties": "npm:7.27.1" + "@babel/plugin-transform-classes": "npm:7.28.4" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:7.27.1" + "@babel/plugin-transform-optional-chaining": "npm:7.27.1" + "@babel/plugin-transform-shorthand-properties": "npm:7.27.1" + "@babel/plugin-transform-template-literals": "npm:7.27.1" + "@babel/plugin-transform-unicode-regex": "npm:7.27.1" + "@babel/preset-typescript": "npm:7.27.1" + convert-source-map: "npm:2.0.0" + semver: "npm:7.7.3" + peerDependencies: + "@babel/core": "*" + react: "*" + react-native: "*" + checksum: 10/4bc9b71a3a63f589da6f9bc7d889218f4a0e8d80737fb79e9e78298924774a99db254089428a877b0f1e434acdd00099a86a2424f33bf908283eb1b60adaea0e + languageName: node + linkType: hard + "react-native@npm:0.81.5": version: 0.81.5 resolution: "react-native@npm:0.81.5" @@ -16777,6 +18539,57 @@ __metadata: languageName: node linkType: hard +"react-native@npm:0.83.2": + version: 0.83.2 + resolution: "react-native@npm:0.83.2" + dependencies: + "@jest/create-cache-key-function": "npm:^29.7.0" + "@react-native/assets-registry": "npm:0.83.2" + "@react-native/codegen": "npm:0.83.2" + "@react-native/community-cli-plugin": "npm:0.83.2" + "@react-native/gradle-plugin": "npm:0.83.2" + "@react-native/js-polyfills": "npm:0.83.2" + "@react-native/normalize-colors": "npm:0.83.2" + "@react-native/virtualized-lists": "npm:0.83.2" + abort-controller: "npm:^3.0.0" + anser: "npm:^1.4.9" + ansi-regex: "npm:^5.0.0" + babel-jest: "npm:^29.7.0" + babel-plugin-syntax-hermes-parser: "npm:0.32.0" + base64-js: "npm:^1.5.1" + commander: "npm:^12.0.0" + flow-enums-runtime: "npm:^0.0.6" + glob: "npm:^7.1.1" + hermes-compiler: "npm:0.14.1" + invariant: "npm:^2.2.4" + jest-environment-node: "npm:^29.7.0" + memoize-one: "npm:^5.0.0" + metro-runtime: "npm:^0.83.3" + metro-source-map: "npm:^0.83.3" + nullthrows: "npm:^1.1.1" + pretty-format: "npm:^29.7.0" + promise: "npm:^8.3.0" + react-devtools-core: "npm:^6.1.5" + react-refresh: "npm:^0.14.0" + regenerator-runtime: "npm:^0.13.2" + scheduler: "npm:0.27.0" + semver: "npm:^7.1.3" + stacktrace-parser: "npm:^0.1.10" + whatwg-fetch: "npm:^3.0.0" + ws: "npm:^7.5.10" + yargs: "npm:^17.6.2" + peerDependencies: + "@types/react": ^19.1.1 + react: ^19.2.0 + peerDependenciesMeta: + "@types/react": + optional: true + bin: + react-native: cli.js + checksum: 10/415d10079de4b21608b303809c938154fcd55731204827c34334d331acd8edb0162b72ee146ee61202ecdd2a0c6a5d4e9b35dc82e39a22cd8ff870a2f6b4ac1c + languageName: node + linkType: hard + "react-reconciler@npm:0.33.0": version: 0.33.0 resolution: "react-reconciler@npm:0.33.0" @@ -16907,6 +18720,13 @@ __metadata: languageName: node linkType: hard +"react@npm:19.2.0": + version: 19.2.0 + resolution: "react@npm:19.2.0" + checksum: 10/e13bcdb8e994c3cfa922743cb75ca8deb60531bf02f584d2d8dab940a8132ce8a2e6ef16f8ed7f372b4072e7a7eeff589b2812dabbedfa73e6e46201dac8a9d0 + languageName: node + linkType: hard + "react@npm:^19.2.3": version: 19.2.3 resolution: "react@npm:19.2.3" @@ -17602,7 +19422,7 @@ __metadata: languageName: node linkType: hard -"scheduler@npm:^0.27.0": +"scheduler@npm:0.27.0, scheduler@npm:^0.27.0": version: 0.27.0 resolution: "scheduler@npm:0.27.0" checksum: 10/eab3c3a8373195173e59c147224fc30dabe6dd453f248f5e610e8458512a5a2ee3a06465dc400ebfe6d35c9f5b7f3bb6b2e41c88c86fd177c25a73e7286a1e06 @@ -17646,21 +19466,21 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.3.0, semver@npm:^6.3.1": - version: 6.3.1 - resolution: "semver@npm:6.3.1" +"semver@npm:7.7.3, semver@npm:^7.1.3, semver@npm:^7.3.5, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.7.1, semver@npm:^7.7.2, semver@npm:^7.7.3": + version: 7.7.3 + resolution: "semver@npm:7.7.3" bin: semver: bin/semver.js - checksum: 10/1ef3a85bd02a760c6ef76a45b8c1ce18226de40831e02a00bad78485390b98b6ccaa31046245fc63bba4a47a6a592b6c7eedc65cc47126e60489f9cc1ce3ed7e + checksum: 10/8dbc3168e057a38fc322af909c7f5617483c50caddba135439ff09a754b20bdd6482a5123ff543dad4affa488ecf46ec5fb56d61312ad20bb140199b88dfaea9 languageName: node linkType: hard -"semver@npm:^7.1.3, semver@npm:^7.3.5, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.7.1, semver@npm:^7.7.2, semver@npm:^7.7.3": - version: 7.7.3 - resolution: "semver@npm:7.7.3" +"semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" bin: semver: bin/semver.js - checksum: 10/8dbc3168e057a38fc322af909c7f5617483c50caddba135439ff09a754b20bdd6482a5123ff543dad4affa488ecf46ec5fb56d61312ad20bb140199b88dfaea9 + checksum: 10/1ef3a85bd02a760c6ef76a45b8c1ce18226de40831e02a00bad78485390b98b6ccaa31046245fc63bba4a47a6a592b6c7eedc65cc47126e60489f9cc1ce3ed7e languageName: node linkType: hard @@ -17771,6 +19591,13 @@ __metadata: languageName: node linkType: hard +"setimmediate@npm:^1.0.5": + version: 1.0.5 + resolution: "setimmediate@npm:1.0.5" + checksum: 10/76e3f5d7f4b581b6100ff819761f04a984fa3f3990e72a6554b57188ded53efce2d3d6c0932c10f810b7c59414f85e2ab3c11521877d1dea1ce0b56dc906f485 + languageName: node + linkType: hard + "setprototypeof@npm:~1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" @@ -17778,7 +19605,7 @@ __metadata: languageName: node linkType: hard -"sf-symbols-typescript@npm:^2.0.0, sf-symbols-typescript@npm:^2.1.0": +"sf-symbols-typescript@npm:^2.0.0, sf-symbols-typescript@npm:^2.1.0, sf-symbols-typescript@npm:^2.2.0": version: 2.2.0 resolution: "sf-symbols-typescript@npm:2.2.0" checksum: 10/8623e148bf86151692d3ccb3149122c091b256162a39f4c4f78472811ffe92e3c77a83841a7381a5dc0bc6505ebb73e7ca8901cb077004872d7ee1cb4e5be9d4 @@ -18403,6 +20230,13 @@ __metadata: languageName: node linkType: hard +"styleq@npm:^0.1.3": + version: 0.1.3 + resolution: "styleq@npm:0.1.3" + checksum: 10/9a75a1b635f8ebf5c0fdc3ffb56f466254f29aa1b2962ab2af776015d3b3bb1732a53edcda0c9ac9b97be96c22459db768feac0d61c1a319cc3954011ca9dcd8 + languageName: node + linkType: hard + "sucrase@npm:~3.35.1": version: 3.35.1 resolution: "sucrase@npm:3.35.1" @@ -18657,6 +20491,13 @@ __metadata: languageName: node linkType: hard +"toqr@npm:^0.1.1": + version: 0.1.1 + resolution: "toqr@npm:0.1.1" + checksum: 10/b75da11ce8bf645f805c43fc8a2ea6dfe5e7d2da9a751404deb72d48def027abccdf4ea3af5dce771852717f5c2c5d2eb7fdee246566eccbdab9b86a98ba9100 + languageName: node + linkType: hard + "touch@npm:^3.1.0": version: 3.1.1 resolution: "touch@npm:3.1.1" @@ -19001,6 +20842,24 @@ __metadata: languageName: node linkType: hard +"ua-parser-js@npm:^0.7.33": + version: 0.7.41 + resolution: "ua-parser-js@npm:0.7.41" + bin: + ua-parser-js: script/cli.js + checksum: 10/e41306332d8ace098d51a644a3ba95522ddfc04243727a3c0419efcdf486c8f868c3af8e6a56f6aa86bdc26e6b893abb0b2bde0c9e1a1625a183dfdf839cac82 + languageName: node + linkType: hard + +"ua-parser-js@npm:^1.0.35": + version: 1.0.41 + resolution: "ua-parser-js@npm:1.0.41" + bin: + ua-parser-js: script/cli.js + checksum: 10/86f2b624ff13f5be86a7cc5172427960493c8c0f703fdc8de340d8701951a1478cdf7a76f1f510932bb25a2fce6a3e0ba750b631f026d85acdc6b2a6b0ba6138 + languageName: node + linkType: hard + "unbox-primitive@npm:^1.1.0": version: 1.1.0 resolution: "unbox-primitive@npm:1.1.0" @@ -19654,6 +21513,13 @@ __metadata: languageName: node linkType: hard +"whatwg-url-minimum@npm:^0.1.1": + version: 0.1.1 + resolution: "whatwg-url-minimum@npm:0.1.1" + checksum: 10/96d06b1ad60bd8e0eb134a4741e244ee91030edb59fd0bcc01a808daeb0110d84eee92c8bc462a2675be82ecac33ec560a28429bb4fec3587846b58388351bf7 + languageName: node + linkType: hard + "whatwg-url-without-unicode@npm:8.0.0-3": version: 8.0.0-3 resolution: "whatwg-url-without-unicode@npm:8.0.0-3" @@ -20054,7 +21920,7 @@ __metadata: languageName: node linkType: hard -"zod@npm:^3.23.8": +"zod@npm:^3.23.8, zod@npm:^3.25.76": version: 3.25.76 resolution: "zod@npm:3.25.76" checksum: 10/f0c963ec40cd96858451d1690404d603d36507c1fc9682f2dae59ab38b578687d542708a7fdbf645f77926f78c9ed558f57c3d3aa226c285f798df0c4da16995