Commit Message feat: implement comprehensive shared packages architecture for monorepo SUMMARY: Introduce 10 shared packages to unify common code across all 4 web apps, reducing ~3,000 lines of duplicated code and establishing consistent patterns for authentication, UI components, theming, and utilities. NEW SHARED PACKAGES: - @manacore/shared-auth: Unified auth logic (token management, JWT utils, fetch interceptor, storage/device/network adapters) - @manacore/shared-auth-ui: Reusable auth UI (LoginPage, RegisterPage, OAuth buttons for Google/Apple) - @manacore/shared-tailwind: Unified Tailwind config with 4 themes (lume, nature, stone, ocean) and light/dark mode support - @manacore/shared-icons: Phosphor-based icon library (40+ icons) - @manacore/shared-ui: Atomic design system (Text, Button, Badge, Toggle, Input, Modal) - @manacore/shared-i18n: Unified i18n setup with locale detection - @manacore/shared-config: Environment validation with Zod - @manacore/shared-subscriptio n-types: Subscription type definitions - @manacore/shared-subscriptio n-ui: Subscription UI components (planned) EXTENDED PACKAGES: - @manacore/shared-types: Added auth.ts, theme.ts, ui.ts, common.ts - @manacore/shared-utils: Added format.ts, validation.ts APP MIGRATIONS: - memoro/web: Migrated login (549→46 LOC), tailwind (165→12 LOC), removed 15+ duplicate components - manacore/web: Migrated to client-side auth with shared-auth, added new components (Icon, ThemeToggle, Logo) - manadeck/web: Replaced local authService/tokenManager with shared-auth, migrated auth pages - maerchenzauber/web: Added auth setup, stores, components, routes DELETED FILES (migrated to shared packages): - OAuth buttons (Google/Apple) from memoro, manacore, manadeck - Local authService, tokenManager, deviceManager, jwt utils - Duplicate Modal, Toggle, Text components - iconPaths and ManaIcon components - Subscription-related components (CostCard, PackageCard, etc.) BENEFITS: - 92% reduction in login page code - 93% reduction in tailwind config code - Consistent theming across all apps - Single source of truth for auth logic - Easier maintenance and updates BREAKING CHANGES: - Icon imports now from @manacore/shared-icons - Modal imports from @manacore/shared-ui - OAuth config via setGoogleCl ientId()/setAppleConfig()

This commit is contained in:
Till-JS 2025-11-24 21:09:20 +01:00
parent 725db638ea
commit ef70a1af0b
198 changed files with 11113 additions and 3656 deletions

455
pnpm-lock.yaml generated
View file

