From 01d8f433f139bb87f570c3045778f4689ee392da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 24 May 2026 08:31:11 +0000 Subject: [PATCH 1/3] Bump the production group with 14 updates Bumps the production group with 14 updates: | Package | From | To | | --- | --- | --- | | [@expo/fingerprint](https://github.com/expo/expo/tree/HEAD/packages/@expo/fingerprint) | `0.16.7` | `0.19.2` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.59.3` | `8.59.4` | | [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.6` | `4.1.7` | | [nodemailer](https://github.com/nodemailer/nodemailer) | `8.0.7` | `8.0.8` | | [@sentry/cli](https://github.com/getsentry/sentry-cli) | `3.4.2` | `3.4.3` | | [@sentry/react-native](https://github.com/getsentry/sentry-react-native) | `8.11.1` | `8.12.0` | | [react-native-safe-area-context](https://github.com/AppAndFlow/react-native-safe-area-context) | `5.7.0` | `5.8.0` | | [react-native-screens](https://github.com/software-mansion/react-native-screens) | `4.25.0` | `4.25.2` | | [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `19.2.14` | `19.2.15` | | [ws](https://github.com/websockets/ws) | `8.20.1` | `8.21.0` | | [@vitest/browser](https://github.com/vitest-dev/vitest/tree/HEAD/packages/browser) | `4.1.6` | `4.1.7` | | [@vitest/browser-playwright](https://github.com/vitest-dev/vitest/tree/HEAD/packages/browser-playwright) | `4.1.6` | `4.1.7` | | [@garmin/fitsdk](https://github.com/garmin/fit-javascript-sdk) | `21.202.0` | `21.205.0` | | [@sentry/react](https://github.com/getsentry/sentry-javascript) | `10.51.0` | `10.53.1` | Updates `@expo/fingerprint` from 0.16.7 to 0.19.2 - [Changelog](https://github.com/expo/expo/blob/main/packages/@expo/fingerprint/CHANGELOG.md) - [Commits](https://github.com/expo/expo/commits/HEAD/packages/@expo/fingerprint) Updates `typescript-eslint` from 8.59.3 to 8.59.4 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.4/packages/typescript-eslint) Updates `vitest` from 4.1.6 to 4.1.7 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.7/packages/vitest) Updates `nodemailer` from 8.0.7 to 8.0.8 - [Release notes](https://github.com/nodemailer/nodemailer/releases) - [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md) - [Commits](https://github.com/nodemailer/nodemailer/compare/v8.0.7...v8.0.8) Updates `@sentry/cli` from 3.4.2 to 3.4.3 - [Release notes](https://github.com/getsentry/sentry-cli/releases) - [Changelog](https://github.com/getsentry/sentry-cli/blob/master/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-cli/compare/3.4.2...3.4.3) Updates `@sentry/react-native` from 8.11.1 to 8.12.0 - [Release notes](https://github.com/getsentry/sentry-react-native/releases) - [Changelog](https://github.com/getsentry/sentry-react-native/blob/main/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-react-native/compare/8.11.1...8.12.0) Updates `react-native-safe-area-context` from 5.7.0 to 5.8.0 - [Release notes](https://github.com/AppAndFlow/react-native-safe-area-context/releases) - [Commits](https://github.com/AppAndFlow/react-native-safe-area-context/compare/v5.7.0...v5.8.0) Updates `react-native-screens` from 4.25.0 to 4.25.2 - [Release notes](https://github.com/software-mansion/react-native-screens/releases) - [Commits](https://github.com/software-mansion/react-native-screens/compare/4.25.0...4.25.2) Updates `@types/react` from 19.2.14 to 19.2.15 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) Updates `ws` from 8.20.1 to 8.21.0 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/8.20.1...8.21.0) Updates `@vitest/browser` from 4.1.6 to 4.1.7 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.7/packages/browser) Updates `@vitest/browser-playwright` from 4.1.6 to 4.1.7 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.7/packages/browser-playwright) Updates `@garmin/fitsdk` from 21.202.0 to 21.205.0 - [Release notes](https://github.com/garmin/fit-javascript-sdk/releases) - [Commits](https://github.com/garmin/fit-javascript-sdk/compare/21.202.0...21.205.0) Updates `@sentry/react` from 10.51.0 to 10.53.1 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/10.51.0...10.53.1) --- updated-dependencies: - dependency-name: "@expo/fingerprint" dependency-version: 0.19.2 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: production - dependency-name: typescript-eslint dependency-version: 8.59.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: production - dependency-name: vitest dependency-version: 4.1.7 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: production - dependency-name: nodemailer dependency-version: 8.0.8 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production - dependency-name: "@sentry/cli" dependency-version: 3.4.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production - dependency-name: "@sentry/react-native" dependency-version: 8.12.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production - dependency-name: react-native-safe-area-context dependency-version: 5.8.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production - dependency-name: react-native-screens dependency-version: 4.25.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production - dependency-name: "@types/react" dependency-version: 19.2.15 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production - dependency-name: ws dependency-version: 8.21.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production - dependency-name: "@vitest/browser" dependency-version: 4.1.7 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: production - dependency-name: "@vitest/browser-playwright" dependency-version: 4.1.7 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: production - dependency-name: "@garmin/fitsdk" dependency-version: 21.205.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production - dependency-name: "@sentry/react" dependency-version: 10.53.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production ... Signed-off-by: dependabot[bot] --- apps/journal/package.json | 2 +- apps/mobile/package.json | 10 +- apps/planner/package.json | 6 +- package.json | 6 +- packages/fit/package.json | 2 +- pnpm-lock.yaml | 2324 +++++++++++++++++++++++-------------- pnpm-workspace.yaml | 2 +- 7 files changed, 1480 insertions(+), 872 deletions(-) diff --git a/apps/journal/package.json b/apps/journal/package.json index 5a7bf58..b4b7696 100644 --- a/apps/journal/package.json +++ b/apps/journal/package.json @@ -31,7 +31,7 @@ "drizzle-orm": "catalog:", "isbot": "^5.1.40", "jose": "^6.2.3", - "nodemailer": "^8.0.7", + "nodemailer": "^8.0.8", "pino": "^10.3.1", "prom-client": "^15.1.3", "react": "catalog:", diff --git a/apps/mobile/package.json b/apps/mobile/package.json index 701060a..a2536cd 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -32,8 +32,8 @@ "@expo/metro-runtime": "^55.0.11", "@gorhom/bottom-sheet": "^5.2.14", "@maplibre/maplibre-react-native": "^11.2.1", - "@sentry/cli": "^3.4.2", - "@sentry/react-native": "~8.11.1", + "@sentry/cli": "^3.4.3", + "@sentry/react-native": "~8.12.0", "@trails-cool/api": "workspace:*", "@trails-cool/gpx": "workspace:*", "@trails-cool/i18n": "workspace:*", @@ -63,15 +63,15 @@ "react-native": "0.83.4", "react-native-gesture-handler": "^2.31.2", "react-native-reanimated": "^4.3.1", - "react-native-safe-area-context": "~5.7.0", - "react-native-screens": "~4.25.0", + "react-native-safe-area-context": "~5.8.0", + "react-native-screens": "~4.25.2", "use-latest-callback": "^0.3.4", "zod": "^4.4.3" }, "devDependencies": { "@testing-library/react-native": "^13.3.3", "@types/jest": "^29.5.14", - "@types/react": "~19.2.14", + "@types/react": "~19.2.15", "jest-expo": "^55.0.17", "react-test-renderer": "^19.2.6", "typescript": "~5.9.2" diff --git a/apps/planner/package.json b/apps/planner/package.json index a770890..dae84a6 100644 --- a/apps/planner/package.json +++ b/apps/planner/package.json @@ -41,7 +41,7 @@ "react": "catalog:", "react-dom": "catalog:", "react-router": "catalog:", - "ws": "^8.20.1", + "ws": "^8.21.0", "y-codemirror.next": "^0.3.5", "y-protocols": "^1.0.7", "y-websocket": "^3.0.0", @@ -54,8 +54,8 @@ "@types/react": "catalog:", "@types/react-dom": "catalog:", "@types/ws": "^8.18.1", - "@vitest/browser": "^4.1.6", - "@vitest/browser-playwright": "^4.1.6", + "@vitest/browser": "^4.1.7", + "@vitest/browser-playwright": "^4.1.7", "leaflet.markercluster": "^1.5.3", "pino-pretty": "^13.1.3", "tailwindcss": "catalog:", diff --git a/package.json b/package.json index eabfd27..9147d35 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "@eslint/js": "^10.0.1", - "@expo/fingerprint": "^0.16.7", + "@expo/fingerprint": "^0.19.2", "@fission-ai/openspec": "^1.3.1", "@playwright/test": "^1.60.0", "@react-router/dev": "catalog:", @@ -80,9 +80,9 @@ "tailwindcss": "catalog:", "turbo": "^2.9.14", "typescript": "catalog:", - "typescript-eslint": "^8.59.3", + "typescript-eslint": "^8.59.4", "vite": "catalog:", - "vitest": "^4.1.6" + "vitest": "^4.1.7" }, "version": "1.0.0", "dependencies": { diff --git a/packages/fit/package.json b/packages/fit/package.json index ac35e32..69a1ac8 100644 --- a/packages/fit/package.json +++ b/packages/fit/package.json @@ -13,7 +13,7 @@ "typecheck": "tsc" }, "dependencies": { - "@garmin/fitsdk": "^21.202.0", + "@garmin/fitsdk": "^21.205.0", "@trails-cool/gpx": "workspace:*" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3473a33..8f0724d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,8 +28,8 @@ catalogs: specifier: ^22.19.19 version: 22.19.19 '@types/react': - specifier: ^19.2.14 - version: 19.2.14 + specifier: ^19.2.15 + version: 19.2.15 '@types/react-dom': specifier: ^19.2.3 version: 19.2.3 @@ -72,29 +72,29 @@ importers: dependencies: expo: specifier: ~55.0.24 - version: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + version: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react: specifier: ^19.2.5 version: 19.2.6 react-native: specifier: 0.83.4 - version: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + version: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) devDependencies: '@eslint/js': specifier: ^10.0.1 version: 10.0.1(eslint@10.4.0(jiti@2.7.0)) '@expo/fingerprint': - specifier: ^0.16.7 - version: 0.16.7 + specifier: ^0.19.2 + version: 0.19.2 '@fission-ai/openspec': specifier: ^1.3.1 - version: 1.3.1(@types/node@25.8.0) + version: 1.3.1(@types/node@25.9.1) '@playwright/test': specifier: ^1.60.0 version: 1.60.0 '@react-router/dev': specifier: 'catalog:' - version: 7.15.1(@react-router/serve@7.15.1(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@5.9.3))(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(terser@5.47.1)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(yaml@2.9.0) + version: 7.15.1(@react-router/serve@7.15.1(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@5.9.3))(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(terser@5.48.0)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(yaml@2.9.0) '@react-router/node': specifier: 'catalog:' version: 7.15.1(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@5.9.3) @@ -106,13 +106,13 @@ importers: version: 5.3.0(rollup@4.60.4) '@tailwindcss/vite': specifier: 'catalog:' - version: 4.3.0(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) + version: 4.3.0(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) '@testing-library/jest-dom': specifier: ^6.9.1 version: 6.9.1 '@testing-library/react': specifier: ^16.3.2 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@types/geojson': specifier: ^7946.0.16 version: 7946.0.16 @@ -121,16 +121,16 @@ importers: version: 1.9.21 '@types/react': specifier: 'catalog:' - version: 19.2.14 + version: 19.2.15 '@types/react-dom': specifier: 'catalog:' - version: 19.2.3(@types/react@19.2.14) + version: 19.2.3(@types/react@19.2.15) drizzle-kit: specifier: 'catalog:' version: 0.31.10 drizzle-orm: specifier: 'catalog:' - version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(expo-sqlite@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(pg@8.20.0)(postgres@3.4.9) + version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(expo-sqlite@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(pg@8.20.0)(postgres@3.4.9) drizzle-postgis: specifier: 'catalog:' version: 1.1.1 @@ -172,7 +172,7 @@ importers: version: 19.2.6(react@19.2.6) react-i18next: specifier: ^17.0.8 - version: 17.0.8(i18next@26.2.0(typescript@5.9.3))(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + version: 17.0.8(i18next@26.2.0(typescript@5.9.3))(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react-leaflet: specifier: ^5.0.0 version: 5.0.0(leaflet@1.9.4)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) @@ -189,14 +189,14 @@ importers: specifier: 'catalog:' version: 5.9.3 typescript-eslint: - specifier: ^8.59.3 - version: 8.59.3(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) + specifier: ^8.59.4 + version: 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) vite: specifier: 'catalog:' - version: 8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) + version: 8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) vitest: - specifier: ^4.1.6 - version: 4.1.6(@opentelemetry/api@1.9.1)(@types/node@25.8.0)(@vitest/browser-playwright@4.1.6)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) + specifier: ^4.1.7 + version: 4.1.7(@opentelemetry/api@1.9.1)(@types/node@25.9.1)(@vitest/browser-playwright@4.1.7)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) apps/journal: dependencies: @@ -250,7 +250,7 @@ importers: version: link:../../packages/ui drizzle-orm: specifier: 'catalog:' - version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(expo-sqlite@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(pg@8.20.0)(postgres@3.4.9) + version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(expo-sqlite@55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(pg@8.20.0)(postgres@3.4.9) isbot: specifier: ^5.1.40 version: 5.1.40 @@ -258,8 +258,8 @@ importers: specifier: ^6.2.3 version: 6.2.3 nodemailer: - specifier: ^8.0.7 - version: 8.0.7 + specifier: ^8.0.8 + version: 8.0.8 pino: specifier: ^10.3.1 version: 10.3.1 @@ -281,25 +281,25 @@ importers: devDependencies: '@react-router/dev': specifier: 'catalog:' - version: 7.15.1(@react-router/serve@7.15.1(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@5.9.3))(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(terser@5.47.1)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(yaml@2.9.0) + version: 7.15.1(@react-router/serve@7.15.1(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@5.9.3))(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(terser@5.48.0)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(yaml@2.9.0) '@simplewebauthn/types': specifier: ^12.0.0 version: 12.0.0 '@tailwindcss/vite': specifier: 'catalog:' - version: 4.3.0(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) + version: 4.3.0(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) '@types/nodemailer': specifier: ^8.0.0 version: 8.0.0 '@types/react': specifier: 'catalog:' - version: 19.2.14 + version: 19.2.15 '@types/react-dom': specifier: 'catalog:' - version: 19.2.3(@types/react@19.2.14) + version: 19.2.3(@types/react@19.2.15) '@vitejs/plugin-basic-ssl': specifier: ^2.3.0 - version: 2.3.0(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) + version: 2.3.0(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) pino-pretty: specifier: ^13.1.3 version: 13.1.3 @@ -311,25 +311,25 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) + version: 8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) apps/mobile: dependencies: '@expo/metro-runtime': specifier: ^55.0.11 - version: 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + version: 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) '@gorhom/bottom-sheet': specifier: ^5.2.14 - version: 5.2.14(@types/react@19.2.14)(react-native-gesture-handler@2.31.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native-reanimated@4.3.1(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + version: 5.2.14(@types/react@19.2.15)(react-native-gesture-handler@2.31.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-reanimated@4.3.1(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) '@maplibre/maplibre-react-native': specifier: ^11.2.1 - version: 11.2.1(@expo/config-plugins@55.0.9)(@types/geojson@7946.0.16)(@types/react@19.2.14)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + version: 11.2.1(@expo/config-plugins@55.0.10)(@types/geojson@7946.0.16)(@types/react@19.2.15)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) '@sentry/cli': - specifier: ^3.4.2 - version: 3.4.2 + specifier: ^3.4.3 + version: 3.4.3 '@sentry/react-native': - specifier: ~8.11.1 - version: 8.11.1(@expo/env@2.1.2)(dotenv@16.6.1)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + specifier: ~8.12.0 + version: 8.12.0(@expo/env@2.3.0)(dotenv@16.6.1)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) '@trails-cool/api': specifier: workspace:* version: link:../../packages/api @@ -350,10 +350,10 @@ importers: version: link:../../packages/types expo: specifier: ~55.0.24 - version: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + version: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) expo-constants: specifier: ~55.0.16 - version: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6)) + version: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) expo-crypto: specifier: ~55.0.15 version: 55.0.15(expo@55.0.24) @@ -368,10 +368,10 @@ importers: version: 55.0.17(expo@55.0.24) expo-file-system: specifier: ~55.0.20 - version: 55.0.20(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6)) + version: 55.0.20(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) expo-linking: specifier: ~55.0.15 - version: 55.0.15(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + version: 55.0.15(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) expo-localization: specifier: ~55.0.14 version: 55.0.14(expo@55.0.24)(react@19.2.6) @@ -380,13 +380,13 @@ importers: version: 55.1.10(expo@55.0.24)(typescript@5.9.3) expo-navigation-bar: specifier: ~55.0.13 - version: 55.0.13(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + version: 55.0.13(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) expo-notifications: specifier: ~55.0.23 - version: 55.0.23(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + version: 55.0.23(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) expo-router: specifier: ~55.0.14 - version: 55.0.14(4a88f676dfb25e563c95d7c5569dae4c) + version: 55.0.14(2282ac51b8838b5d1fdb91eeaf81e816) expo-secure-store: specifier: ~55.0.14 version: 55.0.14(expo@55.0.24) @@ -395,34 +395,34 @@ importers: version: 55.0.21(expo@55.0.24)(typescript@5.9.3) expo-sqlite: specifier: ~55.0.16 - version: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + version: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) expo-status-bar: specifier: ~55.0.6 - version: 55.0.6(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + version: 55.0.6(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) expo-system-ui: specifier: ^55.0.18 - version: 55.0.18(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6)) + version: 55.0.18(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) expo-web-browser: specifier: ~55.0.16 - version: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6)) + version: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) react: specifier: ^19.2.5 version: 19.2.6 react-native: specifier: 0.83.4 - version: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + version: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) react-native-gesture-handler: specifier: ^2.31.2 - version: 2.31.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + version: 2.31.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) react-native-reanimated: specifier: ^4.3.1 - version: 4.3.1(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + version: 4.3.1(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) react-native-safe-area-context: - specifier: ~5.7.0 - version: 5.7.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + specifier: ~5.8.0 + version: 5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) react-native-screens: - specifier: ~4.25.0 - version: 4.25.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + specifier: ~4.25.2 + version: 4.25.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) use-latest-callback: specifier: ^0.3.4 version: 0.3.4(react@19.2.6) @@ -432,16 +432,16 @@ importers: devDependencies: '@testing-library/react-native': specifier: ^13.3.3 - version: 13.3.3(jest@29.7.0(@types/node@25.8.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react-test-renderer@19.2.6(react@19.2.6))(react@19.2.6) + version: 13.3.3(jest@29.7.0(@types/node@25.9.1))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react-test-renderer@19.2.6(react@19.2.6))(react@19.2.6) '@types/jest': specifier: ^29.5.14 version: 29.5.14 '@types/react': - specifier: ~19.2.14 - version: 19.2.14 + specifier: ~19.2.15 + version: 19.2.15 jest-expo: specifier: ^55.0.17 - version: 55.0.17(@babel/core@7.29.0)(canvas@3.2.3)(expo@55.0.24)(jest@29.7.0(@types/node@25.8.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + version: 55.0.17(@babel/core@7.29.0)(canvas@3.2.3)(expo@55.0.24)(jest@29.7.0(@types/node@25.9.1))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react-test-renderer: specifier: ^19.2.6 version: 19.2.6(react@19.2.6) @@ -510,7 +510,7 @@ importers: version: 6.0.2 drizzle-orm: specifier: 'catalog:' - version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(expo-sqlite@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(pg@8.20.0)(postgres@3.4.9) + version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(expo-sqlite@55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(pg@8.20.0)(postgres@3.4.9) isbot: specifier: ^5.1.40 version: 5.1.40 @@ -533,8 +533,8 @@ importers: specifier: 'catalog:' version: 7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6) ws: - specifier: ^8.20.1 - version: 8.20.1 + specifier: ^8.21.0 + version: 8.21.0 y-codemirror.next: specifier: ^0.3.5 version: 0.3.5(@codemirror/state@6.6.0)(@codemirror/view@6.43.0)(yjs@13.6.30) @@ -550,28 +550,28 @@ importers: devDependencies: '@react-router/dev': specifier: 'catalog:' - version: 7.15.1(@react-router/serve@7.15.1(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@5.9.3))(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(terser@5.47.1)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(yaml@2.9.0) + version: 7.15.1(@react-router/serve@7.15.1(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@5.9.3))(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(terser@5.48.0)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(yaml@2.9.0) '@tailwindcss/vite': specifier: 'catalog:' - version: 4.3.0(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) + version: 4.3.0(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) '@types/leaflet.markercluster': specifier: ^1.5.6 version: 1.5.6 '@types/react': specifier: 'catalog:' - version: 19.2.14 + version: 19.2.15 '@types/react-dom': specifier: 'catalog:' - version: 19.2.3(@types/react@19.2.14) + version: 19.2.3(@types/react@19.2.15) '@types/ws': specifier: ^8.18.1 version: 8.18.1 '@vitest/browser': - specifier: ^4.1.6 - version: 4.1.6(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.6) + specifier: ^4.1.7 + version: 4.1.7(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.7) '@vitest/browser-playwright': - specifier: ^4.1.6 - version: 4.1.6(playwright@1.60.0)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.6) + specifier: ^4.1.7 + version: 4.1.7(playwright@1.60.0)(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.7) leaflet.markercluster: specifier: ^1.5.3 version: 1.5.3(leaflet@1.9.4) @@ -586,7 +586,7 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) + version: 8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) packages/api: dependencies: @@ -598,7 +598,7 @@ importers: dependencies: drizzle-orm: specifier: 'catalog:' - version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(expo-sqlite@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(pg@8.20.0)(postgres@3.4.9) + version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(expo-sqlite@55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(pg@8.20.0)(postgres@3.4.9) postgres: specifier: 'catalog:' version: 3.4.9 @@ -610,8 +610,8 @@ importers: packages/fit: dependencies: '@garmin/fitsdk': - specifier: ^21.202.0 - version: 21.202.0 + specifier: ^21.205.0 + version: 21.205.0 '@trails-cool/gpx': specifier: workspace:* version: link:../gpx @@ -646,7 +646,7 @@ importers: version: 19.2.6 react-i18next: specifier: '>=17' - version: 17.0.8(i18next@26.2.0(typescript@5.9.3))(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + version: 17.0.8(i18next@26.2.0(typescript@5.9.3))(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) packages/jobs: dependencies: @@ -1809,9 +1809,25 @@ packages: react-native: optional: true + '@expo/cli@55.0.32': + resolution: {integrity: sha512-fq+/yUYBVw5ZudT4igNyJ3WaF17R39iS7EZlrkfHkLI7Y1kmUlivabwKviLoAfepJOKjKODKpViti9EPfmG3SQ==} + hasBin: true + peerDependencies: + expo: '*' + expo-router: '*' + react-native: '*' + peerDependenciesMeta: + expo-router: + optional: true + react-native: + optional: true + '@expo/code-signing-certificates@0.0.6': resolution: {integrity: sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==} + '@expo/config-plugins@55.0.10': + resolution: {integrity: sha512-1txnRnMLIO5lM/Of/VyvDkCwZap0YFvCyfSTIlUQamhwhx6Rh7r8TXfcIstaDYUQ7X6GTMkNxLXWbcYS6ZAFDw==} + '@expo/config-plugins@55.0.9': resolution: {integrity: sha512-jLfpxru8dTo7eU0cqeTWuQav7byyjb37eF/mbXl1/3eTBHBvFU1VGxpeKxanUdTQAAjqzH8KGgWb0fWcce+z1w==} @@ -1846,16 +1862,30 @@ packages: resolution: {integrity: sha512-RJtGFfj/ygO/6zcVbV3cckHf4THcEkv5IZft1GjCB3dfT6axvzvIwXE9EiQqQYmGHcQ+ZrvC8xZcIhiHba0pYg==} engines: {node: '>=20.12.0'} + '@expo/env@2.3.0': + resolution: {integrity: sha512-9HnnIbzwTTdbwSjNLXTk0fPm9ZwMJ7c1/31tsni8HZ8Q62KzYCyspahH+V365vg5J6lr001DzNwBxVWSaYCQLg==} + engines: {node: '>=20.12.0'} + '@expo/fingerprint@0.16.7': resolution: {integrity: sha512-BH8sicYOqZ1iBMwCVEGIz6uTTfylosjc49FoMmCYIzKOiYdiVehsfoYBwyfxwWIiya1VMhm1gv0cgOP8fxHpDw==} hasBin: true + '@expo/fingerprint@0.19.2': + resolution: {integrity: sha512-+/cBrRHiHmldvT8ZPrrHobAOMTUTzOq6Qpr1YLSoIg0J9hbEkJOg9vUvpxiLNWSQY0eKtVTvMO03EIdPC2aQdQ==} + hasBin: true + '@expo/image-utils@0.8.14': resolution: {integrity: sha512-5Sn+jG4Cw+shC2wDMXoqSAJnvERbiwzHn05FpWtD5IBflfTIs5gUmjzwiGVyjOdlMSQhgRrw/AymPbmO9h9mpQ==} '@expo/json-file@10.0.14': resolution: {integrity: sha512-yWwBFywFv+SxkJp/pIzzA416JVYflNUh7pqQzgaA6nXDqRyK7KfrqVzk8PdUfDnqbBcaZZxpzNssfQZzp5KHrA==} + '@expo/json-file@10.0.15': + resolution: {integrity: sha512-xLtsy1820Rf2myhhIc7WmfoUg5cWEJB9tEylhgGhRF/acYGuUXUVkKHYoHY31GbYf6CIZNvipTFxuvWRpVlXTw==} + + '@expo/json-file@10.2.0': + resolution: {integrity: sha512-S6XzKe3R9GQeHiUPXc3xJjOv2VJhOEwFYf7xdC2z2cUqt3kZJ9mSO877sNQloVdnW/SUCtPY3bexlM7nwq+CAQ==} + '@expo/local-build-cache-provider@55.0.13': resolution: {integrity: sha512-Vg5BE10UL+0yg3BVtIeiSoeHU31Qe1m3UxhBPS478ACY1zzKuxZE30x2sym/B2OIWypjmPzXDRt8J9TOGFuFNw==} @@ -1875,6 +1905,14 @@ packages: expo: optional: true + '@expo/metro-config@55.0.23': + resolution: {integrity: sha512-Mkw3Ss/1LFlafH3iie3r9E13yKMyJgZqGTEkGviGf6LYp51eY5fR8ATbXrNsH69wVc2z+ty4lT/8lEA18YJv7g==} + peerDependencies: + expo: '*' + peerDependenciesMeta: + expo: + optional: true + '@expo/metro-runtime@55.0.11': resolution: {integrity: sha512-4KKi/jGrIEXi2YGu0hYTVr0CEeRJy5SXbCrz9+KDZkuD3ROwKNpM1DBawni5rhPVovFnR323HBck9GaxhnfrRw==} peerDependencies: @@ -1893,12 +1931,22 @@ packages: resolution: {integrity: sha512-wbuj3EebM7W9hN/Wp4xTzKd6rQ2zKJzAxkFxkOOwyysLp0HOAgQ4/5RINyoS241pZUX2rUHq7mAJ7pcCQ8U0Ow==} engines: {node: '>=12'} + '@expo/osascript@2.6.0': + resolution: {integrity: sha512-QvqDBlJXa8CS2vRORJ4wEflY1m0vVI07uSJdIRgBrLxRPBcsrXxrtU7+wXRXMqfq9zLwNP9XbvRsXF2omoDylg==} + engines: {node: '>=12'} + '@expo/package-manager@1.10.5': resolution: {integrity: sha512-nCP9Mebfl3jvOr0/P6VAuyah6PAtun+aihIL2zAtuE8uSe94JWkVZ7051i0MUVO+y3gFpBqnr8IIH5ch+VJjHA==} + '@expo/package-manager@1.12.0': + resolution: {integrity: sha512-SWr6093nwBjn94cvElsYZNUnhvs+XtUatUz3h0vAn0IbaWG0B6l/V5ZfOBptX/xq6rMpFG5ibIf/eckLSXw8Gg==} + '@expo/plist@0.5.3': resolution: {integrity: sha512-jz5oPcPDd3fygwVxwSwmO6wodTwm0Qa14NUyPy0ka7H8sFmCtNZUI2+DzVe/EXjOhq1FbEjrwl89gdlWYOnVjQ==} + '@expo/plist@0.5.4': + resolution: {integrity: sha512-Jqppj0FULNq6Zp5JtQrFICl8TtpMjwwUbxEcEC2T3z7m+TOrTQEHZXz3D3Ay7vhbmvD+VMgfWJ4ARclJXeN8Eg==} + '@expo/prebuild-config@55.0.18': resolution: {integrity: sha512-2oKXyy5pyM87DJqXW5Z+Sakle6rApFFtpPhWOiNsOdoh6rOAD+EqVgyrs2OEEic8CE0tTt27w3SRfSZe/PZrxg==} peerDependencies: @@ -1934,14 +1982,36 @@ packages: react-server-dom-webpack: optional: true + '@expo/router-server@55.0.18': + resolution: {integrity: sha512-W0VsvIiR48OvdlAOUlag4qspGYT/DV4srfYowlbYxwZh5Qw0MjiZAID4Zt7F0qynGZZxx8OZPpFhIX7XsqtRmg==} + peerDependencies: + '@expo/metro-runtime': ^55.0.11 + expo: '*' + expo-constants: ^55.0.16 + expo-font: ^55.0.8 + expo-router: '*' + expo-server: ^55.0.11 + react: ^19.2.5 + react-dom: ^19.2.6 + 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 + '@expo/schema-utils@55.0.4': resolution: {integrity: sha512-65IdeeE8dAZR3n3J5Eq7LYiQ8BFGeEYCWPBCzycvafL7PkskbCyIclTQarRwf/HXFoRvezKCjaLwy/8v9Prk6g==} '@expo/sdk-runtime-versions@1.0.0': resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} - '@expo/spawn-async@1.7.2': - resolution: {integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==} + '@expo/spawn-async@1.8.0': + resolution: {integrity: sha512-eb9xxd/LbuEGSdua4NumCu/McVB9EM+F/JxB9pWgnERw4HQ9XyTNH1KapG6oqLWR8TuRK2LQfzJlmNi94CVobw==} engines: {node: '>=12'} '@expo/sudo-prompt@9.3.2': @@ -1971,8 +2041,8 @@ packages: engines: {node: '>=20.19.0'} hasBin: true - '@garmin/fitsdk@21.202.0': - resolution: {integrity: sha512-WeveKUCKZSehRdM6JY/n0embblH18z5sY0KkJye5Z9nJ8Qv2S6EEmoSuBrW2ew45OtTGph0bu4/jxlO6VRP+Qw==} + '@garmin/fitsdk@21.205.0': + resolution: {integrity: sha512-oSfiJVQ3BQlNxfc1f7XUBDn8yuHOdiP5jW21p6zjuBq0KPQfXWe6SU66yZdCNYliyBmKcfC3Gjd9osiKfR52Dg==} '@geoman-io/leaflet-geoman-free@2.19.3': resolution: {integrity: sha512-HjbEpfAEUs0NyI1Dhvz3SMVG6m0pAN/1Eo0tRKsz9cpaROTrFtmJGY22swEir1Uj/8IeGF1NJId38C5Fu+nZGQ==} @@ -3253,50 +3323,26 @@ packages: cpu: [x64] os: [win32] - '@sentry-internal/browser-utils@10.51.0': - resolution: {integrity: sha512-lNKBS4P7RUvf1niojXQWe9bU3gnBUCbST4Dj0pSiyat1N96cXVyHkeE+uGxowD0RrVWhs+kGHiVX3FcmRWF6sA==} - engines: {node: '>=18'} - '@sentry-internal/browser-utils@10.53.1': resolution: {integrity: sha512-X4d6y8sBMjmNhcDW4eMBU3ASsNIMz8dqaFkhyIMN/dkYr/yZKnbRZPaVuVUGvHKjnlficPpIH0/HK9KBjrYxPw==} engines: {node: '>=18'} - '@sentry-internal/feedback@10.51.0': - resolution: {integrity: sha512-bCM95bcpphx28e6aU0bwRLxOgwosYsdNzezM1sM0pVOkb0TB3hDFRamramVDK+/Hp1o8qmRxS4c5w/A7YBZGkA==} - engines: {node: '>=18'} - '@sentry-internal/feedback@10.53.1': resolution: {integrity: sha512-vVpTI/aEYN5d9IgZeYJWMqVaN0+iFgidSrYNAsZTh1US5sJUzF/wrl+68KdpmCtFROrN3jiAn1oPSwL5CKvEJA==} engines: {node: '>=18'} - '@sentry-internal/replay-canvas@10.51.0': - resolution: {integrity: sha512-8PW1Pp+Yl3lPwYqhBCr5SgkuhDanu9ZLzUqD2bPKL/ElqbM2eDVIWxq4z4ZzePrmZa6IcCjTv6sVQJ7Z4dLyLA==} - engines: {node: '>=18'} - '@sentry-internal/replay-canvas@10.53.1': resolution: {integrity: sha512-aueLaf/2prExwA76BGU5/bOXCKWqtt6jQXWA6WJQNrmKpPEtZJB4ypnpsou0McXQCF8tur2Y8U0TEkwQP13yJQ==} engines: {node: '>=18'} - '@sentry-internal/replay@10.51.0': - resolution: {integrity: sha512-jCpI5HXSwK6ZT2HX70+mDRciAocHzSiDk4DTgvzV69Wvd+Ei5WLgE+d39eaEPsm8lUC0Ydntb5sJIB6uG9D4bw==} - engines: {node: '>=18'} - '@sentry-internal/replay@10.53.1': resolution: {integrity: sha512-wZNzTBYkgGUPWMuUQv7L64+OJmoCnz7GQNiTrTFK6EVAjJXFBCSsPp/nhif0bLhbk8+0g4xz633uOhpXuQbFdw==} engines: {node: '>=18'} - '@sentry/babel-plugin-component-annotate@5.2.1': - resolution: {integrity: sha512-QQ9AL5EXIbSK26ObLVtiU6l3tCUdpGSJ/6VwDkPhC3qvtoksSlcoU9Yzm7XC0NBcvu1N2abL5R7gckKGZ4JewQ==} - engines: {node: '>= 18'} - '@sentry/babel-plugin-component-annotate@5.3.0': resolution: {integrity: sha512-p4q8gn8wcFqZGP/s2MnJCAAd8fTikaU6A0mM97RDHQgStcrYiaS0Sc5zUNfb1V+UOLPuvdEdL6MwyxfzjYJQTA==} engines: {node: '>= 18'} - '@sentry/browser@10.51.0': - resolution: {integrity: sha512-Zdc0sKfenxUtW/OGhtJ7xHFN44bXR7YqxJ1zBDzlZfW0nTbeTTUZBq9z5NUw6qdS0Vs/i3V4qzAKTbRKWfqSEA==} - engines: {node: '>=18'} - '@sentry/browser@10.53.1': resolution: {integrity: sha512-zXF373hzUOGzUOrqd8xb1U3LQi5uYC3mwv+z5OMKUUinQlu30tTWBs7ypy6YTchtix9QlYaHWlayUF8vBZ5UjA==} engines: {node: '>=18'} @@ -3305,30 +3351,24 @@ packages: resolution: {integrity: sha512-L5T60sWdAI3qWwdg3Ptwek/0TY59PERrxyqp4XMUkroayQvGd9r5dIW9Q1kSeXX9iJ442nXbFZKAOyCKV4Z13Q==} engines: {node: '>= 18'} - '@sentry/cli-darwin@2.58.5': - resolution: {integrity: sha512-lYrNzenZFJftfwSya7gwrHGxtE+Kob/e1sr9lmHMFOd4utDlmq0XFDllmdZAMf21fxcPRI1GL28ejZ3bId01fQ==} + '@sentry/cli-darwin@2.58.6': + resolution: {integrity: sha512-udAVvcyfNa0R+95GvPz/+43/N3TC0TYKdkQ7D7jhPSzbcMc7l2fxRNN5yB3UpCA5fWFnW4toeaqwDBhb/Wh3LA==} engines: {node: '>=10'} os: [darwin] - '@sentry/cli-darwin@3.4.1': - resolution: {integrity: sha512-44foor4g/nfFaOaEZYQnxBrAW7TOMO4LatYsRjPI8dAoqXNVsl+P77FIk0gGAFnTwbt5gREXeeOn6j8DA9NyZg==} - engines: {node: '>=18'} - os: [darwin] - '@sentry/cli-darwin@3.4.2': resolution: {integrity: sha512-MMCkBxj8l5IolwJyf7mv5v/rKOdZS8YCVmXUzv+H75j28j2lvLfsScWh0YaRkzv6+ATYkG1Z5g2J1alv91OuYQ==} engines: {node: '>=18'} os: [darwin] - '@sentry/cli-linux-arm64@2.58.5': - resolution: {integrity: sha512-/4gywFeBqRB6tR/iGMRAJ3HRqY6Z7Yp4l8ZCbl0TDLAfHNxu7schEw4tSnm2/Hh9eNMiOVy4z58uzAWlZXAYBQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux, freebsd, android] - - '@sentry/cli-linux-arm64@3.4.1': - resolution: {integrity: sha512-rYWeBxVEiYMZ5hUe16qkpCmJQBc+lxT50sls/CqO5WTN3VlrSRlJsd+jMTKUNesM0j4PMEi82Xy7rovD8a+2tA==} + '@sentry/cli-darwin@3.4.3': + resolution: {integrity: sha512-KUeP9d0rQ9L/A4SU9U6K8fMeRaWLV24FVH9JE6V6tbi4S9feJwKjfXXCpsqTk87Do5k0sohaz4SFiOkbypePLA==} engines: {node: '>=18'} + os: [darwin] + + '@sentry/cli-linux-arm64@2.58.6': + resolution: {integrity: sha512-q8mEcNNmeXMy5i+jWT30TVpH7LcP4HD21CD5XRSPAd/a912HF6EpK0ybf/1USO14WOhoXbAGi9txwaWabSe33g==} + engines: {node: '>=10'} cpu: [arm64] os: [linux, freebsd, android] @@ -3338,15 +3378,15 @@ packages: cpu: [arm64] os: [linux, freebsd, android] - '@sentry/cli-linux-arm@2.58.5': - resolution: {integrity: sha512-KtHweSIomYL4WVDrBrYSYJricKAAzxUgX86kc6OnlikbyOhoK6Fy8Vs6vwd52P6dvWPjgrMpUYjW2M5pYXQDUw==} - engines: {node: '>=10'} - cpu: [arm] + '@sentry/cli-linux-arm64@3.4.3': + resolution: {integrity: sha512-DPu03ywFtmBC/mtQ2+oWZDPHn9hYPLCYNgSxgBkHKrbYcgv4uJLTrl84at3NI/CU8VnpUbx+oeq03chmezZBPA==} + engines: {node: '>=18'} + cpu: [arm64] os: [linux, freebsd, android] - '@sentry/cli-linux-arm@3.4.1': - resolution: {integrity: sha512-XIT4ICA86vwrZWfbvKRiY9HgMg1aJNv1VJgNuiWu/3ysk0H4U7U4rJl6SQNbthgNGpcxvFdXmHbujKv7VZdv5w==} - engines: {node: '>=18'} + '@sentry/cli-linux-arm@2.58.6': + resolution: {integrity: sha512-pD0LAt5PcUzAinBwvDqc66x9+2CabHEv486yP0gRjWO7SakbaxmfVq/EXd8VLq/Tzi39LAu422UYK1lpW3MILw==} + engines: {node: '>=10'} cpu: [arm] os: [linux, freebsd, android] @@ -3356,15 +3396,15 @@ packages: cpu: [arm] os: [linux, freebsd, android] - '@sentry/cli-linux-i686@2.58.5': - resolution: {integrity: sha512-G7261dkmyxqlMdyvyP06b+RTIVzp1gZNgglj5UksxSouSUqRd/46W/2pQeOMPhloDYo9yLtCN2YFb3Mw4aUsWw==} - engines: {node: '>=10'} - cpu: [x86, ia32] + '@sentry/cli-linux-arm@3.4.3': + resolution: {integrity: sha512-3dPFWfaB5g31KnwKuQwHboXfh9+m2Gzk/i6eoQsbMamGQWVguQRHn1mZ1PmGykEMvWH3YFopMcfjPt4euNG/ag==} + engines: {node: '>=18'} + cpu: [arm] os: [linux, freebsd, android] - '@sentry/cli-linux-i686@3.4.1': - resolution: {integrity: sha512-yirtGGummlarcrPmIm4cg5vEA5gYnL/GJ6FLV6yfq1zAeMzEWnl7kaWIVsoTZ8qBi7vmHpy0APlH5LXxK4QXNw==} - engines: {node: '>=18'} + '@sentry/cli-linux-i686@2.58.6': + resolution: {integrity: sha512-q8vNJi1eOV/4vxAFWBsEwLHoSYapaZHIf4j76KJGJXFKTkEbsjCOOsKbwUIBTQQhRgV4DFWh3ryfsPS/que4Kg==} + engines: {node: '>=10'} cpu: [x86, ia32] os: [linux, freebsd, android] @@ -3374,15 +3414,15 @@ packages: cpu: [x86, ia32] os: [linux, freebsd, android] - '@sentry/cli-linux-x64@2.58.5': - resolution: {integrity: sha512-rP04494RSmt86xChkQ+ecBNRYSPbyXc4u0IA7R7N1pSLCyO74e5w5Al+LnAq35cMfVbZgz5Sm0iGLjyiUu4I1g==} - engines: {node: '>=10'} - cpu: [x64] + '@sentry/cli-linux-i686@3.4.3': + resolution: {integrity: sha512-7Jvx+TZLWJJiKCua6YRDXnE+juSuHP4Tw80HzVtEGTgrgGVJTn2VRCwgDQjPKNrRvjeOK7M6/TnFECOqa750xw==} + engines: {node: '>=18'} + cpu: [x86, ia32] os: [linux, freebsd, android] - '@sentry/cli-linux-x64@3.4.1': - resolution: {integrity: sha512-r2wJq9Bt1eRFtnAo3vWACfAN3IdV5gRfLnH8rbtDsg7pqdM0MP7tgAjzJDLptLGP02ndPhJfeJ1mXjcDY1MqqQ==} - engines: {node: '>=18'} + '@sentry/cli-linux-x64@2.58.6': + resolution: {integrity: sha512-DZu956Mhi3ZRjTBe1WdbGV46ldVbA8d2rgp/fh51GsI25zjBHah4wZnPTSzpc+YqxU6pJpg579B/r3jrIK530Q==} + engines: {node: '>=10'} cpu: [x64] os: [linux, freebsd, android] @@ -3392,15 +3432,15 @@ packages: cpu: [x64] os: [linux, freebsd, android] - '@sentry/cli-win32-arm64@2.58.5': - resolution: {integrity: sha512-AOJ2nCXlQL1KBaCzv38m3i2VmSHNurUpm7xVKd6yAHX+ZoVBI8VT0EgvwmtJR2TY2N2hNCC7UrgRmdUsQ152bA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@sentry/cli-win32-arm64@3.4.1': - resolution: {integrity: sha512-IWg2FeB9OzxDky3q885MqepN2QEujyGdbcCB0VbHB3zRpT2D2fbk87FIy64JGoZkPVmoI4d7Mbxa+XKFS4jlrw==} + '@sentry/cli-linux-x64@3.4.3': + resolution: {integrity: sha512-2opnMFIx/c1lRqW0SiKMy2q3ChuB7tCadfS8WEJKAMdfQLQrSQmyW/9fhBGK9fDSMqGFVoxU6aaSS89GKnkN8g==} engines: {node: '>=18'} + cpu: [x64] + os: [linux, freebsd, android] + + '@sentry/cli-win32-arm64@2.58.6': + resolution: {integrity: sha512-nj0Ff/kmAB73EPDhR8B4O9r+NUHK5GkPCkGWC+kXVemqAJWL5jcJ5KdxG0l/S0z6RoEoltID8/43/B+TaMlT7A==} + engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -3410,15 +3450,15 @@ packages: cpu: [arm64] os: [win32] - '@sentry/cli-win32-i686@2.58.5': - resolution: {integrity: sha512-EsuboLSOnlrN7MMPJ1eFvfMDm+BnzOaSWl8eYhNo8W/BIrmNgpRUdBwnWn9Q2UOjJj5ZopukmsiMYtU/D7ml9g==} - engines: {node: '>=10'} - cpu: [x86, ia32] + '@sentry/cli-win32-arm64@3.4.3': + resolution: {integrity: sha512-7Nup5qlbogV99zGcgreTqkUy3IRK1C4T3NYTDVO4iu36E31V0pOqyjqh5WSS/6jf9TkDugmkieSv+UjfKwZMFQ==} + engines: {node: '>=18'} + cpu: [arm64] os: [win32] - '@sentry/cli-win32-i686@3.4.1': - resolution: {integrity: sha512-RlKYU1Cdyk0uqRa9llKA6yVxg2QK0CXX0bogv89lIfABgZ4o1o45zcwVmEQLrD5rrIQmUcIJHWysQVnSyydJkA==} - engines: {node: '>=18'} + '@sentry/cli-win32-i686@2.58.6': + resolution: {integrity: sha512-WNZiDzPbgsEMQWq4avsQ391v/xWKJDIWWWo9GYl+N/w5qcYKkoDW7wQG7T9FasI6ENn68phChTOAPXXxbfAdOg==} + engines: {node: '>=10'} cpu: [x86, ia32] os: [win32] @@ -3428,15 +3468,15 @@ packages: cpu: [x86, ia32] os: [win32] - '@sentry/cli-win32-x64@2.58.5': - resolution: {integrity: sha512-IZf+XIMiQwj+5NzqbOQfywlOitmCV424Vtf9c+ep61AaVScUFD1TSrQbOcJJv5xGxhlxNOMNgMeZhdexdzrKZg==} - engines: {node: '>=10'} - cpu: [x64] + '@sentry/cli-win32-i686@3.4.3': + resolution: {integrity: sha512-ENQtxeeH/jc2FRDSbPDs7RSy4+27RFFa8SxYnQUjWVCxCTgh0w3lfE61RzqWcvQ+4D04g/tPbb3TKMtTQIdcRw==} + engines: {node: '>=18'} + cpu: [x86, ia32] os: [win32] - '@sentry/cli-win32-x64@3.4.1': - resolution: {integrity: sha512-MgKSglGeD+zOIEdbZrt+P9v9ExkMrHKwlIK8hnJA8qNVjmPuOW9yR4khzdVIYd3cdujAQQhLcV3gEB9ceR4PxQ==} - engines: {node: '>=18'} + '@sentry/cli-win32-x64@2.58.6': + resolution: {integrity: sha512-R35WJ17oF4D2eqI1DR2sQQqr0fjRTt5xoP16WrTu91XM2lndRMFsnjh+/GttbxapLCBNlrjzia99MJ0PZHZpgA==} + engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -3446,14 +3486,15 @@ packages: cpu: [x64] os: [win32] - '@sentry/cli@2.58.5': - resolution: {integrity: sha512-tavJ7yGUZV+z3Ct2/ZB6mg339i08sAk6HDkgqmSRuQEu2iLS5sl9HIvuXfM6xjv8fwlgFOSy++WNABNAcGHUbg==} - engines: {node: '>= 10'} - hasBin: true + '@sentry/cli-win32-x64@3.4.3': + resolution: {integrity: sha512-pd69Woj4U1L/T+t0kmxNx+1GM096tcQg1NQH34IqwrE+tRiui0IKW3euu2E3bcu4ckJWlNmNHwXpONgZELK4EQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] - '@sentry/cli@3.4.1': - resolution: {integrity: sha512-xY9WcIg+/B/bJxY1KbP0XrDZGPQaFNjIOVJbXNbwVtRujiG6DEwVHqGJhADjPa8rilLQVDOUumVMwLbAUCmh6A==} - engines: {node: '>= 18'} + '@sentry/cli@2.58.6': + resolution: {integrity: sha512-baBcNPLLfUi9WuL+Tpri9BFaAdvugZIKelC5X0tt0Zdy+K0K+PCVSrnNmwMWU/HyaF/SEv6b6UHnXIdqanBlcg==} + engines: {node: '>= 10'} hasBin: true '@sentry/cli@3.4.2': @@ -3461,16 +3502,17 @@ packages: engines: {node: '>= 18'} hasBin: true - '@sentry/core@10.51.0': - resolution: {integrity: sha512-Y45V/YXvVLEXmOdkbD1oG1gkRWFi9guCEGg3PlIlIpRjAbZUrvLGgjRJIc1E7XpSzmOnWbs5BbUxMv4PDaPj2w==} - engines: {node: '>=18'} + '@sentry/cli@3.4.3': + resolution: {integrity: sha512-sUhfoIWwkVdM2SVtUdIgfY/3p1z369dYYNOZqPjB/7mpiv4owVVS0BD2Aedx8LdBJaTzRcIzSJMhuJ6vcIiSCg==} + engines: {node: '>= 18'} + hasBin: true '@sentry/core@10.53.1': resolution: {integrity: sha512-XG4ezlkyuAPjBC5+9kXC94rXXuqYTw9NRhfaDHssbTFaGnqBR8vQX2UUgZfY7ucbeelRDGfBu1sywoU+mB04uA==} engines: {node: '>=18'} - '@sentry/expo-upload-sourcemaps@8.11.1': - resolution: {integrity: sha512-xtWJqJotkZGI6M5luexR+9PJKudZHrrKTQ97rbnEBlM6G9CU9FzgLuJzgrxC4+hdM9h21VhIblam3IUtcK2bUg==} + '@sentry/expo-upload-sourcemaps@8.12.0': + resolution: {integrity: sha512-SU32x+Le8jOB12T3gfcihd+X+gCYBYtaS6ijQyx9vPo6xGBKumET5DF+MjNCnrtHxqb0yQROeR48y0qfh51MWg==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -3519,8 +3561,8 @@ packages: '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 '@opentelemetry/semantic-conventions': ^1.39.0 - '@sentry/react-native@8.11.1': - resolution: {integrity: sha512-TpGWoyNrPNKe3AN6/I2e+C3Z0iCXvw3HQeZwORRg+6vks1eLhCPTQsN49qoUiyQEAI49Sxxv+fbfA5dM+FijPA==} + '@sentry/react-native@8.12.0': + resolution: {integrity: sha512-ZQMfi2cw3tZuGcdD4mU4yJWu84c+YO0iu+hNuPDwKqVMJBofaU9wE3F0VBOqI7lwzuxmy6m0LTJVpAkKUQjOyg==} hasBin: true peerDependencies: expo: '>=49.0.0' @@ -3530,12 +3572,6 @@ packages: expo: optional: true - '@sentry/react@10.51.0': - resolution: {integrity: sha512-RRHHqjNvjji6ebIqdlAr453AkST8Vm4cxdu1vWm772IgbzTO7Jx46Cj6Bt2/GjMyH0YLE5euDaAOQhFMmpvAOw==} - engines: {node: '>=18'} - peerDependencies: - react: ^19.2.5 - '@sentry/react@10.53.1': resolution: {integrity: sha512-lrwNq5T/zW84l60894TpKHPcvFuc1I/Hnohecc0TfYVpIcYYuw2orCHoU4v4wgkFaJUpegVetbgdOphViyLVjA==} engines: {node: '>=18'} @@ -3551,8 +3587,8 @@ packages: rollup: optional: true - '@sentry/types@10.51.0': - resolution: {integrity: sha512-/0nTcXk82RKtGGv0mxmY56o+BE85lBuSWG9chtSEfeypvxHFyWn3D7td9rPmjboDMtytC24cYbUzx55jb2OjQA==} + '@sentry/types@10.53.1': + resolution: {integrity: sha512-RpVZK6kK/2920PMIqITTyJPLeddfFsLbJcIjO9GDTC8PPQY8C/I4HCBTZetHfhVtx70HM9wAgBy3tKs5U8qsCQ==} engines: {node: '>=18'} '@sentry/vite-plugin@5.3.0': @@ -3889,6 +3925,9 @@ packages: '@types/node@25.8.0': resolution: {integrity: sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ==} + '@types/node@25.9.1': + resolution: {integrity: sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==} + '@types/nodemailer@8.0.0': resolution: {integrity: sha512-fyf8jWULsCo0d0BuoQ75i6IeoHs47qcqxWc7yUdUcV0pOZGjUTTOvwdG1PRXUDqN/8A64yQdQdnA2pZgcdi+cA==} @@ -3906,8 +3945,8 @@ packages: '@types/react-test-renderer@19.1.0': resolution: {integrity: sha512-XD0WZrHqjNrxA/MaR9O22w/RNidWR9YZmBdRGI7wcnWGrv/3dA8wKCJ8m63Sn+tLJhcjmuhOi629N66W6kgWzQ==} - '@types/react@19.2.14': - resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + '@types/react@19.2.15': + resolution: {integrity: sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q==} '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -3927,63 +3966,63 @@ packages: '@types/yargs@17.0.35': resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - '@typescript-eslint/eslint-plugin@8.59.3': - resolution: {integrity: sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==} + '@typescript-eslint/eslint-plugin@8.59.4': + resolution: {integrity: sha512-PegsU+XfyJJNjd4+u/k6f9yTyp0lEXXiPopUNobZcIAUJFGICFLN+sP0Rb3JehVmiij1Ph0dFGYqODoRo/2+6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.59.3 + '@typescript-eslint/parser': ^8.59.4 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.59.3': - resolution: {integrity: sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==} + '@typescript-eslint/parser@8.59.4': + resolution: {integrity: sha512-zORHqO/tuhxY1zWuTvMUqddRxpiFJ72xVfcNoWpqdLjs6lfPbuQBJuW4pk+49/uBMy7Ssr4bzgjiKmmDB1UbZQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.59.3': - resolution: {integrity: sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==} + '@typescript-eslint/project-service@8.59.4': + resolution: {integrity: sha512-Ly00Vu4oAacfDeHp2Zg85ioNG6l8HG+tN1D7J+xTHSxu9y0awYKJ2zH1rFBn8ZSfuGK+7FxK3Cgl3uAz0aZZLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.59.3': - resolution: {integrity: sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==} + '@typescript-eslint/scope-manager@8.59.4': + resolution: {integrity: sha512-mUeR/3H1WrTAddJrwut8OoPjfauaztMQmRwV5fQTUyNVJCLiUXXe4lGEyYIL2oFDpP7UtgbGJXCt72wT0z2S3Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.59.3': - resolution: {integrity: sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==} + '@typescript-eslint/tsconfig-utils@8.59.4': + resolution: {integrity: sha512-DLCpnKgD4alVxTBSKulK+gU1KCqOgUXfDRDXh2mZgzokQKa/70ax93I2uVO3m/LLvIAtWZIFoiifudmIqAxpMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.59.3': - resolution: {integrity: sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==} + '@typescript-eslint/type-utils@8.59.4': + resolution: {integrity: sha512-uonTuPAAKr9XaBGqJ3LjYTh72zy5DyGesljO9gtmk/eFW0W1fRHjnwVYKB35Lm8d5Q5CluEW3gPHjTvZTmgrfA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.59.3': - resolution: {integrity: sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==} + '@typescript-eslint/types@8.59.4': + resolution: {integrity: sha512-F1o7WJcCq+bc8dwcO/YsSEOudAH8RDtaOhM6wcAQhcUsFhnWQl81JKy48q1hoxAU0qrzM89+31GYh1515Zde3Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.59.3': - resolution: {integrity: sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==} + '@typescript-eslint/typescript-estree@8.59.4': + resolution: {integrity: sha512-F+RuOmcDXo4+TPdfd/TCLS3m2nw8gE9XXyZLrA3JBfaA5tz9TtdkyD3YJFmPxulyc2cKbEok/CvFE3MgSLWnag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.59.3': - resolution: {integrity: sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==} + '@typescript-eslint/utils@8.59.4': + resolution: {integrity: sha512-cYXeNAUsG4lJo5dbc1FcKm+JwIWrj1/UpTORsC6tGMjEZ81DYcvIr9/ueikhMa/Y/gDQYGp+YX9/xQrXje5BJw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.59.3': - resolution: {integrity: sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==} + '@typescript-eslint/visitor-keys@8.59.4': + resolution: {integrity: sha512-U3gxVaDVnuZKhSspW/MzMxE1kq7zOdc072FcSNoqA1I9p8HyKbBFfEHoWckBAMgNMph4MamwS5iTVzFmrnt8TQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.1': @@ -3995,22 +4034,22 @@ packages: peerDependencies: vite: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@vitest/browser-playwright@4.1.6': - resolution: {integrity: sha512-4csoeyl/qwHyxU2zNL0++WaoDr8YJDXOQPwWPNJoTZ+QzcdO3INYKgF5Zfz730Io7zbkuv914aZmfQ+QE+1Hvw==} + '@vitest/browser-playwright@4.1.7': + resolution: {integrity: sha512-OlTlJej7YN6VwV7zJJoNeaCsctF+JXpzpZ4oBHUbrQFfIq+0KW2f07rprCLh9N/zRIZ0v4Mchn1QDDmWMUhPKw==} peerDependencies: playwright: '*' - vitest: 4.1.6 + vitest: 4.1.7 - '@vitest/browser@4.1.6': - resolution: {integrity: sha512-ynsspTubXGSpa58JFJ24xIQt4z4A25epSbugEyaTmmrV1//Wec9EgE/LtoaC6yxUrXi5P7erGHRrkdZIHaVQuA==} + '@vitest/browser@4.1.7': + resolution: {integrity: sha512-N2JFGfXoEGVAut+kHeru9dD4BUMq/q5xDvBARNl0tUsly3m5KglLOu8VO/6MkDfOlgxXTycojkt6gBKsuyR+IQ==} peerDependencies: - vitest: 4.1.6 + vitest: 4.1.7 - '@vitest/expect@4.1.6': - resolution: {integrity: sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==} + '@vitest/expect@4.1.7': + resolution: {integrity: sha512-1R+tw0ortHEbZDGMymm+pN7/AFQ/RkFFdtd7EN+VBpynKmLbP8A3rpEXdshBJ7+8hQ9zBJh/i1s0yKNtxAnU7w==} - '@vitest/mocker@4.1.6': - resolution: {integrity: sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==} + '@vitest/mocker@4.1.7': + resolution: {integrity: sha512-vY7nuamKgfvpA1Koa3oYIw/k7D6kZnpGyNMZW8loow2bsBYla1TFdqTaXncWdRn4pgwNs+90RhnXhJScDwQeJA==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4020,20 +4059,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.6': - resolution: {integrity: sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==} + '@vitest/pretty-format@4.1.7': + resolution: {integrity: sha512-umgCarTOYQWIaDMvGDRZij+6b9oVeLIyJzfN+AS88e0ZOU3QTgNNSTtjQOpcvWr3np1N0j4WgZj+sb3oYBDscw==} - '@vitest/runner@4.1.6': - resolution: {integrity: sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==} + '@vitest/runner@4.1.7': + resolution: {integrity: sha512-BapjmAQ2aI78WdMEfeUWivnfVzB+VPGwWRQcJE0OUq7qEeEcBsCSf+0T5iREBNE5nBb4wA5Ya0W6IA+sghdEFw==} - '@vitest/snapshot@4.1.6': - resolution: {integrity: sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==} + '@vitest/snapshot@4.1.7': + resolution: {integrity: sha512-ZacLzja+TmJeZ1h14xW2FB/WpeimUD3haBXQPyJqxvo8jQTmfeA8zv58mtjN2C7EHXZDYVcVYdYmAxjkWVvKCw==} - '@vitest/spy@4.1.6': - resolution: {integrity: sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==} + '@vitest/spy@4.1.7': + resolution: {integrity: sha512-kbkI5LMWakyuTIvs6fUJ5qdIVb1XVKsYJAT4OJ938cHMROYMSfmoQdZy0aaAnjbbc8F61vkoTqz/Az+/HiIu5Q==} - '@vitest/utils@4.1.6': - resolution: {integrity: sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==} + '@vitest/utils@4.1.7': + resolution: {integrity: sha512-T532WBu791cBxJlCl6SO+J14l81DQx6uQHm1bQbmCDY7nqlEIgkza/UFnSBNaUtSf41unldDFjdOBYEQC4b5Hw==} '@xmldom/xmldom@0.8.13': resolution: {integrity: sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==} @@ -4245,6 +4284,21 @@ packages: expo-widgets: optional: true + babel-preset-expo@55.0.22: + resolution: {integrity: sha512-Se6kPnvCNN13jJVIa6JJvlmImVoVRzu9stagAbivCPcfrq2VNrsEiYpJZ1+H32kXinKW/y797/wctGuxPy0APw==} + peerDependencies: + '@babel/runtime': ^7.20.0 + expo: '*' + expo-widgets: ^55.0.19 + react-refresh: '>=0.14.0 <1.0.0' + peerDependenciesMeta: + '@babel/runtime': + optional: true + expo: + optional: true + expo-widgets: + optional: true + babel-preset-jest@29.6.3: resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5092,6 +5146,12 @@ packages: expo: '*' react-native: '*' + expo-file-system@55.0.22: + resolution: {integrity: sha512-T5Rfv3vqcFyhVrl/tEEeglc/J8LJbcZQgC3TMT5jxzIgUgWmIgJEgncGYqB/YNXFgUTL2LiuCvqrU51Dzp83NQ==} + peerDependencies: + expo: '*' + react-native: '*' + expo-font@55.0.7: resolution: {integrity: sha512-oH39Xb+3i6Y69b7YRP+P+5WLx7621t+ep/RAgLwJJYpTjs7CnSohUG+873rEtqsTAuQGi63ms7x9ZeHj1E9LYw==} peerDependencies: @@ -5099,6 +5159,13 @@ packages: react: ^19.2.5 react-native: '*' + expo-font@55.0.8: + resolution: {integrity: sha512-WyP75pnKqhLNktYwDn3xKAUNt5rLihRDv8XWGhhz6VEhVqypixpT86NA3uGtiDTlM3gGjhrYCY7o7ypXgCUOZg==} + peerDependencies: + expo: '*' + react: ^19.2.5 + react-native: '*' + expo-glass-effect@55.0.11: resolution: {integrity: sha512-wqq7GUOqSkfoFJzreZvBG0jzjsq5c582m3glhWSjcmIuByxXXWp6j6GY6hyFuYKzpOXhbuvusVxGCQi0yWnp3g==} peerDependencies: @@ -5152,6 +5219,10 @@ packages: resolution: {integrity: sha512-13x32V0HMHJDjND4K/gU2lQIZNxYn5S5rFzujqHmnXvOO6WGrVVELpk/0p5FmBfeuQ7GGFsATbhazQk+FeukUw==} hasBin: true + expo-modules-autolinking@55.0.24: + resolution: {integrity: sha512-A0OyMbTPZqibYrwqj98HFYTNSvl4NSS4Zt+R5A8qiAx3nM0mc81e6Iqw7Wl4J8M/t36lJ+cT3WuVTz5Oszj6Hw==} + hasBin: true + expo-modules-core@55.0.25: resolution: {integrity: sha512-yXpfg7aHLbuqoXocK34Vua6Aey5SCyqLygAsXAMbul9P8vfBjLpaOPiTJ5cLVF7Drfq8ownqVJO6qpGEtZ6GOw==} peerDependencies: @@ -5216,6 +5287,10 @@ packages: peerDependencies: expo: '*' + expo-server@55.0.11: + resolution: {integrity: sha512-AxRdHqcv0H1g4s923vu+5n1Nrhne23bjXbP+Vl7+Lwfpe7MG9PuU1IS95IJK6a+7BVV1mRN6QlZvs8Yv7EEXNQ==} + engines: {node: '>=20.16.0'} + expo-server@55.0.9: resolution: {integrity: sha512-N5Ipn1NwqaJzEm+G97o0Jbe4g/th3R/16N1DabnYryXKCiZwDkK13/w3VfGkQN9LOOaBP+JIRxGf4M8lQKPzyA==} engines: {node: '>=20.16.0'} @@ -5284,6 +5359,23 @@ packages: react-native-webview: optional: true + expo@55.0.26: + resolution: {integrity: sha512-MuVW6Uzd/Jh6E37ICOYAiTOm9nflNMUNzf6wH5ld/IXFyuF2Lo86a8fCSMgHcvTGsSjRsJ5Uxhf+WHZcvGPfrg==} + hasBin: true + peerDependencies: + '@expo/dom-webview': '*' + '@expo/metro-runtime': '*' + react: ^19.2.5 + react-native: '*' + react-native-webview: '*' + peerDependenciesMeta: + '@expo/dom-webview': + optional: true + '@expo/metro-runtime': + optional: true + react-native-webview: + optional: true + exponential-backoff@3.1.3: resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} @@ -6147,6 +6239,10 @@ packages: resolution: {integrity: sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==} engines: {node: 20 || >=22} + lru-cache@11.5.0: + resolution: {integrity: sha512-5YgH9UJd7wVb9hIouI2adWpgqrrICkt070Dnj8EUY1+B4B2P9eRLPAkAAo6NICA7CEhOIeBHl46u9zSNpNu7zA==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -6455,8 +6551,8 @@ packages: node-releases@2.0.44: resolution: {integrity: sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==} - nodemailer@8.0.7: - resolution: {integrity: sha512-pkjE4mkBzQjdJT4/UmlKl3pX0rC9fZmjh7c6C9o7lv66Ac6w9WCnzPzhbPNxwZAzlF4mdq4CSWB5+FbK6FWCow==} + nodemailer@8.0.8: + resolution: {integrity: sha512-p+XsnzXGdtIHXUu2ugxdfG+eX2nehsGhMjW9h0CWj1BhE30hrFz0kh0yIM0/VjUgVsRrDj+80ZO+I1nSkGE4tA==} engines: {node: '>=6.0.0'} non-error@0.1.0: @@ -6731,6 +6827,10 @@ packages: resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} + engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} @@ -6948,14 +7048,14 @@ packages: react-native: 0.81 - 0.85 react-native-worklets: 0.8.x - react-native-safe-area-context@5.7.0: - resolution: {integrity: sha512-/9/MtQz8ODphjsLdZ+GZAIcC/RtoqW9EeShf7Uvnfgm/pzYrJ75y3PV/J1wuAV1T5Dye5ygq4EAW20RoBq0ABQ==} + react-native-safe-area-context@5.8.0: + resolution: {integrity: sha512-t+ZsAVzY/wWzzx34vqGbo3/as9EEESJdbyZNL7Yg5EYX+toYMtMqFoDDCvqZUi35eeGVsXc6pAaEk4edMwbuCQ==} peerDependencies: react: ^19.2.5 react-native: '*' - react-native-screens@4.25.0: - resolution: {integrity: sha512-CoE6W0perui0W4WK9fZFJfikUql/AYQFSJjnOGoXcPeteFb5Tursfmkot3vPOSu9lKWQMO6tlCIBQTC1CgbVRw==} + react-native-screens@4.25.2: + resolution: {integrity: sha512-1Nj1fusFd+rIMKU/qC9yGKVG+3ofh11d3OdBQKL1iVvQfKvcB8vhvTGQf2TkfxW3bamxN+hCZIXmNuU0mRkyDg==} peerDependencies: react: ^19.2.5 react-native: '>=0.82.0' @@ -7192,6 +7292,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.8.1: + resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==} + engines: {node: '>=10'} + hasBin: true + send@0.19.2: resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} engines: {node: '>= 0.8.0'} @@ -7495,6 +7600,11 @@ packages: engines: {node: '>=10'} hasBin: true + terser@5.48.0: + resolution: {integrity: sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==} + engines: {node: '>=10'} + hasBin: true + test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -7509,8 +7619,8 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@1.1.2: - resolution: {integrity: sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==} + tinyexec@1.2.2: + resolution: {integrity: sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==} engines: {node: '>=18'} tinyglobby@0.2.16: @@ -7623,8 +7733,8 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - typescript-eslint@8.59.3: - resolution: {integrity: sha512-KgusgyDgG4LI8Ih/sWaCtZ06tckLAS5CvT5A4D1Q7bYVoAAyzwiZvE4BmwDHkhRVkvhRBepKeASoFzQetha7Fg==} + typescript-eslint@8.59.4: + resolution: {integrity: sha512-Rw6+44QNFaXtgHSjPy+Kw8hrJniMYzR85E9yLmOLcfZ91/rz+JXQbDTCmc6ccxMPY6K6PgAq26f0JCBfR7LIPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -7853,20 +7963,20 @@ packages: yaml: optional: true - vitest@4.1.6: - resolution: {integrity: sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==} + vitest@4.1.7: + resolution: {integrity: sha512-flYyaFd2CgoCoU+0UKt3pxksgC+S02iTDN0n3LtqaMeXsI9SBcdNujc2k0DeFLzUn/0k538yNjOSdwgCqcrwJA==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.6 - '@vitest/browser-preview': 4.1.6 - '@vitest/browser-webdriverio': 4.1.6 - '@vitest/coverage-istanbul': 4.1.6 - '@vitest/coverage-v8': 4.1.6 - '@vitest/ui': 4.1.6 + '@vitest/browser-playwright': 4.1.7 + '@vitest/browser-preview': 4.1.7 + '@vitest/browser-webdriverio': 4.1.7 + '@vitest/coverage-istanbul': 4.1.7 + '@vitest/coverage-v8': 4.1.7 + '@vitest/ui': 4.1.7 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -8006,8 +8116,20 @@ packages: utf-8-validate: optional: true - ws@8.20.1: - resolution: {integrity: sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==} + ws@7.5.11: + resolution: {integrity: sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.21.0: + resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -9099,7 +9221,7 @@ snapshots: '@expo-google-fonts/material-symbols@0.4.36': {} - '@expo/cli@55.0.30(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.7)(expo-router@55.0.14)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3)': + '@expo/cli@55.0.30(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(expo-router@55.0.14)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3)': dependencies: '@expo/code-signing-certificates': 0.0.6 '@expo/config': 55.0.17(typescript@5.9.3) @@ -9108,7 +9230,7 @@ snapshots: '@expo/env': 2.1.2 '@expo/image-utils': 0.8.14(typescript@5.9.3) '@expo/json-file': 10.0.14 - '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) '@expo/metro': 55.1.1 '@expo/metro-config': 55.0.21(expo@55.0.24)(typescript@5.9.3) '@expo/osascript': 2.4.3 @@ -9116,9 +9238,9 @@ snapshots: '@expo/plist': 0.5.3 '@expo/prebuild-config': 55.0.18(expo@55.0.24)(typescript@5.9.3) '@expo/require-utils': 55.0.5(typescript@5.9.3) - '@expo/router-server': 55.0.16(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.7)(expo-router@55.0.14)(expo-server@55.0.9)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@expo/router-server': 55.0.16(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(expo-router@55.0.14)(expo-server@55.0.9)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@expo/schema-utils': 55.0.4 - '@expo/spawn-async': 1.7.2 + '@expo/spawn-async': 1.8.0 '@expo/ws-tunnel': 1.0.6 '@expo/xcpretty': 4.4.4 '@react-native/dev-middleware': 0.83.6 @@ -9133,7 +9255,7 @@ snapshots: connect: 3.7.0 debug: 4.4.3 dnssd-advertise: 1.1.4 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) expo-server: 55.0.9 fetch-nodeshim: 0.4.10 getenv: 2.0.0 @@ -9148,7 +9270,7 @@ snapshots: progress: 2.0.3 prompts: 2.4.2 resolve-from: 5.0.0 - semver: 7.8.0 + semver: 7.8.1 send: 0.19.2 slugify: 1.6.9 source-map-support: 0.5.21 @@ -9157,11 +9279,11 @@ snapshots: terminal-link: 2.1.1 toqr: 0.1.1 wrap-ansi: 7.0.0 - ws: 8.20.1 + ws: 8.21.0 zod: 3.25.76 optionalDependencies: - expo-router: 55.0.14(4a88f676dfb25e563c95d7c5569dae4c) - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + expo-router: 55.0.14(2282ac51b8838b5d1fdb91eeaf81e816) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) transitivePeerDependencies: - '@expo/dom-webview' - '@expo/metro-runtime' @@ -9175,10 +9297,106 @@ snapshots: - typescript - utf-8-validate + '@expo/cli@55.0.32(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.8)(expo-router@55.0.14)(expo@55.0.26)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3)': + dependencies: + '@expo/code-signing-certificates': 0.0.6 + '@expo/config': 55.0.17(typescript@5.9.3) + '@expo/config-plugins': 55.0.10 + '@expo/devcert': 1.2.1 + '@expo/env': 2.1.2 + '@expo/image-utils': 0.8.14(typescript@5.9.3) + '@expo/json-file': 10.2.0 + '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + '@expo/metro': 55.1.1 + '@expo/metro-config': 55.0.23(expo@55.0.26)(typescript@5.9.3) + '@expo/osascript': 2.6.0 + '@expo/package-manager': 1.12.0 + '@expo/plist': 0.5.4 + '@expo/prebuild-config': 55.0.18(expo@55.0.26)(typescript@5.9.3) + '@expo/require-utils': 55.0.5(typescript@5.9.3) + '@expo/router-server': 55.0.18(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.8)(expo-router@55.0.14)(expo-server@55.0.11)(expo@55.0.26)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@expo/schema-utils': 55.0.4 + '@expo/spawn-async': 1.8.0 + '@expo/ws-tunnel': 1.0.6 + '@expo/xcpretty': 4.4.4 + '@react-native/dev-middleware': 0.83.6 + accepts: 1.3.8 + arg: 5.0.2 + better-opn: 3.0.2 + bplist-creator: 0.1.0 + bplist-parser: 0.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + compression: 1.8.1 + connect: 3.7.0 + debug: 4.4.3 + dnssd-advertise: 1.1.4 + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo-server: 55.0.11 + fetch-nodeshim: 0.4.10 + getenv: 2.0.0 + glob: 13.0.6 + lan-network: 0.2.1 + multitars: 1.0.0 + node-forge: 1.4.0 + npm-package-arg: 11.0.3 + ora: 3.4.0 + picomatch: 4.0.4 + pretty-format: 29.7.0 + progress: 2.0.3 + prompts: 2.4.2 + resolve-from: 5.0.0 + semver: 7.8.1 + send: 0.19.2 + slugify: 1.6.9 + source-map-support: 0.5.21 + stacktrace-parser: 0.1.11 + structured-headers: 0.4.1 + terminal-link: 2.1.1 + toqr: 0.1.1 + wrap-ansi: 7.0.0 + ws: 8.21.0 + zod: 3.25.76 + optionalDependencies: + expo-router: 55.0.14(ed5b7a0609852094b71ba620c57bdc35) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + transitivePeerDependencies: + - '@expo/dom-webview' + - '@expo/metro-runtime' + - bufferutil + - expo-constants + - expo-font + - react + - react-dom + - react-server-dom-webpack + - supports-color + - typescript + - utf-8-validate + optional: true + '@expo/code-signing-certificates@0.0.6': dependencies: node-forge: 1.4.0 + '@expo/config-plugins@55.0.10': + dependencies: + '@expo/config-types': 55.0.5 + '@expo/json-file': 10.0.15 + '@expo/plist': 0.5.4 + '@expo/sdk-runtime-versions': 1.0.0 + chalk: 4.1.2 + debug: 4.4.3 + getenv: 2.0.0 + glob: 13.0.6 + resolve-from: 5.0.0 + semver: 7.8.1 + slugify: 1.6.9 + xcode: 3.0.1 + xml2js: 0.6.0 + transitivePeerDependencies: + - supports-color + optional: true + '@expo/config-plugins@55.0.9': dependencies: '@expo/config-types': 55.0.5 @@ -9190,7 +9408,7 @@ snapshots: getenv: 2.0.0 glob: 13.0.6 resolve-from: 5.0.0 - semver: 7.8.0 + semver: 7.8.1 slugify: 1.6.9 xcode: 3.0.1 xml2js: 0.6.0 @@ -9209,7 +9427,7 @@ snapshots: getenv: 2.0.0 glob: 13.0.6 resolve-workspace-root: 2.0.1 - semver: 7.8.0 + semver: 7.8.1 slugify: 1.6.9 transitivePeerDependencies: - supports-color @@ -9222,18 +9440,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/devtools@55.0.3(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)': + '@expo/devtools@55.0.3(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: chalk: 4.1.2 optionalDependencies: react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - '@expo/dom-webview@55.0.5(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)': + '@expo/dom-webview@55.0.5(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + + '@expo/dom-webview@55.0.5(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': + dependencies: + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + react: 19.2.6 + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + optional: true '@expo/env@2.1.2': dependencies: @@ -9243,10 +9468,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@expo/env@2.3.0': + dependencies: + chalk: 4.1.2 + debug: 4.4.3 + getenv: 2.0.0 + transitivePeerDependencies: + - supports-color + '@expo/fingerprint@0.16.7': dependencies: - '@expo/env': 2.1.2 - '@expo/spawn-async': 1.7.2 + '@expo/env': 2.3.0 + '@expo/spawn-async': 1.8.0 arg: 5.0.2 chalk: 4.1.2 debug: 4.4.3 @@ -9255,19 +9488,35 @@ snapshots: ignore: 5.3.2 minimatch: 10.2.5 resolve-from: 5.0.0 - semver: 7.8.0 + semver: 7.8.1 + transitivePeerDependencies: + - supports-color + + '@expo/fingerprint@0.19.2': + dependencies: + '@expo/env': 2.3.0 + '@expo/spawn-async': 1.8.0 + arg: 5.0.2 + chalk: 4.1.2 + debug: 4.4.3 + getenv: 2.0.0 + glob: 13.0.6 + ignore: 5.3.2 + minimatch: 10.2.5 + resolve-from: 5.0.0 + semver: 7.8.1 transitivePeerDependencies: - supports-color '@expo/image-utils@0.8.14(typescript@5.9.3)': dependencies: '@expo/require-utils': 55.0.5(typescript@5.9.3) - '@expo/spawn-async': 1.7.2 + '@expo/spawn-async': 1.8.0 chalk: 4.1.2 getenv: 2.0.0 jimp-compact: 0.16.1 parse-png: 2.1.0 - semver: 7.8.0 + semver: 7.8.1 transitivePeerDependencies: - supports-color - typescript @@ -9277,6 +9526,18 @@ snapshots: '@babel/code-frame': 7.29.0 json5: 2.2.3 + '@expo/json-file@10.0.15': + dependencies: + '@babel/code-frame': 7.29.0 + json5: 2.2.3 + optional: true + + '@expo/json-file@10.2.0': + dependencies: + '@babel/code-frame': 7.29.0 + json5: 2.2.3 + optional: true + '@expo/local-build-cache-provider@55.0.13(typescript@5.9.3)': dependencies: '@expo/config': 55.0.17(typescript@5.9.3) @@ -9285,15 +9546,25 @@ snapshots: - supports-color - typescript - '@expo/log-box@55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)': + '@expo/log-box@55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: - '@expo/dom-webview': 55.0.5(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + '@expo/dom-webview': 55.0.5(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) anser: 1.4.10 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) stacktrace-parser: 0.1.11 + '@expo/log-box@55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': + dependencies: + '@expo/dom-webview': 55.0.5(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + anser: 1.4.10 + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + react: 19.2.6 + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + stacktrace-parser: 0.1.11 + optional: true + '@expo/metro-config@55.0.21(expo@55.0.24)(typescript@5.9.3)': dependencies: '@babel/code-frame': 7.29.0 @@ -9303,7 +9574,7 @@ snapshots: '@expo/env': 2.1.2 '@expo/json-file': 10.0.14 '@expo/metro': 55.1.1 - '@expo/spawn-async': 1.7.2 + '@expo/spawn-async': 1.8.0 browserslist: 4.28.2 chalk: 4.1.2 debug: 4.4.3 @@ -9316,21 +9587,51 @@ snapshots: postcss: 8.4.49 resolve-from: 5.0.0 optionalDependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) transitivePeerDependencies: - bufferutil - supports-color - typescript - utf-8-validate - '@expo/metro-runtime@55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)': + '@expo/metro-config@55.0.23(expo@55.0.26)(typescript@5.9.3)': dependencies: - '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + '@babel/code-frame': 7.29.0 + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@expo/config': 55.0.17(typescript@5.9.3) + '@expo/env': 2.1.2 + '@expo/json-file': 10.0.15 + '@expo/metro': 55.1.1 + '@expo/spawn-async': 1.8.0 + browserslist: 4.28.2 + chalk: 4.1.2 + debug: 4.4.3 + getenv: 2.0.0 + glob: 13.0.6 + hermes-parser: 0.32.1 + jsc-safe-url: 0.2.4 + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.15 + resolve-from: 5.0.0 + optionalDependencies: + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate + optional: true + + '@expo/metro-runtime@55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': + dependencies: + '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) anser: 1.4.10 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) pretty-format: 29.7.0 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) stacktrace-parser: 0.1.11 whatwg-fetch: 3.6.20 optionalDependencies: @@ -9338,6 +9639,22 @@ snapshots: transitivePeerDependencies: - '@expo/dom-webview' + '@expo/metro-runtime@55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.26)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': + dependencies: + '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + anser: 1.4.10 + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + pretty-format: 29.7.0 + react: 19.2.6 + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + stacktrace-parser: 0.1.11 + whatwg-fetch: 3.6.20 + optionalDependencies: + react-dom: 19.2.6(react@19.2.6) + transitivePeerDependencies: + - '@expo/dom-webview' + optional: true + '@expo/metro@55.1.1': dependencies: metro: 0.83.7 @@ -9361,23 +9678,45 @@ snapshots: '@expo/osascript@2.4.3': dependencies: - '@expo/spawn-async': 1.7.2 + '@expo/spawn-async': 1.8.0 + + '@expo/osascript@2.6.0': + dependencies: + '@expo/spawn-async': 1.8.0 + optional: true '@expo/package-manager@1.10.5': dependencies: '@expo/json-file': 10.0.14 - '@expo/spawn-async': 1.7.2 + '@expo/spawn-async': 1.8.0 chalk: 4.1.2 npm-package-arg: 11.0.3 ora: 3.4.0 resolve-workspace-root: 2.0.1 + '@expo/package-manager@1.12.0': + dependencies: + '@expo/json-file': 10.2.0 + '@expo/spawn-async': 1.8.0 + chalk: 4.1.2 + npm-package-arg: 11.0.3 + ora: 3.4.0 + resolve-workspace-root: 2.0.1 + optional: true + '@expo/plist@0.5.3': dependencies: '@xmldom/xmldom': 0.8.13 base64-js: 1.5.1 xmlbuilder: 15.1.1 + '@expo/plist@0.5.4': + dependencies: + '@xmldom/xmldom': 0.8.13 + base64-js: 1.5.1 + xmlbuilder: 15.1.1 + optional: true + '@expo/prebuild-config@55.0.18(expo@55.0.24)(typescript@5.9.3)': dependencies: '@expo/config': 55.0.17(typescript@5.9.3) @@ -9387,14 +9726,32 @@ snapshots: '@expo/json-file': 10.0.14 '@react-native/normalize-colors': 0.83.6 debug: 4.4.3 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) resolve-from: 5.0.0 - semver: 7.8.0 + semver: 7.8.1 xml2js: 0.6.0 transitivePeerDependencies: - supports-color - typescript + '@expo/prebuild-config@55.0.18(expo@55.0.26)(typescript@5.9.3)': + dependencies: + '@expo/config': 55.0.17(typescript@5.9.3) + '@expo/config-plugins': 55.0.9 + '@expo/config-types': 55.0.5 + '@expo/image-utils': 0.8.14(typescript@5.9.3) + '@expo/json-file': 10.0.14 + '@react-native/normalize-colors': 0.83.6 + debug: 4.4.3 + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + resolve-from: 5.0.0 + semver: 7.8.1 + xml2js: 0.6.0 + transitivePeerDependencies: + - supports-color + - typescript + optional: true + '@expo/require-utils@55.0.5(typescript@5.9.3)': dependencies: '@babel/code-frame': 7.29.0 @@ -9405,36 +9762,59 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/router-server@55.0.16(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.7)(expo-router@55.0.14)(expo-server@55.0.9)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@expo/router-server@55.0.16(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(expo-router@55.0.14)(expo-server@55.0.9)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: debug: 4.4.3 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6)) - expo-font: 55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) + expo-font: 55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) expo-server: 55.0.9 react: 19.2.6 optionalDependencies: - '@expo/metro-runtime': 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - expo-router: 55.0.14(4a88f676dfb25e563c95d7c5569dae4c) + '@expo/metro-runtime': 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + expo-router: 55.0.14(2282ac51b8838b5d1fdb91eeaf81e816) react-dom: 19.2.6(react@19.2.6) transitivePeerDependencies: - supports-color + '@expo/router-server@55.0.18(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.8)(expo-router@55.0.14)(expo-server@55.0.11)(expo@55.0.26)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + debug: 4.4.3 + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo-constants: 55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) + expo-font: 55.0.8(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + expo-server: 55.0.11 + react: 19.2.6 + optionalDependencies: + '@expo/metro-runtime': 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.26)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + expo-router: 55.0.14(ed5b7a0609852094b71ba620c57bdc35) + react-dom: 19.2.6(react@19.2.6) + transitivePeerDependencies: + - supports-color + optional: true + '@expo/schema-utils@55.0.4': {} '@expo/sdk-runtime-versions@1.0.0': {} - '@expo/spawn-async@1.7.2': + '@expo/spawn-async@1.8.0': dependencies: cross-spawn: 7.0.6 '@expo/sudo-prompt@9.3.2': {} - '@expo/vector-icons@15.1.1(expo-font@55.0.7)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)': + '@expo/vector-icons@15.1.1(expo-font@55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: - expo-font: 55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + expo-font: 55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + + '@expo/vector-icons@15.1.1(expo-font@55.0.8)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': + dependencies: + expo-font: 55.0.8(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + react: 19.2.6 + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + optional: true '@expo/ws-tunnel@1.0.6': {} @@ -9454,10 +9834,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@fission-ai/openspec@1.3.1(@types/node@25.8.0)': + '@fission-ai/openspec@1.3.1(@types/node@25.9.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.8.0) - '@inquirer/prompts': 7.10.1(@types/node@25.8.0) + '@inquirer/core': 10.3.2(@types/node@25.9.1) + '@inquirer/prompts': 7.10.1(@types/node@25.9.1) chalk: 5.6.2 commander: 14.0.3 fast-glob: 3.3.3 @@ -9469,7 +9849,7 @@ snapshots: - '@types/node' - rxjs - '@garmin/fitsdk@21.202.0': {} + '@garmin/fitsdk@21.205.0': {} '@geoman-io/leaflet-geoman-free@2.19.3(leaflet@1.9.4)': dependencies: @@ -9481,22 +9861,22 @@ snapshots: lodash: 4.18.1 polyclip-ts: 0.16.8 - '@gorhom/bottom-sheet@5.2.14(@types/react@19.2.14)(react-native-gesture-handler@2.31.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native-reanimated@4.3.1(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)': + '@gorhom/bottom-sheet@5.2.14(@types/react@19.2.15)(react-native-gesture-handler@2.31.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-reanimated@4.3.1(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: - '@gorhom/portal': 1.0.14(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + '@gorhom/portal': 1.0.14(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) invariant: 2.2.4 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) - react-native-gesture-handler: 2.31.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - react-native-reanimated: 4.3.1(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + react-native-gesture-handler: 2.31.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + react-native-reanimated: 4.3.1(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 - '@gorhom/portal@1.0.14(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)': + '@gorhom/portal@1.0.14(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: nanoid: 3.3.12 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) '@hexagon/base64@1.1.28': {} @@ -9518,128 +9898,128 @@ snapshots: '@inquirer/ansi@1.0.2': {} - '@inquirer/checkbox@4.3.2(@types/node@25.8.0)': + '@inquirer/checkbox@4.3.2(@types/node@25.9.1)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.8.0) + '@inquirer/core': 10.3.2(@types/node@25.9.1) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.8.0) + '@inquirer/type': 3.0.10(@types/node@25.9.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 - '@inquirer/confirm@5.1.21(@types/node@25.8.0)': + '@inquirer/confirm@5.1.21(@types/node@25.9.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.8.0) - '@inquirer/type': 3.0.10(@types/node@25.8.0) + '@inquirer/core': 10.3.2(@types/node@25.9.1) + '@inquirer/type': 3.0.10(@types/node@25.9.1) optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 - '@inquirer/core@10.3.2(@types/node@25.8.0)': + '@inquirer/core@10.3.2(@types/node@25.9.1)': dependencies: '@inquirer/ansi': 1.0.2 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.8.0) + '@inquirer/type': 3.0.10(@types/node@25.9.1) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 - '@inquirer/editor@4.2.23(@types/node@25.8.0)': + '@inquirer/editor@4.2.23(@types/node@25.9.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.8.0) - '@inquirer/external-editor': 1.0.3(@types/node@25.8.0) - '@inquirer/type': 3.0.10(@types/node@25.8.0) + '@inquirer/core': 10.3.2(@types/node@25.9.1) + '@inquirer/external-editor': 1.0.3(@types/node@25.9.1) + '@inquirer/type': 3.0.10(@types/node@25.9.1) optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 - '@inquirer/expand@4.0.23(@types/node@25.8.0)': + '@inquirer/expand@4.0.23(@types/node@25.9.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.8.0) - '@inquirer/type': 3.0.10(@types/node@25.8.0) + '@inquirer/core': 10.3.2(@types/node@25.9.1) + '@inquirer/type': 3.0.10(@types/node@25.9.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 - '@inquirer/external-editor@1.0.3(@types/node@25.8.0)': + '@inquirer/external-editor@1.0.3(@types/node@25.9.1)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.2 optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 '@inquirer/figures@1.0.15': {} - '@inquirer/input@4.3.1(@types/node@25.8.0)': + '@inquirer/input@4.3.1(@types/node@25.9.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.8.0) - '@inquirer/type': 3.0.10(@types/node@25.8.0) + '@inquirer/core': 10.3.2(@types/node@25.9.1) + '@inquirer/type': 3.0.10(@types/node@25.9.1) optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 - '@inquirer/number@3.0.23(@types/node@25.8.0)': + '@inquirer/number@3.0.23(@types/node@25.9.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.8.0) - '@inquirer/type': 3.0.10(@types/node@25.8.0) + '@inquirer/core': 10.3.2(@types/node@25.9.1) + '@inquirer/type': 3.0.10(@types/node@25.9.1) optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 - '@inquirer/password@4.0.23(@types/node@25.8.0)': + '@inquirer/password@4.0.23(@types/node@25.9.1)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.8.0) - '@inquirer/type': 3.0.10(@types/node@25.8.0) + '@inquirer/core': 10.3.2(@types/node@25.9.1) + '@inquirer/type': 3.0.10(@types/node@25.9.1) optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 - '@inquirer/prompts@7.10.1(@types/node@25.8.0)': + '@inquirer/prompts@7.10.1(@types/node@25.9.1)': dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@25.8.0) - '@inquirer/confirm': 5.1.21(@types/node@25.8.0) - '@inquirer/editor': 4.2.23(@types/node@25.8.0) - '@inquirer/expand': 4.0.23(@types/node@25.8.0) - '@inquirer/input': 4.3.1(@types/node@25.8.0) - '@inquirer/number': 3.0.23(@types/node@25.8.0) - '@inquirer/password': 4.0.23(@types/node@25.8.0) - '@inquirer/rawlist': 4.1.11(@types/node@25.8.0) - '@inquirer/search': 3.2.2(@types/node@25.8.0) - '@inquirer/select': 4.4.2(@types/node@25.8.0) + '@inquirer/checkbox': 4.3.2(@types/node@25.9.1) + '@inquirer/confirm': 5.1.21(@types/node@25.9.1) + '@inquirer/editor': 4.2.23(@types/node@25.9.1) + '@inquirer/expand': 4.0.23(@types/node@25.9.1) + '@inquirer/input': 4.3.1(@types/node@25.9.1) + '@inquirer/number': 3.0.23(@types/node@25.9.1) + '@inquirer/password': 4.0.23(@types/node@25.9.1) + '@inquirer/rawlist': 4.1.11(@types/node@25.9.1) + '@inquirer/search': 3.2.2(@types/node@25.9.1) + '@inquirer/select': 4.4.2(@types/node@25.9.1) optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 - '@inquirer/rawlist@4.1.11(@types/node@25.8.0)': + '@inquirer/rawlist@4.1.11(@types/node@25.9.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.8.0) - '@inquirer/type': 3.0.10(@types/node@25.8.0) + '@inquirer/core': 10.3.2(@types/node@25.9.1) + '@inquirer/type': 3.0.10(@types/node@25.9.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 - '@inquirer/search@3.2.2(@types/node@25.8.0)': + '@inquirer/search@3.2.2(@types/node@25.9.1)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.8.0) + '@inquirer/core': 10.3.2(@types/node@25.9.1) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.8.0) + '@inquirer/type': 3.0.10(@types/node@25.9.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 - '@inquirer/select@4.4.2(@types/node@25.8.0)': + '@inquirer/select@4.4.2(@types/node@25.9.1)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.8.0) + '@inquirer/core': 10.3.2(@types/node@25.9.1) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.8.0) + '@inquirer/type': 3.0.10(@types/node@25.9.1) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 - '@inquirer/type@3.0.10(@types/node@25.8.0)': + '@inquirer/type@3.0.10(@types/node@25.9.1)': optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 '@isaacs/ttlcache@1.4.1': {} @@ -9669,14 +10049,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 25.8.0 + '@types/node': 25.9.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@25.8.0) + jest-config: 29.7.0(@types/node@25.9.1) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -9749,7 +10129,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.31 - '@types/node': 25.8.0 + '@types/node': 25.9.1 chalk: 4.1.2 collect-v8-coverage: 1.0.3 exit: 0.1.2 @@ -9876,7 +10256,7 @@ snapshots: quickselect: 3.0.0 tinyqueue: 3.0.0 - '@maplibre/maplibre-react-native@11.2.1(@expo/config-plugins@55.0.9)(@types/geojson@7946.0.16)(@types/react@19.2.14)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)': + '@maplibre/maplibre-react-native@11.2.1(@expo/config-plugins@55.0.10)(@types/geojson@7946.0.16)(@types/react@19.2.15)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: '@maplibre/maplibre-gl-style-spec': 24.8.5 '@turf/distance': 7.3.5 @@ -9884,11 +10264,11 @@ snapshots: '@turf/length': 7.3.5 '@turf/nearest-point-on-line': 7.3.5 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) optionalDependencies: - '@expo/config-plugins': 55.0.9 + '@expo/config-plugins': 55.0.10 '@types/geojson': 7946.0.16 - '@types/react': 19.2.14 + '@types/react': 19.2.15 '@marijn/find-cluster-break@1.0.2': {} @@ -10255,204 +10635,204 @@ snapshots: '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.15)(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.15 + '@types/react-dom': 19.2.3(@types/react@19.2.15) - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.15)(react@19.2.6)': dependencies: react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 - '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-context@1.1.2(@types/react@19.2.15)(react@19.2.6)': dependencies: react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 - '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.15)(react@19.2.6) aria-hidden: 1.2.6 react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.6) + react-remove-scroll: 2.7.2(@types/react@19.2.15)(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.15 + '@types/react-dom': 19.2.3(@types/react@19.2.15) - '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-direction@1.1.1(@types/react@19.2.15)(react@19.2.6)': dependencies: react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 - '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.15)(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.15 + '@types/react-dom': 19.2.3(@types/react@19.2.15) - '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.15)(react@19.2.6)': dependencies: react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.15)(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.15 + '@types/react-dom': 19.2.3(@types/react@19.2.15) - '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-id@1.1.1(@types/react@19.2.15)(react@19.2.6)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.15)(react@19.2.6) react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 - '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.15)(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.15 + '@types/react-dom': 19.2.3(@types/react@19.2.15) - '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.15)(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.15 + '@types/react-dom': 19.2.3(@types/react@19.2.15) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.15)(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.15 + '@types/react-dom': 19.2.3(@types/react@19.2.15) - '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.15)(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.15 + '@types/react-dom': 19.2.3(@types/react@19.2.15) - '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-slot@1.2.3(@types/react@19.2.15)(react@19.2.6)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.15)(react@19.2.6) react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 - '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-slot@1.2.4(@types/react@19.2.15)(react@19.2.6)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.15)(react@19.2.6) react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 - '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.15)(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.15 + '@types/react-dom': 19.2.3(@types/react@19.2.15) - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.15)(react@19.2.6)': dependencies: react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.15)(react@19.2.6)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.15)(react@19.2.6) react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.15)(react@19.2.6)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.15)(react@19.2.6) react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.15)(react@19.2.6)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.15)(react@19.2.6) react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.6)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.15)(react@19.2.6)': dependencies: react: 19.2.6 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 '@react-leaflet/core@3.0.0(leaflet@1.9.4)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: @@ -10639,7 +11019,7 @@ snapshots: nullthrows: 1.1.1 open: 7.4.2 serve-static: 1.16.3 - ws: 7.5.10 + ws: 7.5.11 transitivePeerDependencies: - bufferutil - supports-color @@ -10658,7 +11038,7 @@ snapshots: nullthrows: 1.1.1 open: 7.4.2 serve-static: 1.16.3 - ws: 7.5.10 + ws: 7.5.11 transitivePeerDependencies: - bufferutil - supports-color @@ -10695,24 +11075,24 @@ snapshots: '@react-native/normalize-colors@0.83.6': {} - '@react-native/virtualized-lists@0.83.4(@types/react@19.2.14)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)': + '@react-native/virtualized-lists@0.83.4(@types/react@19.2.15)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 - '@react-navigation/bottom-tabs@7.15.13(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.7.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native-screens@4.25.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)': + '@react-navigation/bottom-tabs@7.15.13(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-screens@4.25.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: - '@react-navigation/elements': 2.9.17(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.7.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - '@react-navigation/native': 7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + '@react-navigation/elements': 2.9.17(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + '@react-navigation/native': 7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) color: 4.2.3 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) - react-native-safe-area-context: 5.7.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - react-native-screens: 4.25.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + react-native-safe-area-context: 5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + react-native-screens: 4.25.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) sf-symbols-typescript: 2.2.0 transitivePeerDependencies: - '@react-native-masked-view/masked-view' @@ -10729,45 +11109,45 @@ snapshots: use-latest-callback: 0.2.6(react@19.2.6) use-sync-external-store: 1.6.0(react@19.2.6) - '@react-navigation/elements@2.9.17(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.7.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)': + '@react-navigation/elements@2.9.17(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: - '@react-navigation/native': 7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + '@react-navigation/native': 7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) color: 4.2.3 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) - react-native-safe-area-context: 5.7.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + react-native-safe-area-context: 5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) use-latest-callback: 0.2.6(react@19.2.6) use-sync-external-store: 1.6.0(react@19.2.6) - '@react-navigation/native-stack@7.14.14(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.7.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native-screens@4.25.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)': + '@react-navigation/native-stack@7.14.14(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-screens@4.25.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: - '@react-navigation/elements': 2.9.17(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.7.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - '@react-navigation/native': 7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + '@react-navigation/elements': 2.9.17(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + '@react-navigation/native': 7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) color: 4.2.3 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) - react-native-safe-area-context: 5.7.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - react-native-screens: 4.25.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + react-native-safe-area-context: 5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + react-native-screens: 4.25.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) sf-symbols-typescript: 2.2.0 warn-once: 0.1.1 transitivePeerDependencies: - '@react-native-masked-view/masked-view' - '@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)': + '@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: '@react-navigation/core': 7.17.4(react@19.2.6) escape-string-regexp: 4.0.0 fast-deep-equal: 3.1.3 nanoid: 3.3.12 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) use-latest-callback: 0.2.6(react@19.2.6) '@react-navigation/routers@7.5.5': dependencies: nanoid: 3.3.12 - '@react-router/dev@7.15.1(@react-router/serve@7.15.1(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@5.9.3))(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(terser@5.47.1)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(yaml@2.9.0)': + '@react-router/dev@7.15.1(@react-router/serve@7.15.1(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@5.9.3))(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(terser@5.48.0)(tsx@4.21.0)(typescript@5.9.3)(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(yaml@2.9.0)': dependencies: '@babel/core': 7.29.0 '@babel/generator': 7.29.1 @@ -10797,8 +11177,8 @@ snapshots: semver: 7.8.0 tinyglobby: 0.2.16 valibot: 1.4.0(typescript@5.9.3) - vite: 8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) - vite-node: 3.2.4(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) + vite: 8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) optionalDependencies: '@react-router/serve': 7.15.1(react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(typescript@5.9.3) typescript: 5.9.3 @@ -10975,54 +11355,26 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.60.4': optional: true - '@sentry-internal/browser-utils@10.51.0': - dependencies: - '@sentry/core': 10.51.0 - '@sentry-internal/browser-utils@10.53.1': dependencies: '@sentry/core': 10.53.1 - '@sentry-internal/feedback@10.51.0': - dependencies: - '@sentry/core': 10.51.0 - '@sentry-internal/feedback@10.53.1': dependencies: '@sentry/core': 10.53.1 - '@sentry-internal/replay-canvas@10.51.0': - dependencies: - '@sentry-internal/replay': 10.51.0 - '@sentry/core': 10.51.0 - '@sentry-internal/replay-canvas@10.53.1': dependencies: '@sentry-internal/replay': 10.53.1 '@sentry/core': 10.53.1 - '@sentry-internal/replay@10.51.0': - dependencies: - '@sentry-internal/browser-utils': 10.51.0 - '@sentry/core': 10.51.0 - '@sentry-internal/replay@10.53.1': dependencies: '@sentry-internal/browser-utils': 10.53.1 '@sentry/core': 10.53.1 - '@sentry/babel-plugin-component-annotate@5.2.1': {} - '@sentry/babel-plugin-component-annotate@5.3.0': {} - '@sentry/browser@10.51.0': - dependencies: - '@sentry-internal/browser-utils': 10.51.0 - '@sentry-internal/feedback': 10.51.0 - '@sentry-internal/replay': 10.51.0 - '@sentry-internal/replay-canvas': 10.51.0 - '@sentry/core': 10.51.0 - '@sentry/browser@10.53.1': dependencies: '@sentry-internal/browser-utils': 10.53.1 @@ -11035,7 +11387,7 @@ snapshots: dependencies: '@babel/core': 7.29.0 '@sentry/babel-plugin-component-annotate': 5.3.0 - '@sentry/cli': 2.58.5 + '@sentry/cli': 2.58.6 dotenv: 16.6.1 find-up: 5.0.0 glob: 13.0.6 @@ -11044,79 +11396,79 @@ snapshots: - encoding - supports-color - '@sentry/cli-darwin@2.58.5': - optional: true - - '@sentry/cli-darwin@3.4.1': + '@sentry/cli-darwin@2.58.6': optional: true '@sentry/cli-darwin@3.4.2': optional: true - '@sentry/cli-linux-arm64@2.58.5': + '@sentry/cli-darwin@3.4.3': optional: true - '@sentry/cli-linux-arm64@3.4.1': + '@sentry/cli-linux-arm64@2.58.6': optional: true '@sentry/cli-linux-arm64@3.4.2': optional: true - '@sentry/cli-linux-arm@2.58.5': + '@sentry/cli-linux-arm64@3.4.3': optional: true - '@sentry/cli-linux-arm@3.4.1': + '@sentry/cli-linux-arm@2.58.6': optional: true '@sentry/cli-linux-arm@3.4.2': optional: true - '@sentry/cli-linux-i686@2.58.5': + '@sentry/cli-linux-arm@3.4.3': optional: true - '@sentry/cli-linux-i686@3.4.1': + '@sentry/cli-linux-i686@2.58.6': optional: true '@sentry/cli-linux-i686@3.4.2': optional: true - '@sentry/cli-linux-x64@2.58.5': + '@sentry/cli-linux-i686@3.4.3': optional: true - '@sentry/cli-linux-x64@3.4.1': + '@sentry/cli-linux-x64@2.58.6': optional: true '@sentry/cli-linux-x64@3.4.2': optional: true - '@sentry/cli-win32-arm64@2.58.5': + '@sentry/cli-linux-x64@3.4.3': optional: true - '@sentry/cli-win32-arm64@3.4.1': + '@sentry/cli-win32-arm64@2.58.6': optional: true '@sentry/cli-win32-arm64@3.4.2': optional: true - '@sentry/cli-win32-i686@2.58.5': + '@sentry/cli-win32-arm64@3.4.3': optional: true - '@sentry/cli-win32-i686@3.4.1': + '@sentry/cli-win32-i686@2.58.6': optional: true '@sentry/cli-win32-i686@3.4.2': optional: true - '@sentry/cli-win32-x64@2.58.5': + '@sentry/cli-win32-i686@3.4.3': optional: true - '@sentry/cli-win32-x64@3.4.1': + '@sentry/cli-win32-x64@2.58.6': optional: true '@sentry/cli-win32-x64@3.4.2': optional: true - '@sentry/cli@2.58.5': + '@sentry/cli-win32-x64@3.4.3': + optional: true + + '@sentry/cli@2.58.6': dependencies: https-proxy-agent: 5.0.1 node-fetch: 2.7.0 @@ -11124,34 +11476,18 @@ snapshots: proxy-from-env: 1.1.0 which: 2.0.2 optionalDependencies: - '@sentry/cli-darwin': 2.58.5 - '@sentry/cli-linux-arm': 2.58.5 - '@sentry/cli-linux-arm64': 2.58.5 - '@sentry/cli-linux-i686': 2.58.5 - '@sentry/cli-linux-x64': 2.58.5 - '@sentry/cli-win32-arm64': 2.58.5 - '@sentry/cli-win32-i686': 2.58.5 - '@sentry/cli-win32-x64': 2.58.5 + '@sentry/cli-darwin': 2.58.6 + '@sentry/cli-linux-arm': 2.58.6 + '@sentry/cli-linux-arm64': 2.58.6 + '@sentry/cli-linux-i686': 2.58.6 + '@sentry/cli-linux-x64': 2.58.6 + '@sentry/cli-win32-arm64': 2.58.6 + '@sentry/cli-win32-i686': 2.58.6 + '@sentry/cli-win32-x64': 2.58.6 transitivePeerDependencies: - encoding - supports-color - '@sentry/cli@3.4.1': - dependencies: - progress: 2.0.3 - proxy-from-env: 1.1.0 - undici: 6.25.0 - which: 2.0.2 - optionalDependencies: - '@sentry/cli-darwin': 3.4.1 - '@sentry/cli-linux-arm': 3.4.1 - '@sentry/cli-linux-arm64': 3.4.1 - '@sentry/cli-linux-i686': 3.4.1 - '@sentry/cli-linux-x64': 3.4.1 - '@sentry/cli-win32-arm64': 3.4.1 - '@sentry/cli-win32-i686': 3.4.1 - '@sentry/cli-win32-x64': 3.4.1 - '@sentry/cli@3.4.2': dependencies: progress: 2.0.3 @@ -11168,15 +11504,29 @@ snapshots: '@sentry/cli-win32-i686': 3.4.2 '@sentry/cli-win32-x64': 3.4.2 - '@sentry/core@10.51.0': {} + '@sentry/cli@3.4.3': + dependencies: + progress: 2.0.3 + proxy-from-env: 1.1.0 + undici: 6.25.0 + which: 2.0.2 + optionalDependencies: + '@sentry/cli-darwin': 3.4.3 + '@sentry/cli-linux-arm': 3.4.3 + '@sentry/cli-linux-arm64': 3.4.3 + '@sentry/cli-linux-i686': 3.4.3 + '@sentry/cli-linux-x64': 3.4.3 + '@sentry/cli-win32-arm64': 3.4.3 + '@sentry/cli-win32-i686': 3.4.3 + '@sentry/cli-win32-x64': 3.4.3 '@sentry/core@10.53.1': {} - '@sentry/expo-upload-sourcemaps@8.11.1(@expo/env@2.1.2)(dotenv@16.6.1)': + '@sentry/expo-upload-sourcemaps@8.12.0(@expo/env@2.3.0)(dotenv@16.6.1)': dependencies: - '@sentry/cli': 3.4.1 + '@sentry/cli': 3.4.2 optionalDependencies: - '@expo/env': 2.1.2 + '@expo/env': 2.3.0 dotenv: 16.6.1 '@sentry/node-core@10.53.1(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.214.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0)': @@ -11234,29 +11584,23 @@ snapshots: '@opentelemetry/semantic-conventions': 1.40.0 '@sentry/core': 10.53.1 - '@sentry/react-native@8.11.1(@expo/env@2.1.2)(dotenv@16.6.1)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)': + '@sentry/react-native@8.12.0(@expo/env@2.3.0)(dotenv@16.6.1)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: - '@sentry/babel-plugin-component-annotate': 5.2.1 - '@sentry/browser': 10.51.0 - '@sentry/cli': 3.4.1 - '@sentry/core': 10.51.0 - '@sentry/expo-upload-sourcemaps': 8.11.1(@expo/env@2.1.2)(dotenv@16.6.1) - '@sentry/react': 10.51.0(react@19.2.6) - '@sentry/types': 10.51.0 + '@sentry/babel-plugin-component-annotate': 5.3.0 + '@sentry/browser': 10.53.1 + '@sentry/cli': 3.4.2 + '@sentry/core': 10.53.1 + '@sentry/expo-upload-sourcemaps': 8.12.0(@expo/env@2.3.0)(dotenv@16.6.1) + '@sentry/react': 10.53.1(react@19.2.6) + '@sentry/types': 10.53.1 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) optionalDependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) transitivePeerDependencies: - '@expo/env' - dotenv - '@sentry/react@10.51.0(react@19.2.6)': - dependencies: - '@sentry/browser': 10.51.0 - '@sentry/core': 10.51.0 - react: 19.2.6 - '@sentry/react@10.53.1(react@19.2.6)': dependencies: '@sentry/browser': 10.53.1 @@ -11273,9 +11617,9 @@ snapshots: - encoding - supports-color - '@sentry/types@10.51.0': + '@sentry/types@10.53.1': dependencies: - '@sentry/core': 10.51.0 + '@sentry/core': 10.53.1 '@sentry/vite-plugin@5.3.0(rollup@4.60.4)': dependencies: @@ -11376,12 +11720,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.3.0 '@tailwindcss/oxide-win32-x64-msvc': 4.3.0 - '@tailwindcss/vite@4.3.0(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))': + '@tailwindcss/vite@4.3.0(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))': dependencies: '@tailwindcss/node': 4.3.0 '@tailwindcss/oxide': 4.3.0 tailwindcss: 4.3.0 - vite: 8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) + vite: 8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) '@testing-library/dom@10.4.1': dependencies: @@ -11403,27 +11747,27 @@ snapshots: picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/react-native@13.3.3(jest@29.7.0(@types/node@25.8.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react-test-renderer@19.2.6(react@19.2.6))(react@19.2.6)': + '@testing-library/react-native@13.3.3(jest@29.7.0(@types/node@25.9.1))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react-test-renderer@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: jest-matcher-utils: 30.3.0 picocolors: 1.1.1 pretty-format: 30.3.0 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) react-test-renderer: 19.2.6(react@19.2.6) redent: 3.0.0 optionalDependencies: - jest: 29.7.0(@types/node@25.8.0) + jest: 29.7.0(@types/node@25.9.1) - '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@babel/runtime': 7.29.2 '@testing-library/dom': 10.4.1 react: 19.2.6 react-dom: 19.2.6(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@types/react': 19.2.15 + '@types/react-dom': 19.2.3(@types/react@19.2.15) '@tootallnate/once@2.0.1': {} @@ -11699,6 +12043,10 @@ snapshots: dependencies: undici-types: 7.24.6 + '@types/node@25.9.1': + dependencies: + undici-types: 7.24.6 + '@types/nodemailer@8.0.0': dependencies: '@types/node': 25.8.0 @@ -11713,15 +12061,15 @@ snapshots: pg-protocol: 1.13.0 pg-types: 2.2.0 - '@types/react-dom@19.2.3(@types/react@19.2.14)': + '@types/react-dom@19.2.3(@types/react@19.2.15)': dependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 '@types/react-test-renderer@19.1.0': dependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 - '@types/react@19.2.14': + '@types/react@19.2.15': dependencies: csstype: 3.2.3 @@ -11743,14 +12091,14 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.59.3(@typescript-eslint/parser@8.59.3(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.59.4(@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.3(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.59.3 - '@typescript-eslint/type-utils': 8.59.3(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) - '@typescript-eslint/utils': 8.59.3(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.59.3 + '@typescript-eslint/parser': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.59.4 + '@typescript-eslint/type-utils': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.59.4 eslint: 10.4.0(jiti@2.7.0) ignore: 7.0.5 natural-compare: 1.4.0 @@ -11759,41 +12107,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.59.3(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)': + '@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.59.3 - '@typescript-eslint/types': 8.59.3 - '@typescript-eslint/typescript-estree': 8.59.3(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.59.3 + '@typescript-eslint/scope-manager': 8.59.4 + '@typescript-eslint/types': 8.59.4 + '@typescript-eslint/typescript-estree': 8.59.4(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.59.4 debug: 4.4.3 eslint: 10.4.0(jiti@2.7.0) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.59.3(typescript@5.9.3)': + '@typescript-eslint/project-service@8.59.4(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.59.3(typescript@5.9.3) - '@typescript-eslint/types': 8.59.3 + '@typescript-eslint/tsconfig-utils': 8.59.4(typescript@5.9.3) + '@typescript-eslint/types': 8.59.4 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.59.3': + '@typescript-eslint/scope-manager@8.59.4': dependencies: - '@typescript-eslint/types': 8.59.3 - '@typescript-eslint/visitor-keys': 8.59.3 + '@typescript-eslint/types': 8.59.4 + '@typescript-eslint/visitor-keys': 8.59.4 - '@typescript-eslint/tsconfig-utils@8.59.3(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.59.4(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.59.3(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.59.3 - '@typescript-eslint/typescript-estree': 8.59.3(typescript@5.9.3) - '@typescript-eslint/utils': 8.59.3(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/types': 8.59.4 + '@typescript-eslint/typescript-estree': 8.59.4(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) debug: 4.4.3 eslint: 10.4.0(jiti@2.7.0) ts-api-utils: 2.5.0(typescript@5.9.3) @@ -11801,113 +12149,113 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.59.3': {} + '@typescript-eslint/types@8.59.4': {} - '@typescript-eslint/typescript-estree@8.59.3(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.59.4(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.59.3(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.59.3(typescript@5.9.3) - '@typescript-eslint/types': 8.59.3 - '@typescript-eslint/visitor-keys': 8.59.3 + '@typescript-eslint/project-service': 8.59.4(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.59.4(typescript@5.9.3) + '@typescript-eslint/types': 8.59.4 + '@typescript-eslint/visitor-keys': 8.59.4 debug: 4.4.3 minimatch: 10.2.5 - semver: 7.8.0 + semver: 7.8.1 tinyglobby: 0.2.16 ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.59.3(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)': + '@typescript-eslint/utils@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.59.3 - '@typescript-eslint/types': 8.59.3 - '@typescript-eslint/typescript-estree': 8.59.3(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.59.4 + '@typescript-eslint/types': 8.59.4 + '@typescript-eslint/typescript-estree': 8.59.4(typescript@5.9.3) eslint: 10.4.0(jiti@2.7.0) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.59.3': + '@typescript-eslint/visitor-keys@8.59.4': dependencies: - '@typescript-eslint/types': 8.59.3 + '@typescript-eslint/types': 8.59.4 eslint-visitor-keys: 5.0.1 '@ungap/structured-clone@1.3.1': {} - '@vitejs/plugin-basic-ssl@2.3.0(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))': + '@vitejs/plugin-basic-ssl@2.3.0(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))': dependencies: - vite: 8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) + vite: 8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) - '@vitest/browser-playwright@4.1.6(playwright@1.60.0)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.6)': + '@vitest/browser-playwright@4.1.7(playwright@1.60.0)(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.7)': dependencies: - '@vitest/browser': 4.1.6(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.6) - '@vitest/mocker': 4.1.6(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) + '@vitest/browser': 4.1.7(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.7) + '@vitest/mocker': 4.1.7(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) playwright: 1.60.0 tinyrainbow: 3.1.0 - vitest: 4.1.6(@opentelemetry/api@1.9.1)(@types/node@25.8.0)(@vitest/browser-playwright@4.1.6)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) + vitest: 4.1.7(@opentelemetry/api@1.9.1)(@types/node@25.9.1)(@vitest/browser-playwright@4.1.7)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.1.6(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.6)': + '@vitest/browser@4.1.7(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.7)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.6(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) - '@vitest/utils': 4.1.6 + '@vitest/mocker': 4.1.7(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) + '@vitest/utils': 4.1.7 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.6(@opentelemetry/api@1.9.1)(@types/node@25.8.0)(@vitest/browser-playwright@4.1.6)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) - ws: 8.20.1 + vitest: 4.1.7(@opentelemetry/api@1.9.1)(@types/node@25.9.1)(@vitest/browser-playwright@4.1.7)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) + ws: 8.21.0 transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/expect@4.1.6': + '@vitest/expect@4.1.7': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.6 - '@vitest/utils': 4.1.6 + '@vitest/spy': 4.1.7 + '@vitest/utils': 4.1.7 chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.6(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))': + '@vitest/mocker@4.1.7(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.1.6 + '@vitest/spy': 4.1.7 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) + vite: 8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) - '@vitest/pretty-format@4.1.6': + '@vitest/pretty-format@4.1.7': dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.1.6': + '@vitest/runner@4.1.7': dependencies: - '@vitest/utils': 4.1.6 + '@vitest/utils': 4.1.7 pathe: 2.0.3 - '@vitest/snapshot@4.1.6': + '@vitest/snapshot@4.1.7': dependencies: - '@vitest/pretty-format': 4.1.6 - '@vitest/utils': 4.1.6 + '@vitest/pretty-format': 4.1.7 + '@vitest/utils': 4.1.7 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.6': {} + '@vitest/spy@4.1.7': {} - '@vitest/utils@4.1.6': + '@vitest/utils@4.1.7': dependencies: - '@vitest/pretty-format': 4.1.6 + '@vitest/pretty-format': 4.1.7 convert-source-map: 2.0.0 tinyrainbow: 3.1.0 @@ -12164,11 +12512,45 @@ snapshots: resolve-from: 5.0.0 optionalDependencies: '@babel/runtime': 7.29.2 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) transitivePeerDependencies: - '@babel/core' - supports-color + babel-preset-expo@55.0.22(@babel/core@7.29.0)(@babel/runtime@7.29.2)(expo@55.0.26)(react-refresh@0.14.2): + dependencies: + '@babel/generator': 7.29.1 + '@babel/helper-module-imports': 7.28.6 + '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-syntax-export-default-from': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) + '@babel/preset-react': 7.28.5(@babel/core@7.29.0) + '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) + '@react-native/babel-preset': 0.83.6(@babel/core@7.29.0) + babel-plugin-react-compiler: 1.0.0 + babel-plugin-react-native-web: 0.21.2 + babel-plugin-syntax-hermes-parser: 0.32.1 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.29.0) + debug: 4.4.3 + react-refresh: 0.14.2 + resolve-from: 5.0.0 + optionalDependencies: + '@babel/runtime': 7.29.2 + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + transitivePeerDependencies: + - '@babel/core' + - supports-color + optional: true + babel-preset-jest@29.6.3(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 @@ -12487,13 +12869,13 @@ snapshots: dependencies: browserslist: 4.28.2 - create-jest@29.7.0(@types/node@25.8.0): + create-jest@29.7.0(@types/node@25.9.1): 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@25.8.0) + jest-config: 29.7.0(@types/node@25.9.1) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -12645,11 +13027,19 @@ snapshots: esbuild: 0.25.12 tsx: 4.21.0 - drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(expo-sqlite@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(pg@8.20.0)(postgres@3.4.9): + drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(expo-sqlite@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(pg@8.20.0)(postgres@3.4.9): optionalDependencies: '@opentelemetry/api': 1.9.1 '@types/pg': 8.15.6 - expo-sqlite: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + expo-sqlite: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + pg: 8.20.0 + postgres: 3.4.9 + + drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(expo-sqlite@55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(pg@8.20.0)(postgres@3.4.9): + optionalDependencies: + '@opentelemetry/api': 1.9.1 + '@types/pg': 8.15.6 + expo-sqlite: 55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) pg: 8.20.0 postgres: 3.4.9 @@ -12933,34 +13323,55 @@ snapshots: expo-application@55.0.15(expo@55.0.24): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-asset@55.0.17(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): + expo-asset@55.0.17(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): dependencies: '@expo/image-utils': 0.8.14(typescript@5.9.3) - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6)) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) transitivePeerDependencies: - supports-color - typescript - expo-constants@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6)): + expo-asset@55.0.17(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): + dependencies: + '@expo/image-utils': 0.8.14(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo-constants: 55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) + react: 19.2.6 + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + transitivePeerDependencies: + - supports-color + - typescript + optional: true + + expo-constants@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)): dependencies: '@expo/env': 2.1.2 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) transitivePeerDependencies: - supports-color + expo-constants@55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)): + dependencies: + '@expo/env': 2.1.2 + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + transitivePeerDependencies: + - supports-color + optional: true + expo-crypto@55.0.15(expo@55.0.24): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) expo-dev-client@55.0.34(expo@55.0.24): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) expo-dev-launcher: 55.0.35(expo@55.0.24) expo-dev-menu: 55.0.29(expo@55.0.24) expo-dev-menu-interface: 55.0.2(expo@55.0.24) @@ -12970,168 +13381,232 @@ snapshots: expo-dev-launcher@55.0.35(expo@55.0.24): dependencies: '@expo/schema-utils': 55.0.4 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) expo-dev-menu: 55.0.29(expo@55.0.24) expo-manifests: 55.0.17(expo@55.0.24) expo-dev-menu-interface@55.0.2(expo@55.0.24): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) expo-dev-menu@55.0.29(expo@55.0.24): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) expo-dev-menu-interface: 55.0.2(expo@55.0.24) expo-device@55.0.17(expo@55.0.24): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) ua-parser-js: 0.7.41 - expo-file-system@55.0.20(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6)): + expo-file-system@55.0.20(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - expo-font@55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6): + expo-file-system@55.0.22(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + optional: true + + expo-font@55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): + dependencies: + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) fontfaceobserver: 2.3.0 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - expo-glass-effect@55.0.11(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6): + expo-font@55.0.8(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + fontfaceobserver: 2.3.0 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - expo-image@55.0.10(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6): + expo-font@55.0.8(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + fontfaceobserver: 2.3.0 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + optional: true + + expo-glass-effect@55.0.11(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): + dependencies: + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + react: 19.2.6 + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + + expo-glass-effect@55.0.11(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): + dependencies: + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + react: 19.2.6 + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + optional: true + + expo-image@55.0.10(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): + dependencies: + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + react: 19.2.6 + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) sf-symbols-typescript: 2.2.0 + expo-image@55.0.10(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): + dependencies: + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + react: 19.2.6 + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + sf-symbols-typescript: 2.2.0 + optional: true + expo-json-utils@55.0.2: {} expo-keep-awake@55.0.8(expo@55.0.24)(react@19.2.6): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react: 19.2.6 - expo-linking@55.0.15(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6): + expo-keep-awake@55.0.8(expo@55.0.26)(react@19.2.6): dependencies: - expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6)) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + react: 19.2.6 + optional: true + + expo-linking@55.0.15(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): + dependencies: + expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) invariant: 2.2.4 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) transitivePeerDependencies: - expo - supports-color + expo-linking@55.0.15(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): + dependencies: + expo-constants: 55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) + invariant: 2.2.4 + react: 19.2.6 + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + transitivePeerDependencies: + - expo + - supports-color + optional: true + expo-localization@55.0.14(expo@55.0.24)(react@19.2.6): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react: 19.2.6 rtl-detect: 1.1.2 expo-location@55.1.10(expo@55.0.24)(typescript@5.9.3): dependencies: '@expo/image-utils': 0.8.14(typescript@5.9.3) - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) transitivePeerDependencies: - supports-color - typescript expo-manifests@55.0.17(expo@55.0.24): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) expo-json-utils: 55.0.2 expo-modules-autolinking@55.0.22(typescript@5.9.3): dependencies: '@expo/require-utils': 55.0.5(typescript@5.9.3) - '@expo/spawn-async': 1.7.2 + '@expo/spawn-async': 1.8.0 chalk: 4.1.2 commander: 7.2.0 transitivePeerDependencies: - supports-color - typescript - expo-modules-core@55.0.25(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6): + expo-modules-autolinking@55.0.24(typescript@5.9.3): + dependencies: + '@expo/require-utils': 55.0.5(typescript@5.9.3) + '@expo/spawn-async': 1.8.0 + chalk: 4.1.2 + commander: 7.2.0 + transitivePeerDependencies: + - supports-color + - typescript + optional: true + + expo-modules-core@55.0.25(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: invariant: 2.2.4 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) optionalDependencies: - react-native-worklets: 0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + react-native-worklets: 0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - expo-navigation-bar@55.0.13(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6): + expo-navigation-bar@55.0.13(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: debug: 4.4.3 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) - react-native-is-edge-to-edge: 1.3.1(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + react-native-is-edge-to-edge: 1.3.1(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) transitivePeerDependencies: - supports-color - expo-notifications@55.0.23(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): + expo-notifications@55.0.23(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): dependencies: '@expo/image-utils': 0.8.14(typescript@5.9.3) abort-controller: 3.0.0 badgin: 1.2.3 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) expo-application: 55.0.15(expo@55.0.24) - expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6)) + expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) transitivePeerDependencies: - supports-color - typescript - expo-router@55.0.14(4a88f676dfb25e563c95d7c5569dae4c): + expo-router@55.0.14(2282ac51b8838b5d1fdb91eeaf81e816): dependencies: - '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - '@expo/metro-runtime': 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + '@expo/metro-runtime': 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) '@expo/schema-utils': 55.0.4 - '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.6) - '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@react-navigation/bottom-tabs': 7.15.13(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.7.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native-screens@4.25.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - '@react-navigation/native': 7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - '@react-navigation/native-stack': 7.14.14(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.7.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native-screens@4.25.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + '@radix-ui/react-slot': 1.2.4(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@react-navigation/bottom-tabs': 7.15.13(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-screens@4.25.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + '@react-navigation/native': 7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + '@react-navigation/native-stack': 7.14.14(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-screens@4.25.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) client-only: 0.0.1 debug: 4.4.3 escape-string-regexp: 4.0.0 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6)) - expo-glass-effect: 55.0.11(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - expo-image: 55.0.10(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - expo-linking: 55.0.15(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) + expo-glass-effect: 55.0.11(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + expo-image: 55.0.10(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + expo-linking: 55.0.15(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) expo-server: 55.0.9 - expo-symbols: 55.0.8(expo-font@55.0.7)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + expo-symbols: 55.0.8(expo-font@55.0.8)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) fast-deep-equal: 3.1.3 invariant: 2.2.4 nanoid: 3.3.12 query-string: 7.1.3 react: 19.2.6 react-fast-compare: 3.2.2 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) - react-native-is-edge-to-edge: 1.3.1(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - react-native-safe-area-context: 5.7.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - react-native-screens: 4.25.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + react-native-is-edge-to-edge: 1.3.1(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + react-native-safe-area-context: 5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + react-native-screens: 4.25.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) semver: 7.6.3 server-only: 0.0.1 sf-symbols-typescript: 2.2.0 shallowequal: 1.1.0 use-latest-callback: 0.2.6(react@19.2.6) - vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) optionalDependencies: - '@testing-library/react-native': 13.3.3(jest@29.7.0(@types/node@25.8.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react-test-renderer@19.2.6(react@19.2.6))(react@19.2.6) + '@testing-library/react-native': 13.3.3(jest@29.7.0(@types/node@25.9.1))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react-test-renderer@19.2.6(react@19.2.6))(react@19.2.6) react-dom: 19.2.6(react@19.2.6) - react-native-gesture-handler: 2.31.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - react-native-reanimated: 4.3.1(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + react-native-gesture-handler: 2.31.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + react-native-reanimated: 4.3.1(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) transitivePeerDependencies: - '@react-native-masked-view/masked-view' - '@types/react' @@ -13139,90 +13614,160 @@ snapshots: - expo-font - supports-color + expo-router@55.0.14(ed5b7a0609852094b71ba620c57bdc35): + dependencies: + '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + '@expo/metro-runtime': 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.26)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + '@expo/schema-utils': 55.0.4 + '@radix-ui/react-slot': 1.2.4(@types/react@19.2.15)(react@19.2.6) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@react-navigation/bottom-tabs': 7.15.13(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-screens@4.25.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + '@react-navigation/native': 7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + '@react-navigation/native-stack': 7.14.14(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-screens@4.25.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + client-only: 0.0.1 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo-constants: 55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) + expo-glass-effect: 55.0.11(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + expo-image: 55.0.10(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + expo-linking: 55.0.15(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + expo-server: 55.0.9 + expo-symbols: 55.0.8(expo-font@55.0.8)(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + fast-deep-equal: 3.1.3 + invariant: 2.2.4 + nanoid: 3.3.12 + query-string: 7.1.3 + react: 19.2.6 + react-fast-compare: 3.2.2 + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + react-native-is-edge-to-edge: 1.3.1(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + react-native-safe-area-context: 5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + react-native-screens: 4.25.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + semver: 7.6.3 + server-only: 0.0.1 + sf-symbols-typescript: 2.2.0 + shallowequal: 1.1.0 + use-latest-callback: 0.2.6(react@19.2.6) + vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + optionalDependencies: + '@testing-library/react-native': 13.3.3(jest@29.7.0(@types/node@25.9.1))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react-test-renderer@19.2.6(react@19.2.6))(react@19.2.6) + react-dom: 19.2.6(react@19.2.6) + react-native-gesture-handler: 2.31.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + react-native-reanimated: 4.3.1(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + transitivePeerDependencies: + - '@react-native-masked-view/masked-view' + - '@types/react' + - '@types/react-dom' + - expo-font + - supports-color + optional: true + expo-secure-store@55.0.14(expo@55.0.24): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + + expo-server@55.0.11: + optional: true expo-server@55.0.9: {} expo-splash-screen@55.0.21(expo@55.0.24)(typescript@5.9.3): dependencies: '@expo/prebuild-config': 55.0.18(expo@55.0.24)(typescript@5.9.3) - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) transitivePeerDependencies: - supports-color - typescript - expo-sqlite@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6): + expo-sqlite@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: await-lock: 2.2.2 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - expo-status-bar@55.0.6(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6): + expo-sqlite@55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): + dependencies: + await-lock: 2.2.2 + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + react: 19.2.6 + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + optional: true + + expo-status-bar@55.0.6(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) - react-native-is-edge-to-edge: 1.3.1(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + react-native-is-edge-to-edge: 1.3.1(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - expo-symbols@55.0.8(expo-font@55.0.7)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6): + expo-symbols@55.0.8(expo-font@55.0.8)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: '@expo-google-fonts/material-symbols': 0.4.36 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-font: 55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo-font: 55.0.8(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) sf-symbols-typescript: 2.2.0 - expo-system-ui@55.0.18(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6)): + expo-symbols@55.0.8(expo-font@55.0.8)(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): + dependencies: + '@expo-google-fonts/material-symbols': 0.4.36 + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo-font: 55.0.8(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + react: 19.2.6 + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + sf-symbols-typescript: 2.2.0 + optional: true + + expo-system-ui@55.0.18(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)): dependencies: '@react-native/normalize-colors': 0.83.6 debug: 4.4.3 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) transitivePeerDependencies: - supports-color expo-updates-interface@55.1.6(expo@55.0.24): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-web-browser@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6)): + expo-web-browser@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - expo@55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): + expo@55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): dependencies: '@babel/runtime': 7.29.2 - '@expo/cli': 55.0.30(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.7)(expo-router@55.0.14)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + '@expo/cli': 55.0.30(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(expo-router@55.0.14)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) '@expo/config': 55.0.17(typescript@5.9.3) '@expo/config-plugins': 55.0.9 - '@expo/devtools': 55.0.3(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + '@expo/devtools': 55.0.3(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) '@expo/fingerprint': 0.16.7 '@expo/local-build-cache-provider': 55.0.13(typescript@5.9.3) - '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) '@expo/metro': 55.1.1 '@expo/metro-config': 55.0.21(expo@55.0.24)(typescript@5.9.3) - '@expo/vector-icons': 15.1.1(expo-font@55.0.7)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + '@expo/vector-icons': 15.1.1(expo-font@55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) '@ungap/structured-clone': 1.3.1 babel-preset-expo: 55.0.21(@babel/core@7.29.0)(@babel/runtime@7.29.2)(expo@55.0.24)(react-refresh@0.14.2) - expo-asset: 55.0.17(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6)) - expo-file-system: 55.0.20(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6)) - expo-font: 55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + expo-asset: 55.0.17(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) + expo-file-system: 55.0.20(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) + expo-font: 55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) expo-keep-awake: 55.0.8(expo@55.0.24)(react@19.2.6) expo-modules-autolinking: 55.0.22(typescript@5.9.3) - expo-modules-core: 55.0.25(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + expo-modules-core: 55.0.25(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) pretty-format: 29.7.0 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) react-refresh: 0.14.2 whatwg-url-minimum: 0.1.2 optionalDependencies: - '@expo/dom-webview': 55.0.5(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - '@expo/metro-runtime': 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + '@expo/dom-webview': 55.0.5(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + '@expo/metro-runtime': 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) transitivePeerDependencies: - '@babel/core' - bufferutil @@ -13235,6 +13780,49 @@ snapshots: - typescript - utf-8-validate + expo@55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): + dependencies: + '@babel/runtime': 7.29.2 + '@expo/cli': 55.0.32(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.8)(expo-router@55.0.14)(expo@55.0.26)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + '@expo/config': 55.0.17(typescript@5.9.3) + '@expo/config-plugins': 55.0.10 + '@expo/devtools': 55.0.3(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + '@expo/fingerprint': 0.16.7 + '@expo/local-build-cache-provider': 55.0.13(typescript@5.9.3) + '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + '@expo/metro': 55.1.1 + '@expo/metro-config': 55.0.23(expo@55.0.26)(typescript@5.9.3) + '@expo/vector-icons': 15.1.1(expo-font@55.0.8)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + '@ungap/structured-clone': 1.3.1 + babel-preset-expo: 55.0.22(@babel/core@7.29.0)(@babel/runtime@7.29.2)(expo@55.0.26)(react-refresh@0.14.2) + expo-asset: 55.0.17(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo-constants: 55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) + expo-file-system: 55.0.22(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) + expo-font: 55.0.8(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + expo-keep-awake: 55.0.8(expo@55.0.26)(react@19.2.6) + expo-modules-autolinking: 55.0.24(typescript@5.9.3) + expo-modules-core: 55.0.25(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + pretty-format: 29.7.0 + react: 19.2.6 + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + react-refresh: 0.14.2 + whatwg-url-minimum: 0.1.2 + optionalDependencies: + '@expo/dom-webview': 55.0.5(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + '@expo/metro-runtime': 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.26)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + transitivePeerDependencies: + - '@babel/core' + - bufferutil + - expo-router + - expo-widgets + - react-dom + - react-native-worklets + - react-server-dom-webpack + - supports-color + - typescript + - utf-8-validate + optional: true + exponential-backoff@3.1.3: {} express@4.22.2: @@ -13699,7 +14287,7 @@ snapshots: '@babel/parser': 7.29.3 '@istanbuljs/schema': 0.1.6 istanbul-lib-coverage: 3.2.2 - semver: 7.8.0 + semver: 7.8.1 transitivePeerDependencies: - supports-color @@ -13734,7 +14322,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 25.8.0 + '@types/node': 25.9.1 chalk: 4.1.2 co: 4.6.0 dedent: 1.7.2 @@ -13754,16 +14342,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@25.8.0): + jest-cli@29.7.0(@types/node@25.9.1): dependencies: '@jest/core': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@25.8.0) + create-jest: 29.7.0(@types/node@25.9.1) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@25.8.0) + jest-config: 29.7.0(@types/node@25.9.1) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -13773,7 +14361,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@25.8.0): + jest-config@29.7.0(@types/node@25.9.1): dependencies: '@babel/core': 7.29.0 '@jest/test-sequencer': 29.7.0 @@ -13798,7 +14386,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -13855,21 +14443,21 @@ snapshots: jest-mock: 29.7.0 jest-util: 29.7.0 - jest-expo@55.0.17(@babel/core@7.29.0)(canvas@3.2.3)(expo@55.0.24)(jest@29.7.0(@types/node@25.8.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): + jest-expo@55.0.17(@babel/core@7.29.0)(canvas@3.2.3)(expo@55.0.24)(jest@29.7.0(@types/node@25.9.1))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): dependencies: '@expo/config': 55.0.17(typescript@5.9.3) '@expo/json-file': 10.0.14 '@jest/create-cache-key-function': 29.7.0 '@jest/globals': 29.7.0 babel-jest: 29.7.0(@babel/core@7.29.0) - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) jest-environment-jsdom: 29.7.0(canvas@3.2.3) jest-snapshot: 29.7.0 jest-watch-select-projects: 2.0.0 - jest-watch-typeahead: 2.2.1(jest@29.7.0(@types/node@25.8.0)) + jest-watch-typeahead: 2.2.1(jest@29.7.0(@types/node@25.9.1)) json5: 2.2.3 lodash: 4.18.1 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) react-test-renderer: 19.2.0(react@19.2.6) server-only: 0.0.1 stacktrace-js: 2.0.2 @@ -13970,7 +14558,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 25.8.0 + '@types/node': 25.9.1 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -13998,7 +14586,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 25.8.0 + '@types/node': 25.9.1 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.3 @@ -14037,7 +14625,7 @@ snapshots: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.8.0 + semver: 7.8.1 transitivePeerDependencies: - supports-color @@ -14065,11 +14653,11 @@ snapshots: chalk: 3.0.0 prompts: 2.4.2 - jest-watch-typeahead@2.2.1(jest@29.7.0(@types/node@25.8.0)): + jest-watch-typeahead@2.2.1(jest@29.7.0(@types/node@25.9.1)): dependencies: ansi-escapes: 6.2.1 chalk: 4.1.2 - jest: 29.7.0(@types/node@25.8.0) + jest: 29.7.0(@types/node@25.9.1) jest-regex-util: 29.6.3 jest-watcher: 29.7.0 slash: 5.1.0 @@ -14094,12 +14682,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@25.8.0): + jest@29.7.0(@types/node@25.9.1): dependencies: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@25.8.0) + jest-cli: 29.7.0(@types/node@25.9.1) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -14153,7 +14741,7 @@ snapshots: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.20.1 + ws: 8.21.0 xml-name-validator: 4.0.0 optionalDependencies: canvas: 3.2.3 @@ -14330,6 +14918,8 @@ snapshots: lru-cache@11.3.6: {} + lru-cache@11.5.0: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -14344,7 +14934,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.8.0 + semver: 7.8.1 makeerror@1.0.12: dependencies: @@ -14492,7 +15082,7 @@ snapshots: metro-minify-terser@0.84.4: dependencies: flow-enums-runtime: 0.0.6 - terser: 5.47.1 + terser: 5.48.0 metro-resolver@0.83.7: dependencies: @@ -14663,7 +15253,7 @@ snapshots: serialize-error: 2.1.0 source-map: 0.5.7 throat: 5.0.0 - ws: 7.5.10 + ws: 7.5.11 yargs: 17.7.2 transitivePeerDependencies: - bufferutil @@ -14709,7 +15299,7 @@ snapshots: serialize-error: 2.1.0 source-map: 0.5.7 throat: 5.0.0 - ws: 7.5.10 + ws: 7.5.11 yargs: 17.7.2 transitivePeerDependencies: - bufferutil @@ -14800,7 +15390,7 @@ snapshots: node-abi@3.92.0: dependencies: - semver: 7.8.0 + semver: 7.8.1 optional: true node-addon-api@7.1.1: @@ -14816,7 +15406,7 @@ snapshots: node-releases@2.0.44: {} - nodemailer@8.0.7: {} + nodemailer@8.0.8: {} non-error@0.1.0: {} @@ -14826,7 +15416,7 @@ snapshots: dependencies: hosted-git-info: 7.0.2 proc-log: 4.2.0 - semver: 7.8.0 + semver: 7.8.1 validate-npm-package-name: 5.0.1 npm-run-path@4.0.1: @@ -14973,7 +15563,7 @@ snapshots: path-scurry@2.0.2: dependencies: - lru-cache: 11.3.6 + lru-cache: 11.5.0 minipass: 7.1.3 path-to-regexp@0.1.13: {} @@ -15118,6 +15708,13 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.15: + dependencies: + nanoid: 3.3.12 + picocolors: 1.1.1 + source-map-js: 1.2.1 + optional: true + postgres-array@2.0.0: {} postgres-bytea@1.0.1: {} @@ -15267,7 +15864,7 @@ snapshots: react-devtools-core@6.1.5: dependencies: shell-quote: 1.8.3 - ws: 7.5.10 + ws: 7.5.11 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -15283,7 +15880,7 @@ snapshots: dependencies: react: 19.2.6 - react-i18next@17.0.8(i18next@26.2.0(typescript@5.9.3))(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): + react-i18next@17.0.8(i18next@26.2.0(typescript@5.9.3))(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): dependencies: '@babel/runtime': 7.29.2 html-parse-stringify: 3.0.1 @@ -15292,7 +15889,7 @@ snapshots: use-sync-external-store: 1.6.0(react@19.2.6) optionalDependencies: react-dom: 19.2.6(react@19.2.6) - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) typescript: 5.9.3 react-is@16.13.1: {} @@ -15310,41 +15907,41 @@ snapshots: react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - react-native-gesture-handler@2.31.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6): + react-native-gesture-handler@2.31.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: '@egjs/hammerjs': 2.0.17 '@types/react-test-renderer': 19.1.0 hoist-non-react-statics: 3.3.2 invariant: 2.2.4 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - react-native-is-edge-to-edge@1.3.1(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6): + react-native-is-edge-to-edge@1.3.1(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - react-native-reanimated@4.3.1(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6): + react-native-reanimated@4.3.1(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) - react-native-is-edge-to-edge: 1.3.1(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) - react-native-worklets: 0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + react-native-is-edge-to-edge: 1.3.1(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + react-native-worklets: 0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) semver: 7.8.0 - react-native-safe-area-context@5.7.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6): + react-native-safe-area-context@5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - react-native-screens@4.25.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6): + react-native-screens@4.25.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: react: 19.2.6 react-freeze: 1.0.4(react@19.2.6) - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) warn-once: 0.1.1 - react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6): + react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) @@ -15359,12 +15956,12 @@ snapshots: '@react-native/metro-config': 0.85.1(@babel/core@7.29.0) convert-source-map: 2.0.0 react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6) - semver: 7.8.0 + react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) + semver: 7.8.1 transitivePeerDependencies: - supports-color - react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6): + react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6): dependencies: '@jest/create-cache-key-function': 29.7.0 '@react-native/assets-registry': 0.83.4 @@ -15373,7 +15970,7 @@ snapshots: '@react-native/gradle-plugin': 0.83.4 '@react-native/js-polyfills': 0.83.4 '@react-native/normalize-colors': 0.83.4 - '@react-native/virtualized-lists': 0.83.4(@types/react@19.2.14)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.14)(react@19.2.6))(react@19.2.6) + '@react-native/virtualized-lists': 0.83.4(@types/react@19.2.15)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -15403,7 +16000,7 @@ snapshots: ws: 7.5.10 yargs: 17.7.2 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 transitivePeerDependencies: - '@babel/core' - '@react-native-community/cli' @@ -15414,24 +16011,24 @@ snapshots: react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.6): + react-remove-scroll-bar@2.3.8(@types/react@19.2.15)(react@19.2.6): dependencies: react: 19.2.6 - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.6) + react-style-singleton: 2.2.3(@types/react@19.2.15)(react@19.2.6) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 - react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.6): + react-remove-scroll@2.7.2(@types/react@19.2.15)(react@19.2.6): dependencies: react: 19.2.6 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.6) - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.6) + react-remove-scroll-bar: 2.3.8(@types/react@19.2.15)(react@19.2.6) + react-style-singleton: 2.2.3(@types/react@19.2.15)(react@19.2.6) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.6) - use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.6) + use-callback-ref: 1.3.3(@types/react@19.2.15)(react@19.2.6) + use-sidecar: 1.1.3(@types/react@19.2.15)(react@19.2.6) optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6): dependencies: @@ -15441,13 +16038,13 @@ snapshots: optionalDependencies: react-dom: 19.2.6(react@19.2.6) - react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.6): + react-style-singleton@2.2.3(@types/react@19.2.15)(react@19.2.6): dependencies: get-nonce: 1.0.1 react: 19.2.6 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 react-test-renderer@19.2.0(react@19.2.6): dependencies: @@ -15636,6 +16233,8 @@ snapshots: semver@7.8.0: {} + semver@7.8.1: {} + send@0.19.2: dependencies: debug: 2.6.9 @@ -15947,6 +16546,13 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 + terser@5.48.0: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.16.0 + commander: 2.20.3 + source-map-support: 0.5.21 + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.6 @@ -15961,7 +16567,7 @@ snapshots: tinybench@2.9.0: {} - tinyexec@1.1.2: {} + tinyexec@1.2.2: {} tinyglobby@0.2.16: dependencies: @@ -16065,12 +16671,12 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - typescript-eslint@8.59.3(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3): + typescript-eslint@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.59.3(@typescript-eslint/parser@8.59.3(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) - '@typescript-eslint/parser': 8.59.3(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.59.3(typescript@5.9.3) - '@typescript-eslint/utils': 8.59.3(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.59.4(@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/parser': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.59.4(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3) eslint: 10.4.0(jiti@2.7.0) typescript: 5.9.3 transitivePeerDependencies: @@ -16120,12 +16726,12 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 - use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.6): + use-callback-ref@1.3.3(@types/react@19.2.15)(react@19.2.6): dependencies: react: 19.2.6 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 use-latest-callback@0.2.6(react@19.2.6): dependencies: @@ -16135,13 +16741,13 @@ snapshots: dependencies: react: 19.2.6 - use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.6): + use-sidecar@1.1.3(@types/react@19.2.15)(react@19.2.6): dependencies: detect-node-es: 1.1.0 react: 19.2.6 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.14 + '@types/react': 19.2.15 use-sync-external-store@1.6.0(react@19.2.6): dependencies: @@ -16168,22 +16774,22 @@ snapshots: vary@1.1.2: {} - vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6): + vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6): dependencies: - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) transitivePeerDependencies: - '@types/react' - '@types/react-dom' - vite-node@3.2.4(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0): + vite-node@3.2.4(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.3(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) + vite: 7.3.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - jiti @@ -16198,7 +16804,7 @@ snapshots: - tsx - yaml - vite@7.3.3(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0): + vite@7.3.3(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0): dependencies: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) @@ -16207,15 +16813,15 @@ snapshots: rollup: 4.60.4 tinyglobby: 0.2.16 optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 fsevents: 2.3.3 jiti: 2.7.0 lightningcss: 1.32.0 - terser: 5.47.1 + terser: 5.48.0 tsx: 4.21.0 yaml: 2.9.0 - vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0): + vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -16223,23 +16829,23 @@ snapshots: rolldown: 1.0.1 tinyglobby: 0.2.16 optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 esbuild: 0.27.7 fsevents: 2.3.3 jiti: 2.7.0 - terser: 5.47.1 + terser: 5.48.0 tsx: 4.21.0 yaml: 2.9.0 - vitest@4.1.6(@opentelemetry/api@1.9.1)(@types/node@25.8.0)(@vitest/browser-playwright@4.1.6)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)): + vitest@4.1.7(@opentelemetry/api@1.9.1)(@types/node@25.9.1)(@vitest/browser-playwright@4.1.7)(jsdom@29.1.1(canvas@3.2.3))(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)): dependencies: - '@vitest/expect': 4.1.6 - '@vitest/mocker': 4.1.6(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.6 - '@vitest/runner': 4.1.6 - '@vitest/snapshot': 4.1.6 - '@vitest/spy': 4.1.6 - '@vitest/utils': 4.1.6 + '@vitest/expect': 4.1.7 + '@vitest/mocker': 4.1.7(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.7 + '@vitest/runner': 4.1.7 + '@vitest/snapshot': 4.1.7 + '@vitest/spy': 4.1.7 + '@vitest/utils': 4.1.7 es-module-lexer: 2.1.0 expect-type: 1.3.0 magic-string: 0.30.21 @@ -16248,15 +16854,15 @@ snapshots: picomatch: 4.0.4 std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 1.1.2 + tinyexec: 1.2.2 tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0) + vite: 8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 - '@types/node': 25.8.0 - '@vitest/browser-playwright': 4.1.6(playwright@1.60.0)(vite@8.0.13(@types/node@25.8.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.47.1)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.6) + '@types/node': 25.9.1 + '@vitest/browser-playwright': 4.1.7(playwright@1.60.0)(vite@8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.7) jsdom: 29.1.1(canvas@3.2.3) transitivePeerDependencies: - msw @@ -16357,7 +16963,9 @@ snapshots: ws@7.5.10: {} - ws@8.20.1: {} + ws@7.5.11: {} + + ws@8.21.0: {} xcode@3.0.1: dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 0e8a441..8a3074d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -11,7 +11,7 @@ catalog: "@sentry/react": ^10.53.1 "@tailwindcss/vite": ^4.3.0 "@types/node": ^22.19.19 - "@types/react": ^19.2.14 + "@types/react": ^19.2.15 "@types/react-dom": ^19.2.3 drizzle-kit: ^0.31.10 drizzle-orm: ^0.45.2 From 095dd744a528d0c1aaaa816df1146ef5712a6dee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 24 May 2026 08:31:54 +0000 Subject: [PATCH 2/3] [github-actions] pnpm dedupe --- pnpm-lock.yaml | 868 +++++++------------------------------------------ 1 file changed, 110 insertions(+), 758 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8f0724d..dd806a5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -72,7 +72,7 @@ importers: dependencies: expo: specifier: ~55.0.24 - version: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + version: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react: specifier: ^19.2.5 version: 19.2.6 @@ -130,7 +130,7 @@ importers: version: 0.31.10 drizzle-orm: specifier: 'catalog:' - version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(expo-sqlite@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(pg@8.20.0)(postgres@3.4.9) + version: 0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(expo-sqlite@55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(pg@8.20.0)(postgres@3.4.9) drizzle-postgis: specifier: 'catalog:' version: 1.1.1 @@ -317,7 +317,7 @@ importers: dependencies: '@expo/metro-runtime': specifier: ^55.0.11 - version: 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + version: 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.26)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) '@gorhom/bottom-sheet': specifier: ^5.2.14 version: 5.2.14(@types/react@19.2.15)(react-native-gesture-handler@2.31.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-reanimated@4.3.1(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) @@ -329,7 +329,7 @@ importers: version: 3.4.3 '@sentry/react-native': specifier: ~8.12.0 - version: 8.12.0(@expo/env@2.3.0)(dotenv@16.6.1)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + version: 8.12.0(@expo/env@2.3.0)(dotenv@16.6.1)(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) '@trails-cool/api': specifier: workspace:* version: link:../../packages/api @@ -350,61 +350,61 @@ importers: version: link:../../packages/types expo: specifier: ~55.0.24 - version: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + version: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) expo-constants: specifier: ~55.0.16 - version: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) + version: 55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) expo-crypto: specifier: ~55.0.15 - version: 55.0.15(expo@55.0.24) + version: 55.0.15(expo@55.0.26) expo-dev-client: specifier: ~55.0.34 - version: 55.0.34(expo@55.0.24) + version: 55.0.34(expo@55.0.26) expo-dev-menu: specifier: ^55.0.29 - version: 55.0.29(expo@55.0.24) + version: 55.0.29(expo@55.0.26) expo-device: specifier: ~55.0.17 - version: 55.0.17(expo@55.0.24) + version: 55.0.17(expo@55.0.26) expo-file-system: specifier: ~55.0.20 - version: 55.0.20(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) + version: 55.0.22(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) expo-linking: specifier: ~55.0.15 - version: 55.0.15(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + version: 55.0.15(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) expo-localization: specifier: ~55.0.14 - version: 55.0.14(expo@55.0.24)(react@19.2.6) + version: 55.0.14(expo@55.0.26)(react@19.2.6) expo-location: specifier: ~55.1.10 - version: 55.1.10(expo@55.0.24)(typescript@5.9.3) + version: 55.1.10(expo@55.0.26)(typescript@5.9.3) expo-navigation-bar: specifier: ~55.0.13 - version: 55.0.13(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + version: 55.0.13(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) expo-notifications: specifier: ~55.0.23 - version: 55.0.23(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + version: 55.0.23(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) expo-router: specifier: ~55.0.14 - version: 55.0.14(2282ac51b8838b5d1fdb91eeaf81e816) + version: 55.0.14(ed5b7a0609852094b71ba620c57bdc35) expo-secure-store: specifier: ~55.0.14 - version: 55.0.14(expo@55.0.24) + version: 55.0.14(expo@55.0.26) expo-splash-screen: specifier: ~55.0.21 - version: 55.0.21(expo@55.0.24)(typescript@5.9.3) + version: 55.0.21(expo@55.0.26)(typescript@5.9.3) expo-sqlite: specifier: ~55.0.16 - version: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) + version: 55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) expo-status-bar: specifier: ~55.0.6 version: 55.0.6(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) expo-system-ui: specifier: ^55.0.18 - version: 55.0.18(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) + version: 55.0.18(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) expo-web-browser: specifier: ~55.0.16 - version: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) + version: 55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) react: specifier: ^19.2.5 version: 19.2.6 @@ -441,7 +441,7 @@ importers: version: 19.2.15 jest-expo: specifier: ^55.0.17 - version: 55.0.17(@babel/core@7.29.0)(canvas@3.2.3)(expo@55.0.24)(jest@29.7.0(@types/node@25.9.1))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + version: 55.0.17(@babel/core@7.29.0)(canvas@3.2.3)(expo@55.0.26)(jest@29.7.0(@types/node@25.9.1))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react-test-renderer: specifier: ^19.2.6 version: 19.2.6(react@19.2.6) @@ -1796,19 +1796,6 @@ packages: '@expo-google-fonts/material-symbols@0.4.36': resolution: {integrity: sha512-hFIN8h99qUid9OppB9Sj18sUQib2O0I9c0soBmgb932Kz+20pAaGe/PRH6NdAqm8/DdOs+Hwx8A4Fqn9ZNadhg==} - '@expo/cli@55.0.30': - resolution: {integrity: sha512-luWcCgompncWtCi1HqQfY32MVOuD0kUeARpr1Le1LeKVtZykjOwnz7YWXZo5zjISiD7L/gQnBNGVrRjvREsJqg==} - hasBin: true - peerDependencies: - expo: '*' - expo-router: '*' - react-native: '*' - peerDependenciesMeta: - expo-router: - optional: true - react-native: - optional: true - '@expo/cli@55.0.32': resolution: {integrity: sha512-fq+/yUYBVw5ZudT4igNyJ3WaF17R39iS7EZlrkfHkLI7Y1kmUlivabwKviLoAfepJOKjKODKpViti9EPfmG3SQ==} hasBin: true @@ -1828,9 +1815,6 @@ packages: '@expo/config-plugins@55.0.10': resolution: {integrity: sha512-1txnRnMLIO5lM/Of/VyvDkCwZap0YFvCyfSTIlUQamhwhx6Rh7r8TXfcIstaDYUQ7X6GTMkNxLXWbcYS6ZAFDw==} - '@expo/config-plugins@55.0.9': - resolution: {integrity: sha512-jLfpxru8dTo7eU0cqeTWuQav7byyjb37eF/mbXl1/3eTBHBvFU1VGxpeKxanUdTQAAjqzH8KGgWb0fWcce+z1w==} - '@expo/config-types@55.0.5': resolution: {integrity: sha512-sCmSUZG4mZ/ySXvfyyBdhjivz8Q539X1NondwDdYG7s3SBsk+wsgPJzYsqgAG/P9+l0xWjUD2F+kQ1cAJ6NNLg==} @@ -1877,9 +1861,6 @@ packages: '@expo/image-utils@0.8.14': resolution: {integrity: sha512-5Sn+jG4Cw+shC2wDMXoqSAJnvERbiwzHn05FpWtD5IBflfTIs5gUmjzwiGVyjOdlMSQhgRrw/AymPbmO9h9mpQ==} - '@expo/json-file@10.0.14': - resolution: {integrity: sha512-yWwBFywFv+SxkJp/pIzzA416JVYflNUh7pqQzgaA6nXDqRyK7KfrqVzk8PdUfDnqbBcaZZxpzNssfQZzp5KHrA==} - '@expo/json-file@10.0.15': resolution: {integrity: sha512-xLtsy1820Rf2myhhIc7WmfoUg5cWEJB9tEylhgGhRF/acYGuUXUVkKHYoHY31GbYf6CIZNvipTFxuvWRpVlXTw==} @@ -1897,14 +1878,6 @@ packages: react: ^19.2.5 react-native: '*' - '@expo/metro-config@55.0.21': - resolution: {integrity: sha512-pJ8G0uCxqA9KK+XCzXZF7ZI37rduD2l7Cun2e3rVAgB2yeOZagUD+VBvooU9QPiWx9e/7EbimH5/JP81JyhQlg==} - peerDependencies: - expo: '*' - peerDependenciesMeta: - expo: - optional: true - '@expo/metro-config@55.0.23': resolution: {integrity: sha512-Mkw3Ss/1LFlafH3iie3r9E13yKMyJgZqGTEkGviGf6LYp51eY5fR8ATbXrNsH69wVc2z+ty4lT/8lEA18YJv7g==} peerDependencies: @@ -1927,23 +1900,13 @@ packages: '@expo/metro@55.1.1': resolution: {integrity: sha512-/wfXo5hTuAVpVLG/4hzlmD9NBGJkzkmBEMm/4VICajYRbj7y8OmqqPWbbymzHiBiHB6tI9BnsyXpQM6zVZEECg==} - '@expo/osascript@2.4.3': - resolution: {integrity: sha512-wbuj3EebM7W9hN/Wp4xTzKd6rQ2zKJzAxkFxkOOwyysLp0HOAgQ4/5RINyoS241pZUX2rUHq7mAJ7pcCQ8U0Ow==} - engines: {node: '>=12'} - '@expo/osascript@2.6.0': resolution: {integrity: sha512-QvqDBlJXa8CS2vRORJ4wEflY1m0vVI07uSJdIRgBrLxRPBcsrXxrtU7+wXRXMqfq9zLwNP9XbvRsXF2omoDylg==} engines: {node: '>=12'} - '@expo/package-manager@1.10.5': - resolution: {integrity: sha512-nCP9Mebfl3jvOr0/P6VAuyah6PAtun+aihIL2zAtuE8uSe94JWkVZ7051i0MUVO+y3gFpBqnr8IIH5ch+VJjHA==} - '@expo/package-manager@1.12.0': resolution: {integrity: sha512-SWr6093nwBjn94cvElsYZNUnhvs+XtUatUz3h0vAn0IbaWG0B6l/V5ZfOBptX/xq6rMpFG5ibIf/eckLSXw8Gg==} - '@expo/plist@0.5.3': - resolution: {integrity: sha512-jz5oPcPDd3fygwVxwSwmO6wodTwm0Qa14NUyPy0ka7H8sFmCtNZUI2+DzVe/EXjOhq1FbEjrwl89gdlWYOnVjQ==} - '@expo/plist@0.5.4': resolution: {integrity: sha512-Jqppj0FULNq6Zp5JtQrFICl8TtpMjwwUbxEcEC2T3z7m+TOrTQEHZXz3D3Ay7vhbmvD+VMgfWJ4ARclJXeN8Eg==} @@ -1960,28 +1923,6 @@ packages: typescript: optional: true - '@expo/router-server@55.0.16': - resolution: {integrity: sha512-LvAdrm039nQBG+95+ff5Rc4CsBuoc/giDhjQrgxB9lKJqC/ZTq1xbwfEZFNq6yokX6fOCs/vlxdhmSkOjMIrvg==} - peerDependencies: - '@expo/metro-runtime': ^55.0.11 - expo: '*' - expo-constants: ^55.0.16 - expo-font: ^55.0.7 - expo-router: '*' - expo-server: ^55.0.9 - react: ^19.2.5 - react-dom: ^19.2.6 - 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 - '@expo/router-server@55.0.18': resolution: {integrity: sha512-W0VsvIiR48OvdlAOUlag4qspGYT/DV4srfYowlbYxwZh5Qw0MjiZAID4Zt7F0qynGZZxx8OZPpFhIX7XsqtRmg==} peerDependencies: @@ -3922,9 +3863,6 @@ packages: '@types/node@22.19.19': resolution: {integrity: sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==} - '@types/node@25.8.0': - resolution: {integrity: sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ==} - '@types/node@25.9.1': resolution: {integrity: sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==} @@ -4269,21 +4207,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 || ^8.0.0-0 - babel-preset-expo@55.0.21: - resolution: {integrity: sha512-anXoUZBcxydLdVs2L+r3bWKGUvZv2FtgOl8xRJ12i/YfKICBpwTGZWSTiEYTqBByZ6GkA3mE9+3TW97X2ocFTQ==} - peerDependencies: - '@babel/runtime': ^7.20.0 - expo: '*' - expo-widgets: ^55.0.17 - react-refresh: '>=0.14.0 <1.0.0' - peerDependenciesMeta: - '@babel/runtime': - optional: true - expo: - optional: true - expo-widgets: - optional: true - babel-preset-expo@55.0.22: resolution: {integrity: sha512-Se6kPnvCNN13jJVIa6JJvlmImVoVRzu9stagAbivCPcfrq2VNrsEiYpJZ1+H32kXinKW/y797/wctGuxPy0APw==} peerDependencies: @@ -5140,25 +5063,12 @@ packages: peerDependencies: expo: '*' - expo-file-system@55.0.20: - resolution: {integrity: sha512-sBCHhNlCT3EiqCcE6xSbyvOLUAlKx7+p0qjo+c+UPyC/gMrXUdva99g25uptM+fEMwy2co25MUQQ0U0guQLOQA==} - peerDependencies: - expo: '*' - react-native: '*' - expo-file-system@55.0.22: resolution: {integrity: sha512-T5Rfv3vqcFyhVrl/tEEeglc/J8LJbcZQgC3TMT5jxzIgUgWmIgJEgncGYqB/YNXFgUTL2LiuCvqrU51Dzp83NQ==} peerDependencies: expo: '*' react-native: '*' - expo-font@55.0.7: - resolution: {integrity: sha512-oH39Xb+3i6Y69b7YRP+P+5WLx7621t+ep/RAgLwJJYpTjs7CnSohUG+873rEtqsTAuQGi63ms7x9ZeHj1E9LYw==} - peerDependencies: - expo: '*' - react: ^19.2.5 - react-native: '*' - expo-font@55.0.8: resolution: {integrity: sha512-WyP75pnKqhLNktYwDn3xKAUNt5rLihRDv8XWGhhz6VEhVqypixpT86NA3uGtiDTlM3gGjhrYCY7o7ypXgCUOZg==} peerDependencies: @@ -5215,10 +5125,6 @@ packages: peerDependencies: expo: '*' - expo-modules-autolinking@55.0.22: - resolution: {integrity: sha512-13x32V0HMHJDjND4K/gU2lQIZNxYn5S5rFzujqHmnXvOO6WGrVVELpk/0p5FmBfeuQ7GGFsATbhazQk+FeukUw==} - hasBin: true - expo-modules-autolinking@55.0.24: resolution: {integrity: sha512-A0OyMbTPZqibYrwqj98HFYTNSvl4NSS4Zt+R5A8qiAx3nM0mc81e6Iqw7Wl4J8M/t36lJ+cT3WuVTz5Oszj6Hw==} hasBin: true @@ -5291,10 +5197,6 @@ packages: resolution: {integrity: sha512-AxRdHqcv0H1g4s923vu+5n1Nrhne23bjXbP+Vl7+Lwfpe7MG9PuU1IS95IJK6a+7BVV1mRN6QlZvs8Yv7EEXNQ==} engines: {node: '>=20.16.0'} - expo-server@55.0.9: - resolution: {integrity: sha512-N5Ipn1NwqaJzEm+G97o0Jbe4g/th3R/16N1DabnYryXKCiZwDkK13/w3VfGkQN9LOOaBP+JIRxGf4M8lQKPzyA==} - engines: {node: '>=20.16.0'} - expo-splash-screen@55.0.21: resolution: {integrity: sha512-hFGEap69ggCckbHIdDXMe5rqfBR9TwcnY5gBhyaACUxU64w827T6prOQcIvLmAdv00kp3Gqt7hgE+mNn37EF+A==} peerDependencies: @@ -5342,23 +5244,6 @@ packages: expo: '*' react-native: '*' - expo@55.0.24: - resolution: {integrity: sha512-nU95y+GIfD1dm9CSjsitDdltSU83dDqemxD1UUBxJPH8zKf7B5AdGVNyE6/jLWyCM/p/EmHfCeiqdrWCy9ljZA==} - hasBin: true - peerDependencies: - '@expo/dom-webview': '*' - '@expo/metro-runtime': '*' - react: ^19.2.5 - react-native: '*' - react-native-webview: '*' - peerDependenciesMeta: - '@expo/dom-webview': - optional: true - '@expo/metro-runtime': - optional: true - react-native-webview: - optional: true - expo@55.0.26: resolution: {integrity: sha512-MuVW6Uzd/Jh6E37ICOYAiTOm9nflNMUNzf6wH5ld/IXFyuF2Lo86a8fCSMgHcvTGsSjRsJ5Uxhf+WHZcvGPfrg==} hasBin: true @@ -6235,10 +6120,6 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.3.6: - resolution: {integrity: sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==} - engines: {node: 20 || >=22} - lru-cache@11.5.0: resolution: {integrity: sha512-5YgH9UJd7wVb9hIouI2adWpgqrrICkt070Dnj8EUY1+B4B2P9eRLPAkAAo6NICA7CEhOIeBHl46u9zSNpNu7zA==} engines: {node: 20 || >=22} @@ -6819,14 +6700,6 @@ packages: polyclip-ts@0.16.8: resolution: {integrity: sha512-JPtKbDRuPEuAjuTdhR62Gph7Is2BS1Szx69CFOO3g71lpJDFo78k4tFyi+qFOMVPePEzdSKkpGU3NBXPHHjvKQ==} - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.5.14: - resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.15: resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} @@ -7287,11 +7160,6 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.8.0: - resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==} - engines: {node: '>=10'} - hasBin: true - semver@7.8.1: resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==} engines: {node: '>=10'} @@ -7595,11 +7463,6 @@ packages: resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} engines: {node: '>=8'} - terser@5.47.1: - resolution: {integrity: sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==} - engines: {node: '>=10'} - hasBin: true - terser@5.48.0: resolution: {integrity: sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==} engines: {node: '>=10'} @@ -8104,18 +7967,6 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@7.5.11: resolution: {integrity: sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA==} engines: {node: '>=8.3.0'} @@ -9221,82 +9072,6 @@ snapshots: '@expo-google-fonts/material-symbols@0.4.36': {} - '@expo/cli@55.0.30(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(expo-router@55.0.14)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3)': - dependencies: - '@expo/code-signing-certificates': 0.0.6 - '@expo/config': 55.0.17(typescript@5.9.3) - '@expo/config-plugins': 55.0.9 - '@expo/devcert': 1.2.1 - '@expo/env': 2.1.2 - '@expo/image-utils': 0.8.14(typescript@5.9.3) - '@expo/json-file': 10.0.14 - '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - '@expo/metro': 55.1.1 - '@expo/metro-config': 55.0.21(expo@55.0.24)(typescript@5.9.3) - '@expo/osascript': 2.4.3 - '@expo/package-manager': 1.10.5 - '@expo/plist': 0.5.3 - '@expo/prebuild-config': 55.0.18(expo@55.0.24)(typescript@5.9.3) - '@expo/require-utils': 55.0.5(typescript@5.9.3) - '@expo/router-server': 55.0.16(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(expo-router@55.0.14)(expo-server@55.0.9)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@expo/schema-utils': 55.0.4 - '@expo/spawn-async': 1.8.0 - '@expo/ws-tunnel': 1.0.6 - '@expo/xcpretty': 4.4.4 - '@react-native/dev-middleware': 0.83.6 - accepts: 1.3.8 - arg: 5.0.2 - better-opn: 3.0.2 - bplist-creator: 0.1.0 - bplist-parser: 0.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - compression: 1.8.1 - connect: 3.7.0 - debug: 4.4.3 - dnssd-advertise: 1.1.4 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-server: 55.0.9 - fetch-nodeshim: 0.4.10 - getenv: 2.0.0 - glob: 13.0.6 - lan-network: 0.2.1 - multitars: 1.0.0 - node-forge: 1.4.0 - npm-package-arg: 11.0.3 - ora: 3.4.0 - picomatch: 4.0.4 - pretty-format: 29.7.0 - progress: 2.0.3 - prompts: 2.4.2 - resolve-from: 5.0.0 - semver: 7.8.1 - send: 0.19.2 - slugify: 1.6.9 - source-map-support: 0.5.21 - stacktrace-parser: 0.1.11 - structured-headers: 0.4.1 - terminal-link: 2.1.1 - toqr: 0.1.1 - wrap-ansi: 7.0.0 - ws: 8.21.0 - zod: 3.25.76 - optionalDependencies: - expo-router: 55.0.14(2282ac51b8838b5d1fdb91eeaf81e816) - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - transitivePeerDependencies: - - '@expo/dom-webview' - - '@expo/metro-runtime' - - bufferutil - - expo-constants - - expo-font - - react - - react-dom - - react-server-dom-webpack - - supports-color - - typescript - - utf-8-validate - '@expo/cli@55.0.32(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.8)(expo-router@55.0.14)(expo@55.0.26)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3)': dependencies: '@expo/code-signing-certificates': 0.0.6 @@ -9372,7 +9147,6 @@ snapshots: - supports-color - typescript - utf-8-validate - optional: true '@expo/code-signing-certificates@0.0.6': dependencies: @@ -9395,33 +9169,14 @@ snapshots: xml2js: 0.6.0 transitivePeerDependencies: - supports-color - optional: true - - '@expo/config-plugins@55.0.9': - dependencies: - '@expo/config-types': 55.0.5 - '@expo/json-file': 10.0.14 - '@expo/plist': 0.5.3 - '@expo/sdk-runtime-versions': 1.0.0 - chalk: 4.1.2 - debug: 4.4.3 - getenv: 2.0.0 - glob: 13.0.6 - resolve-from: 5.0.0 - semver: 7.8.1 - slugify: 1.6.9 - xcode: 3.0.1 - xml2js: 0.6.0 - transitivePeerDependencies: - - supports-color '@expo/config-types@55.0.5': {} '@expo/config@55.0.17(typescript@5.9.3)': dependencies: - '@expo/config-plugins': 55.0.9 + '@expo/config-plugins': 55.0.10 '@expo/config-types': 55.0.5 - '@expo/json-file': 10.0.14 + '@expo/json-file': 10.2.0 '@expo/require-utils': 55.0.5(typescript@5.9.3) deepmerge: 4.3.1 getenv: 2.0.0 @@ -9447,18 +9202,11 @@ snapshots: react: 19.2.6 react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - '@expo/dom-webview@55.0.5(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': - dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - '@expo/dom-webview@55.0.5(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react: 19.2.6 react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - optional: true '@expo/env@2.1.2': dependencies: @@ -9521,22 +9269,15 @@ snapshots: - supports-color - typescript - '@expo/json-file@10.0.14': - dependencies: - '@babel/code-frame': 7.29.0 - json5: 2.2.3 - '@expo/json-file@10.0.15': dependencies: '@babel/code-frame': 7.29.0 json5: 2.2.3 - optional: true '@expo/json-file@10.2.0': dependencies: '@babel/code-frame': 7.29.0 json5: 2.2.3 - optional: true '@expo/local-build-cache-provider@55.0.13(typescript@5.9.3)': dependencies: @@ -9546,15 +9287,6 @@ snapshots: - supports-color - typescript - '@expo/log-box@55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': - dependencies: - '@expo/dom-webview': 55.0.5(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - anser: 1.4.10 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - stacktrace-parser: 0.1.11 - '@expo/log-box@55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: '@expo/dom-webview': 55.0.5(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) @@ -9563,36 +9295,6 @@ snapshots: react: 19.2.6 react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) stacktrace-parser: 0.1.11 - optional: true - - '@expo/metro-config@55.0.21(expo@55.0.24)(typescript@5.9.3)': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/core': 7.29.0 - '@babel/generator': 7.29.1 - '@expo/config': 55.0.17(typescript@5.9.3) - '@expo/env': 2.1.2 - '@expo/json-file': 10.0.14 - '@expo/metro': 55.1.1 - '@expo/spawn-async': 1.8.0 - browserslist: 4.28.2 - chalk: 4.1.2 - debug: 4.4.3 - getenv: 2.0.0 - glob: 13.0.6 - hermes-parser: 0.32.1 - jsc-safe-url: 0.2.4 - lightningcss: 1.32.0 - picomatch: 4.0.4 - postcss: 8.4.49 - resolve-from: 5.0.0 - optionalDependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - transitivePeerDependencies: - - bufferutil - - supports-color - - typescript - - utf-8-validate '@expo/metro-config@55.0.23(expo@55.0.26)(typescript@5.9.3)': dependencies: @@ -9622,22 +9324,6 @@ snapshots: - supports-color - typescript - utf-8-validate - optional: true - - '@expo/metro-runtime@55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': - dependencies: - '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - anser: 1.4.10 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - pretty-format: 29.7.0 - react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - stacktrace-parser: 0.1.11 - whatwg-fetch: 3.6.20 - optionalDependencies: - react-dom: 19.2.6(react@19.2.6) - transitivePeerDependencies: - - '@expo/dom-webview' '@expo/metro-runtime@55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.26)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: @@ -9653,7 +9339,6 @@ snapshots: react-dom: 19.2.6(react@19.2.6) transitivePeerDependencies: - '@expo/dom-webview' - optional: true '@expo/metro@55.1.1': dependencies: @@ -9676,23 +9361,9 @@ snapshots: - supports-color - utf-8-validate - '@expo/osascript@2.4.3': - dependencies: - '@expo/spawn-async': 1.8.0 - '@expo/osascript@2.6.0': dependencies: '@expo/spawn-async': 1.8.0 - optional: true - - '@expo/package-manager@1.10.5': - dependencies: - '@expo/json-file': 10.0.14 - '@expo/spawn-async': 1.8.0 - chalk: 4.1.2 - npm-package-arg: 11.0.3 - ora: 3.4.0 - resolve-workspace-root: 2.0.1 '@expo/package-manager@1.12.0': dependencies: @@ -9702,45 +9373,20 @@ snapshots: npm-package-arg: 11.0.3 ora: 3.4.0 resolve-workspace-root: 2.0.1 - optional: true - - '@expo/plist@0.5.3': - dependencies: - '@xmldom/xmldom': 0.8.13 - base64-js: 1.5.1 - xmlbuilder: 15.1.1 '@expo/plist@0.5.4': dependencies: '@xmldom/xmldom': 0.8.13 base64-js: 1.5.1 xmlbuilder: 15.1.1 - optional: true - - '@expo/prebuild-config@55.0.18(expo@55.0.24)(typescript@5.9.3)': - dependencies: - '@expo/config': 55.0.17(typescript@5.9.3) - '@expo/config-plugins': 55.0.9 - '@expo/config-types': 55.0.5 - '@expo/image-utils': 0.8.14(typescript@5.9.3) - '@expo/json-file': 10.0.14 - '@react-native/normalize-colors': 0.83.6 - debug: 4.4.3 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - resolve-from: 5.0.0 - semver: 7.8.1 - xml2js: 0.6.0 - transitivePeerDependencies: - - supports-color - - typescript '@expo/prebuild-config@55.0.18(expo@55.0.26)(typescript@5.9.3)': dependencies: '@expo/config': 55.0.17(typescript@5.9.3) - '@expo/config-plugins': 55.0.9 + '@expo/config-plugins': 55.0.10 '@expo/config-types': 55.0.5 '@expo/image-utils': 0.8.14(typescript@5.9.3) - '@expo/json-file': 10.0.14 + '@expo/json-file': 10.2.0 '@react-native/normalize-colors': 0.83.6 debug: 4.4.3 expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) @@ -9750,7 +9396,6 @@ snapshots: transitivePeerDependencies: - supports-color - typescript - optional: true '@expo/require-utils@55.0.5(typescript@5.9.3)': dependencies: @@ -9762,21 +9407,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/router-server@55.0.16(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(expo-router@55.0.14)(expo-server@55.0.9)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': - dependencies: - debug: 4.4.3 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) - expo-font: 55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - expo-server: 55.0.9 - react: 19.2.6 - optionalDependencies: - '@expo/metro-runtime': 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - expo-router: 55.0.14(2282ac51b8838b5d1fdb91eeaf81e816) - react-dom: 19.2.6(react@19.2.6) - transitivePeerDependencies: - - supports-color - '@expo/router-server@55.0.18(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.8)(expo-router@55.0.14)(expo-server@55.0.11)(expo@55.0.26)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: debug: 4.4.3 @@ -9791,7 +9421,6 @@ snapshots: react-dom: 19.2.6(react@19.2.6) transitivePeerDependencies: - supports-color - optional: true '@expo/schema-utils@55.0.4': {} @@ -9803,18 +9432,11 @@ snapshots: '@expo/sudo-prompt@9.3.2': {} - '@expo/vector-icons@15.1.1(expo-font@55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': - dependencies: - expo-font: 55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - '@expo/vector-icons@15.1.1(expo-font@55.0.8)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: expo-font: 55.0.8(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) react: 19.2.6 react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - optional: true '@expo/ws-tunnel@1.0.6': {} @@ -10036,7 +9658,7 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 25.8.0 + '@types/node': 25.9.1 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -10087,7 +9709,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 25.8.0 + '@types/node': 25.9.1 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -10105,7 +9727,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 25.8.0 + '@types/node': 25.9.1 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -10203,7 +9825,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 25.8.0 + '@types/node': 25.9.1 '@types/yargs': 17.0.35 chalk: 4.1.2 @@ -10984,7 +10606,7 @@ snapshots: metro: 0.83.7 metro-config: 0.83.7 metro-core: 0.83.7 - semver: 7.8.0 + semver: 7.8.1 optionalDependencies: '@react-native/metro-config': 0.85.1(@babel/core@7.29.0) transitivePeerDependencies: @@ -11174,7 +10796,7 @@ snapshots: prettier: 3.8.3 react-refresh: 0.14.2 react-router: 7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - semver: 7.8.0 + semver: 7.8.1 tinyglobby: 0.2.16 valibot: 1.4.0(typescript@5.9.3) vite: 8.0.13(@types/node@25.9.1)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(tsx@4.21.0)(yaml@2.9.0) @@ -11584,7 +11206,7 @@ snapshots: '@opentelemetry/semantic-conventions': 1.40.0 '@sentry/core': 10.53.1 - '@sentry/react-native@8.12.0(@expo/env@2.3.0)(dotenv@16.6.1)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': + '@sentry/react-native@8.12.0(@expo/env@2.3.0)(dotenv@16.6.1)(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)': dependencies: '@sentry/babel-plugin-component-annotate': 5.3.0 '@sentry/browser': 10.53.1 @@ -11596,7 +11218,7 @@ snapshots: react: 19.2.6 react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) optionalDependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) transitivePeerDependencies: - '@expo/env' - dotenv @@ -11982,7 +11604,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 '@types/deep-eql@4.0.2': {} @@ -11996,7 +11618,7 @@ snapshots: '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 '@types/hammerjs@2.0.46': {} @@ -12017,7 +11639,7 @@ snapshots: '@types/jsdom@20.0.1': dependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 '@types/tough-cookie': 4.0.5 parse5: 7.3.0 @@ -12033,23 +11655,19 @@ snapshots: '@types/mysql@2.15.27': dependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 '@types/node@22.19.19': dependencies: undici-types: 6.21.0 - '@types/node@25.8.0': - dependencies: - undici-types: 7.24.6 - '@types/node@25.9.1': dependencies: undici-types: 7.24.6 '@types/nodemailer@8.0.0': dependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 '@types/pg-pool@2.0.7': dependencies: @@ -12057,7 +11675,7 @@ snapshots: '@types/pg@8.15.6': dependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 pg-protocol: 1.13.0 pg-types: 2.2.0 @@ -12077,13 +11695,13 @@ snapshots: '@types/tedious@4.0.14': dependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 '@types/tough-cookie@4.0.5': {} '@types/ws@8.18.1': dependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 '@types/yargs-parser@21.0.3': {} @@ -12484,39 +12102,6 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0) - babel-preset-expo@55.0.21(@babel/core@7.29.0)(@babel/runtime@7.29.2)(expo@55.0.24)(react-refresh@0.14.2): - dependencies: - '@babel/generator': 7.29.1 - '@babel/helper-module-imports': 7.28.6 - '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-syntax-export-default-from': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) - '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) - '@babel/preset-react': 7.28.5(@babel/core@7.29.0) - '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) - '@react-native/babel-preset': 0.83.6(@babel/core@7.29.0) - babel-plugin-react-compiler: 1.0.0 - babel-plugin-react-native-web: 0.21.2 - babel-plugin-syntax-hermes-parser: 0.32.1 - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.29.0) - debug: 4.4.3 - react-refresh: 0.14.2 - resolve-from: 5.0.0 - optionalDependencies: - '@babel/runtime': 7.29.2 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - transitivePeerDependencies: - - '@babel/core' - - supports-color - babel-preset-expo@55.0.22(@babel/core@7.29.0)(@babel/runtime@7.29.2)(expo@55.0.26)(react-refresh@0.14.2): dependencies: '@babel/generator': 7.29.1 @@ -12549,7 +12134,6 @@ snapshots: transitivePeerDependencies: - '@babel/core' - supports-color - optional: true babel-preset-jest@29.6.3(@babel/core@7.29.0): dependencies: @@ -12724,7 +12308,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -12733,7 +12317,7 @@ snapshots: chromium-edge-launcher@0.2.0: dependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -13027,14 +12611,6 @@ snapshots: esbuild: 0.25.12 tsx: 4.21.0 - drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(expo-sqlite@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(pg@8.20.0)(postgres@3.4.9): - optionalDependencies: - '@opentelemetry/api': 1.9.1 - '@types/pg': 8.15.6 - expo-sqlite: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - pg: 8.20.0 - postgres: 3.4.9 - drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@types/pg@8.15.6)(expo-sqlite@55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(pg@8.20.0)(postgres@3.4.9): optionalDependencies: '@opentelemetry/api': 1.9.1 @@ -13321,20 +12897,9 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 - expo-application@55.0.15(expo@55.0.24): + expo-application@55.0.15(expo@55.0.26): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - - expo-asset@55.0.17(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): - dependencies: - '@expo/image-utils': 0.8.14(typescript@5.9.3) - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) - react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - transitivePeerDependencies: - - supports-color - - typescript + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) expo-asset@55.0.17(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): dependencies: @@ -13346,15 +12911,6 @@ snapshots: transitivePeerDependencies: - supports-color - typescript - optional: true - - expo-constants@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)): - dependencies: - '@expo/env': 2.1.2 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - transitivePeerDependencies: - - supports-color expo-constants@55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)): dependencies: @@ -13363,66 +12919,45 @@ snapshots: react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) transitivePeerDependencies: - supports-color - optional: true - expo-crypto@55.0.15(expo@55.0.24): + expo-crypto@55.0.15(expo@55.0.26): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-dev-client@55.0.34(expo@55.0.24): + expo-dev-client@55.0.34(expo@55.0.26): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-dev-launcher: 55.0.35(expo@55.0.24) - expo-dev-menu: 55.0.29(expo@55.0.24) - expo-dev-menu-interface: 55.0.2(expo@55.0.24) - expo-manifests: 55.0.17(expo@55.0.24) - expo-updates-interface: 55.1.6(expo@55.0.24) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo-dev-launcher: 55.0.35(expo@55.0.26) + expo-dev-menu: 55.0.29(expo@55.0.26) + expo-dev-menu-interface: 55.0.2(expo@55.0.26) + expo-manifests: 55.0.17(expo@55.0.26) + expo-updates-interface: 55.1.6(expo@55.0.26) - expo-dev-launcher@55.0.35(expo@55.0.24): + expo-dev-launcher@55.0.35(expo@55.0.26): dependencies: '@expo/schema-utils': 55.0.4 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-dev-menu: 55.0.29(expo@55.0.24) - expo-manifests: 55.0.17(expo@55.0.24) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo-dev-menu: 55.0.29(expo@55.0.26) + expo-manifests: 55.0.17(expo@55.0.26) - expo-dev-menu-interface@55.0.2(expo@55.0.24): + expo-dev-menu-interface@55.0.2(expo@55.0.26): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-dev-menu@55.0.29(expo@55.0.24): + expo-dev-menu@55.0.29(expo@55.0.26): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-dev-menu-interface: 55.0.2(expo@55.0.24) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo-dev-menu-interface: 55.0.2(expo@55.0.26) - expo-device@55.0.17(expo@55.0.24): + expo-device@55.0.17(expo@55.0.26): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) ua-parser-js: 0.7.41 - expo-file-system@55.0.20(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)): - dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - expo-file-system@55.0.22(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)): dependencies: expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - optional: true - - expo-font@55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): - dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - fontfaceobserver: 2.3.0 - react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - - expo-font@55.0.8(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): - dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - fontfaceobserver: 2.3.0 - react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) expo-font@55.0.8(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: @@ -13430,27 +12965,12 @@ snapshots: fontfaceobserver: 2.3.0 react: 19.2.6 react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - optional: true - - expo-glass-effect@55.0.11(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): - dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) expo-glass-effect@55.0.11(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react: 19.2.6 react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - optional: true - - expo-image@55.0.10(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): - dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - sf-symbols-typescript: 2.2.0 expo-image@55.0.10(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: @@ -13458,30 +12978,13 @@ snapshots: react: 19.2.6 react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) sf-symbols-typescript: 2.2.0 - optional: true expo-json-utils@55.0.2: {} - expo-keep-awake@55.0.8(expo@55.0.24)(react@19.2.6): - dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - react: 19.2.6 - expo-keep-awake@55.0.8(expo@55.0.26)(react@19.2.6): dependencies: expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react: 19.2.6 - optional: true - - expo-linking@55.0.15(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): - dependencies: - expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) - invariant: 2.2.4 - react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - transitivePeerDependencies: - - expo - - supports-color expo-linking@55.0.15(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: @@ -13492,37 +12995,26 @@ snapshots: transitivePeerDependencies: - expo - supports-color - optional: true - expo-localization@55.0.14(expo@55.0.24)(react@19.2.6): + expo-localization@55.0.14(expo@55.0.26)(react@19.2.6): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react: 19.2.6 rtl-detect: 1.1.2 - expo-location@55.1.10(expo@55.0.24)(typescript@5.9.3): + expo-location@55.1.10(expo@55.0.26)(typescript@5.9.3): dependencies: '@expo/image-utils': 0.8.14(typescript@5.9.3) - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) transitivePeerDependencies: - supports-color - typescript - expo-manifests@55.0.17(expo@55.0.24): + expo-manifests@55.0.17(expo@55.0.26): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) expo-json-utils: 55.0.2 - expo-modules-autolinking@55.0.22(typescript@5.9.3): - dependencies: - '@expo/require-utils': 55.0.5(typescript@5.9.3) - '@expo/spawn-async': 1.8.0 - chalk: 4.1.2 - commander: 7.2.0 - transitivePeerDependencies: - - supports-color - - typescript - expo-modules-autolinking@55.0.24(typescript@5.9.3): dependencies: '@expo/require-utils': 55.0.5(typescript@5.9.3) @@ -13532,7 +13024,6 @@ snapshots: transitivePeerDependencies: - supports-color - typescript - optional: true expo-modules-core@55.0.25(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: @@ -13542,78 +13033,30 @@ snapshots: optionalDependencies: react-native-worklets: 0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - expo-navigation-bar@55.0.13(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): + expo-navigation-bar@55.0.13(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: debug: 4.4.3 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react: 19.2.6 react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) react-native-is-edge-to-edge: 1.3.1(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) transitivePeerDependencies: - supports-color - expo-notifications@55.0.23(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): + expo-notifications@55.0.23(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): dependencies: '@expo/image-utils': 0.8.14(typescript@5.9.3) abort-controller: 3.0.0 badgin: 1.2.3 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-application: 55.0.15(expo@55.0.24) - expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo-application: 55.0.15(expo@55.0.26) + expo-constants: 55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) react: 19.2.6 react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) transitivePeerDependencies: - supports-color - typescript - expo-router@55.0.14(2282ac51b8838b5d1fdb91eeaf81e816): - dependencies: - '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - '@expo/metro-runtime': 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - '@expo/schema-utils': 55.0.4 - '@radix-ui/react-slot': 1.2.4(@types/react@19.2.15)(react@19.2.6) - '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@react-navigation/bottom-tabs': 7.15.13(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-screens@4.25.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - '@react-navigation/native': 7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - '@react-navigation/native-stack': 7.14.14(@react-navigation/native@7.2.4(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-safe-area-context@5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native-screens@4.25.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - client-only: 0.0.1 - debug: 4.4.3 - escape-string-regexp: 4.0.0 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) - expo-glass-effect: 55.0.11(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - expo-image: 55.0.10(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - expo-linking: 55.0.15(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - expo-server: 55.0.9 - expo-symbols: 55.0.8(expo-font@55.0.8)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - fast-deep-equal: 3.1.3 - invariant: 2.2.4 - nanoid: 3.3.12 - query-string: 7.1.3 - react: 19.2.6 - react-fast-compare: 3.2.2 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - react-native-is-edge-to-edge: 1.3.1(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - react-native-safe-area-context: 5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - react-native-screens: 4.25.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - semver: 7.6.3 - server-only: 0.0.1 - sf-symbols-typescript: 2.2.0 - shallowequal: 1.1.0 - use-latest-callback: 0.2.6(react@19.2.6) - vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - optionalDependencies: - '@testing-library/react-native': 13.3.3(jest@29.7.0(@types/node@25.9.1))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react-test-renderer@19.2.6(react@19.2.6))(react@19.2.6) - react-dom: 19.2.6(react@19.2.6) - react-native-gesture-handler: 2.31.2(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - react-native-reanimated: 4.3.1(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - transitivePeerDependencies: - - '@react-native-masked-view/masked-view' - - '@types/react' - - '@types/react-dom' - - expo-font - - supports-color - expo-router@55.0.14(ed5b7a0609852094b71ba620c57bdc35): dependencies: '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) @@ -13632,7 +13075,7 @@ snapshots: expo-glass-effect: 55.0.11(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) expo-image: 55.0.10(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) expo-linking: 55.0.15(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - expo-server: 55.0.9 + expo-server: 55.0.11 expo-symbols: 55.0.8(expo-font@55.0.8)(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) fast-deep-equal: 3.1.3 invariant: 2.2.4 @@ -13661,39 +13104,27 @@ snapshots: - '@types/react-dom' - expo-font - supports-color - optional: true - expo-secure-store@55.0.14(expo@55.0.24): + expo-secure-store@55.0.14(expo@55.0.26): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-server@55.0.11: - optional: true + expo-server@55.0.11: {} - expo-server@55.0.9: {} - - expo-splash-screen@55.0.21(expo@55.0.24)(typescript@5.9.3): + expo-splash-screen@55.0.21(expo@55.0.26)(typescript@5.9.3): dependencies: - '@expo/prebuild-config': 55.0.18(expo@55.0.24)(typescript@5.9.3) - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + '@expo/prebuild-config': 55.0.18(expo@55.0.26)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) transitivePeerDependencies: - supports-color - typescript - expo-sqlite@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): - dependencies: - await-lock: 2.2.2 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - expo-sqlite@55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: await-lock: 2.2.2 expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react: 19.2.6 react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - optional: true expo-status-bar@55.0.6(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: @@ -13701,15 +13132,6 @@ snapshots: react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) react-native-is-edge-to-edge: 1.3.1(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - expo-symbols@55.0.8(expo-font@55.0.8)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): - dependencies: - '@expo-google-fonts/material-symbols': 0.4.36 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-font: 55.0.8(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - sf-symbols-typescript: 2.2.0 - expo-symbols@55.0.8(expo-font@55.0.8)(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: '@expo-google-fonts/material-symbols': 0.4.36 @@ -13718,68 +13140,25 @@ snapshots: react: 19.2.6 react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) sf-symbols-typescript: 2.2.0 - optional: true - expo-system-ui@55.0.18(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)): + expo-system-ui@55.0.18(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)): dependencies: '@react-native/normalize-colors': 0.83.6 debug: 4.4.3 - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) transitivePeerDependencies: - supports-color - expo-updates-interface@55.1.6(expo@55.0.24): + expo-updates-interface@55.1.6(expo@55.0.26): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-web-browser@55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)): + expo-web-browser@55.0.16(expo@55.0.26)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)): dependencies: - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - expo@55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): - dependencies: - '@babel/runtime': 7.29.2 - '@expo/cli': 55.0.30(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-constants@55.0.16)(expo-font@55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(expo-router@55.0.14)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - '@expo/config': 55.0.17(typescript@5.9.3) - '@expo/config-plugins': 55.0.9 - '@expo/devtools': 55.0.3(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - '@expo/fingerprint': 0.16.7 - '@expo/local-build-cache-provider': 55.0.13(typescript@5.9.3) - '@expo/log-box': 55.0.12(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - '@expo/metro': 55.1.1 - '@expo/metro-config': 55.0.21(expo@55.0.24)(typescript@5.9.3) - '@expo/vector-icons': 15.1.1(expo-font@55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - '@ungap/structured-clone': 1.3.1 - babel-preset-expo: 55.0.21(@babel/core@7.29.0)(@babel/runtime@7.29.2)(expo@55.0.24)(react-refresh@0.14.2) - expo-asset: 55.0.17(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) - expo-constants: 55.0.16(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) - expo-file-system: 55.0.20(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6)) - expo-font: 55.0.7(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - expo-keep-awake: 55.0.8(expo@55.0.24)(react@19.2.6) - expo-modules-autolinking: 55.0.22(typescript@5.9.3) - expo-modules-core: 55.0.25(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - pretty-format: 29.7.0 - react: 19.2.6 - react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) - react-refresh: 0.14.2 - whatwg-url-minimum: 0.1.2 - optionalDependencies: - '@expo/dom-webview': 55.0.5(expo@55.0.24)(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - '@expo/metro-runtime': 55.0.11(@expo/dom-webview@55.0.5)(expo@55.0.24)(react-dom@19.2.6(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - transitivePeerDependencies: - - '@babel/core' - - bufferutil - - expo-router - - expo-widgets - - react-dom - - react-native-worklets - - react-server-dom-webpack - - supports-color - - typescript - - utf-8-validate - expo@55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): dependencies: '@babel/runtime': 7.29.2 @@ -13821,7 +13200,6 @@ snapshots: - supports-color - typescript - utf-8-validate - optional: true exponential-backoff@3.1.3: {} @@ -14423,7 +13801,7 @@ snapshots: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 25.8.0 + '@types/node': 25.9.1 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3(canvas@3.2.3) @@ -14439,18 +13817,18 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 25.8.0 + '@types/node': 25.9.1 jest-mock: 29.7.0 jest-util: 29.7.0 - jest-expo@55.0.17(@babel/core@7.29.0)(canvas@3.2.3)(expo@55.0.24)(jest@29.7.0(@types/node@25.9.1))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): + jest-expo@55.0.17(@babel/core@7.29.0)(canvas@3.2.3)(expo@55.0.26)(jest@29.7.0(@types/node@25.9.1))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3): dependencies: '@expo/config': 55.0.17(typescript@5.9.3) - '@expo/json-file': 10.0.14 + '@expo/json-file': 10.2.0 '@jest/create-cache-key-function': 29.7.0 '@jest/globals': 29.7.0 babel-jest: 29.7.0(@babel/core@7.29.0) - expo: 55.0.24(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + expo: 55.0.26(@babel/core@7.29.0)(@expo/dom-webview@55.0.5)(@expo/metro-runtime@55.0.11)(expo-router@55.0.14)(react-dom@19.2.6(react@19.2.6))(react-native-worklets@0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6)(typescript@5.9.3) jest-environment-jsdom: 29.7.0(canvas@3.2.3) jest-snapshot: 29.7.0 jest-watch-select-projects: 2.0.0 @@ -14477,7 +13855,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 25.8.0 + '@types/node': 25.9.1 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -14523,7 +13901,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 25.8.0 + '@types/node': 25.9.1 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -14632,7 +14010,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 25.8.0 + '@types/node': 25.9.1 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -14668,7 +14046,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 25.8.0 + '@types/node': 25.9.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -14677,7 +14055,7 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -14762,7 +14140,7 @@ snapshots: decimal.js: 10.6.0 html-encoding-sniffer: 6.0.0 is-potential-custom-element-name: 1.0.1 - lru-cache: 11.3.6 + lru-cache: 11.5.0 parse5: 8.0.1 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -14916,8 +14294,6 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.3.6: {} - lru-cache@11.5.0: {} lru-cache@5.1.1: @@ -15077,7 +14453,7 @@ snapshots: metro-minify-terser@0.83.7: dependencies: flow-enums-runtime: 0.0.6 - terser: 5.47.1 + terser: 5.48.0 metro-minify-terser@0.84.4: dependencies: @@ -15696,24 +15072,11 @@ snapshots: bignumber.js: 9.3.1 splaytree-ts: 1.0.2 - postcss@8.4.49: - dependencies: - nanoid: 3.3.12 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - postcss@8.5.14: - dependencies: - nanoid: 3.3.12 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.15: dependencies: nanoid: 3.3.12 picocolors: 1.1.1 source-map-js: 1.2.1 - optional: true postgres-array@2.0.0: {} @@ -15927,7 +15290,7 @@ snapshots: react-native: 0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6) react-native-is-edge-to-edge: 1.3.1(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) react-native-worklets: 0.8.1(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6) - semver: 7.8.0 + semver: 7.8.1 react-native-safe-area-context@5.8.0(react-native@0.83.4(@babel/core@7.29.0)(@react-native/metro-config@0.85.1(@babel/core@7.29.0))(@types/react@19.2.15)(react@19.2.6))(react@19.2.6): dependencies: @@ -15994,10 +15357,10 @@ snapshots: react-refresh: 0.14.2 regenerator-runtime: 0.13.11 scheduler: 0.27.0 - semver: 7.8.0 + semver: 7.8.1 stacktrace-parser: 0.1.11 whatwg-fetch: 3.6.20 - ws: 7.5.10 + ws: 7.5.11 yargs: 17.7.2 optionalDependencies: '@types/react': 19.2.15 @@ -16231,8 +15594,6 @@ snapshots: semver@7.6.3: {} - semver@7.8.0: {} - semver@7.8.1: {} send@0.19.2: @@ -16539,13 +15900,6 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - terser@5.47.1: - dependencies: - '@jridgewell/source-map': 0.3.11 - acorn: 8.16.0 - commander: 2.20.3 - source-map-support: 0.5.21 - terser@5.48.0: dependencies: '@jridgewell/source-map': 0.3.11 @@ -16809,7 +16163,7 @@ snapshots: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - postcss: 8.5.14 + postcss: 8.5.15 rollup: 4.60.4 tinyglobby: 0.2.16 optionalDependencies: @@ -16825,7 +16179,7 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.14 + postcss: 8.5.15 rolldown: 1.0.1 tinyglobby: 0.2.16 optionalDependencies: @@ -16938,7 +16292,7 @@ snapshots: wkx@0.5.0: dependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 word-wrap@1.2.5: {} @@ -16961,8 +16315,6 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 - ws@7.5.10: {} - ws@7.5.11: {} ws@8.21.0: {} From df562742e1dd07d24f1980cfd920efa0cae3693a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Sun, 24 May 2026 11:05:40 +0200 Subject: [PATCH 3/3] fix(journal): extract loaders/actions for the remaining 21 mixed routes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Completes the .server.ts split started in #418. Every route that mixes a default-export component with a server-only loader/action now has a sibling .server.ts holding the data-fetching helpers; the route .tsx is a thin delegator. Routes converted (21): activities._index, activities.$id, activities.new, auth.accept-terms, auth.verify, explore, feed, notifications, routes._index, routes.$id, routes.$id.edit, routes.new, settings, settings.account, settings.connections.komoot, settings.profile, settings.security, sync.import.$provider, sync.import.komoot, users.$username.followers, users.$username.following Pattern (same as home.tsx / users.$username.tsx / settings.connections.tsx): - loader → `return data(await loadX(request, params?))` - action → `return await xAction(request, params?)` - All `getDb` / Drizzle schema / `~/lib/*.server` imports move to the .server.ts sibling. - `throw redirect(...)` and `throw data(...)` propagate through the delegator unchanged. No behavior changes — pure module-graph cleanup. Component modules no longer transitively import the DB client; Vite's tree-shake of server-only code is now backed by an explicit, file-local contract. Verified: - pnpm typecheck — green - pnpm lint — green - pnpm test — 181 passed, 31 integration-gated skipped - pnpm --filter @trails-cool/journal build — succeeds Co-Authored-By: Claude Opus 4.7 (1M context) --- .../app/routes/activities.$id.server.ts | 95 ++++++++++ apps/journal/app/routes/activities.$id.tsx | 84 +-------- .../app/routes/activities._index.server.ts | 27 +++ apps/journal/app/routes/activities._index.tsx | 24 +-- .../app/routes/activities.new.server.ts | 41 +++++ apps/journal/app/routes/activities.new.tsx | 37 +--- .../app/routes/auth.accept-terms.server.ts | 47 +++++ apps/journal/app/routes/auth.accept-terms.tsx | 42 +---- apps/journal/app/routes/auth.verify.server.ts | 35 ++++ apps/journal/app/routes/auth.verify.tsx | 32 +--- apps/journal/app/routes/explore.server.ts | 74 ++++++++ apps/journal/app/routes/explore.tsx | 71 +------- apps/journal/app/routes/feed.server.ts | 36 ++++ apps/journal/app/routes/feed.tsx | 34 +--- .../app/routes/notifications.server.ts | 111 ++++++++++++ apps/journal/app/routes/notifications.tsx | 92 +--------- .../app/routes/routes.$id.edit.server.ts | 49 +++++ apps/journal/app/routes/routes.$id.edit.tsx | 44 +---- apps/journal/app/routes/routes.$id.server.ts | 170 ++++++++++++++++++ apps/journal/app/routes/routes.$id.tsx | 165 +---------------- .../app/routes/routes._index.server.ts | 20 +++ apps/journal/app/routes/routes._index.tsx | 17 +- apps/journal/app/routes/routes.new.server.ts | 29 +++ apps/journal/app/routes/routes.new.tsx | 25 +-- .../app/routes/settings.account.server.ts | 15 ++ apps/journal/app/routes/settings.account.tsx | 13 +- .../settings.connections.komoot.server.ts | 23 +++ .../routes/settings.connections.komoot.tsx | 21 +-- .../app/routes/settings.profile.server.ts | 17 ++ apps/journal/app/routes/settings.profile.tsx | 15 +- .../app/routes/settings.security.server.ts | 33 ++++ apps/journal/app/routes/settings.security.tsx | 31 +--- apps/journal/app/routes/settings.server.ts | 10 ++ apps/journal/app/routes/settings.tsx | 8 +- .../routes/sync.import.$provider.server.ts | 118 ++++++++++++ .../app/routes/sync.import.$provider.tsx | 114 +----------- .../app/routes/sync.import.komoot.server.ts | 54 ++++++ .../journal/app/routes/sync.import.komoot.tsx | 50 +----- .../users.$username.followers.server.ts | 46 +++++ .../app/routes/users.$username.followers.tsx | 42 +---- .../users.$username.following.server.ts | 45 +++++ .../app/routes/users.$username.following.tsx | 41 +---- 42 files changed, 1160 insertions(+), 937 deletions(-) create mode 100644 apps/journal/app/routes/activities.$id.server.ts create mode 100644 apps/journal/app/routes/activities._index.server.ts create mode 100644 apps/journal/app/routes/activities.new.server.ts create mode 100644 apps/journal/app/routes/auth.accept-terms.server.ts create mode 100644 apps/journal/app/routes/auth.verify.server.ts create mode 100644 apps/journal/app/routes/explore.server.ts create mode 100644 apps/journal/app/routes/feed.server.ts create mode 100644 apps/journal/app/routes/notifications.server.ts create mode 100644 apps/journal/app/routes/routes.$id.edit.server.ts create mode 100644 apps/journal/app/routes/routes.$id.server.ts create mode 100644 apps/journal/app/routes/routes._index.server.ts create mode 100644 apps/journal/app/routes/routes.new.server.ts create mode 100644 apps/journal/app/routes/settings.account.server.ts create mode 100644 apps/journal/app/routes/settings.connections.komoot.server.ts create mode 100644 apps/journal/app/routes/settings.profile.server.ts create mode 100644 apps/journal/app/routes/settings.security.server.ts create mode 100644 apps/journal/app/routes/settings.server.ts create mode 100644 apps/journal/app/routes/sync.import.$provider.server.ts create mode 100644 apps/journal/app/routes/sync.import.komoot.server.ts create mode 100644 apps/journal/app/routes/users.$username.followers.server.ts create mode 100644 apps/journal/app/routes/users.$username.following.server.ts diff --git a/apps/journal/app/routes/activities.$id.server.ts b/apps/journal/app/routes/activities.$id.server.ts new file mode 100644 index 0000000..b06578f --- /dev/null +++ b/apps/journal/app/routes/activities.$id.server.ts @@ -0,0 +1,95 @@ +// Server-only loader/action for /activities/:id. See `home.server.ts`. + +import { data, redirect } from "react-router"; +import { canView } from "~/lib/auth.server"; +import { getSessionUser, requireSessionUser } from "~/lib/auth/session.server"; +import { + getActivity, + deleteActivity, + linkActivityToRoute, + createRouteFromActivity, + updateActivityVisibility, +} from "~/lib/activities.server"; +import { deleteImportByActivity } from "~/lib/sync/imports.server"; +import { listRoutes } from "~/lib/routes.server"; +import type { Visibility } from "@trails-cool/db/schema/journal"; + +const VISIBILITY_VALUES = new Set(["private", "unlisted", "public"]); + +export async function loadActivityDetail(request: Request, id: string | undefined) { + const activity = await getActivity(id ?? ""); + if (!activity) throw data({ error: "Activity not found" }, { status: 404 }); + + const user = await getSessionUser(request); + const isOwner = user?.id === activity.ownerId; + + // Visibility gate — public always, unlisted on direct link, private owner-only. + // 404 (not 403) to avoid leaking existence. + if (!canView(activity, user, { asDirectLink: true })) { + throw data({ error: "Activity not found" }, { status: 404 }); + } + + const userRoutes = isOwner && user ? await listRoutes(user.id) : []; + + return { + activity: { + id: activity.id, + name: activity.name, + description: activity.description, + distance: activity.distance, + elevationGain: activity.elevationGain, + elevationLoss: activity.elevationLoss, + duration: activity.duration, + routeId: activity.routeId, + hasGpx: !!activity.gpx, + geojson: activity.geojson ?? null, + startedAt: activity.startedAt?.toISOString() ?? null, + visibility: activity.visibility, + createdAt: activity.createdAt.toISOString(), + importSource: activity.importSource, + }, + isOwner, + routes: userRoutes.map((r) => ({ id: r.id, name: r.name })), + }; +} + +export async function activityDetailAction(request: Request, id: string | undefined) { + const user = await requireSessionUser(request); + const activityId = id ?? ""; + + const formData = await request.formData(); + const intent = formData.get("intent"); + + if (intent === "link-route") { + const routeId = formData.get("routeId") as string; + if (routeId) { + await linkActivityToRoute(activityId, routeId, user.id); + } + return redirect(`/activities/${activityId}`); + } + + if (intent === "create-route") { + const routeId = await createRouteFromActivity(activityId, user.id); + if (routeId) return redirect(`/routes/${routeId}`); + return data({ error: "No GPX data to create route from" }, { status: 400 }); + } + + if (intent === "delete") { + await deleteImportByActivity(activityId); + const deleted = await deleteActivity(activityId, user.id); + if (deleted) return redirect("/activities"); + return data({ error: "Activity not found" }, { status: 404 }); + } + + if (intent === "set-visibility") { + const raw = formData.get("visibility") as string | null; + if (!raw || !VISIBILITY_VALUES.has(raw as Visibility)) { + return data({ error: "Invalid visibility" }, { status: 400 }); + } + const ok = await updateActivityVisibility(activityId, user.id, raw as Visibility); + if (!ok) return data({ error: "Activity not found" }, { status: 404 }); + return redirect(`/activities/${activityId}`); + } + + return data({ error: "Unknown action" }, { status: 400 }); +} diff --git a/apps/journal/app/routes/activities.$id.tsx b/apps/journal/app/routes/activities.$id.tsx index 715f29e..fa189dd 100644 --- a/apps/journal/app/routes/activities.$id.tsx +++ b/apps/journal/app/routes/activities.$id.tsx @@ -1,92 +1,16 @@ -import { data, redirect } from "react-router"; +import { data } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/activities.$id"; -import { canView } from "~/lib/auth.server"; -import { getSessionUser, requireSessionUser } from "~/lib/auth/session.server"; -import { getActivity, deleteActivity, linkActivityToRoute, createRouteFromActivity, updateActivityVisibility } from "~/lib/activities.server"; -import { deleteImportByActivity } from "~/lib/sync/imports.server"; -import { listRoutes } from "~/lib/routes.server"; import { ClientDate } from "~/components/ClientDate"; import { ClientMap } from "~/components/ClientMap"; -import type { Visibility } from "@trails-cool/db/schema/journal"; - -const VISIBILITY_VALUES = new Set(["private", "unlisted", "public"]); +import { loadActivityDetail, activityDetailAction } from "./activities.$id.server"; export async function loader({ params, request }: Route.LoaderArgs) { - const activity = await getActivity(params.id); - if (!activity) throw data({ error: "Activity not found" }, { status: 404 }); - - const user = await getSessionUser(request); - const isOwner = user?.id === activity.ownerId; - - // Visibility gate — public always, unlisted on direct link, private owner-only. - // 404 (not 403) to avoid leaking existence. - if (!canView(activity, user, { asDirectLink: true })) { - throw data({ error: "Activity not found" }, { status: 404 }); - } - - const userRoutes = isOwner && user ? await listRoutes(user.id) : []; - - return data({ - activity: { - id: activity.id, - name: activity.name, - description: activity.description, - distance: activity.distance, - elevationGain: activity.elevationGain, - elevationLoss: activity.elevationLoss, - duration: activity.duration, - routeId: activity.routeId, - hasGpx: !!activity.gpx, - geojson: activity.geojson ?? null, - startedAt: activity.startedAt?.toISOString() ?? null, - visibility: activity.visibility, - createdAt: activity.createdAt.toISOString(), - importSource: activity.importSource, - }, - isOwner, - routes: userRoutes.map((r) => ({ id: r.id, name: r.name })), - }); + return data(await loadActivityDetail(request, params.id)); } export async function action({ params, request }: Route.ActionArgs) { - const user = await requireSessionUser(request); - - const formData = await request.formData(); - const intent = formData.get("intent"); - - if (intent === "link-route") { - const routeId = formData.get("routeId") as string; - if (routeId) { - await linkActivityToRoute(params.id, routeId, user.id); - } - return redirect(`/activities/${params.id}`); - } - - if (intent === "create-route") { - const routeId = await createRouteFromActivity(params.id, user.id); - if (routeId) return redirect(`/routes/${routeId}`); - return data({ error: "No GPX data to create route from" }, { status: 400 }); - } - - if (intent === "delete") { - await deleteImportByActivity(params.id); - const deleted = await deleteActivity(params.id, user.id); - if (deleted) return redirect("/activities"); - return data({ error: "Activity not found" }, { status: 404 }); - } - - if (intent === "set-visibility") { - const raw = formData.get("visibility") as string | null; - if (!raw || !VISIBILITY_VALUES.has(raw as Visibility)) { - return data({ error: "Invalid visibility" }, { status: 400 }); - } - const ok = await updateActivityVisibility(params.id, user.id, raw as Visibility); - if (!ok) return data({ error: "Activity not found" }, { status: 404 }); - return redirect(`/activities/${params.id}`); - } - - return data({ error: "Unknown action" }, { status: 400 }); + return await activityDetailAction(request, params.id); } export function meta({ data: loaderData }: Route.MetaArgs) { diff --git a/apps/journal/app/routes/activities._index.server.ts b/apps/journal/app/routes/activities._index.server.ts new file mode 100644 index 0000000..f7277f4 --- /dev/null +++ b/apps/journal/app/routes/activities._index.server.ts @@ -0,0 +1,27 @@ +// Server-only loader for /activities index. See `home.server.ts`. + +import { requireSessionUser } from "~/lib/auth/session.server"; +import { listActivities } from "~/lib/activities.server"; + +export async function loadActivitiesIndex(request: Request) { + const user = await requireSessionUser(request); + + const url = new URL(request.url); + const sortParam = url.searchParams.get("sort"); + const activitySort = sortParam === "addedAt" ? "addedAt" : ("startedAt" as const); + + const userActivities = await listActivities(user.id, activitySort); + return { + activitySort, + activities: userActivities.map((a) => ({ + id: a.id, + name: a.name, + distance: a.distance, + elevationGain: a.elevationGain, + duration: a.duration, + startedAt: a.startedAt?.toISOString() ?? null, + createdAt: a.createdAt.toISOString(), + geojson: a.geojson ?? null, + })), + }; +} diff --git a/apps/journal/app/routes/activities._index.tsx b/apps/journal/app/routes/activities._index.tsx index 4056c73..e5575ec 100644 --- a/apps/journal/app/routes/activities._index.tsx +++ b/apps/journal/app/routes/activities._index.tsx @@ -1,32 +1,12 @@ import { data } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/activities._index"; -import { requireSessionUser } from "~/lib/auth/session.server"; -import { listActivities } from "~/lib/activities.server"; import { ClientDate } from "~/components/ClientDate"; import { ClientMap } from "~/components/ClientMap"; +import { loadActivitiesIndex } from "./activities._index.server"; export async function loader({ request }: Route.LoaderArgs) { - const user = await requireSessionUser(request); - - const url = new URL(request.url); - const sortParam = url.searchParams.get("sort"); - const activitySort = sortParam === "addedAt" ? "addedAt" : ("startedAt" as const); - - const userActivities = await listActivities(user.id, activitySort); - return data({ - activitySort, - activities: userActivities.map((a) => ({ - id: a.id, - name: a.name, - distance: a.distance, - elevationGain: a.elevationGain, - duration: a.duration, - startedAt: a.startedAt?.toISOString() ?? null, - createdAt: a.createdAt.toISOString(), - geojson: a.geojson ?? null, - })), - }); + return data(await loadActivitiesIndex(request)); } export function meta(_args: Route.MetaArgs) { diff --git a/apps/journal/app/routes/activities.new.server.ts b/apps/journal/app/routes/activities.new.server.ts new file mode 100644 index 0000000..c288f05 --- /dev/null +++ b/apps/journal/app/routes/activities.new.server.ts @@ -0,0 +1,41 @@ +// Server-only loader/action for /activities/new. See `home.server.ts`. + +import { data, redirect } from "react-router"; +import { requireSessionUser } from "~/lib/auth/session.server"; +import { createActivity } from "~/lib/activities.server"; +import { listRoutes } from "~/lib/routes.server"; + +export async function loadActivitiesNew(request: Request) { + const user = await requireSessionUser(request); + + const userRoutes = await listRoutes(user.id); + return { + routes: userRoutes.map((r) => ({ id: r.id, name: r.name })), + }; +} + +export async function activitiesNewAction(request: Request) { + const user = await requireSessionUser(request); + + const formData = await request.formData(); + const name = formData.get("name") as string; + const description = formData.get("description") as string; + const routeId = formData.get("routeId") as string | null; + const gpxFile = formData.get("gpx") as File | null; + + if (!name) return data({ error: "Name is required" }, { status: 400 }); + + let gpx: string | undefined; + if (gpxFile && gpxFile.size > 0) { + gpx = await gpxFile.text(); + } + + const activityId = await createActivity(user.id, { + name, + description, + gpx, + routeId: routeId || undefined, + }); + + return redirect(`/activities/${activityId}`); +} diff --git a/apps/journal/app/routes/activities.new.tsx b/apps/journal/app/routes/activities.new.tsx index fc55122..cd66ee1 100644 --- a/apps/journal/app/routes/activities.new.tsx +++ b/apps/journal/app/routes/activities.new.tsx @@ -1,42 +1,13 @@ -import { data, redirect } from "react-router"; +import { data } from "react-router"; import type { Route } from "./+types/activities.new"; -import { requireSessionUser } from "~/lib/auth/session.server"; -import { createActivity } from "~/lib/activities.server"; -import { listRoutes } from "~/lib/routes.server"; +import { loadActivitiesNew, activitiesNewAction } from "./activities.new.server"; export async function loader({ request }: Route.LoaderArgs) { - const user = await requireSessionUser(request); - - const userRoutes = await listRoutes(user.id); - return data({ - routes: userRoutes.map((r) => ({ id: r.id, name: r.name })), - }); + return data(await loadActivitiesNew(request)); } export async function action({ request }: Route.ActionArgs) { - const user = await requireSessionUser(request); - - const formData = await request.formData(); - const name = formData.get("name") as string; - const description = formData.get("description") as string; - const routeId = formData.get("routeId") as string | null; - const gpxFile = formData.get("gpx") as File | null; - - if (!name) return data({ error: "Name is required" }, { status: 400 }); - - let gpx: string | undefined; - if (gpxFile && gpxFile.size > 0) { - gpx = await gpxFile.text(); - } - - const activityId = await createActivity(user.id, { - name, - description, - gpx, - routeId: routeId || undefined, - }); - - return redirect(`/activities/${activityId}`); + return await activitiesNewAction(request); } export function meta(_args: Route.MetaArgs) { diff --git a/apps/journal/app/routes/auth.accept-terms.server.ts b/apps/journal/app/routes/auth.accept-terms.server.ts new file mode 100644 index 0000000..d99ca71 --- /dev/null +++ b/apps/journal/app/routes/auth.accept-terms.server.ts @@ -0,0 +1,47 @@ +// Server-only loader/action for /auth/accept-terms. See `home.server.ts`. + +import { data, redirect } from "react-router"; +import { recordTermsAcceptance } from "~/lib/auth.server"; +import { getSessionUser } from "~/lib/auth/session.server"; +import { TERMS_VERSION } from "~/lib/legal"; + +/** + * Paths we'll bounce back to after a successful acceptance. We only allow + * same-origin absolute paths to avoid being used as an open redirect. + */ +function safeReturnTo(raw: string | null): string { + if (!raw) return "/"; + if (!raw.startsWith("/") || raw.startsWith("//")) return "/"; + return raw; +} + +export async function loadAcceptTerms(request: Request) { + const user = await getSessionUser(request); + if (!user) { + throw redirect("/auth/login"); + } + // If the user is already current, bounce them back (e.g. double-submit). + if (user.termsVersion === TERMS_VERSION) { + const returnTo = safeReturnTo(new URL(request.url).searchParams.get("returnTo")); + throw redirect(returnTo); + } + return { previousVersion: user.termsVersion }; +} + +export async function acceptTermsAction(request: Request) { + const user = await getSessionUser(request); + if (!user) { + throw redirect("/auth/login"); + } + + const form = await request.formData(); + const accepted = form.get("termsAccepted") === "on" || form.get("termsAccepted") === "true"; + if (!accepted) { + return data({ error: "Terms of Service must be accepted to continue" }, { status: 400 }); + } + + await recordTermsAcceptance(user.id, TERMS_VERSION); + + const returnTo = safeReturnTo(form.get("returnTo")?.toString() ?? null); + throw redirect(returnTo); +} diff --git a/apps/journal/app/routes/auth.accept-terms.tsx b/apps/journal/app/routes/auth.accept-terms.tsx index 81da750..1059e7f 100644 --- a/apps/journal/app/routes/auth.accept-terms.tsx +++ b/apps/journal/app/routes/auth.accept-terms.tsx @@ -1,10 +1,9 @@ import { useState } from "react"; -import { Form, data, redirect, useLoaderData, useSearchParams } from "react-router"; +import { Form, useLoaderData, useSearchParams } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/auth.accept-terms"; -import { recordTermsAcceptance } from "~/lib/auth.server"; -import { getSessionUser } from "~/lib/auth/session.server"; import { TERMS_VERSION } from "~/lib/legal"; +import { loadAcceptTerms, acceptTermsAction } from "./auth.accept-terms.server"; export function meta() { return [ @@ -13,45 +12,12 @@ export function meta() { ]; } -/** - * Paths we'll bounce back to after a successful acceptance. We only allow - * same-origin absolute paths to avoid being used as an open redirect. - */ -function safeReturnTo(raw: string | null): string { - if (!raw) return "/"; - if (!raw.startsWith("/") || raw.startsWith("//")) return "/"; - return raw; -} - export async function loader({ request }: Route.LoaderArgs) { - const user = await getSessionUser(request); - if (!user) { - throw redirect("/auth/login"); - } - // If the user is already current, bounce them back (e.g. double-submit). - if (user.termsVersion === TERMS_VERSION) { - const returnTo = safeReturnTo(new URL(request.url).searchParams.get("returnTo")); - throw redirect(returnTo); - } - return { previousVersion: user.termsVersion }; + return await loadAcceptTerms(request); } export async function action({ request }: Route.ActionArgs) { - const user = await getSessionUser(request); - if (!user) { - throw redirect("/auth/login"); - } - - const form = await request.formData(); - const accepted = form.get("termsAccepted") === "on" || form.get("termsAccepted") === "true"; - if (!accepted) { - return data({ error: "Terms of Service must be accepted to continue" }, { status: 400 }); - } - - await recordTermsAcceptance(user.id, TERMS_VERSION); - - const returnTo = safeReturnTo(form.get("returnTo")?.toString() ?? null); - throw redirect(returnTo); + return await acceptTermsAction(request); } export default function AcceptTermsPage() { diff --git a/apps/journal/app/routes/auth.verify.server.ts b/apps/journal/app/routes/auth.verify.server.ts new file mode 100644 index 0000000..62d4d55 --- /dev/null +++ b/apps/journal/app/routes/auth.verify.server.ts @@ -0,0 +1,35 @@ +// Server-only loader for /auth/verify. See `home.server.ts` for the pattern. + +import { redirect, data } from "react-router"; +import { verifyMagicToken, verifyEmailChange } from "~/lib/auth.server"; +import { requireSessionUser } from "~/lib/auth/session.server"; +import { completeAuth } from "~/lib/auth/completion.server"; + +export async function loadAuthVerify(request: Request) { + const url = new URL(request.url); + const token = url.searchParams.get("token"); + const isEmailChange = url.searchParams.get("email-change") === "1"; + + if (!token) { + return data({ error: "Missing token" }, { status: 400 }); + } + + try { + if (isEmailChange) { + const user = await requireSessionUser(request); + await verifyEmailChange(token, user.id); + return redirect("/settings/account"); + } + + const userId = await verifyMagicToken(token); + // Default destination after magic-link sign-in is "/?add-passkey=1" + // (prompt to set up a passkey now that they're in). If the link + // carried a returnTo, completeAuth's safeReturnTo will honor any + // same-origin path and otherwise fall back to "/" — handle the + // add-passkey default before delegating. + const returnTo = url.searchParams.get("returnTo") ?? "/?add-passkey=1"; + return completeAuth({ userId, request, returnTo, mode: "redirect" }); + } catch (e) { + return data({ error: (e as Error).message }, { status: 400 }); + } +} diff --git a/apps/journal/app/routes/auth.verify.tsx b/apps/journal/app/routes/auth.verify.tsx index c122a5a..c4803fc 100644 --- a/apps/journal/app/routes/auth.verify.tsx +++ b/apps/journal/app/routes/auth.verify.tsx @@ -1,36 +1,8 @@ -import { redirect, data } from "react-router"; import type { Route } from "./+types/auth.verify"; -import { verifyMagicToken, verifyEmailChange } from "~/lib/auth.server"; -import { requireSessionUser } from "~/lib/auth/session.server"; -import { completeAuth } from "~/lib/auth/completion.server"; +import { loadAuthVerify } from "./auth.verify.server"; export async function loader({ request }: Route.LoaderArgs) { - const url = new URL(request.url); - const token = url.searchParams.get("token"); - const isEmailChange = url.searchParams.get("email-change") === "1"; - - if (!token) { - return data({ error: "Missing token" }, { status: 400 }); - } - - try { - if (isEmailChange) { - const user = await requireSessionUser(request); - await verifyEmailChange(token, user.id); - return redirect("/settings/account"); - } - - const userId = await verifyMagicToken(token); - // Default destination after magic-link sign-in is "/?add-passkey=1" - // (prompt to set up a passkey now that they're in). If the link - // carried a returnTo, completeAuth's safeReturnTo will honor any - // same-origin path and otherwise fall back to "/" — handle the - // add-passkey default before delegating. - const returnTo = url.searchParams.get("returnTo") ?? "/?add-passkey=1"; - return completeAuth({ userId, request, returnTo, mode: "redirect" }); - } catch (e) { - return data({ error: (e as Error).message }, { status: 400 }); - } + return await loadAuthVerify(request); } export default function VerifyPage() { diff --git a/apps/journal/app/routes/explore.server.ts b/apps/journal/app/routes/explore.server.ts new file mode 100644 index 0000000..918796a --- /dev/null +++ b/apps/journal/app/routes/explore.server.ts @@ -0,0 +1,74 @@ +// Server-only loader for /explore. See `home.server.ts`. + +import { getSessionUser } from "~/lib/auth/session.server"; +import { + EXPLORE_DEFAULT_PAGE_SIZE, + countFollowersBatch, + getFollowStateBatch, + listActiveRecently, + listDirectory, +} from "~/lib/explore.server"; +import { loadPersona } from "~/lib/demo-bot.server"; + +const BIO_TRUNCATE = 120; + +function truncateBio(bio: string | null): string | null { + if (!bio) return null; + const trimmed = bio.trim(); + if (trimmed.length === 0) return null; + if (trimmed.length <= BIO_TRUNCATE) return trimmed; + return trimmed.slice(0, BIO_TRUNCATE).trimEnd() + "…"; +} + +export async function loadExplore(request: Request) { + const viewer = await getSessionUser(request); + const url = new URL(request.url); + const page = Number(url.searchParams.get("page") ?? "1"); + const perPage = Number(url.searchParams.get("perPage") ?? String(EXPLORE_DEFAULT_PAGE_SIZE)); + + const [activeRecently, directory] = await Promise.all([ + listActiveRecently(), + listDirectory({ page, perPage }), + ]); + + // Per-row data: follower count (for everyone) + follow state (for + // signed-in viewers only). Both are batched so the page issues at + // most two extra queries regardless of page size. + const allRows = [...activeRecently, ...directory.rows]; + const allIds = allRows.map((r) => r.id); + const followerCounts = await countFollowersBatch(allIds); + const followStates = viewer + ? await getFollowStateBatch(viewer.id, allRows.map((r) => ({ id: r.id, username: r.username }))) + : new Map(); + + const isSelf = (rowId: string) => viewer?.id === rowId; + const personaUsername = loadPersona().username; + + const decorate = (row: typeof allRows[number]) => ({ + id: row.id, + username: row.username, + displayName: row.displayName, + bio: truncateBio(row.bio), + followerCount: followerCounts.get(row.id) ?? 0, + followState: followStates.get(row.id) ?? null, + isSelf: isSelf(row.id), + isDemoUser: row.username === personaUsername, + }); + + // Resolved page size (after loader-side clamping inside listDirectory) + // for the pagination math here. We can compute totalPages without + // re-querying since `directory.totalCount` is authoritative. + const resolvedPerPage = Math.max(1, Math.min(100, Math.floor(Number.isFinite(perPage) ? perPage : EXPLORE_DEFAULT_PAGE_SIZE))); + const resolvedPage = Math.max(1, Math.floor(Number.isFinite(page) ? page : 1)); + const totalPages = Math.max(1, Math.ceil(directory.totalCount / resolvedPerPage)); + + return { + isSignedIn: !!viewer, + activeRecently: activeRecently.map(decorate), + directory: directory.rows.map(decorate), + page: resolvedPage, + perPage: resolvedPerPage, + totalPages, + totalCount: directory.totalCount, + }; +} diff --git a/apps/journal/app/routes/explore.tsx b/apps/journal/app/routes/explore.tsx index 6386a80..a25075a 100644 --- a/apps/journal/app/routes/explore.tsx +++ b/apps/journal/app/routes/explore.tsx @@ -2,78 +2,11 @@ import { data } from "react-router"; import { Link } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/explore"; -import { getSessionUser } from "~/lib/auth/session.server"; -import { - EXPLORE_DEFAULT_PAGE_SIZE, - countFollowersBatch, - getFollowStateBatch, - listActiveRecently, - listDirectory, -} from "~/lib/explore.server"; -import { loadPersona } from "~/lib/demo-bot.server"; import { FollowButton } from "~/components/FollowButton"; - -const BIO_TRUNCATE = 120; - -function truncateBio(bio: string | null): string | null { - if (!bio) return null; - const trimmed = bio.trim(); - if (trimmed.length === 0) return null; - if (trimmed.length <= BIO_TRUNCATE) return trimmed; - return trimmed.slice(0, BIO_TRUNCATE).trimEnd() + "…"; -} +import { loadExplore } from "./explore.server"; export async function loader({ request }: Route.LoaderArgs) { - const viewer = await getSessionUser(request); - const url = new URL(request.url); - const page = Number(url.searchParams.get("page") ?? "1"); - const perPage = Number(url.searchParams.get("perPage") ?? String(EXPLORE_DEFAULT_PAGE_SIZE)); - - const [activeRecently, directory] = await Promise.all([ - listActiveRecently(), - listDirectory({ page, perPage }), - ]); - - // Per-row data: follower count (for everyone) + follow state (for - // signed-in viewers only). Both are batched so the page issues at - // most two extra queries regardless of page size. - const allRows = [...activeRecently, ...directory.rows]; - const allIds = allRows.map((r) => r.id); - const followerCounts = await countFollowersBatch(allIds); - const followStates = viewer - ? await getFollowStateBatch(viewer.id, allRows.map((r) => ({ id: r.id, username: r.username }))) - : new Map(); - - const isSelf = (rowId: string) => viewer?.id === rowId; - const personaUsername = loadPersona().username; - - const decorate = (row: typeof allRows[number]) => ({ - id: row.id, - username: row.username, - displayName: row.displayName, - bio: truncateBio(row.bio), - followerCount: followerCounts.get(row.id) ?? 0, - followState: followStates.get(row.id) ?? null, - isSelf: isSelf(row.id), - isDemoUser: row.username === personaUsername, - }); - - // Resolved page size (after loader-side clamping inside listDirectory) - // for the pagination math here. We can compute totalPages without - // re-querying since `directory.totalCount` is authoritative. - const resolvedPerPage = Math.max(1, Math.min(100, Math.floor(Number.isFinite(perPage) ? perPage : EXPLORE_DEFAULT_PAGE_SIZE))); - const resolvedPage = Math.max(1, Math.floor(Number.isFinite(page) ? page : 1)); - const totalPages = Math.max(1, Math.ceil(directory.totalCount / resolvedPerPage)); - - return data({ - isSignedIn: !!viewer, - activeRecently: activeRecently.map(decorate), - directory: directory.rows.map(decorate), - page: resolvedPage, - perPage: resolvedPerPage, - totalPages, - totalCount: directory.totalCount, - }); + return data(await loadExplore(request)); } export function meta(_args: Route.MetaArgs) { diff --git a/apps/journal/app/routes/feed.server.ts b/apps/journal/app/routes/feed.server.ts new file mode 100644 index 0000000..1f5e7c8 --- /dev/null +++ b/apps/journal/app/routes/feed.server.ts @@ -0,0 +1,36 @@ +// Server-only loader for /feed. See `home.server.ts`. + +import { redirect } from "react-router"; +import { getSessionUser } from "~/lib/auth/session.server"; +import { listSocialFeed, listRecentPublicActivities } from "~/lib/activities.server"; + +type View = "followed" | "public"; + +export async function loadFeed(request: Request) { + const user = await getSessionUser(request); + if (!user) throw redirect("/auth/login"); + + const url = new URL(request.url); + const view: View = url.searchParams.get("view") === "public" ? "public" : "followed"; + + const rows = + view === "public" + ? await listRecentPublicActivities(50) + : await listSocialFeed(user.id, 50); + + return { + view, + activities: rows.map((a) => ({ + id: a.id, + name: a.name, + distance: a.distance, + elevationGain: a.elevationGain, + duration: a.duration, + startedAt: a.startedAt?.toISOString() ?? null, + createdAt: a.createdAt.toISOString(), + geojson: a.geojson ?? null, + ownerUsername: a.ownerUsername, + ownerDisplayName: a.ownerDisplayName, + })), + }; +} diff --git a/apps/journal/app/routes/feed.tsx b/apps/journal/app/routes/feed.tsx index 4590144..37f5b67 100644 --- a/apps/journal/app/routes/feed.tsx +++ b/apps/journal/app/routes/feed.tsx @@ -1,41 +1,13 @@ -import { data, redirect } from "react-router"; +import { data } from "react-router"; import { Link } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/feed"; -import { getSessionUser } from "~/lib/auth/session.server"; -import { listSocialFeed, listRecentPublicActivities } from "~/lib/activities.server"; import { ClientDate } from "~/components/ClientDate"; import { ClientMap } from "~/components/ClientMap"; - -type View = "followed" | "public"; +import { loadFeed } from "./feed.server"; export async function loader({ request }: Route.LoaderArgs) { - const user = await getSessionUser(request); - if (!user) throw redirect("/auth/login"); - - const url = new URL(request.url); - const view: View = url.searchParams.get("view") === "public" ? "public" : "followed"; - - const rows = - view === "public" - ? await listRecentPublicActivities(50) - : await listSocialFeed(user.id, 50); - - return data({ - view, - activities: rows.map((a) => ({ - id: a.id, - name: a.name, - distance: a.distance, - elevationGain: a.elevationGain, - duration: a.duration, - startedAt: a.startedAt?.toISOString() ?? null, - createdAt: a.createdAt.toISOString(), - geojson: a.geojson ?? null, - ownerUsername: a.ownerUsername, - ownerDisplayName: a.ownerDisplayName, - })), - }); + return data(await loadFeed(request)); } export function meta({ data: loaderData }: Route.MetaArgs) { diff --git a/apps/journal/app/routes/notifications.server.ts b/apps/journal/app/routes/notifications.server.ts new file mode 100644 index 0000000..ed47ef6 --- /dev/null +++ b/apps/journal/app/routes/notifications.server.ts @@ -0,0 +1,111 @@ +// Server-only loader for /notifications. See `home.server.ts`. + +import { redirect } from "react-router"; +import { inArray, eq, and } from "drizzle-orm"; +import { getDb } from "~/lib/db"; +import { getSessionUser } from "~/lib/auth/session.server"; +import { listForUser } from "~/lib/notifications.server"; +import { linkFor } from "~/lib/notifications/link-for"; +import { readPayload } from "~/lib/notifications/payload"; +import { + countPendingFollowRequests, + listPendingFollowRequests, +} from "~/lib/follow.server"; +import { activities } from "@trails-cool/db/schema/journal"; + +type Tab = "activity" | "requests"; + +export interface NotificationRow { + id: string; + type: string; + readAt: string | null; + createdAt: string; + link: string; + payload: Record | null; +} + +export interface RequestRow { + id: string; + followerUsername: string; + followerDisplayName: string | null; + followerDomain: string; + createdAt: string; +} + +export async function loadNotifications(request: Request) { + const user = await getSessionUser(request); + if (!user) throw redirect("/auth/login"); + + const url = new URL(request.url); + const tab: Tab = url.searchParams.get("tab") === "requests" ? "requests" : "activity"; + + // Pending count drives the Requests tab dot regardless of which tab is + // currently active, so we always fetch it. It's a single COUNT(*) query. + const pendingCount = await countPendingFollowRequests(user.id); + + if (tab === "requests") { + const requests = await listPendingFollowRequests(user.id); + return { + tab: "requests" as const, + pendingCount, + requests: requests.map((r) => ({ + id: r.id, + followerUsername: r.followerUsername, + followerDisplayName: r.followerDisplayName, + followerDomain: r.followerDomain, + createdAt: r.createdAt.toISOString(), + })), + notifications: [] as NotificationRow[], + nextCursor: null as string | null, + }; + } + + const before = url.searchParams.get("before") ?? undefined; + const { rows, nextCursor } = await listForUser(user.id, { before }); + + // Renderer guard: drop activity_published rows whose subject is gone + // or no longer public (visibility flipped from public → private/unlisted). + // Fetch the still-public subject IDs in one query, then filter. + const activitySubjectIds = rows + .filter((r) => r.type === "activity_published" && r.subjectId) + .map((r) => r.subjectId as string); + let publicActivityIds = new Set(); + if (activitySubjectIds.length > 0) { + const db = getDb(); + const visible = await db + .select({ id: activities.id }) + .from(activities) + .where(and(inArray(activities.id, activitySubjectIds), eq(activities.visibility, "public"))); + publicActivityIds = new Set(visible.map((v) => v.id)); + } + + const visibleRows = rows.filter((r) => { + if (r.type !== "activity_published") return true; + if (!r.subjectId) return false; + return publicActivityIds.has(r.subjectId); + }); + + return { + tab: "activity" as const, + pendingCount, + requests: [] as RequestRow[], + notifications: visibleRows.map((r) => { + const link = linkFor({ + type: r.type, + subjectId: r.subjectId, + payload: r.payload, + payloadVersion: r.payloadVersion, + }); + const payload = readPayload(r.type, r.payloadVersion, r.payload); + return { + id: r.id, + type: r.type, + readAt: r.readAt?.toISOString() ?? null, + createdAt: r.createdAt.toISOString(), + link: link.web, + payload, + }; + }), + nextCursor, + }; +} diff --git a/apps/journal/app/routes/notifications.tsx b/apps/journal/app/routes/notifications.tsx index dda955a..13c567a 100644 --- a/apps/journal/app/routes/notifications.tsx +++ b/apps/journal/app/routes/notifications.tsx @@ -1,98 +1,12 @@ -import { data, redirect, useFetcher } from "react-router"; +import { data, useFetcher } from "react-router"; import { Link } from "react-router"; import { useTranslation } from "react-i18next"; -import { inArray, eq, and } from "drizzle-orm"; import type { Route } from "./+types/notifications"; -import { getDb } from "~/lib/db"; -import { getSessionUser } from "~/lib/auth/session.server"; -import { listForUser } from "~/lib/notifications.server"; -import { linkFor } from "~/lib/notifications/link-for"; -import { readPayload } from "~/lib/notifications/payload"; -import { - countPendingFollowRequests, - listPendingFollowRequests, -} from "~/lib/follow.server"; import { ClientDate } from "~/components/ClientDate"; -import { activities } from "@trails-cool/db/schema/journal"; - -type Tab = "activity" | "requests"; +import { loadNotifications } from "./notifications.server"; export async function loader({ request }: Route.LoaderArgs) { - const user = await getSessionUser(request); - if (!user) throw redirect("/auth/login"); - - const url = new URL(request.url); - const tab: Tab = url.searchParams.get("tab") === "requests" ? "requests" : "activity"; - - // Pending count drives the Requests tab dot regardless of which tab is - // currently active, so we always fetch it. It's a single COUNT(*) query. - const pendingCount = await countPendingFollowRequests(user.id); - - if (tab === "requests") { - const requests = await listPendingFollowRequests(user.id); - return data({ - tab: "requests" as const, - pendingCount, - requests: requests.map((r) => ({ - id: r.id, - followerUsername: r.followerUsername, - followerDisplayName: r.followerDisplayName, - followerDomain: r.followerDomain, - createdAt: r.createdAt.toISOString(), - })), - notifications: [] as NotificationRow[], - nextCursor: null as string | null, - }); - } - - const before = url.searchParams.get("before") ?? undefined; - const { rows, nextCursor } = await listForUser(user.id, { before }); - - // Renderer guard: drop activity_published rows whose subject is gone - // or no longer public (visibility flipped from public → private/unlisted). - // Fetch the still-public subject IDs in one query, then filter. - const activitySubjectIds = rows - .filter((r) => r.type === "activity_published" && r.subjectId) - .map((r) => r.subjectId as string); - let publicActivityIds = new Set(); - if (activitySubjectIds.length > 0) { - const db = getDb(); - const visible = await db - .select({ id: activities.id }) - .from(activities) - .where(and(inArray(activities.id, activitySubjectIds), eq(activities.visibility, "public"))); - publicActivityIds = new Set(visible.map((v) => v.id)); - } - - const visibleRows = rows.filter((r) => { - if (r.type !== "activity_published") return true; - if (!r.subjectId) return false; - return publicActivityIds.has(r.subjectId); - }); - - return data({ - tab: "activity" as const, - pendingCount, - requests: [] as RequestRow[], - notifications: visibleRows.map((r) => { - const link = linkFor({ - type: r.type, - subjectId: r.subjectId, - payload: r.payload, - payloadVersion: r.payloadVersion, - }); - const payload = readPayload(r.type, r.payloadVersion, r.payload); - return { - id: r.id, - type: r.type, - readAt: r.readAt?.toISOString() ?? null, - createdAt: r.createdAt.toISOString(), - link: link.web, - payload, - }; - }), - nextCursor, - }); + return data(await loadNotifications(request)); } export function meta(_args: Route.MetaArgs) { diff --git a/apps/journal/app/routes/routes.$id.edit.server.ts b/apps/journal/app/routes/routes.$id.edit.server.ts new file mode 100644 index 0000000..b3ed830 --- /dev/null +++ b/apps/journal/app/routes/routes.$id.edit.server.ts @@ -0,0 +1,49 @@ +// Server-only loader/action for /routes/:id/edit. See `home.server.ts`. + +import { data, redirect } from "react-router"; +import { requireSessionUser } from "~/lib/auth/session.server"; +import { getRoute, updateRoute } from "~/lib/routes.server"; +import type { Visibility } from "@trails-cool/db/schema/journal"; + +const VISIBILITY_VALUES = new Set(["private", "unlisted", "public"]); + +export async function loadRouteEdit(request: Request, id: string | undefined) { + const user = await requireSessionUser(request); + + const route = await getRoute(id ?? ""); + if (!route) throw data({ error: "Route not found" }, { status: 404 }); + if (route.ownerId !== user.id) throw data({ error: "Not authorized" }, { status: 403 }); + + return { + route: { + id: route.id, + name: route.name, + description: route.description, + visibility: route.visibility, + }, + }; +} + +export async function routeEditAction(request: Request, id: string | undefined) { + const user = await requireSessionUser(request); + const routeId = id ?? ""; + + const formData = await request.formData(); + const name = formData.get("name") as string; + const description = formData.get("description") as string; + const gpxFile = formData.get("gpx") as File | null; + const visibilityRaw = formData.get("visibility") as string | null; + + const input: { name?: string; description?: string; gpx?: string; visibility?: Visibility } = {}; + if (name) input.name = name; + if (description !== null) input.description = description; + if (gpxFile && gpxFile.size > 0) { + input.gpx = await gpxFile.text(); + } + if (visibilityRaw && VISIBILITY_VALUES.has(visibilityRaw as Visibility)) { + input.visibility = visibilityRaw as Visibility; + } + + await updateRoute(routeId, user.id, input); + return redirect(`/routes/${routeId}`); +} diff --git a/apps/journal/app/routes/routes.$id.edit.tsx b/apps/journal/app/routes/routes.$id.edit.tsx index 1d50d92..7ab1bc0 100644 --- a/apps/journal/app/routes/routes.$id.edit.tsx +++ b/apps/journal/app/routes/routes.$id.edit.tsx @@ -1,50 +1,14 @@ -import { data, redirect } from "react-router"; +import { data } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/routes.$id.edit"; -import { requireSessionUser } from "~/lib/auth/session.server"; -import { getRoute, updateRoute } from "~/lib/routes.server"; -import type { Visibility } from "@trails-cool/db/schema/journal"; - -const VISIBILITY_VALUES = new Set(["private", "unlisted", "public"]); +import { loadRouteEdit, routeEditAction } from "./routes.$id.edit.server"; export async function loader({ params, request }: Route.LoaderArgs) { - const user = await requireSessionUser(request); - - const route = await getRoute(params.id); - if (!route) throw data({ error: "Route not found" }, { status: 404 }); - if (route.ownerId !== user.id) throw data({ error: "Not authorized" }, { status: 403 }); - - return data({ - route: { - id: route.id, - name: route.name, - description: route.description, - visibility: route.visibility, - }, - }); + return data(await loadRouteEdit(request, params.id)); } export async function action({ params, request }: Route.ActionArgs) { - const user = await requireSessionUser(request); - - const formData = await request.formData(); - const name = formData.get("name") as string; - const description = formData.get("description") as string; - const gpxFile = formData.get("gpx") as File | null; - const visibilityRaw = formData.get("visibility") as string | null; - - const input: { name?: string; description?: string; gpx?: string; visibility?: Visibility } = {}; - if (name) input.name = name; - if (description !== null) input.description = description; - if (gpxFile && gpxFile.size > 0) { - input.gpx = await gpxFile.text(); - } - if (visibilityRaw && VISIBILITY_VALUES.has(visibilityRaw as Visibility)) { - input.visibility = visibilityRaw as Visibility; - } - - await updateRoute(params.id, user.id, input); - return redirect(`/routes/${params.id}`); + return await routeEditAction(request, params.id); } export function meta(_args: Route.MetaArgs) { diff --git a/apps/journal/app/routes/routes.$id.server.ts b/apps/journal/app/routes/routes.$id.server.ts new file mode 100644 index 0000000..7edaddb --- /dev/null +++ b/apps/journal/app/routes/routes.$id.server.ts @@ -0,0 +1,170 @@ +// Server-only loader/action for /routes/:id. See `home.server.ts`. + +import { data, redirect } from "react-router"; +import { and, eq } from "drizzle-orm"; +import { canView } from "~/lib/auth.server"; +import { getSessionUser, requireSessionUser } from "~/lib/auth/session.server"; +import { getRoute, getRouteWithVersions, deleteRoute, updateRoute } from "~/lib/routes.server"; +import { getDb } from "~/lib/db"; +import { syncPushes } from "@trails-cool/db/schema/journal"; +import { getService } from "~/lib/connected-services"; + +export async function loadRouteDetail(request: Request, id: string | undefined) { + const routeId = id ?? ""; + const [routeWithVersions, routeWithGeojson] = await Promise.all([ + getRouteWithVersions(routeId), + getRoute(routeId), + ]); + if (!routeWithVersions) throw data({ error: "Route not found" }, { status: 404 }); + const route = routeWithVersions; + + const user = await getSessionUser(request); + const isOwner = user?.id === route.ownerId; + + // Visibility gate: public always renders, unlisted renders on direct link, + // private requires ownership. Return 404 (not 403) to avoid leaking existence. + if (!canView(route, user, { asDirectLink: true })) { + throw data({ error: "Route not found" }, { status: 404 }); + } + + // Parse GPX once for day stats and waypoint POI data + let dayStats: Array<{ dayNumber: number; startName?: string; endName?: string; distance: number; ascent: number; descent: number }> = []; + let waypoints: Array<{ lat: number; lon: number; name?: string; isDayBreak?: boolean; note?: string; osmId?: number; poiTags?: Record }> = []; + if (route.gpx) { + try { + const { computeDays, parseGpxAsync } = await import("@trails-cool/gpx"); + const gpxData = await parseGpxAsync(route.gpx); + waypoints = gpxData.waypoints.map((w) => ({ + lat: w.lat, + lon: w.lon, + name: w.name, + isDayBreak: w.isDayBreak, + note: w.note, + osmId: w.osmId, + poiTags: w.poiTags as Record | undefined, + })); + if (route.dayBreaks && route.dayBreaks.length > 0) { + dayStats = computeDays(gpxData.waypoints, gpxData.tracks); + } + } catch { + // Fall back to empty + } + } + + const currentVersion = route.versions[0]?.version ?? 1; + + // Wahoo push state — only meaningful for the owner. The single + // sync_pushes row per (user, route, wahoo) carries `lastPushedVersion`, + // which we compare against the current local version to render one of + // three states: matches, local newer, or last attempt failed. + let wahooPush: + | { + canPush: boolean; + needsReauth: boolean; + currentVersion: number; + latest: { + pushedAt: string | null; + remoteId: string | null; + lastPushedVersion: number | null; + error: string | null; + } | null; + } + | null = null; + if (isOwner && user && !!route.gpx) { + const connection = await getService(user.id, "wahoo"); + let latest: + | { + pushedAt: string | null; + remoteId: string | null; + lastPushedVersion: number | null; + error: string | null; + } + | null = null; + if (connection) { + const db = getDb(); + const [row] = await db + .select() + .from(syncPushes) + .where( + and( + eq(syncPushes.userId, user.id), + eq(syncPushes.routeId, route.id), + eq(syncPushes.provider, "wahoo"), + ), + ) + .limit(1); + latest = row + ? { + pushedAt: row.pushedAt ? row.pushedAt.toISOString() : null, + remoteId: row.remoteId, + lastPushedVersion: row.lastPushedVersion, + error: row.error, + } + : null; + } + wahooPush = { + canPush: !!connection, + needsReauth: !!connection && !connection.grantedScopes.includes("routes_write"), + currentVersion, + latest, + }; + } + + return { + route: { + id: route.id, + name: route.name, + description: route.description, + distance: route.distance, + elevationGain: route.elevationGain, + elevationLoss: route.elevationLoss, + routingProfile: route.routingProfile, + hasGpx: !!route.gpx, + dayBreaks: route.dayBreaks ?? [], + geojson: routeWithGeojson?.geojson ?? null, + visibility: route.visibility, + createdAt: route.createdAt.toISOString(), + updatedAt: route.updatedAt.toISOString(), + }, + dayStats, + waypoints, + versions: route.versions.map((v) => ({ + version: v.version, + changeDescription: v.changeDescription, + createdAt: v.createdAt.toISOString(), + })), + isOwner, + wahooPush, + }; +} + +export async function routeDetailAction(request: Request, id: string | undefined) { + const user = await requireSessionUser(request); + const routeId = id ?? ""; + + const formData = await request.formData(); + const intent = formData.get("intent"); + + if (intent === "delete") { + await deleteRoute(routeId, user.id); + return redirect("/routes"); + } + + if (intent === "update") { + const name = formData.get("name") as string; + const description = formData.get("description") as string; + const gpxFile = formData.get("gpx") as File | null; + + const input: Record = {}; + if (name) input.name = name; + if (description !== null) input.description = description; + if (gpxFile && gpxFile.size > 0) { + input.gpx = await gpxFile.text(); + } + + await updateRoute(routeId, user.id, input as { name?: string; description?: string; gpx?: string }); + return redirect(`/routes/${routeId}`); + } + + return data({ error: "Unknown action" }, { status: 400 }); +} diff --git a/apps/journal/app/routes/routes.$id.tsx b/apps/journal/app/routes/routes.$id.tsx index c7df64f..4579444 100644 --- a/apps/journal/app/routes/routes.$id.tsx +++ b/apps/journal/app/routes/routes.$id.tsx @@ -1,174 +1,17 @@ import { useState, useCallback } from "react"; -import { data, redirect } from "react-router"; +import { data } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/routes.$id"; -import { and, eq } from "drizzle-orm"; -import { canView } from "~/lib/auth.server"; -import { getSessionUser, requireSessionUser } from "~/lib/auth/session.server"; -import { getRoute, getRouteWithVersions, deleteRoute, updateRoute } from "~/lib/routes.server"; -import { getDb } from "~/lib/db"; -import { syncPushes } from "@trails-cool/db/schema/journal"; -import { getService } from "~/lib/connected-services"; import { ClientDate } from "~/components/ClientDate"; import { ClientMap } from "~/components/ClientMap"; - +import { loadRouteDetail, routeDetailAction } from "./routes.$id.server"; export async function loader({ params, request }: Route.LoaderArgs) { - const [routeWithVersions, routeWithGeojson] = await Promise.all([ - getRouteWithVersions(params.id), - getRoute(params.id), - ]); - if (!routeWithVersions) throw data({ error: "Route not found" }, { status: 404 }); - const route = routeWithVersions; - - const user = await getSessionUser(request); - const isOwner = user?.id === route.ownerId; - - // Visibility gate: public always renders, unlisted renders on direct link, - // private requires ownership. Return 404 (not 403) to avoid leaking existence. - if (!canView(route, user, { asDirectLink: true })) { - throw data({ error: "Route not found" }, { status: 404 }); - } - - // Parse GPX once for day stats and waypoint POI data - let dayStats: Array<{ dayNumber: number; startName?: string; endName?: string; distance: number; ascent: number; descent: number }> = []; - let waypoints: Array<{ lat: number; lon: number; name?: string; isDayBreak?: boolean; note?: string; osmId?: number; poiTags?: Record }> = []; - if (route.gpx) { - try { - const { computeDays, parseGpxAsync } = await import("@trails-cool/gpx"); - const gpxData = await parseGpxAsync(route.gpx); - waypoints = gpxData.waypoints.map((w) => ({ - lat: w.lat, - lon: w.lon, - name: w.name, - isDayBreak: w.isDayBreak, - note: w.note, - osmId: w.osmId, - poiTags: w.poiTags as Record | undefined, - })); - if (route.dayBreaks && route.dayBreaks.length > 0) { - dayStats = computeDays(gpxData.waypoints, gpxData.tracks); - } - } catch { - // Fall back to empty - } - } - - const currentVersion = route.versions[0]?.version ?? 1; - - // Wahoo push state — only meaningful for the owner. The single - // sync_pushes row per (user, route, wahoo) carries `lastPushedVersion`, - // which we compare against the current local version to render one of - // three states: matches, local newer, or last attempt failed. - let wahooPush: - | { - canPush: boolean; - needsReauth: boolean; - currentVersion: number; - latest: { - pushedAt: string | null; - remoteId: string | null; - lastPushedVersion: number | null; - error: string | null; - } | null; - } - | null = null; - if (isOwner && user && !!route.gpx) { - const connection = await getService(user.id, "wahoo"); - let latest: - | { - pushedAt: string | null; - remoteId: string | null; - lastPushedVersion: number | null; - error: string | null; - } - | null = null; - if (connection) { - const db = getDb(); - const [row] = await db - .select() - .from(syncPushes) - .where( - and( - eq(syncPushes.userId, user.id), - eq(syncPushes.routeId, route.id), - eq(syncPushes.provider, "wahoo"), - ), - ) - .limit(1); - latest = row - ? { - pushedAt: row.pushedAt ? row.pushedAt.toISOString() : null, - remoteId: row.remoteId, - lastPushedVersion: row.lastPushedVersion, - error: row.error, - } - : null; - } - wahooPush = { - canPush: !!connection, - needsReauth: !!connection && !connection.grantedScopes.includes("routes_write"), - currentVersion, - latest, - }; - } - - return data({ - route: { - id: route.id, - name: route.name, - description: route.description, - distance: route.distance, - elevationGain: route.elevationGain, - elevationLoss: route.elevationLoss, - routingProfile: route.routingProfile, - hasGpx: !!route.gpx, - dayBreaks: route.dayBreaks ?? [], - geojson: routeWithGeojson?.geojson ?? null, - visibility: route.visibility, - createdAt: route.createdAt.toISOString(), - updatedAt: route.updatedAt.toISOString(), - }, - dayStats, - waypoints, - versions: route.versions.map((v) => ({ - version: v.version, - changeDescription: v.changeDescription, - createdAt: v.createdAt.toISOString(), - })), - isOwner, - wahooPush, - }); + return data(await loadRouteDetail(request, params.id)); } export async function action({ params, request }: Route.ActionArgs) { - const user = await requireSessionUser(request); - - const formData = await request.formData(); - const intent = formData.get("intent"); - - if (intent === "delete") { - await deleteRoute(params.id, user.id); - return redirect("/routes"); - } - - if (intent === "update") { - const name = formData.get("name") as string; - const description = formData.get("description") as string; - const gpxFile = formData.get("gpx") as File | null; - - const input: Record = {}; - if (name) input.name = name; - if (description !== null) input.description = description; - if (gpxFile && gpxFile.size > 0) { - input.gpx = await gpxFile.text(); - } - - await updateRoute(params.id, user.id, input as { name?: string; description?: string; gpx?: string }); - return redirect(`/routes/${params.id}`); - } - - return data({ error: "Unknown action" }, { status: 400 }); + return routeDetailAction(request, params.id); } export function meta({ data: loaderData }: Route.MetaArgs) { diff --git a/apps/journal/app/routes/routes._index.server.ts b/apps/journal/app/routes/routes._index.server.ts new file mode 100644 index 0000000..55b1432 --- /dev/null +++ b/apps/journal/app/routes/routes._index.server.ts @@ -0,0 +1,20 @@ +// Server-only loader for /routes index. See `home.server.ts`. + +import { requireSessionUser } from "~/lib/auth/session.server"; +import { listRoutes } from "~/lib/routes.server"; + +export async function loadRoutesIndex(request: Request) { + const user = await requireSessionUser(request); + + const userRoutes = await listRoutes(user.id); + return { + routes: userRoutes.map((r) => ({ + id: r.id, + name: r.name, + distance: r.distance, + elevationGain: r.elevationGain, + updatedAt: r.updatedAt.toISOString(), + geojson: r.geojson ?? null, + })), + }; +} diff --git a/apps/journal/app/routes/routes._index.tsx b/apps/journal/app/routes/routes._index.tsx index fe3938a..dd67556 100644 --- a/apps/journal/app/routes/routes._index.tsx +++ b/apps/journal/app/routes/routes._index.tsx @@ -1,25 +1,12 @@ import { data } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/routes._index"; -import { requireSessionUser } from "~/lib/auth/session.server"; -import { listRoutes } from "~/lib/routes.server"; import { ClientDate } from "~/components/ClientDate"; import { ClientMap } from "~/components/ClientMap"; +import { loadRoutesIndex } from "./routes._index.server"; export async function loader({ request }: Route.LoaderArgs) { - const user = await requireSessionUser(request); - - const userRoutes = await listRoutes(user.id); - return data({ - routes: userRoutes.map((r) => ({ - id: r.id, - name: r.name, - distance: r.distance, - elevationGain: r.elevationGain, - updatedAt: r.updatedAt.toISOString(), - geojson: r.geojson ?? null, - })), - }); + return data(await loadRoutesIndex(request)); } export function meta(_args: Route.MetaArgs) { diff --git a/apps/journal/app/routes/routes.new.server.ts b/apps/journal/app/routes/routes.new.server.ts new file mode 100644 index 0000000..cf6f9ac --- /dev/null +++ b/apps/journal/app/routes/routes.new.server.ts @@ -0,0 +1,29 @@ +// Server-only loader/action for /routes/new. See `home.server.ts`. + +import { data, redirect } from "react-router"; +import { requireSessionUser } from "~/lib/auth/session.server"; +import { createRoute } from "~/lib/routes.server"; + +export async function loadRoutesNew(request: Request) { + await requireSessionUser(request); + return {}; +} + +export async function routesNewAction(request: Request) { + const user = await requireSessionUser(request); + + const formData = await request.formData(); + const name = formData.get("name") as string; + const description = formData.get("description") as string; + const gpxFile = formData.get("gpx") as File | null; + + if (!name) return data({ error: "Name is required" }, { status: 400 }); + + let gpx: string | undefined; + if (gpxFile && gpxFile.size > 0) { + gpx = await gpxFile.text(); + } + + const routeId = await createRoute(user.id, { name, description, gpx }); + return redirect(`/routes/${routeId}`); +} diff --git a/apps/journal/app/routes/routes.new.tsx b/apps/journal/app/routes/routes.new.tsx index c89f7e3..03f2446 100644 --- a/apps/journal/app/routes/routes.new.tsx +++ b/apps/journal/app/routes/routes.new.tsx @@ -1,31 +1,14 @@ -import { data, redirect } from "react-router"; +import { data } from "react-router"; import type { Route } from "./+types/routes.new"; -import { requireSessionUser } from "~/lib/auth/session.server"; -import { createRoute } from "~/lib/routes.server"; +import { loadRoutesNew, routesNewAction } from "./routes.new.server"; export async function loader({ request }: Route.LoaderArgs) { - await requireSessionUser(request); - return data({}); + return data(await loadRoutesNew(request)); } export async function action({ request }: Route.ActionArgs) { - const user = await requireSessionUser(request); - - const formData = await request.formData(); - const name = formData.get("name") as string; - const description = formData.get("description") as string; - const gpxFile = formData.get("gpx") as File | null; - - if (!name) return data({ error: "Name is required" }, { status: 400 }); - - let gpx: string | undefined; - if (gpxFile && gpxFile.size > 0) { - gpx = await gpxFile.text(); - } - - const routeId = await createRoute(user.id, { name, description, gpx }); - return redirect(`/routes/${routeId}`); + return await routesNewAction(request); } export function meta(_args: Route.MetaArgs) { diff --git a/apps/journal/app/routes/settings.account.server.ts b/apps/journal/app/routes/settings.account.server.ts new file mode 100644 index 0000000..af253b7 --- /dev/null +++ b/apps/journal/app/routes/settings.account.server.ts @@ -0,0 +1,15 @@ +// Server-only loader for /settings/account. See `home.server.ts`. + +import { redirect } from "react-router"; +import { getSessionUser } from "~/lib/auth/session.server"; + +export async function loadAccountSettings(request: Request) { + const user = await getSessionUser(request); + if (!user) throw redirect("/auth/login"); + return { + user: { + username: user.username, + email: user.email, + }, + }; +} diff --git a/apps/journal/app/routes/settings.account.tsx b/apps/journal/app/routes/settings.account.tsx index 0dc41c1..f48cade 100644 --- a/apps/journal/app/routes/settings.account.tsx +++ b/apps/journal/app/routes/settings.account.tsx @@ -1,22 +1,15 @@ import { useState, useEffect } from "react"; -import { data, redirect, useFetcher } from "react-router"; +import { data, useFetcher } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/settings.account"; -import { getSessionUser } from "~/lib/auth/session.server"; +import { loadAccountSettings } from "./settings.account.server"; export function meta() { return [{ title: "Account — Settings — trails.cool" }]; } export async function loader({ request }: Route.LoaderArgs) { - const user = await getSessionUser(request); - if (!user) throw redirect("/auth/login"); - return data({ - user: { - username: user.username, - email: user.email, - }, - }); + return data(await loadAccountSettings(request)); } export default function AccountSettings({ loaderData }: Route.ComponentProps) { diff --git a/apps/journal/app/routes/settings.connections.komoot.server.ts b/apps/journal/app/routes/settings.connections.komoot.server.ts new file mode 100644 index 0000000..ea9adb5 --- /dev/null +++ b/apps/journal/app/routes/settings.connections.komoot.server.ts @@ -0,0 +1,23 @@ +// Server-only loader for /settings/connections/komoot. See `home.server.ts`. + +import { redirect } from "react-router"; +import { getOrigin } from "~/lib/config.server"; +import { getSessionUser } from "~/lib/auth/session.server"; +import { getService } from "~/lib/connected-services/manager"; + +export async function loadKomootConnection(request: Request) { + const user = await getSessionUser(request); + if (!user) throw redirect("/auth/login"); + + const service = await getService(user.id, "komoot"); + const origin = getOrigin(); + const trailsProfileUrl = `${origin}/users/${user.username}`; + + return { + connected: !!service, + mode: service ? (service.credentials as { mode?: string }).mode ?? null : null, + providerUserId: service?.providerUserId ?? null, + serviceId: service?.id ?? null, + trailsProfileUrl, + }; +} diff --git a/apps/journal/app/routes/settings.connections.komoot.tsx b/apps/journal/app/routes/settings.connections.komoot.tsx index 3967f3b..7c48941 100644 --- a/apps/journal/app/routes/settings.connections.komoot.tsx +++ b/apps/journal/app/routes/settings.connections.komoot.tsx @@ -3,32 +3,17 @@ // Authenticated — email + password (password encrypted at rest) import { useState } from "react"; -import { data, redirect, useFetcher } from "react-router"; -import { getOrigin } from "~/lib/config.server"; +import { data, useFetcher } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/settings.connections.komoot"; -import { getSessionUser } from "~/lib/auth/session.server"; -import { getService } from "~/lib/connected-services/manager"; +import { loadKomootConnection } from "./settings.connections.komoot.server"; export function meta() { return [{ title: "Connect Komoot — Settings — trails.cool" }]; } export async function loader({ request }: Route.LoaderArgs) { - const user = await getSessionUser(request); - if (!user) throw redirect("/auth/login"); - - const service = await getService(user.id, "komoot"); - const origin = getOrigin(); - const trailsProfileUrl = `${origin}/users/${user.username}`; - - return data({ - connected: !!service, - mode: service ? (service.credentials as { mode?: string }).mode ?? null : null, - providerUserId: service?.providerUserId ?? null, - serviceId: service?.id ?? null, - trailsProfileUrl, - }); + return data(await loadKomootConnection(request)); } type VerifyResponse = { success?: boolean; error?: string }; diff --git a/apps/journal/app/routes/settings.profile.server.ts b/apps/journal/app/routes/settings.profile.server.ts new file mode 100644 index 0000000..62865a2 --- /dev/null +++ b/apps/journal/app/routes/settings.profile.server.ts @@ -0,0 +1,17 @@ +// Server-only loader for /settings/profile. See `home.server.ts`. + +import { redirect } from "react-router"; +import { getSessionUser } from "~/lib/auth/session.server"; + +export async function loadProfileSettings(request: Request) { + const user = await getSessionUser(request); + if (!user) throw redirect("/auth/login"); + return { + user: { + username: user.username, + displayName: user.displayName, + bio: user.bio, + profileVisibility: user.profileVisibility, + }, + }; +} diff --git a/apps/journal/app/routes/settings.profile.tsx b/apps/journal/app/routes/settings.profile.tsx index 8f8ad5c..3dda3d6 100644 --- a/apps/journal/app/routes/settings.profile.tsx +++ b/apps/journal/app/routes/settings.profile.tsx @@ -1,24 +1,15 @@ import { useState, useEffect } from "react"; -import { data, redirect, useFetcher } from "react-router"; +import { data, useFetcher } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/settings.profile"; -import { getSessionUser } from "~/lib/auth/session.server"; +import { loadProfileSettings } from "./settings.profile.server"; export function meta() { return [{ title: "Profile — Settings — trails.cool" }]; } export async function loader({ request }: Route.LoaderArgs) { - const user = await getSessionUser(request); - if (!user) throw redirect("/auth/login"); - return data({ - user: { - username: user.username, - displayName: user.displayName, - bio: user.bio, - profileVisibility: user.profileVisibility, - }, - }); + return data(await loadProfileSettings(request)); } export default function ProfileSettings({ loaderData }: Route.ComponentProps) { diff --git a/apps/journal/app/routes/settings.security.server.ts b/apps/journal/app/routes/settings.security.server.ts new file mode 100644 index 0000000..1853494 --- /dev/null +++ b/apps/journal/app/routes/settings.security.server.ts @@ -0,0 +1,33 @@ +// Server-only loader for /settings/security. See `home.server.ts`. + +import { redirect } from "react-router"; +import { eq } from "drizzle-orm"; +import { getSessionUser } from "~/lib/auth/session.server"; +import { getDb } from "~/lib/db"; +import { credentials } from "@trails-cool/db/schema/journal"; + +export async function loadSecuritySettings(request: Request) { + const user = await getSessionUser(request); + if (!user) throw redirect("/auth/login"); + + const db = getDb(); + const passkeys = await db + .select({ + id: credentials.id, + deviceType: credentials.deviceType, + transports: credentials.transports, + createdAt: credentials.createdAt, + }) + .from(credentials) + .where(eq(credentials.userId, user.id)); + + return { + userId: user.id, + passkeys: passkeys.map((p) => ({ + id: p.id, + deviceType: p.deviceType, + transports: p.transports as string[] | null, + createdAt: p.createdAt.toISOString(), + })), + }; +} diff --git a/apps/journal/app/routes/settings.security.tsx b/apps/journal/app/routes/settings.security.tsx index 0062ca4..e98ab78 100644 --- a/apps/journal/app/routes/settings.security.tsx +++ b/apps/journal/app/routes/settings.security.tsx @@ -1,41 +1,16 @@ import { useState, useEffect, useCallback } from "react"; -import { data, redirect, useFetcher } from "react-router"; +import { data, useFetcher } from "react-router"; import { useTranslation } from "react-i18next"; -import { eq } from "drizzle-orm"; import type { Route } from "./+types/settings.security"; -import { getSessionUser } from "~/lib/auth/session.server"; -import { getDb } from "~/lib/db"; -import { credentials } from "@trails-cool/db/schema/journal"; import { ClientDate } from "~/components/ClientDate"; +import { loadSecuritySettings } from "./settings.security.server"; export function meta() { return [{ title: "Security — Settings — trails.cool" }]; } export async function loader({ request }: Route.LoaderArgs) { - const user = await getSessionUser(request); - if (!user) throw redirect("/auth/login"); - - const db = getDb(); - const passkeys = await db - .select({ - id: credentials.id, - deviceType: credentials.deviceType, - transports: credentials.transports, - createdAt: credentials.createdAt, - }) - .from(credentials) - .where(eq(credentials.userId, user.id)); - - return data({ - userId: user.id, - passkeys: passkeys.map((p) => ({ - id: p.id, - deviceType: p.deviceType, - transports: p.transports as string[] | null, - createdAt: p.createdAt.toISOString(), - })), - }); + return data(await loadSecuritySettings(request)); } function transportLabel(transports: string[] | null, t: (key: string) => string): string { diff --git a/apps/journal/app/routes/settings.server.ts b/apps/journal/app/routes/settings.server.ts new file mode 100644 index 0000000..62e87c3 --- /dev/null +++ b/apps/journal/app/routes/settings.server.ts @@ -0,0 +1,10 @@ +// Server-only loader for /settings layout. See `home.server.ts`. + +import { redirect } from "react-router"; +import { getSessionUser } from "~/lib/auth/session.server"; + +export async function loadSettingsLayout(request: Request) { + const user = await getSessionUser(request); + if (!user) throw redirect("/auth/login"); + return { username: user.username }; +} diff --git a/apps/journal/app/routes/settings.tsx b/apps/journal/app/routes/settings.tsx index a85c0e4..f7dec21 100644 --- a/apps/journal/app/routes/settings.tsx +++ b/apps/journal/app/routes/settings.tsx @@ -1,17 +1,15 @@ -import { Outlet, redirect } from "react-router"; +import { Outlet } from "react-router"; import { Link, useLocation } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/settings"; -import { getSessionUser } from "~/lib/auth/session.server"; +import { loadSettingsLayout } from "./settings.server"; export function meta() { return [{ title: "Settings — trails.cool" }]; } export async function loader({ request }: Route.LoaderArgs) { - const user = await getSessionUser(request); - if (!user) throw redirect("/auth/login"); - return { username: user.username }; + return await loadSettingsLayout(request); } interface NavItem { diff --git a/apps/journal/app/routes/sync.import.$provider.server.ts b/apps/journal/app/routes/sync.import.$provider.server.ts new file mode 100644 index 0000000..ba4a6a9 --- /dev/null +++ b/apps/journal/app/routes/sync.import.$provider.server.ts @@ -0,0 +1,118 @@ +// Server-only loader/action for /sync/import/:provider. See `home.server.ts`. + +import { data, redirect } from "react-router"; +import { requireSessionUser } from "~/lib/auth/session.server"; +import { + getManifest, + getService, + capabilityContextFor, +} from "~/lib/connected-services"; +import { getImportedIds, recordImport } from "~/lib/sync/imports.server"; +import { createActivity } from "~/lib/activities.server"; + +export async function loadSyncImportProvider(request: Request, provider: string | undefined) { + const user = await requireSessionUser(request); + + const manifest = getManifest(provider ?? ""); + if (!manifest || !manifest.importer) { + throw data({ error: "Unknown provider" }, { status: 404 }); + } + + const service = await getService(user.id, manifest.id); + if (!service) throw redirect("/settings"); + + const url = new URL(request.url); + const page = parseInt(url.searchParams.get("page") ?? "1"); + + const ctx = capabilityContextFor(service.id); + const workoutList = await manifest.importer.listImportable(ctx, page); + + const importedIds = await getImportedIds( + user.id, + manifest.id, + workoutList.workouts.map((w) => w.id), + ); + + return { + provider: { id: manifest.id, name: manifest.displayName }, + workouts: workoutList.workouts.map((w) => ({ + ...w, + imported: importedIds.has(w.id), + })), + page: workoutList.page, + totalPages: Math.ceil(workoutList.total / workoutList.perPage), + }; +} + +export async function syncImportProviderAction(request: Request, provider: string | undefined) { + const user = await requireSessionUser(request); + + const manifest = getManifest(provider ?? ""); + if (!manifest || !manifest.importer) { + throw data({ error: "Unknown provider" }, { status: 404 }); + } + + const service = await getService(user.id, manifest.id); + if (!service) return redirect("/settings"); + + const formData = await request.formData(); + const workoutId = formData.get("workoutId") as string; + const workoutName = formData.get("workoutName") as string; + const fileUrl = formData.get("fileUrl") as string; + const startedAt = formData.get("startedAt") as string; + const distance = formData.get("distance") as string; + const duration = formData.get("duration") as string; + + // Inline import here (not via Importer.importOne) so we can pass through + // the form-supplied metadata (started_at, distance, duration) the + // capability seam doesn't carry. The seam-shape importer is reserved for + // automatic / webhook-driven imports. + let gpx: string | null = null; + if (fileUrl) { + const ctx = capabilityContextFor(service.id); + // Wahoo CDN URLs are pre-signed; we still go through withFreshCredentials + // so the manager handles refresh of any near-expired token. + const buffer = await ctx.withFreshCredentials(async () => { + const resp = await fetch(fileUrl); + if (!resp.ok) throw new Error(`Download failed: ${resp.status}`); + return Buffer.from(await resp.arrayBuffer()); + }); + // Lazy-load to avoid bundling fit-file-parser into all routes. + const { default: FitParser } = await import("fit-file-parser"); + const { generateGpx } = await import("@trails-cool/gpx"); + const parsed = await new Promise>((resolve, reject) => { + const parser = new FitParser({ force: true }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + parser.parse(buffer as any, (err: unknown, d: any) => (err ? reject(err) : resolve(d ?? {}))); + }); + const records = (parsed.records ?? []) as Array<{ + position_lat?: number; + position_long?: number; + altitude?: number; + timestamp?: string | Date; + }>; + const trackPoints = records + .filter((r) => r.position_lat != null && r.position_long != null) + .map((r) => ({ + lat: r.position_lat!, + lon: r.position_long!, + ele: r.altitude, + time: r.timestamp instanceof Date ? r.timestamp.toISOString() : r.timestamp, + })); + if (trackPoints.length >= 2) { + gpx = generateGpx({ name: workoutName, tracks: [trackPoints] }); + } + } + + const activityId = await createActivity(user.id, { + name: workoutName || `${manifest.displayName} workout`, + gpx: gpx ?? undefined, + distance: distance ? parseFloat(distance) : null, + duration: duration ? parseInt(duration) : null, + startedAt: startedAt ? new Date(startedAt) : null, + }); + + await recordImport(user.id, manifest.id, workoutId, activityId); + + return { imported: workoutId }; +} diff --git a/apps/journal/app/routes/sync.import.$provider.tsx b/apps/journal/app/routes/sync.import.$provider.tsx index 99bd41f..37e6832 100644 --- a/apps/journal/app/routes/sync.import.$provider.tsx +++ b/apps/journal/app/routes/sync.import.$provider.tsx @@ -1,122 +1,16 @@ import { useCallback, useEffect, useRef, useState } from "react"; -import { data, redirect, useFetcher } from "react-router"; +import { data, useFetcher } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/sync.import.$provider"; -import { requireSessionUser } from "~/lib/auth/session.server"; -import { - getManifest, - getService, - capabilityContextFor, -} from "~/lib/connected-services"; -import { getImportedIds, recordImport } from "~/lib/sync/imports.server"; -import { createActivity } from "~/lib/activities.server"; import { ClientDate } from "~/components/ClientDate"; +import { loadSyncImportProvider, syncImportProviderAction } from "./sync.import.$provider.server"; export async function loader({ params, request }: Route.LoaderArgs) { - const user = await requireSessionUser(request); - - const manifest = getManifest(params.provider); - if (!manifest || !manifest.importer) { - throw data({ error: "Unknown provider" }, { status: 404 }); - } - - const service = await getService(user.id, manifest.id); - if (!service) return redirect("/settings"); - - const url = new URL(request.url); - const page = parseInt(url.searchParams.get("page") ?? "1"); - - const ctx = capabilityContextFor(service.id); - const workoutList = await manifest.importer.listImportable(ctx, page); - - const importedIds = await getImportedIds( - user.id, - manifest.id, - workoutList.workouts.map((w) => w.id), - ); - - return data({ - provider: { id: manifest.id, name: manifest.displayName }, - workouts: workoutList.workouts.map((w) => ({ - ...w, - imported: importedIds.has(w.id), - })), - page: workoutList.page, - totalPages: Math.ceil(workoutList.total / workoutList.perPage), - }); + return data(await loadSyncImportProvider(request, params.provider)); } export async function action({ params, request }: Route.ActionArgs) { - const user = await requireSessionUser(request); - - const manifest = getManifest(params.provider); - if (!manifest || !manifest.importer) { - throw data({ error: "Unknown provider" }, { status: 404 }); - } - - const service = await getService(user.id, manifest.id); - if (!service) return redirect("/settings"); - - const formData = await request.formData(); - const workoutId = formData.get("workoutId") as string; - const workoutName = formData.get("workoutName") as string; - const fileUrl = formData.get("fileUrl") as string; - const startedAt = formData.get("startedAt") as string; - const distance = formData.get("distance") as string; - const duration = formData.get("duration") as string; - - // Inline import here (not via Importer.importOne) so we can pass through - // the form-supplied metadata (started_at, distance, duration) the - // capability seam doesn't carry. The seam-shape importer is reserved for - // automatic / webhook-driven imports. - let gpx: string | null = null; - if (fileUrl) { - const ctx = capabilityContextFor(service.id); - // Wahoo CDN URLs are pre-signed; we still go through withFreshCredentials - // so the manager handles refresh of any near-expired token. - const buffer = await ctx.withFreshCredentials(async () => { - const resp = await fetch(fileUrl); - if (!resp.ok) throw new Error(`Download failed: ${resp.status}`); - return Buffer.from(await resp.arrayBuffer()); - }); - // Lazy-load to avoid bundling fit-file-parser into all routes. - const { default: FitParser } = await import("fit-file-parser"); - const { generateGpx } = await import("@trails-cool/gpx"); - const parsed = await new Promise>((resolve, reject) => { - const parser = new FitParser({ force: true }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - parser.parse(buffer as any, (err: unknown, d: any) => (err ? reject(err) : resolve(d ?? {}))); - }); - const records = (parsed.records ?? []) as Array<{ - position_lat?: number; - position_long?: number; - altitude?: number; - timestamp?: string | Date; - }>; - const trackPoints = records - .filter((r) => r.position_lat != null && r.position_long != null) - .map((r) => ({ - lat: r.position_lat!, - lon: r.position_long!, - ele: r.altitude, - time: r.timestamp instanceof Date ? r.timestamp.toISOString() : r.timestamp, - })); - if (trackPoints.length >= 2) { - gpx = generateGpx({ name: workoutName, tracks: [trackPoints] }); - } - } - - const activityId = await createActivity(user.id, { - name: workoutName || `${manifest.displayName} workout`, - gpx: gpx ?? undefined, - distance: distance ? parseFloat(distance) : null, - duration: duration ? parseInt(duration) : null, - startedAt: startedAt ? new Date(startedAt) : null, - }); - - await recordImport(user.id, manifest.id, workoutId, activityId); - - return data({ imported: workoutId }); + return data(await syncImportProviderAction(request, params.provider)); } export function meta({ data: loaderData }: Route.MetaArgs) { diff --git a/apps/journal/app/routes/sync.import.komoot.server.ts b/apps/journal/app/routes/sync.import.komoot.server.ts new file mode 100644 index 0000000..aedc307 --- /dev/null +++ b/apps/journal/app/routes/sync.import.komoot.server.ts @@ -0,0 +1,54 @@ +// Server-only loader/action for /sync/import/komoot. See `home.server.ts`. + +import { data, redirect } from "react-router"; +import { desc, eq, and } from "drizzle-orm"; +import { requireSessionUser } from "~/lib/auth/session.server"; +import { getService } from "~/lib/connected-services"; +import { getDb } from "~/lib/db"; +import { importBatches } from "@trails-cool/db/schema/journal"; + +export async function loadKomootImport(request: Request) { + const user = await requireSessionUser(request); + + const service = await getService(user.id, "komoot"); + if (!service) throw redirect("/settings/connections/komoot"); + + const db = getDb(); + const [batch] = await db + .select() + .from(importBatches) + .where(and(eq(importBatches.userId, user.id), eq(importBatches.connectionId, service.id))) + .orderBy(desc(importBatches.startedAt)) + .limit(1); + + return { + batch: batch + ? { + id: batch.id, + status: batch.status, + totalFound: batch.totalFound, + importedCount: batch.importedCount, + duplicateCount: batch.duplicateCount, + errorMessage: batch.errorMessage, + startedAt: batch.startedAt.toISOString(), + completedAt: batch.completedAt?.toISOString() ?? null, + } + : null, + }; +} + +export async function komootImportAction(request: Request) { + await requireSessionUser(request); + + // Delegate to the API route — just redirect so the page reloads with + // the new batch after the POST. + const resp = await fetch( + new URL("/api/sync/komoot/import", new URL(request.url).origin), + { method: "POST", headers: { cookie: request.headers.get("cookie") ?? "" } }, + ); + if (!resp.ok) { + const body = (await resp.json()) as { error?: string }; + return data({ error: body.error ?? "failed" }, { status: resp.status }); + } + return redirect("/sync/import/komoot"); +} diff --git a/apps/journal/app/routes/sync.import.komoot.tsx b/apps/journal/app/routes/sync.import.komoot.tsx index e74efbe..290d35a 100644 --- a/apps/journal/app/routes/sync.import.komoot.tsx +++ b/apps/journal/app/routes/sync.import.komoot.tsx @@ -2,63 +2,21 @@ // and lets the user trigger a new import run. import { useEffect, useRef } from "react"; -import { data, redirect, useFetcher, useRevalidator } from "react-router"; +import { data, useFetcher, useRevalidator } from "react-router"; import { useTranslation } from "react-i18next"; import type { Route } from "./+types/sync.import.komoot"; -import { requireSessionUser } from "~/lib/auth/session.server"; -import { getService } from "~/lib/connected-services"; -import { getDb } from "~/lib/db"; -import { importBatches } from "@trails-cool/db/schema/journal"; -import { desc, eq, and } from "drizzle-orm"; +import { loadKomootImport, komootImportAction } from "./sync.import.komoot.server"; export function meta() { return [{ title: "Import from Komoot — trails.cool" }]; } export async function loader({ request }: Route.LoaderArgs) { - const user = await requireSessionUser(request); - - const service = await getService(user.id, "komoot"); - if (!service) return redirect("/settings/connections/komoot"); - - const db = getDb(); - const [batch] = await db - .select() - .from(importBatches) - .where(and(eq(importBatches.userId, user.id), eq(importBatches.connectionId, service.id))) - .orderBy(desc(importBatches.startedAt)) - .limit(1); - - return data({ - batch: batch - ? { - id: batch.id, - status: batch.status, - totalFound: batch.totalFound, - importedCount: batch.importedCount, - duplicateCount: batch.duplicateCount, - errorMessage: batch.errorMessage, - startedAt: batch.startedAt.toISOString(), - completedAt: batch.completedAt?.toISOString() ?? null, - } - : null, - }); + return data(await loadKomootImport(request)); } export async function action({ request }: Route.ActionArgs) { - await requireSessionUser(request); - - // Delegate to the API route — just redirect so the page reloads with - // the new batch after the POST. - const resp = await fetch( - new URL("/api/sync/komoot/import", new URL(request.url).origin), - { method: "POST", headers: { cookie: request.headers.get("cookie") ?? "" } }, - ); - if (!resp.ok) { - const body = (await resp.json()) as { error?: string }; - return data({ error: body.error ?? "failed" }, { status: resp.status }); - } - return redirect("/sync/import/komoot"); + return await komootImportAction(request); } function formatDuration(seconds: number): string { diff --git a/apps/journal/app/routes/users.$username.followers.server.ts b/apps/journal/app/routes/users.$username.followers.server.ts new file mode 100644 index 0000000..4190412 --- /dev/null +++ b/apps/journal/app/routes/users.$username.followers.server.ts @@ -0,0 +1,46 @@ +// Server-only loader for /users/:username/followers. See `home.server.ts`. + +import { data } from "react-router"; +import { eq } from "drizzle-orm"; +import { getDb } from "~/lib/db"; +import { users } from "@trails-cool/db/schema/journal"; +import { listFollowers, countFollowers, getFollowState } from "~/lib/follow.server"; +import { getSessionUser } from "~/lib/auth/session.server"; + +export async function loadUserFollowers(request: Request, username: string) { + const db = getDb(); + const [user] = await db.select().from(users).where(eq(users.username, username)); + if (!user) { + throw data({ error: "User not found" }, { status: 404 }); + } + + // Locked-account model: only the owner and accepted followers can see + // a private user's followers list. Non-followers (anonymous or signed-in) + // get the same 404 a stranger sees, mirroring the profile-route policy. + const currentUser = await getSessionUser(request); + const isOwn = currentUser?.id === user.id; + const followState = !isOwn && currentUser + ? await getFollowState(currentUser.id, user.username) + : null; + const canSee = + isOwn || + user.profileVisibility === "public" || + (followState !== null && followState.following === true); + if (!canSee) { + throw data({ error: "User not found" }, { status: 404 }); + } + + const url = new URL(request.url); + const page = Math.max(1, parseInt(url.searchParams.get("page") ?? "1", 10) || 1); + const [entries, total] = await Promise.all([ + listFollowers(user.id, page), + countFollowers(user.id), + ]); + + return { + user: { username: user.username, displayName: user.displayName }, + page, + total, + entries, + }; +} diff --git a/apps/journal/app/routes/users.$username.followers.tsx b/apps/journal/app/routes/users.$username.followers.tsx index 9b22fcd..c1058ff 100644 --- a/apps/journal/app/routes/users.$username.followers.tsx +++ b/apps/journal/app/routes/users.$username.followers.tsx @@ -1,48 +1,10 @@ import { data } from "react-router"; -import { eq } from "drizzle-orm"; import type { Route } from "./+types/users.$username.followers"; -import { getDb } from "~/lib/db"; -import { users } from "@trails-cool/db/schema/journal"; -import { listFollowers, countFollowers, getFollowState } from "~/lib/follow.server"; -import { getSessionUser } from "~/lib/auth/session.server"; import { CollectionPage } from "~/components/CollectionPage"; +import { loadUserFollowers } from "./users.$username.followers.server"; export async function loader({ params, request }: Route.LoaderArgs) { - const db = getDb(); - const [user] = await db.select().from(users).where(eq(users.username, params.username)); - if (!user) { - throw data({ error: "User not found" }, { status: 404 }); - } - - // Locked-account model: only the owner and accepted followers can see - // a private user's followers list. Non-followers (anonymous or signed-in) - // get the same 404 a stranger sees, mirroring the profile-route policy. - const currentUser = await getSessionUser(request); - const isOwn = currentUser?.id === user.id; - const followState = !isOwn && currentUser - ? await getFollowState(currentUser.id, user.username) - : null; - const canSee = - isOwn || - user.profileVisibility === "public" || - (followState !== null && followState.following === true); - if (!canSee) { - throw data({ error: "User not found" }, { status: 404 }); - } - - const url = new URL(request.url); - const page = Math.max(1, parseInt(url.searchParams.get("page") ?? "1", 10) || 1); - const [entries, total] = await Promise.all([ - listFollowers(user.id, page), - countFollowers(user.id), - ]); - - return data({ - user: { username: user.username, displayName: user.displayName }, - page, - total, - entries, - }); + return data(await loadUserFollowers(request, params.username)); } export function meta({ data: d }: Route.MetaArgs) { diff --git a/apps/journal/app/routes/users.$username.following.server.ts b/apps/journal/app/routes/users.$username.following.server.ts new file mode 100644 index 0000000..98a87a8 --- /dev/null +++ b/apps/journal/app/routes/users.$username.following.server.ts @@ -0,0 +1,45 @@ +// Server-only loader for /users/:username/following. See `home.server.ts`. + +import { data } from "react-router"; +import { eq } from "drizzle-orm"; +import { getDb } from "~/lib/db"; +import { users } from "@trails-cool/db/schema/journal"; +import { listFollowing, countFollowing, getFollowState } from "~/lib/follow.server"; +import { getSessionUser } from "~/lib/auth/session.server"; + +export async function loadUserFollowing(request: Request, username: string) { + const db = getDb(); + const [user] = await db.select().from(users).where(eq(users.username, username)); + if (!user) { + throw data({ error: "User not found" }, { status: 404 }); + } + + // Locked-account model — see users.$username.followers.tsx for the + // policy. Same canSee rule applies to the following list. + const currentUser = await getSessionUser(request); + const isOwn = currentUser?.id === user.id; + const followState = !isOwn && currentUser + ? await getFollowState(currentUser.id, user.username) + : null; + const canSee = + isOwn || + user.profileVisibility === "public" || + (followState !== null && followState.following === true); + if (!canSee) { + throw data({ error: "User not found" }, { status: 404 }); + } + + const url = new URL(request.url); + const page = Math.max(1, parseInt(url.searchParams.get("page") ?? "1", 10) || 1); + const [entries, total] = await Promise.all([ + listFollowing(user.id, page), + countFollowing(user.id), + ]); + + return { + user: { username: user.username, displayName: user.displayName }, + page, + total, + entries, + }; +} diff --git a/apps/journal/app/routes/users.$username.following.tsx b/apps/journal/app/routes/users.$username.following.tsx index 1c8237f..a36eb2f 100644 --- a/apps/journal/app/routes/users.$username.following.tsx +++ b/apps/journal/app/routes/users.$username.following.tsx @@ -1,47 +1,10 @@ import { data } from "react-router"; -import { eq } from "drizzle-orm"; import type { Route } from "./+types/users.$username.following"; -import { getDb } from "~/lib/db"; -import { users } from "@trails-cool/db/schema/journal"; -import { listFollowing, countFollowing, getFollowState } from "~/lib/follow.server"; -import { getSessionUser } from "~/lib/auth/session.server"; import { CollectionPage } from "~/components/CollectionPage"; +import { loadUserFollowing } from "./users.$username.following.server"; export async function loader({ params, request }: Route.LoaderArgs) { - const db = getDb(); - const [user] = await db.select().from(users).where(eq(users.username, params.username)); - if (!user) { - throw data({ error: "User not found" }, { status: 404 }); - } - - // Locked-account model — see users.$username.followers.tsx for the - // policy. Same canSee rule applies to the following list. - const currentUser = await getSessionUser(request); - const isOwn = currentUser?.id === user.id; - const followState = !isOwn && currentUser - ? await getFollowState(currentUser.id, user.username) - : null; - const canSee = - isOwn || - user.profileVisibility === "public" || - (followState !== null && followState.following === true); - if (!canSee) { - throw data({ error: "User not found" }, { status: 404 }); - } - - const url = new URL(request.url); - const page = Math.max(1, parseInt(url.searchParams.get("page") ?? "1", 10) || 1); - const [entries, total] = await Promise.all([ - listFollowing(user.id, page), - countFollowing(user.id), - ]); - - return data({ - user: { username: user.username, displayName: user.displayName }, - page, - total, - entries, - }); + return data(await loadUserFollowing(request, params.username)); } export function meta({ data: d }: Route.MetaArgs) {