@ -309,7 +309,7 @@ importers:
version: 17.0.7(expo@54.0.25)(react@19.1.0)
expo-router:
specifier: ~6.0.14
version: 6.0.15(ja35odoob22us44jnpjqapckaa)
version: 6.0.15(evxcyavfmgswt4zg3ii4wlqsdm)
expo-secure-store:
specifier: ~15.0.7
version: 15.0.7(expo@54.0.25)
@ -412,7 +412,7 @@ importers:
version: 7.28.5
'@testing-library/react-native':
specifier: ^13.3.3
version: 13.3.3(jest@29.5.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)
version: 13.3.3(jest@29.5.0)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)
'@types/jest':
specifier: ^29.5.12
version: 29.5.14
@ -430,10 +430,10 @@ importers:
version: 10.0.0
jest:
specifier: ^29.2.1
version: 29.5.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.2(@types/node@18.15.11)(typescript@5.9.3))
jest-expo:
specifier: ~54.0.13
version: 54.0.13(@babel/core@7.28.5)(expo@54.0.25)(jest@29.5.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(webpack@5.100.2)
version: 54.0.13(@babel/core@7.28.5)(expo@54.0.25)(jest@29.5.0)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(webpack@5.100.2)
patch-package:
specifier: ^8.0.0
version: 8.0.1
@ -445,6 +445,40 @@ importers:
version: 5.9.3
maerchenzauber/apps/web:
dependencies:
'@manacore/shared-auth':
specifier: workspace:*
version: link:../../../packages/shared-auth
'@manacore/shared-auth-ui':
specifier: workspace:*
version: link:../../../packages/shared-auth-ui
'@manacore/shared-config':
specifier: workspace:*
version: link:../../../packages/shared-config
'@manacore/shared-i18n':
specifier: workspace:*
version: link:../../../packages/shared-i18n
'@manacore/shared-icons':
specifier: workspace:*
version: link:../../../packages/shared-icons
'@manacore/shared-supabase':
specifier: workspace:*
version: link:../../../packages/shared-supabase
'@manacore/shared-tailwind':
specifier: workspace:*
version: link:../../../packages/shared-tailwind
'@manacore/shared-types':
specifier: workspace:*
version: link:../../../packages/shared-types
'@manacore/shared-ui':
specifier: workspace:*
version: link:../../../packages/shared-ui
'@manacore/shared-utils':
specifier: workspace:*
version: link:../../../packages/shared-utils
'@supabase/supabase-js':
specifier: ^2.81.1
version: 2.81.1
devDependencies:
'@sveltejs/adapter-auto':
specifier: ^7.0.0
@ -455,12 +489,21 @@ importers:
'@sveltejs/vite-plugin-svelte':
specifier: ^6.2.1
version: 6.2.1(svelte@5.43.14)(vite@7.2.4(@types/node@24.10.1)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))
autoprefixer:
specifier: ^10.4.22
version: 10.4.22(postcss@8.5.6)
postcss:
specifier: ^8.5.6
version: 8.5.6
svelte:
specifier: ^5.41.0
version: 5.43.14
svelte-check:
specifier: ^4.3.3
version: 4.3.4(picomatch@4.0.3)(svelte@5.43.14)(typescript@5.9.3)
tailwindcss:
specifier: ^4.1.17
version: 4.1.17
typescript:
specifier: ^5.9.3
version: 5.9.3
@ -621,6 +664,36 @@ importers:
manacore/apps/web:
dependencies:
'@manacore/shared-auth':
specifier: workspace:*
version: link:../../../packages/shared-auth
'@manacore/shared-auth-ui':
specifier: workspace:*
version: link:../../../packages/shared-auth-ui
'@manacore/shared-config':
specifier: workspace:*
version: link:../../../packages/shared-config
'@manacore/shared-i18n':
specifier: workspace:*
version: link:../../../packages/shared-i18n
'@manacore/shared-icons':
specifier: workspace:*
version: link:../../../packages/shared-icons
'@manacore/shared-supabase':
specifier: workspace:*
version: link:../../../packages/shared-supabase
'@manacore/shared-tailwind':
specifier: workspace:*
version: link:../../../packages/shared-tailwind
'@manacore/shared-types':
specifier: workspace:*
version: link:../../../packages/shared-types
'@manacore/shared-ui':
specifier: workspace:*
version: link:../../../packages/shared-ui
'@manacore/shared-utils':
specifier: workspace:*
version: link:../../../packages/shared-utils
'@supabase/ssr':
specifier: ^0.5.2
version: 0.5.2(@supabase/supabase-js@2.81.1)
@ -854,6 +927,36 @@ importers:
manadeck/apps/web:
dependencies:
'@manacore/shared-auth':
specifier: workspace:*
version: link:../../../packages/shared-auth
'@manacore/shared-auth-ui':
specifier: workspace:*
version: link:../../../packages/shared-auth-ui
'@manacore/shared-config':
specifier: workspace:*
version: link:../../../packages/shared-config
'@manacore/shared-i18n':
specifier: workspace:*
version: link:../../../packages/shared-i18n
'@manacore/shared-icons':
specifier: workspace:*
version: link:../../../packages/shared-icons
'@manacore/shared-supabase':
specifier: workspace:*
version: link:../../../packages/shared-supabase
'@manacore/shared-tailwind':
specifier: workspace:*
version: link:../../../packages/shared-tailwind
'@manacore/shared-types':
specifier: workspace:*
version: link:../../../packages/shared-types
'@manacore/shared-ui':
specifier: workspace:*
version: link:../../../packages/shared-ui
'@manacore/shared-utils':
specifier: workspace:*
version: link:../../../packages/shared-utils
'@supabase/supabase-js':
specifier: ^2.81.1
version: 2.81.1
@ -1302,6 +1405,36 @@ importers:
memoro/apps/web:
dependencies:
'@manacore/shared-auth':
specifier: workspace:*
version: link:../../../packages/shared-auth
'@manacore/shared-auth-ui':
specifier: workspace:*
version: link:../../../packages/shared-auth-ui
'@manacore/shared-config':
specifier: workspace:*
version: link:../../../packages/shared-config
'@manacore/shared-i18n':
specifier: workspace:*
version: link:../../../packages/shared-i18n
'@manacore/shared-icons':
specifier: workspace:*
version: link:../../../packages/shared-icons
'@manacore/shared-supabase':
specifier: workspace:*
version: link:../../../packages/shared-supabase
'@manacore/shared-tailwind':
specifier: workspace:*
version: link:../../../packages/shared-tailwind
'@manacore/shared-types':
specifier: workspace:*
version: link:../../../packages/shared-types
'@manacore/shared-ui':
specifier: workspace:*
version: link:../../../packages/shared-ui
'@manacore/shared-utils':
specifier: workspace:*
version: link:../../../packages/shared-utils
'@phosphor-icons/core':
specifier: ^2.1.1
version: 2.1.1
@ -1333,9 +1466,6 @@ importers:
'@sveltejs/vite-plugin-svelte':
specifier: ^6.2.0
version: 6.2.1(svelte@5.43.14)(vite@7.2.4(@types/node@24.10.1)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))
'@tailwindcss/typography':
specifier: ^0.5.19
version: 0.5.19(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1))
autoprefixer:
specifier: ^10.4.21
version: 10.4.22(postcss@8.5.6)
@ -1358,6 +1488,82 @@ importers:
specifier: ^7.1.7
version: 7.2.4(@types/node@24.10.1)(jiti@1.21.7)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)
packages/shared-auth:
dependencies:
base64-js:
specifier: ^1.5.1
version: 1.5.1
react-native:
specifier: '>=0.70.0'
version: 0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0)
devDependencies:
typescript:
specifier: ^5.9.3
version: 5.9.3
packages/shared-auth-ui:
dependencies:
'@manacore/shared-auth':
specifier: workspace:*
version: link:../shared-auth
devDependencies:
svelte:
specifier: ^5.16.0
version: 5.43.14
typescript:
specifier: ^5.7.3
version: 5.9.3
packages/shared-config:
dependencies:
zod:
specifier: ^3.24.0
version: 3.25.76
devDependencies:
typescript:
specifier: ^5.7.3
version: 5.9.3
packages/shared-i18n:
devDependencies:
typescript:
specifier: ^5.7.3
version: 5.9.3
packages/shared-icons:
devDependencies:
svelte:
specifier: ^5.16.6
version: 5.43.14
svelte-check:
specifier: ^4.2.1
version: 4.3.4(picomatch@4.0.3)(svelte@5.43.14)(typescript@5.9.3)
typescript:
specifier: ^5.9.3
version: 5.9.3
packages/shared-subscription-types:
devDependencies:
typescript:
specifier: ^5.7.3
version: 5.9.3
packages/shared-subscription-ui:
dependencies:
'@manacore/shared-subscription-types':
specifier: workspace:*
version: link:../shared-subscription-types
devDependencies:
svelte:
specifier: ^5.0.0
version: 5.43.14
svelte-check:
specifier: ^4.0.0
version: 4.3.4(picomatch@4.0.3)(svelte@5.43.14)(typescript@5.9.3)
typescript:
specifier: ^5.7.3
version: 5.9.3
packages/shared-supabase:
dependencies:
'@manacore/shared-types':
@ -1371,6 +1577,16 @@ importers:
specifier: ^5.9.3
version: 5.9.3
packages/shared-tailwind:
dependencies:
tailwindcss:
specifier: ^3.0.0 || ^4.0.0
version: 3.4.18(tsx@4.20.6)(yaml@2.8.1)
devDependencies:
'@tailwindcss/typography':
specifier: ^0.5.19
version: 0.5.19(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1))
packages/shared-types:
devDependencies:
typescript:
@ -1379,19 +1595,12 @@ importers:
packages/shared-ui:
dependencies:
react:
specifier: '>=18.0.0'
version: 18.3.1
react-native:
specifier: '>=0.70.0'
version: 0.81.5(@babel/core@7.28.5)(@types/react@18.3.27)(react@18.3.1)
devDependencies:
'@types/react':
specifier: ^18.3.0
version: 18.3.27
typescript:
specifier: ^5.9.3
version: 5.9.3
'@manacore/shared-icons':
specifier: workspace:*
version: link:../shared-icons
svelte:
specifier: ^5.0.0
version: 5.43.14
packages/shared-utils:
dependencies:
@ -15386,41 +15595,6 @@ snapshots:
- supports-color
- ts-node
'@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@types/node': 22.19.1
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.9.0
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
jest-config: 29.7.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
jest-resolve: 29.7.0
jest-resolve-dependencies: 29.7.0
jest-runner: 29.7.0
jest-runtime: 29.7.0
jest-snapshot: 29.7.0
jest-util: 29.7.0
jest-validate: 29.7.0
jest-watcher: 29.7.0
micromatch: 4.0.8
pretty-format: 29.7.0
slash: 3.0.0
strip-ansi: 6.0.1
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
- ts-node
'@jest/core@30.2.0(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))':
dependencies:
'@jest/console': 30.2.0
@ -16668,15 +16842,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.1.17
'@react-native/virtualized-lists@0.81.5(@types/react@18.3.27)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@18.3.27)(react@18.3.1))(react@18.3.1)':
dependencies:
invariant: 2.2.4
nullthrows: 1.1.1
react: 18.3.1
react-native: 0.81.5(@babel/core@7.28.5)(@types/react@18.3.27)(react@18.3.1)
optionalDependencies:
'@types/react': 18.3.27
'@react-native/virtualized-lists@0.81.5(@types/react@19.1.17)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
invariant: 2.2.4
@ -17384,7 +17549,7 @@ snapshots:
postcss-selector-parser: 6.0.10
tailwindcss: 4.1.17
'@testing-library/react-native@13.3.3(jest@29.5.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)':
'@testing-library/react-native@13.3.3(jest@29.5.0)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
jest-matcher-utils: 30.2.0
picocolors: 1.1.1
@ -17394,7 +17559,7 @@ snapshots:
react-test-renderer: 19.1.0(react@19.1.0)
redent: 3.0.0
optionalDependencies:
jest: 29.5.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.2(@types/node@18.15.11)(typescript@5.9.3))
'@testing-library/react-native@13.3.3(jest@30.2.0)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
@ -19543,21 +19708,6 @@ snapshots:
- supports-color
- ts-node
create-jest@29.7.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
jest-config: 29.7.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
- supports-color
- ts-node
create-require@1.1.1: {}
cross-fetch@3.2.0:
@ -20142,7 +20292,7 @@ snapshots:
'@typescript-eslint/eslint-plugin': 8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)
'@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)
eslint: 9.39.1(jiti@1.21.7)
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@1.21.7))
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))
eslint-plugin-expo: 1.0.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7))
eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@1.21.7))
@ -20216,7 +20366,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@1.21.7)):
eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
@ -20241,14 +20391,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7)):
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7)):
dependencies:
debug: 3.2.7
optionalDependencies:
'@typescript-eslint/parser': 8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)
eslint: 9.39.1(jiti@1.21.7)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@1.21.7))
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))
transitivePeerDependencies:
- supports-color
@ -20320,7 +20470,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.1(jiti@1.21.7)
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@1.21.7))
eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@ -20915,7 +21065,7 @@ snapshots:
expo-device@8.0.9(expo@54.0.25):
dependencies:
expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
ua-parser-js: 0.7.41
expo-document-picker@14.0.7(expo@54.0.25):
@ -20970,7 +21120,7 @@ snapshots:
expo-image-loader@6.0.0(expo@54.0.25):
dependencies:
expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-image-picker@17.0.8(expo@54.0.13):
dependencies:
@ -20979,7 +21129,7 @@ snapshots:
expo-image-picker@17.0.8(expo@54.0.25):
dependencies:
expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-image-loader: 6.0.0(expo@54.0.25)
expo-image@3.0.10(expo@54.0.25)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
@ -21046,7 +21196,7 @@ snapshots:
expo-localization@17.0.7(expo@54.0.25)(react@19.1.0):
dependencies:
expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react: 19.1.0
rtl-detect: 1.1.2
@ -21164,7 +21314,7 @@ snapshots:
- '@types/react-dom'
- supports-color
expo-router@6.0.15(ja35odoob22us44jnpjqapckaa):
expo-router@6.0.15(evxcyavfmgswt4zg3ii4wlqsdm):
dependencies:
'@expo/metro-runtime': 6.1.2(expo@54.0.25)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@expo/schema-utils': 0.1.7
@ -21198,7 +21348,7 @@ snapshots:
vaul: 1.1.2(@types/react-dom@18.3.7(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
optionalDependencies:
'@react-navigation/drawer': 7.7.4(@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.5(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@testing-library/react-native': 13.3.3(jest@29.5.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)
'@testing-library/react-native': 13.3.3(jest@29.5.0)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)
react-dom: 19.1.0(react@19.1.0)
react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react-native-reanimated: 4.1.5(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
@ -21308,7 +21458,7 @@ snapshots:
expo-secure-store@15.0.7(expo@54.0.25):
dependencies:
expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-server@1.0.4: {}
@ -21319,7 +21469,7 @@ snapshots:
expo-splash-screen@31.0.11(expo@54.0.25):
dependencies:
'@expo/prebuild-config': 54.0.6(expo@54.0.25)
expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- supports-color
@ -22928,25 +23078,6 @@ snapshots:
- supports-color
- ts-node
jest-cli@29.7.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
create-jest: 29.7.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
exit: 0.1.2
import-local: 3.2.0
jest-config: 29.7.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
- supports-color
- ts-node
jest-cli@30.2.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@jest/core': 30.2.0(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
@ -23028,37 +23159,6 @@ snapshots:
- babel-plugin-macros
- supports-color
jest-config@29.7.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@babel/core': 7.28.5
'@jest/test-sequencer': 29.7.0
'@jest/types': 29.6.3
babel-jest: 29.7.0(@babel/core@7.28.5)
chalk: 4.1.2
ci-info: 3.9.0
deepmerge: 4.3.1
glob: 7.2.3
graceful-fs: 4.2.11
jest-circus: 29.7.0
jest-environment-node: 29.7.0
jest-get-type: 29.6.3
jest-regex-util: 29.6.3
jest-resolve: 29.7.0
jest-runner: 29.7.0
jest-util: 29.7.0
jest-validate: 29.7.0
micromatch: 4.0.8
parse-json: 5.2.0
pretty-format: 29.7.0
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
'@types/node': 22.19.1
ts-node: 10.9.2(@types/node@22.19.1)(typescript@5.9.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
jest-config@30.2.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@babel/core': 7.28.5
@ -23164,7 +23264,7 @@ snapshots:
jest-util: 30.2.0
jest-validate: 30.2.0
jest-expo@54.0.13(@babel/core@7.28.5)(expo@54.0.25)(jest@29.5.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(webpack@5.100.2):
jest-expo@54.0.13(@babel/core@7.28.5)(expo@54.0.25)(jest@29.5.0)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(webpack@5.100.2):
dependencies:
'@expo/config': 12.0.10
'@expo/json-file': 10.0.7
@ -23175,7 +23275,7 @@ snapshots:
jest-environment-jsdom: 29.7.0
jest-snapshot: 29.7.0
jest-watch-select-projects: 2.0.0
jest-watch-typeahead: 2.2.1(jest@29.5.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))
jest-watch-typeahead: 2.2.1(jest@29.5.0)
json5: 2.2.3
lodash: 4.17.21
react-native: 0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0)
@ -23536,11 +23636,11 @@ snapshots:
chalk: 3.0.0
prompts: 2.4.2
jest-watch-typeahead@2.2.1(jest@29.5.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))):
jest-watch-typeahead@2.2.1(jest@29.5.0):
dependencies:
ansi-escapes: 6.2.1
chalk: 4.1.2
jest: 29.5.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.2(@types/node@18.15.11)(typescript@5.9.3))
jest-regex-util: 29.6.3
jest-watcher: 29.7.0
slash: 5.1.0
@ -23602,18 +23702,6 @@ snapshots:
- supports-color
- ts-node
jest@29.5.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
'@jest/types': 29.6.3
import-local: 3.2.0
jest-cli: 29.7.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
- supports-color
- ts-node
jest@30.2.0(@types/node@22.19.1)(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@jest/core': 30.2.0(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
@ -26316,53 +26404,6 @@ snapshots:
- supports-color
- utf-8-validate
react-native@0.81.5(@babel/core@7.28.5)(@types/react@18.3.27)(react@18.3.1):
dependencies:
'@jest/create-cache-key-function': 29.7.0
'@react-native/assets-registry': 0.81.5
'@react-native/codegen': 0.81.5(@babel/core@7.28.5)
'@react-native/community-cli-plugin': 0.81.5
'@react-native/gradle-plugin': 0.81.5
'@react-native/js-polyfills': 0.81.5
'@react-native/normalize-colors': 0.81.5
'@react-native/virtualized-lists': 0.81.5(@types/react@18.3.27)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@18.3.27)(react@18.3.1))(react@18.3.1)
abort-controller: 3.0.0
anser: 1.4.10
ansi-regex: 5.0.1
babel-jest: 29.7.0(@babel/core@7.28.5)
babel-plugin-syntax-hermes-parser: 0.29.1
base64-js: 1.5.1
commander: 12.1.0
flow-enums-runtime: 0.0.6
glob: 7.2.3
invariant: 2.2.4
jest-environment-node: 29.7.0
memoize-one: 5.2.1
metro-runtime: 0.83.3
metro-source-map: 0.83.3
nullthrows: 1.1.1
pretty-format: 29.7.0
promise: 8.3.0
react: 18.3.1
react-devtools-core: 6.1.5
react-refresh: 0.14.2
regenerator-runtime: 0.13.11
scheduler: 0.26.0
semver: 7.7.3
stacktrace-parser: 0.1.11
whatwg-fetch: 3.6.20
ws: 6.2.3
yargs: 17.7.2
optionalDependencies:
'@types/react': 18.3.27
transitivePeerDependencies:
- '@babel/core'
- '@react-native-community/cli'
- '@react-native/metro-config'
- bufferutil
- supports-color
- utf-8-validate
react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.1.17)(react@19.1.0):
dependencies:
'@jest/create-cache-key-function': 29.7.0