From a990c5f8d8e74bf2314352652cfeaaeff5ef1814 Mon Sep 17 00:00:00 2001 From: Simon van Lierde Date: Mon, 7 Sep 2026 07:00:42 +0200 Subject: [PATCH 1/2] chore(deps): update repo tooling to jest 30, pnpm 12, and async-storage 3 Takes the non-blocked half of #189. Babel 8 and TypeScript 7 are held back by upstream and pinned in the Renovate config rather than carried here. - rename AsyncStorage `multiRemove` to v3's `removeMany`, and point the jest setup at the mock's new `/jest` entry point - wrap the shipped AsyncStorage mock in jest spies: v3 ships plain functions, and tests assert on the calls - clear the mock through the instance, not `clearAllMockStorages()`, which empties the registry and leaves the handed-out instance holding its data - type the test mocks that jest 30 now checks against their real signatures - restore node types to the app tsconfig, dropped when @types/jest stopped pulling them in - decide the two build scripts pnpm 12 asks about, both declined - exclude the lockfile from check-yaml: pnpm 12 writes it as two documents - hold @babel/core and typescript below the versions their toolchains reject --- .github/renovate.json | 10 + .pre-commit-config.yaml | 3 + app/config/setup.shared.ts | 17 +- app/package.json | 9 +- .../__tests__/TermsAcceptanceDialog.test.tsx | 2 +- .../__tests__/webHlsVideoHelpers.test.ts | 4 +- .../context/__tests__/AuthProvider.test.tsx | 10 +- .../cameras/__tests__/detailActions.test.ts | 4 +- .../cameras/rpi/__tests__/mutations.test.ts | 4 +- .../__tests__/useCaptureEntity.test.tsx | 3 +- .../__tests__/useProductForm.test.tsx | 33 +- .../useProductSearchShortcut.test.tsx | 2 +- .../api/auth/__tests__/authLogin.test.ts | 76 +- app/src/services/storage.ts | 2 +- app/tsconfig.json | 2 +- docs/package.json | 2 +- package.json | 4 +- pnpm-lock.yaml | 1890 +++++++++++++---- pnpm-workspace.yaml | 11 +- 19 files changed, 1607 insertions(+), 481 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index f1e2c733f..0a2dcae3c 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -90,6 +90,16 @@ "matchDatasources": ["npm"], "minimumReleaseAge": "7 days" }, + { + "description": "TypeScript 7.0 is the native compiler and does not expose the programmatic API that `astro check` loads, so it breaks typecheck in docs/ and www/. The TS team calls this point-in-time but has named no version; 7.1 is a probe, and docs/www typecheck in CI is the test. Widen the block if 7.1 also fails. https://github.com/withastro/roadmap/discussions/1321", + "matchPackageNames": ["typescript"], + "allowedVersions": "!/^7\\.0\\./" + }, + { + "description": "Babel 8 is rejected by react-native-worklets' babel plugin, which hard-requires `^7.0.0-0`, and babel-preset-expo is still Babel 7. Every app test suite that touches a worklet fails to transform. Lift when the Expo/RN toolchain ships Babel 8 support.", + "matchPackageNames": ["@babel/core", "@babel/runtime"], + "allowedVersions": "<8" + }, { "description": "Renovate rewrites this SHA-pinned rev to the tag v3.4.0, a downgrade that drops check-shebang-scripts-are-executable. Bump by hand: `prek update --freeze` keeps the SHA form.", "matchManagers": ["pre-commit"], diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 34b21ba57..e1425df74 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -20,6 +20,9 @@ repos: - id: check-shebang-scripts-are-executable - id: check-toml - id: check-yaml + # pnpm 12 writes two YAML documents: its own packageManagerDependencies, + # then the project lockfile. pnpm validates that file itself. + exclude: ^pnpm-lock\.yaml$ - id: detect-private-key - id: end-of-file-fixer - id: mixed-line-ending diff --git a/app/config/setup.shared.ts b/app/config/setup.shared.ts index 26c8c0dfe..b921c37ba 100644 --- a/app/config/setup.shared.ts +++ b/app/config/setup.shared.ts @@ -48,9 +48,16 @@ jest.mock('expo-secure-store', () => ({ })); // Mock AsyncStorage so tests never touch the native module implementation. -jest.mock('@react-native-async-storage/async-storage', () => - require('@react-native-async-storage/async-storage/jest/async-storage-mock'), -); +// The shipped mock is a plain in-memory object, so wrap its methods: tests +// assert on calls (`expect(AsyncStorage.setItem).toHaveBeenCalledWith(...)`). +jest.mock('@react-native-async-storage/async-storage', () => { + const { default: storage } = require('@react-native-async-storage/async-storage/jest'); + const spied: Record = { ...storage }; + for (const [key, value] of Object.entries(storage)) { + if (typeof value === 'function') spied[key] = jest.fn(value as (...args: never[]) => unknown); + } + return { __esModule: true, default: spied }; +}); // Mock expo-linear-gradient jest.mock('expo-linear-gradient', () => ({ @@ -327,6 +334,8 @@ try { } afterEach(async () => { - const AsyncStorage = require('@react-native-async-storage/async-storage'); + // Not `clearAllMockStorages()`: that empties the mock's registry, leaving the + // instance already handed to importers holding its data. + const AsyncStorage = require('@react-native-async-storage/async-storage').default; await AsyncStorage.clear(); }); diff --git a/app/package.json b/app/package.json index 0db81ece5..8511392b3 100644 --- a/app/package.json +++ b/app/package.json @@ -32,7 +32,7 @@ "dependencies": { "@expo/metro-runtime": "~57.0.9", "@hookform/resolvers": "^5.2.2", - "@react-native-async-storage/async-storage": "2.2.0", + "@react-native-async-storage/async-storage": "3.1.1", "@rn-primitives/separator": "^1.5.2", "@rn-primitives/slot": "^1.5.2", "@rn-primitives/switch": "^1.5.2", @@ -91,12 +91,13 @@ "@babel/core": "7.29.7", "@babel/runtime": "7.29.7", "@biomejs/biome": "catalog:", - "@jest/globals": "29.7.0", + "@jest/globals": "30.5.0", "@playwright/test": "catalog:", "@react-native/jest-preset": "^0.86.2", "@tailwindcss/postcss": "4.3.3", "@testing-library/react-native": "13.3.3", - "@types/jest": "29.5.14", + "@types/jest": "30.0.0", + "@types/node": "catalog:", "@types/react": "~19.2.18", "@typescript-eslint/parser": "8.68.0", "babel-plugin-react-compiler": "1.0.0", @@ -105,7 +106,7 @@ "eslint-plugin-react-hooks": "7.1.1", "eslint-plugin-react-native-a11y": "3.5.1", "eslint-plugin-react-refresh": "0.5.5", - "jest": "29.7.0", + "jest": "30.5.0", "jest-expo": "~57.0.4", "jest-junit": "17.0.0", "msw": "2.15.0", diff --git a/app/src/components/auth/__tests__/TermsAcceptanceDialog.test.tsx b/app/src/components/auth/__tests__/TermsAcceptanceDialog.test.tsx index 3a314acc5..ceb517e51 100644 --- a/app/src/components/auth/__tests__/TermsAcceptanceDialog.test.tsx +++ b/app/src/components/auth/__tests__/TermsAcceptanceDialog.test.tsx @@ -37,7 +37,7 @@ const { openExternalUrl } = jest.requireMock('@/services/externalLinks') as { const DECLINE_IS_FREE = /Nothing changes if you decline/; -const refetch = jest.fn(async () => undefined); +const refetch = jest.fn(async (_forceRefresh?: boolean) => undefined); function signedInWith(termsAcceptanceRequired: boolean) { mockUseAuth.mockReturnValue({ diff --git a/app/src/components/cameras/live-preview/__tests__/webHlsVideoHelpers.test.ts b/app/src/components/cameras/live-preview/__tests__/webHlsVideoHelpers.test.ts index 7a1d0b15c..b9c4982bf 100644 --- a/app/src/components/cameras/live-preview/__tests__/webHlsVideoHelpers.test.ts +++ b/app/src/components/cameras/live-preview/__tests__/webHlsVideoHelpers.test.ts @@ -16,7 +16,7 @@ function createVideoMock(canPlayType = '') { addEventListener: jest.fn((event: string, handler: () => void) => { handlers.set(event, handler); }), - removeEventListener: jest.fn((event: string) => { + removeEventListener: jest.fn((event: string, _handler?: () => void) => { handlers.delete(event); }), canPlayType: jest.fn(() => canPlayType), @@ -38,7 +38,7 @@ function createHlsMock() { destroy: jest.fn(), }; const Hls = Object.assign( - jest.fn(() => hlsInstance), + jest.fn((_config?: Record) => hlsInstance), { isSupported: jest.fn(() => true), Events: { ERROR: 'hlsError' }, diff --git a/app/src/context/__tests__/AuthProvider.test.tsx b/app/src/context/__tests__/AuthProvider.test.tsx index d1eaeb449..04f3acc6c 100644 --- a/app/src/context/__tests__/AuthProvider.test.tsx +++ b/app/src/context/__tests__/AuthProvider.test.tsx @@ -43,7 +43,7 @@ describe('AuthProvider — sign-out cache clearing', () => { const queryClient = new QueryClient(); const clearSpy = jest.spyOn(queryClient, 'clear'); - const multiRemoveSpy = jest.spyOn(AsyncStorage, 'multiRemove'); + const removeManySpy = jest.spyOn(AsyncStorage, 'removeMany'); function wrapper({ children }: { children: React.ReactNode }) { return ( @@ -66,7 +66,7 @@ describe('AuthProvider — sign-out cache clearing', () => { await waitFor(() => expect(result.current.user).toBeUndefined()); expect(clearSpy).toHaveBeenCalledTimes(1); - expect(multiRemoveSpy).toHaveBeenCalledWith( + expect(removeManySpy).toHaveBeenCalledWith( expect.arrayContaining(['relab-query-cache', 'relab-recent-categories']), ); }); @@ -77,8 +77,8 @@ describe('AuthProvider — sign-out cache clearing', () => { const queryClient = new QueryClient(); const clearSpy = jest.spyOn(queryClient, 'clear'); - const multiRemoveSpy = jest.spyOn(AsyncStorage, 'multiRemove'); - multiRemoveSpy.mockClear(); + const removeManySpy = jest.spyOn(AsyncStorage, 'removeMany'); + removeManySpy.mockClear(); function wrapper({ children }: { children: React.ReactNode }) { return ( @@ -98,6 +98,6 @@ describe('AuthProvider — sign-out cache clearing', () => { await waitFor(() => expect(result.current.user?.id).toBe('u1')); expect(clearSpy).not.toHaveBeenCalled(); - expect(multiRemoveSpy).not.toHaveBeenCalled(); + expect(removeManySpy).not.toHaveBeenCalled(); }); }); diff --git a/app/src/features/cameras/__tests__/detailActions.test.ts b/app/src/features/cameras/__tests__/detailActions.test.ts index 4f44c25cf..9ec216adf 100644 --- a/app/src/features/cameras/__tests__/detailActions.test.ts +++ b/app/src/features/cameras/__tests__/detailActions.test.ts @@ -17,11 +17,11 @@ describe('camera detail actions', () => { const refetch = jest.fn(); const replace = jest.fn(); const alert = jest.fn(); - const configure = jest.fn<() => Promise>(); + const configure = jest.fn<(baseUrl: string, apiKey: string) => Promise>(); const clearLocalConnection = jest.fn<() => Promise | undefined>(); const input = jest.fn<(options: DialogOptions) => void>(); const closeManualSetup = jest.fn(); - const setLocalSetupSaving = jest.fn(); + const setLocalSetupSaving = jest.fn<(saving: boolean) => void>(); const updateMutate = jest.fn< ( diff --git a/app/src/features/cameras/rpi/__tests__/mutations.test.ts b/app/src/features/cameras/rpi/__tests__/mutations.test.ts index d00293518..b4a142a1d 100644 --- a/app/src/features/cameras/rpi/__tests__/mutations.test.ts +++ b/app/src/features/cameras/rpi/__tests__/mutations.test.ts @@ -76,9 +76,9 @@ describe('rpi camera mutation helpers', () => { }); it('supports optimistic stream status clearing and restore', async () => { - const cancelQueries = jest.fn(async () => undefined); + const cancelQueries = jest.fn(async (_filters?: unknown) => undefined); const getQueryData = jest.fn(() => ({ id: 'stream-1' })); - const setQueryData = jest.fn(); + const setQueryData = jest.fn<(queryKey: unknown, data: unknown) => void>(); const queryClient = { cancelQueries, getQueryData, diff --git a/app/src/features/products/__tests__/useCaptureEntity.test.tsx b/app/src/features/products/__tests__/useCaptureEntity.test.tsx index ad0c0a1ee..15327b08b 100644 --- a/app/src/features/products/__tests__/useCaptureEntity.test.tsx +++ b/app/src/features/products/__tests__/useCaptureEntity.test.tsx @@ -1,8 +1,9 @@ import { describe, expect, it, jest } from '@jest/globals'; import { act, renderHook } from '@testing-library/react-native'; +import type { SaveProductVariables } from '@/features/products/queries'; import { useCaptureEntity } from '@/features/products/useCaptureEntity'; -const mockMutateAsync = jest.fn<(args: { product: { id?: number } }) => Promise>(); +const mockMutateAsync = jest.fn<(args: SaveProductVariables) => Promise>(); const mockToast = jest.fn(); const mockError = jest.fn(); // Plain mutable flag (not jest.fn().mockReturnValue) so the mocked hook below diff --git a/app/src/features/products/__tests__/useProductForm.test.tsx b/app/src/features/products/__tests__/useProductForm.test.tsx index 47adba771..7762183c4 100644 --- a/app/src/features/products/__tests__/useProductForm.test.tsx +++ b/app/src/features/products/__tests__/useProductForm.test.tsx @@ -3,6 +3,7 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { act, renderHook, waitFor } from '@testing-library/react-native'; import type React from 'react'; import { useDialog } from '@/components/base/dialogContext'; +import type { SaveProductVariables } from '@/features/products/queries'; import { useBaseProductQuery, useDeleteProductMutation, @@ -83,7 +84,7 @@ describe('useProductForm', () => { it('initializes with existing product data', async () => { (useBaseProductQuery as jest.Mock).mockReturnValue({ data: mockProduct, isLoading: false }); (useSaveProductMutation as jest.Mock).mockReturnValue({ - mutateAsync: jest.fn(async () => 123), + mutateAsync: jest.fn(async (_vars: SaveProductVariables) => 123), }); const { result } = renderHook(() => useProductForm('123', { role: 'product' }), { wrapper }); @@ -98,7 +99,7 @@ describe('useProductForm', () => { it('handles field changes', async () => { (useBaseProductQuery as jest.Mock).mockReturnValue({ data: mockProduct, isLoading: false }); (useSaveProductMutation as jest.Mock).mockReturnValue({ - mutateAsync: jest.fn(async () => 123), + mutateAsync: jest.fn(async (_vars: SaveProductVariables) => 123), }); const { result } = renderHook(() => useProductForm('123', { role: 'product' }), { wrapper }); @@ -115,7 +116,7 @@ describe('useProductForm', () => { }); it('triggers save mutation when saveAndExit is called with a dirty form', async () => { - const mockMutate = jest.fn(async () => 123); + const mockMutate = jest.fn(async (_vars: SaveProductVariables) => 123); (useBaseProductQuery as jest.Mock).mockReturnValue({ data: mockProduct, isLoading: false }); (useSaveProductMutation as jest.Mock).mockReturnValue({ mutateAsync: mockMutate }); @@ -149,7 +150,7 @@ describe('useProductForm', () => { // rehydrated mutations, where minting a fresh key would rotate it and defeat // dedup against the request the app already sent before it was interrupted. it('generates an idempotencyKey for a new (id-less) product create', async () => { - const mockMutate = jest.fn(async () => 55); + const mockMutate = jest.fn(async (_vars: SaveProductVariables) => 55); (useBaseProductQuery as jest.Mock).mockReturnValue({ data: undefined, isLoading: false }); (useSaveProductMutation as jest.Mock).mockReturnValue({ mutateAsync: mockMutate }); @@ -217,7 +218,7 @@ describe('useProductForm', () => { // and saveAndExit must read it before serializing — even though isDirty is // still a stale react-hook-form snapshot from before the flush happened. it('flushes a pending amount draft before serializing, even though isDirty is still stale', async () => { - const mockMutate = jest.fn(async () => 123); + const mockMutate = jest.fn(async (_vars: SaveProductVariables) => 123); (useBaseProductQuery as jest.Mock).mockReturnValue({ data: mockProduct, isLoading: false }); (useSaveProductMutation as jest.Mock).mockReturnValue({ mutateAsync: mockMutate }); @@ -241,7 +242,7 @@ describe('useProductForm', () => { }); it('does not treat a clean form as dirty when the flush ref has no pending draft', async () => { - const mockMutate = jest.fn(async () => 123); + const mockMutate = jest.fn(async (_vars: SaveProductVariables) => 123); (useBaseProductQuery as jest.Mock).mockReturnValue({ data: mockProduct, isLoading: false }); (useSaveProductMutation as jest.Mock).mockReturnValue({ mutateAsync: mockMutate }); @@ -291,7 +292,7 @@ describe('useProductForm', () => { const onSaveSuccess = jest.fn(); (useBaseProductQuery as jest.Mock).mockReturnValue({ data: mockProduct, isLoading: false }); (useSaveProductMutation as jest.Mock).mockReturnValue({ - mutateAsync: jest.fn(async () => 123), + mutateAsync: jest.fn(async (_vars: SaveProductVariables) => 123), }); const { result } = renderHook( @@ -433,7 +434,7 @@ describe('useProductForm', () => { .mockReturnValue({ alert: jest.fn(), input: jest.fn(), toast: mockToast }); (useBaseProductQuery as jest.Mock).mockReturnValue({ data: mockProduct, isLoading: false }); (useSaveProductMutation as jest.Mock).mockReturnValue({ - mutateAsync: jest.fn(async () => 123), + mutateAsync: jest.fn(async (_vars: SaveProductVariables) => 123), isPaused: true, }); @@ -452,7 +453,7 @@ describe('useProductForm', () => { .mockReturnValue({ alert: jest.fn(), input: jest.fn(), toast: mockToast }); (useBaseProductQuery as jest.Mock).mockReturnValue({ data: mockProduct, isLoading: false }); (useSaveProductMutation as jest.Mock).mockReturnValue({ - mutateAsync: jest.fn(async () => 123), + mutateAsync: jest.fn(async (_vars: SaveProductVariables) => 123), isPaused: false, }); @@ -464,10 +465,10 @@ describe('useProductForm', () => { }); it('calls delete mutation and navigates to /products on success', async () => { - const mockDeleteMutate = jest.fn(async () => undefined); + const mockDeleteMutate = jest.fn(async (_vars: { id: number }) => undefined); (useBaseProductQuery as jest.Mock).mockReturnValue({ data: mockProduct, isLoading: false }); (useSaveProductMutation as jest.Mock).mockReturnValue({ - mutateAsync: jest.fn(async () => 123), + mutateAsync: jest.fn(async (_vars: SaveProductVariables) => 123), }); (useDeleteProductMutation as jest.Mock).mockReturnValue({ mutateAsync: mockDeleteMutate }); @@ -483,11 +484,11 @@ describe('useProductForm', () => { }); it('routes delete through onDeleteSuccess when provided instead of the root list', async () => { - const mockDeleteMutate = jest.fn(async () => undefined); + const mockDeleteMutate = jest.fn(async (_vars: { id: number }) => undefined); const onDeleteSuccess = jest.fn(); (useBaseProductQuery as jest.Mock).mockReturnValue({ data: mockProduct, isLoading: false }); (useSaveProductMutation as jest.Mock).mockReturnValue({ - mutateAsync: jest.fn(async () => 123), + mutateAsync: jest.fn(async (_vars: SaveProductVariables) => 123), }); (useDeleteProductMutation as jest.Mock).mockReturnValue({ mutateAsync: mockDeleteMutate }); @@ -515,7 +516,7 @@ describe('useProductForm', () => { }; (useBaseProductQuery as jest.Mock).mockReturnValue({ data: validProduct, isLoading: false }); (useSaveProductMutation as jest.Mock).mockReturnValue({ - mutateAsync: jest.fn(async () => 123), + mutateAsync: jest.fn(async (_vars: SaveProductVariables) => 123), }); const { result } = renderHook( @@ -555,7 +556,7 @@ describe('useProductForm', () => { }; (useBaseProductQuery as jest.Mock).mockReturnValue({ data: validProduct, isLoading: false }); (useSaveProductMutation as jest.Mock).mockReturnValue({ - mutateAsync: jest.fn(async () => 123), + mutateAsync: jest.fn(async (_vars: SaveProductVariables) => 123), }); const { result } = renderHook( @@ -597,7 +598,7 @@ describe('useProductForm', () => { }); (useBaseProductQuery as jest.Mock).mockReturnValue({ data: mockProduct, isLoading: false }); (useSaveProductMutation as jest.Mock).mockReturnValue({ - mutateAsync: jest.fn(async () => 123), + mutateAsync: jest.fn(async (_vars: SaveProductVariables) => 123), }); (useDeleteProductMutation as jest.Mock).mockReturnValue({ mutateAsync: deleteMutate }); diff --git a/app/src/features/products/__tests__/useProductSearchShortcut.test.tsx b/app/src/features/products/__tests__/useProductSearchShortcut.test.tsx index 5e08fe718..8e75b21a7 100644 --- a/app/src/features/products/__tests__/useProductSearchShortcut.test.tsx +++ b/app/src/features/products/__tests__/useProductSearchShortcut.test.tsx @@ -20,7 +20,7 @@ describe('useProductSearchShortcut', () => { listener = handler; }); const removeEventListener = jest.fn(); - const querySelector = jest.fn<() => Element | null>(() => null); + const querySelector = jest.fn<(selectors: string) => Element | null>(() => null); function press(key: string, target: unknown) { listener?.({ key, target, preventDefault: jest.fn() } as unknown as KeyboardEvent); diff --git a/app/src/services/api/auth/__tests__/authLogin.test.ts b/app/src/services/api/auth/__tests__/authLogin.test.ts index 019749556..e2bbf29e3 100644 --- a/app/src/services/api/auth/__tests__/authLogin.test.ts +++ b/app/src/services/api/auth/__tests__/authLogin.test.ts @@ -48,9 +48,15 @@ describe('authLogin', () => { json: async () => ({ access_token: 'native-token', refresh_token: 'native-refresh-token' }), } as never); - const persistAccessToken = jest.fn<() => Promise>().mockResolvedValue(undefined); - const persistRefreshToken = jest.fn<() => Promise>().mockResolvedValue(undefined); - const getUser = jest.fn<() => Promise>().mockResolvedValue(undefined); + const persistAccessToken = jest + .fn<(token: string) => Promise>() + .mockResolvedValue(undefined); + const persistRefreshToken = jest + .fn<(token: string) => Promise>() + .mockResolvedValue(undefined); + const getUser = jest + .fn<(forceRefresh?: boolean) => Promise>() + .mockResolvedValue(undefined); await expect( login('http://127.0.0.1:18010', 'user', 'pass', { @@ -76,9 +82,15 @@ describe('authLogin', () => { isWeb.mockReturnValue(true); fetchWithTimeout.mockResolvedValueOnce({ ok: true, status: 204 } as never); - const persistAccessToken = jest.fn<() => Promise>().mockResolvedValue(undefined); - const persistRefreshToken = jest.fn<() => Promise>().mockResolvedValue(undefined); - const getUser = jest.fn<() => Promise>().mockResolvedValue(undefined); + const persistAccessToken = jest + .fn<(token: string) => Promise>() + .mockResolvedValue(undefined); + const persistRefreshToken = jest + .fn<(token: string) => Promise>() + .mockResolvedValue(undefined); + const getUser = jest + .fn<(forceRefresh?: boolean) => Promise>() + .mockResolvedValue(undefined); await expect( login('http://127.0.0.1:18010', 'user', 'pass', { @@ -107,9 +119,11 @@ describe('authLogin', () => { fetchWithTimeout.mockResolvedValueOnce({ ok: true, status: 204 } as never); await login('http://127.0.0.1:18010', 'user', 'pass', { - persistAccessToken: jest.fn<() => Promise>().mockResolvedValue(undefined), - persistRefreshToken: jest.fn<() => Promise>().mockResolvedValue(undefined), - getUser: jest.fn<() => Promise>().mockResolvedValue(undefined), + persistAccessToken: jest.fn<(token: string) => Promise>().mockResolvedValue(undefined), + persistRefreshToken: jest.fn<(token: string) => Promise>().mockResolvedValue(undefined), + getUser: jest + .fn<(forceRefresh?: boolean) => Promise>() + .mockResolvedValue(undefined), }); // markWebSessionActive is mocked here, so assert on the one thing login owns: @@ -130,13 +144,19 @@ describe('authLogin', () => { json: async () => ({ token_type: 'bearer' }), } as never); - const persistAccessToken = jest.fn<() => Promise>().mockResolvedValue(undefined); + const persistAccessToken = jest + .fn<(token: string) => Promise>() + .mockResolvedValue(undefined); await expect( login('http://127.0.0.1:18010', 'user', 'pass', { persistAccessToken, - persistRefreshToken: jest.fn<() => Promise>().mockResolvedValue(undefined), - getUser: jest.fn<() => Promise>().mockResolvedValue(undefined), + persistRefreshToken: jest + .fn<(token: string) => Promise>() + .mockResolvedValue(undefined), + getUser: jest + .fn<(forceRefresh?: boolean) => Promise>() + .mockResolvedValue(undefined), }), ).rejects.toThrow('Invalid login response.'); @@ -156,9 +176,15 @@ describe('authLogin', () => { await expect( login('http://127.0.0.1:18010', 'user', 'pass', { - persistAccessToken: jest.fn<() => Promise>().mockResolvedValue(undefined), - persistRefreshToken: jest.fn<() => Promise>().mockResolvedValue(undefined), - getUser: jest.fn<() => Promise>().mockResolvedValue(undefined), + persistAccessToken: jest + .fn<(token: string) => Promise>() + .mockResolvedValue(undefined), + persistRefreshToken: jest + .fn<(token: string) => Promise>() + .mockResolvedValue(undefined), + getUser: jest + .fn<(forceRefresh?: boolean) => Promise>() + .mockResolvedValue(undefined), }), ).rejects.toThrow('Unable to reach server. Please try again later.'); }); @@ -178,9 +204,11 @@ describe('authLogin', () => { } as never); const result = await login('http://127.0.0.1:18010', 'user', 'pass', { - persistAccessToken: jest.fn<() => Promise>().mockResolvedValue(undefined), - persistRefreshToken: jest.fn<() => Promise>().mockResolvedValue(undefined), - getUser: jest.fn<() => Promise>().mockResolvedValue(undefined), + persistAccessToken: jest.fn<(token: string) => Promise>().mockResolvedValue(undefined), + persistRefreshToken: jest.fn<(token: string) => Promise>().mockResolvedValue(undefined), + getUser: jest + .fn<(forceRefresh?: boolean) => Promise>() + .mockResolvedValue(undefined), }); expect(result).toEqual({ @@ -202,9 +230,15 @@ describe('authLogin', () => { await expect( login('http://127.0.0.1:18010', 'user', 'pass', { - persistAccessToken: jest.fn<() => Promise>().mockResolvedValue(undefined), - persistRefreshToken: jest.fn<() => Promise>().mockResolvedValue(undefined), - getUser: jest.fn<() => Promise>().mockResolvedValue(undefined), + persistAccessToken: jest + .fn<(token: string) => Promise>() + .mockResolvedValue(undefined), + persistRefreshToken: jest + .fn<(token: string) => Promise>() + .mockResolvedValue(undefined), + getUser: jest + .fn<(forceRefresh?: boolean) => Promise>() + .mockResolvedValue(undefined), }), ).rejects.toThrow('Too many login attempts.'); }); diff --git a/app/src/services/storage.ts b/app/src/services/storage.ts index 3b60d5e22..1a4170a02 100644 --- a/app/src/services/storage.ts +++ b/app/src/services/storage.ts @@ -21,7 +21,7 @@ export function registerSignOutReset(reset: () => void): void { export async function clearPersistedUserData(): Promise { for (const reset of signOutResets) reset(); - await AsyncStorage.multiRemove(SIGN_OUT_STORAGE_KEYS); + await AsyncStorage.removeMany(SIGN_OUT_STORAGE_KEYS); } export const isWeb = () => Platform.OS === 'web'; diff --git a/app/tsconfig.json b/app/tsconfig.json index 301e9fe84..b6b7259c6 100644 --- a/app/tsconfig.json +++ b/app/tsconfig.json @@ -7,7 +7,7 @@ "paths": { "@/*": ["./src/*"] }, - "types": ["@types/jest"] + "types": ["@types/jest", "node"] }, "include": ["**/*.ts", "**/*.tsx", ".expo/types/**/*.ts", "expo-env.d.ts", "uniwind-env.d.ts"] } diff --git a/docs/package.json b/docs/package.json index 34e2c59ab..7357ebe75 100644 --- a/docs/package.json +++ b/docs/package.json @@ -37,7 +37,7 @@ "@biomejs/biome": "catalog:", "@playwright/test": "catalog:", "@types/node": "catalog:", - "linkinator": "7.6.1", + "linkinator": "8.1.0", "playwright": "catalog:", "typescript": "catalog:", "vitest": "4.1.11" diff --git a/package.json b/package.json index 9e8272cb0..534a4ae6e 100644 --- a/package.json +++ b/package.json @@ -3,10 +3,10 @@ "private": true, "version": "0.3.0", "license": "AGPL-3.0-or-later", - "packageManager": "pnpm@11.25.0+sha512.5cde925b4f075f725eb71fbae18a42ffe784524789f19b61c731cb8721ec28aaee160e01a8d5af4fedb2a42cdbf300efe23db356b0d4a17b4d63e11f8ab7c956", + "packageManager": "pnpm@12.1.0+sha512.d9b8276d97f6ec86e49815877f91ee9f63cee61f2063b304e43b6dab8fa07ce8a9afd46d2facd39f921e6a9d06b3c75a81349c7b888c2d22886bae0229901037", "engines": { "node": "26.x", - "pnpm": "11.x" + "pnpm": "12.x" }, "scripts": { "biome": "biome", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e96c16d8..08218abe5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,3 +1,104 @@ +--- +lockfileVersion: '9.0' + +importers: + + .: + configDependencies: {} + packageManagerDependencies: + pnpm: + specifier: 12.1.0 + version: 12.1.0 + +packages: + + '@pnpm/exe.darwin-arm64@12.1.0': + resolution: {integrity: sha512-9K+uSnTsJe9zD/YCMPiQDiwU8IiQRp+ZEE9IyVSr0Ppzfg5/xC0pwet2R320ifDIMroT3WYLkCEolV6XxtSS/g==} + cpu: [arm64] + os: [darwin] + + '@pnpm/exe.darwin-x64@12.1.0': + resolution: {integrity: sha512-JcOc77W/KLg5ZZXr7q0WN8UDKirxQTuoaTkqRfMNkGyUHc/4bfNxLwjoZBilRQV6xmhJvU79ZUg++eYohzJhog==} + cpu: [x64] + os: [darwin] + + '@pnpm/exe.linux-arm64-musl@12.1.0': + resolution: {integrity: sha512-RVJlfI4T2l6XXA5s/Wv9HHEq4ztIq79fiZXDVHyHaKEbp+11ZM5k61z0gaGzXCEGUp5anW2Uc3UgQpmjAR+IPw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-arm64@12.1.0': + resolution: {integrity: sha512-iLEE0ykaRZ3/OBhIjwe/Zo96ac0c7pY7toyf6+jUN8gOsIIwJTS+AqSyOy+U1Zyhuuec8nJiRQ4URl60nRxTwA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-x64-musl@12.1.0': + resolution: {integrity: sha512-k+NUTRbz2CR9DBvGyAdtXU5HHPXytxi9MQ79uQRYNLF8nr/l1qHo++TvZ0OUuEpRxhg9B3n84Itv6MAHJR7TQQ==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-x64@12.1.0': + resolution: {integrity: sha512-GTi1DEM8vwIWpgC8P+xhw3Y2Ko2V88WtKAjbNwdeJAzMpzmcBeE4f0c2QKmeKpvi8/eYarxSIvBhYkTjA1BAcQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.win32-arm64@12.1.0': + resolution: {integrity: sha512-cK6kklZY8rs3d9gg8akGUgjDenFy65ZSAANXojs98d7Ne7gbzZYzU2joHRRilfpzCfawgG+lpPsh46a4xu55jQ==} + cpu: [arm64] + os: [win32] + + '@pnpm/exe.win32-x64@12.1.0': + resolution: {integrity: sha512-Pk7Lvq3E5PWQFRJLLnLgW2qJAphtgPYCaaODB+FZRRvKksn8IPnF8Aj+/AT4+52GmckiANTbKwCsL18naJhohw==} + cpu: [x64] + os: [win32] + + pnpm@12.1.0: + resolution: {integrity: sha512-2bgnbZf27IbkmBWHf5Hun2PO5h8gY7ME5Dttq4+gfOipr9RtL6zTn5Ieap0Gs8dagTSce4iMLSKIa64CKZAQNw==} + engines: {node: '>=18.*'} + hasBin: true + +snapshots: + + '@pnpm/exe.darwin-arm64@12.1.0': + optional: true + + '@pnpm/exe.darwin-x64@12.1.0': + optional: true + + '@pnpm/exe.linux-arm64-musl@12.1.0': + optional: true + + '@pnpm/exe.linux-arm64@12.1.0': + optional: true + + '@pnpm/exe.linux-x64-musl@12.1.0': + optional: true + + '@pnpm/exe.linux-x64@12.1.0': + optional: true + + '@pnpm/exe.win32-arm64@12.1.0': + optional: true + + '@pnpm/exe.win32-x64@12.1.0': + optional: true + + pnpm@12.1.0: + optionalDependencies: + '@pnpm/exe.darwin-arm64': 12.1.0 + '@pnpm/exe.darwin-x64': 12.1.0 + '@pnpm/exe.linux-arm64': 12.1.0 + '@pnpm/exe.linux-arm64-musl': 12.1.0 + '@pnpm/exe.linux-x64': 12.1.0 + '@pnpm/exe.linux-x64-musl': 12.1.0 + '@pnpm/exe.win32-arm64': 12.1.0 + '@pnpm/exe.win32-x64': 12.1.0 + +--- lockfileVersion: '9.0' settings: @@ -37,13 +138,13 @@ catalogs: overrides: monaco-editor@0.55.1>dompurify: 3.4.14 shell-quote@<1.8.4: '>=1.8.4' - ws@>=7.0.0 <7.5.11: '>=7.5.11 <8' + ws@>=7.0.0 <7.5.11: '>=7.5.11 <9' uuid@<11.1.1: '>=11.1.1' yaml@<2.8.1: '>=2.8.1' postcss@<8.5.18: '>=8.5.18' - brace-expansion@<1.1.17: '>=1.1.17 <2' + brace-expansion@<1.1.17: '>=1.1.17 <6' brace-expansion@>=4.0.0 <5.0.8: '>=5.0.8' - js-yaml@>=4.0.0 <4.3.1: '>=4.3.1 <5' + js-yaml@>=4.0.0 <4.3.1: '>=4.3.1 <6' lightningcss: 1.33.0 importers: @@ -66,8 +167,8 @@ importers: specifier: ^5.2.2 version: 5.9.1(@sinclair/typebox@0.34.52)(@standard-schema/spec@1.1.0)(ajv@8.20.0)(react-hook-form@7.87.0(react@19.2.3))(zod@4.5.4) '@react-native-async-storage/async-storage': - specifier: 2.2.0 - version: 2.2.0(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2)) + specifier: 3.1.1 + version: 3.1.1(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) '@rn-primitives/separator': specifier: ^1.5.2 version: 1.5.2(@types/react@19.2.18)(react-dom@19.2.3(react@19.2.3))(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) @@ -100,7 +201,7 @@ importers: version: 2.1.1 expo: specifier: ~57.0.12 - version: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + version: 57.0.20(62be1033536defd3a3303dc4681665c5) expo-asset: specifier: ~57.0.10 version: 57.0.16(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2)(typescript@6.0.3) @@ -142,7 +243,7 @@ importers: version: 57.0.9(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2) expo-router: specifier: ~57.0.12 - version: 57.0.19(26dd6ac543705de237fb03b67790e5aa) + version: 57.0.19(27134485083c1b5d336e2164f972e3ce) expo-secure-store: specifier: ~57.0.1 version: 57.0.3(expo@57.0.20) @@ -238,8 +339,8 @@ importers: specifier: 'catalog:' version: 2.5.12 '@jest/globals': - specifier: 29.7.0 - version: 29.7.0(supports-color@10.2.2) + specifier: 30.5.0 + version: 30.5.0(supports-color@10.2.2) '@playwright/test': specifier: 'catalog:' version: 1.62.1 @@ -251,10 +352,13 @@ importers: version: 4.3.3 '@testing-library/react-native': specifier: 13.3.3 - version: 13.3.3(jest@29.7.0(@types/node@26.4.1)(supports-color@10.2.2))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react-test-renderer@19.2.3(react@19.2.3))(react@19.2.3) + version: 13.3.3(jest@30.5.0(@types/node@26.4.1)(supports-color@10.2.2))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react-test-renderer@19.2.3(react@19.2.3))(react@19.2.3) '@types/jest': - specifier: 29.5.14 - version: 29.5.14 + specifier: 30.0.0 + version: 30.0.0 + '@types/node': + specifier: 'catalog:' + version: 26.4.1 '@types/react': specifier: ~19.2.18 version: 19.2.18 @@ -280,11 +384,11 @@ importers: specifier: 0.5.5 version: 0.5.5(eslint@10.9.1(jiti@2.7.0)(supports-color@10.2.2)) jest: - specifier: 29.7.0 - version: 29.7.0(@types/node@26.4.1)(supports-color@10.2.2) + specifier: 30.5.0 + version: 30.5.0(@types/node@26.4.1)(supports-color@10.2.2) jest-expo: specifier: ~57.0.4 - version: 57.0.5(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(expo@57.0.20)(jest@29.7.0(@types/node@26.4.1)(supports-color@10.2.2))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2) + version: 57.0.5(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(expo@57.0.20)(jest@30.5.0(@types/node@26.4.1)(supports-color@10.2.2))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2) jest-junit: specifier: 17.0.0 version: 17.0.0 @@ -344,8 +448,8 @@ importers: specifier: 'catalog:' version: 26.4.1 linkinator: - specifier: 7.6.1 - version: 7.6.1 + specifier: 8.1.0 + version: 8.1.0 playwright: specifier: 'catalog:' version: 1.62.1 @@ -1256,15 +1360,24 @@ packages: '@emmetio/stream-reader@2.2.0': resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + '@emnapi/core@1.11.1': resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/runtime@1.11.1': resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} '@emnapi/runtime@1.11.3': resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + '@emnapi/wasi-threads@1.2.2': resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} @@ -1991,6 +2104,10 @@ packages: '@internationalized/number@3.6.8': resolution: {integrity: sha512-8UmMFia46DUt+k97zKd9fKWXcWHR+k8ae3eYzILETuT2KbIvLyOfac7zesw+sJdRAAZ7Q9pM1Mk22aXp2LD0Ig==} + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + '@isaacs/ttlcache@1.4.1': resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} engines: {node: '>=12'} @@ -2007,9 +2124,13 @@ packages: resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/core@29.7.0': - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/console@30.5.0': + resolution: {integrity: sha512-BI1DpOedrJqbrYVi9yNhDWGjqphR/+gsM4STmg2+VaeXm7851hvpBDyKOZGMXATTrGEnFuEseQvLCtrrRmG0GQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/core@30.5.0': + resolution: {integrity: sha512-DLjRME+NY//j+UDTSfWnjoP0srrdR3DrJRy7yFZktGIwzpN2iVy2vMo0jziZ5c2Ij7bOwlJRXKVWtxZusazOJg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -2028,18 +2149,38 @@ packages: resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/environment@30.5.0': + resolution: {integrity: sha512-HUaqexIauIh69IQ4NTuPDEUCB8g8T4TOPSIzQOS18mwI/KEHKQk1j013K2o6ra031szZE2t5jGmVx3xbzdjgKA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/expect-utils@29.7.0': resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect-utils@30.5.0': + resolution: {integrity: sha512-5j0ztPxSy3McUJihjkDdCyCfjvT2hxykFTWsgEBZKB8qsw9ALdCiGTpTRH5gnf/d+qI4SflYUJ0dWNbzjQCWbA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/expect-utils@30.5.1': + resolution: {integrity: sha512-WcRWhHQdTMRDpyWKZ/6MINBmovI7zeD+bL8wFjCncRV3NQOwKy1X45IfyblfHR4k/XciIlNEdFL9QjFO+HNKOg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/expect@29.7.0': resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect@30.5.0': + resolution: {integrity: sha512-jEmgmgJEobJ3zEhDOGp1VAJ6JkoVelpS8uZ1ae1Ul/5lP78UKJKmmU0lciJwd6JdnqOXHaaS/QCKwbf1dHI9MA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/fake-timers@29.7.0': resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/fake-timers@30.5.0': + resolution: {integrity: sha512-sg8xIbYwe5GdB/vT3/0qrDIpO7Ov9mazHi++M95uynmDKEZ70G1r169AWct73H07VrTZhrz1SJEfLtjYv8tE3A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/get-type@30.5.0': resolution: {integrity: sha512-9/2VUPitAjmBzbvDvqrxmvB7BzWsBW0WmkkojX1ODuxX1NLGxx9gfaZpHB0z8DtJ9uhGNmZG/VXBhf8uO0OV8Q==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2048,9 +2189,17 @@ packages: resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/reporters@29.7.0': - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/globals@30.5.0': + resolution: {integrity: sha512-h7eJx534czwL8lQMYB0hwLT4/HquO8EX/RtYL7RNUHyUyWWVciYjoudN4Ns5JmNvn2/jh0Vm9UstZjEzJJ5EsQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/pattern@30.5.0': + resolution: {integrity: sha512-HdNQYSdRTEBNrginaqzQtTjG0HRMfrra/z6Ok7uL3S87vSlarIVohEsJsSj5edu3MiHoHjAkvPROz5ZjoKai+w==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/reporters@30.5.0': + resolution: {integrity: sha512-FEAuusWm+PUOn9ydjaHhpOpyPmS6IbGE04HaKTuUI4zd8eqYZiXiNLoCsdCog/l2XnNj53E9pFy64UltcvfJKg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -2065,26 +2214,46 @@ packages: resolution: {integrity: sha512-/hunigyNpc4RCjC0VaW3f5RCUZVM2+WQ65qP7z083Gmvac7or2LI50XVNOtE4YPgBpV0yxYiAgorAPGniCoJmg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/source-map@29.6.3': - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/snapshot-utils@30.5.0': + resolution: {integrity: sha512-iWQtIsi2dRsO2oWzVceOeynuRJiYTW8gsDVp5wFQ02ipHluQsNgBpasWSHiawVxukIlsGLdCtCSbIEK7fPtpvQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/source-map@30.5.0': + resolution: {integrity: sha512-xWpTJP9D0bDFGbPGT8XuWSwwha/iHADyyKzUnMx4UbdgnHugxrDaQFO4RZ8x4ZsFzRP6pNii8uvlgKCDxCIuDg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/test-result@29.7.0': resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/test-sequencer@29.7.0': - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/test-result@30.5.0': + resolution: {integrity: sha512-9IlPqUzUMkVDmoDqSSrVVLroVotgN3hTUPWPwq24XWXhh1Zpg915RXZ5pgRJ/7j4YE/kng5nqjSn4p3S68SZJA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/test-sequencer@30.5.0': + resolution: {integrity: sha512-TXlvSDIVv482b83hD8A8WtxDJEmGF47f60W6jRXOQL0Isfs3hKtk4rZIm9R/jLzAibg8+c56y+Q00BQs8R7Xcg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/transform@29.7.0': resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/transform@30.5.0': + resolution: {integrity: sha512-n1cYhoByyULEIXi64wbT4Lq91qeT1E6bwpM//sprFXhw955qaiHTdAmy1c1rNFGB6fCf1J+nxDUSf3RGwgZP5A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/types@29.6.3': resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/types@30.5.0': + resolution: {integrity: sha512-s1N+79S4Yp9ZgklCauZXi+YPJdCdtStNYQT32stuD6EeQaIBGHoUfyj2P0YWy8RmuQfaJboO+ulxEvEheR/POQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/types@30.5.1': + resolution: {integrity: sha512-LvVYn83nnXPl+Rg98nvcFgjx6nRMTArhSn6RAX/w3ELn54S8A42TYZvsCMdGUqTM8S0wyXbtlQdU6Hi6dykj9g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -2216,9 +2385,99 @@ packages: cpu: [x64] os: [win32] + '@parcel/watcher-android-arm64@2.6.0': + resolution: {integrity: sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.6.0': + resolution: {integrity: sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.6.0': + resolution: {integrity: sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.6.0': + resolution: {integrity: sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.6.0': + resolution: {integrity: sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm-musl@2.6.0': + resolution: {integrity: sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-arm64-glibc@2.6.0': + resolution: {integrity: sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm64-musl@2.6.0': + resolution: {integrity: sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-x64-glibc@2.6.0': + resolution: {integrity: sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-x64-musl@2.6.0': + resolution: {integrity: sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@parcel/watcher-win32-arm64@2.6.0': + resolution: {integrity: sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-x64@2.6.0': + resolution: {integrity: sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.6.0': + resolution: {integrity: sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==} + engines: {node: '>= 10.0.0'} + '@phosphor-icons/core@2.1.1': resolution: {integrity: sha512-v4ARvrip4qBCImOE5rmPUylOEK4iiED9ZyKjcvzuezqMaiRASCHKcRIuvvxL/twvLpkfnEODCOJp5dM4eZilxQ==} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.3.6': + resolution: {integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==} + engines: {node: ^14.18.0 || >=16.0.0} + '@playwright/test@1.62.1': resolution: {integrity: sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ==} engines: {node: '>=20'} @@ -2504,10 +2763,11 @@ packages: '@types/react': optional: true - '@react-native-async-storage/async-storage@2.2.0': - resolution: {integrity: sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw==} + '@react-native-async-storage/async-storage@3.1.1': + resolution: {integrity: sha512-z+PnLz1n6ECKhgoHZHkfc+dijXZEyZnNFSajbtE0NEbsJhmX8x9GlOeiMQIKX2E4DUqPSgfIh4FYBv1M49KgPQ==} peerDependencies: - react-native: ^0.0.0-0 || >=0.65 <1.0 + react: '*' + react-native: '*' '@react-native-masked-view/masked-view@0.3.2': resolution: {integrity: sha512-XwuQoW7/GEgWRMovOQtX3A4PrXhyaZm0lVUiY8qJDvdngjLms9Cpdck6SmGAUNqQwcj2EadHC1HwL0bEyoa/SQ==} @@ -2967,6 +3227,9 @@ packages: '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@sinonjs/fake-timers@15.4.0': + resolution: {integrity: sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==} + '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} @@ -3351,8 +3614,8 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - '@types/jest@29.5.14': - resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + '@types/jest@30.0.0': + resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==} '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} @@ -3474,6 +3737,126 @@ packages: peerDependencies: vue: '>=3.5.18' + '@unrs/resolver-binding-android-arm-eabi@1.12.2': + resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==} + cpu: [arm] + os: [android] + + '@unrs/resolver-binding-android-arm64@1.12.2': + resolution: {integrity: sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==} + cpu: [arm64] + os: [android] + + '@unrs/resolver-binding-darwin-arm64@1.12.2': + resolution: {integrity: sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.12.2': + resolution: {integrity: sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.12.2': + resolution: {integrity: sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': + resolution: {integrity: sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': + resolution: {integrity: sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': + resolution: {integrity: sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-arm64-musl@1.12.2': + resolution: {integrity: sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': + resolution: {integrity: sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-loong64-musl@1.12.2': + resolution: {integrity: sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': + resolution: {integrity: sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': + resolution: {integrity: sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': + resolution: {integrity: sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': + resolution: {integrity: sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-gnu@1.12.2': + resolution: {integrity: sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-musl@1.12.2': + resolution: {integrity: sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-openharmony-arm64@1.12.2': + resolution: {integrity: sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==} + cpu: [arm64] + os: [openharmony] + + '@unrs/resolver-binding-wasm32-wasi@1.12.2': + resolution: {integrity: sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': + resolution: {integrity: sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': + resolution: {integrity: sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.12.2': + resolution: {integrity: sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==} + cpu: [x64] + os: [win32] + '@upsetjs/venn.js@2.0.0': resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} @@ -3886,14 +4269,28 @@ packages: peerDependencies: '@babel/core': ^7.8.0 + babel-jest@30.5.0: + resolution: {integrity: sha512-PrhPHlKC+MsLnuNzgIH/y1dkz1f6cSfKWaQeaG8WxLMuG44dYWQ8E9uRrsBbAGCU/3+BEFYPN4d6G3Zc5Y+waA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@babel/core': ^7.11.0 || ^8.0.0-0 + babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} + babel-plugin-istanbul@8.0.0: + resolution: {integrity: sha512-18wCskrN3DgbuBmp1gr7LBGT8xdz5xhQQqFvFhVxbkl8VBCrMKQ2YtqBWtUal1Zrc1HTuX0011+Brjw78TCFkg==} + engines: {node: '>=18'} + babel-plugin-jest-hoist@29.6.3: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + babel-plugin-jest-hoist@30.5.0: + resolution: {integrity: sha512-gtGo1B+u14jrZQv6TdSWIWkTqclboo7Qn+dFAGUOIuXLFuJKAdg3U5MIWzZnW4vfUb4dX9skmAMiby86e/SF4A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + babel-plugin-polyfill-corejs2@0.4.17: resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} peerDependencies: @@ -3950,6 +4347,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + babel-preset-jest@30.5.0: + resolution: {integrity: sha512-ZGPn5ClP4lBDpuOK8W1yQIOy359HmbnZv3suucAlIe+SEE9yDsxV4S2PjSbH2Vc97U+WmzYD7vw3kr8NsQ/i6w==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@babel/core': ^7.11.0 || ^8.0.0-beta.1 || ^8.0.0 + bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -3963,11 +4366,6 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.11.13: - resolution: {integrity: sha512-k9HNuUVMlqVjQ9UHzfPjIqiDbWw7WqT1AoT7GL8VwvF3r0ZfArtgiSPAlmupyNquNgOJHTuH4CKYf8ttMTWBTQ==} - engines: {node: '>=6.0.0'} - hasBin: true - baseline-browser-mapping@2.11.20: resolution: {integrity: sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw==} engines: {node: '>=6.0.0'} @@ -4100,6 +4498,10 @@ packages: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chalk@6.0.0: + resolution: {integrity: sha512-2uNTXIuTTxk7ciZgAU1BQcgnchcG0xXnrs6jzkQfj9SsRa9M2s5zE8WT96hS6KmG4MzWHSrvH43DF1m4XRkrFg==} + engines: {node: '>=22'} + change-case@5.4.4: resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} @@ -4150,8 +4552,8 @@ packages: resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} engines: {node: '>=8'} - cjs-module-lexer@1.4.3: - resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + cjs-module-lexer@2.2.1: + resolution: {integrity: sha512-Ca8swihM+/4yKecYHY52kgJd300hi2lADU/a1RxNTRe+RJ9jvqQlESpbz9DnG9mowez8qwXHB8qYdIUw9e+F5Q==} class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} @@ -4312,11 +4714,6 @@ packages: cose-base@2.2.0: resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} - create-jest@29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - crelt@1.0.7: resolution: {integrity: sha512-aK6BbWfhf4U/wCcLHKPJl/xa6VkVstRaPywWtMKGwuOLc/wZTyQYuoxgvZnNsBvv7Kg3YTBQYYBCggcviQczuA==} @@ -4703,9 +5100,17 @@ packages: dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dom-serializer@3.1.1: + resolution: {integrity: sha512-4MEa38/QexBob6gFNwu+EGdWvhJ1OKuNwdYY3Y3NyeWDQfnGeDYQUDfIRzWu5B5gsv03so2Uxd28YC6zrsx3Lw==} + engines: {node: '>=20.19.0'} + domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + domelementtype@3.0.0: + resolution: {integrity: sha512-umCQid3jKbDmVjx8jGaW7uUykm4DEUeyV21hPxNMo2nV955DhUThwqyOIDtreepP31hl84X7G5U9ZfsWvIB3Pg==} + engines: {node: '>=20.19.0'} + domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} @@ -4715,12 +5120,20 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} + domhandler@6.0.1: + resolution: {integrity: sha512-gYzvtM72ZtxQO0T048kd6HWSbbGCNOUwcnfQ01cqIJ4X2IYKFFHZ5mKvrQETcFXxsRObZulDaKmy//R7TPtsBg==} + engines: {node: '>=20.19.0'} + dompurify@3.4.14: resolution: {integrity: sha512-dVoH9z+MY+C9IilgGCk3YfFqjLi3fChm2OiKJMzh6axrJ5qwxqWaZamgmHrpv22CN/KdbZJuGEGgfQoL00LTdg==} domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + domutils@4.0.2: + resolution: {integrity: sha512-qI4JLRKnSzqFqr7hAlS5xQDusBCjKSEG4t4+7aNrIQMHBcsC2TGEhuyABJdYkgSewL57PNLYEiibY2iPKhKpaA==} + engines: {node: '>=20.19.0'} + dset@3.1.4: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} @@ -4785,6 +5198,10 @@ packages: resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} engines: {node: '>=0.12'} + entities@8.0.0: + resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} + engines: {node: '>=20.19.0'} + error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} @@ -4975,8 +5392,8 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + exit-x@0.2.2: + resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==} engines: {node: '>= 0.8.0'} expect-type@1.4.0: @@ -4987,6 +5404,14 @@ packages: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + expect@30.5.0: + resolution: {integrity: sha512-8fiMWcEjPU7B9nErC4FtFcCzf2tC6I75Qf7m8wzBAWC2taZmcno3yAFEjIQL34SwoGZNgPf63UDiJLyh4SMPaw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + expect@30.5.1: + resolution: {integrity: sha512-m8YrYgvKe9+9gEnWEuKz+qCGfHqkrff7PPfyDnOFkjsfYRKqiYyOxDFMFieCGAuhtk/VNm63tvNgKZVzVy+Hvg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + expo-application@57.0.2: resolution: {integrity: sha512-q31YwcXyymviAmdrtDfAg3Dld4VMxLCNAfgMHip7vZpPX4lzF/AfwsywqBJUAjQnJknzaNAkzqvMVjO5XmKYDA==} peerDependencies: @@ -5349,6 +5774,10 @@ packages: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + form-data@4.0.6: resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} engines: {node: '>= 6'} @@ -5447,6 +5876,11 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + glob@13.0.6: resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} @@ -5645,8 +6079,9 @@ packages: html-whitespace-sensitive-tag-names@3.0.1: resolution: {integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==} - htmlparser2@10.1.0: - resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} + htmlparser2@12.0.0: + resolution: {integrity: sha512-Tz7u1i95/g2x2jz81+x0FBVhBhY5aRTvD3tXXdFaljuNdzDLJ8UGNRrTcj2cgQvAg3iW/h77Fz15nLW0L0CrZw==} + engines: {node: '>=20.19.0'} http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} @@ -5686,6 +6121,9 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + idb@8.0.3: + resolution: {integrity: sha512-LtwtVyVYO5BqRvcsKuB2iUMnHwPVByPCXFXOpuU96IZPPoPN6xjOGxZQ74pgSVVLQWtUOYgyeL4GE98BY5D3wg==} + identifier-regex@1.1.0: resolution: {integrity: sha512-SLX4H/vtcYlYnL7XqnuJKHU7Z8517TgsW9nmQiGOgMCjQ8V/deLYu6bEmbGoXe7WMMhc9+EUGyFFneHja8KabA==} engines: {node: '>=18'} @@ -5866,10 +6304,6 @@ packages: resolution: {integrity: sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==} engines: {node: '>=12'} - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -5951,25 +6385,28 @@ packages: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} istanbul-reports@3.2.0: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} - jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-changed-files@30.5.0: + resolution: {integrity: sha512-dq1x8JiEnHkJDxxOrF6UJDivBRAQMwAa5tzr+VX3um0SfyMFseUPQUbe51wLwggfoa5h/EmOtSpdJxxkzSlNRQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-cli@29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-circus@30.5.0: + resolution: {integrity: sha512-T3v7uM4wwCu+RQicjsAWCgoL3CiyuX3THSKwv2uMb9N2bMUgb+HfwDWEUma85vOGbvQNQ/YfoCXF1OCZot0ZEw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-cli@30.5.0: + resolution: {integrity: sha512-QHZMiy32x2K+NzJ1AuuoCAVc1Y5co0VXib3R7kD9MWcWFflzsD1eJN0wR+mkNlM+ts7C+Bjz0oOoFE5IiHylCg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -5977,15 +6414,18 @@ packages: node-notifier: optional: true - jest-config@29.7.0: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-config@30.5.0: + resolution: {integrity: sha512-gYQl2FqYgiVpyuB7DutBIbJRWaq5VcHdzOXJJ51HNa8J5JrsZehIlzNFW0/9s5uvvcbzM5/LTUizYSbsFErv+w==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: '@types/node': '*' + esbuild-register: '>=3.4.0' ts-node: '>=9.0.0' peerDependenciesMeta: '@types/node': optional: true + esbuild-register: + optional: true ts-node: optional: true @@ -5993,17 +6433,21 @@ packages: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-diff@30.5.0: + resolution: {integrity: sha512-QjCfDMwdPFvLxTQmS4/Dswx3PUCiqmSXVLGljMC3SU7YG1qHVoR6b86IH/O2G9k9OMyKXz2vS2Q60VnAozNDwA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-diff@30.5.1: resolution: {integrity: sha512-e3cNNMpv8Kh20MjjphTXs+3Vz7DQyLM1nft7KJhnh46atFhjVJRa+0Hq0beywuwsACtMQUBihQkFl8zxb7gt1Q==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-docblock@30.5.0: + resolution: {integrity: sha512-NwDqcxtoZi33RhuW+zJS/RVA3rmheQ8BnwpYZuc/Eruaz6seQb7+aoCeDZu/3X7W2XmD8DbSo9Pn72DbKsBFYw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-each@30.5.0: + resolution: {integrity: sha512-NiMFNhRygJEFqYNt8pnkxppUF6CR486GEpt9rSU6lPBf7KeccaOL0zbjxG8fgJgD//6e7zYdssnlt6j+1kI31A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-environment-jsdom@29.7.0: resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} @@ -6018,6 +6462,10 @@ packages: resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-environment-node@30.5.0: + resolution: {integrity: sha512-bTc79ywKLz0ogbT3JIYuEhgWV4Ffd/cJe06co4v8CyRtlmju8x5gokMlGFR8ARWhmk5SnbDRxmf50XWnlZVhDg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-expo@57.0.5: resolution: {integrity: sha512-U08fwjaDBwnnbKnZcOA0WQbHfKqOWTCGku+IdCaekrLZmfbbZr3P1WqEsXHo6ntidQ3DmW+TT6G1aOp+ChYfKA==} hasBin: true @@ -6040,18 +6488,26 @@ packages: resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-haste-map@30.5.0: + resolution: {integrity: sha512-0FStogBslBVOEqTOJr4oXMtFitmrWp9WscG6Gbns88i0YAuMXijCT2G5VMfg/HCR4QAnL+OF2C2ednag+HlDuA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-junit@17.0.0: resolution: {integrity: sha512-RYWCkq4j59gUXj5DsgbIE7xFBZzu1gtibPhyjSjMmGaOTLnqlXhg7x9zuGCwgbCuMAyoyvk0Mi8wSrRR5uOeLA==} engines: {node: '>=20.0.0'} - jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-leak-detector@30.5.0: + resolution: {integrity: sha512-Mq11ceAkNR250Iv45RoOwuG9fb4kYbJ02qoyL7A0nCI8FV5+aG/THmcEUx5uR2dNSa4KOtz+xBKrJ8cZPhPpuQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-matcher-utils@29.7.0: resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-matcher-utils@30.5.0: + resolution: {integrity: sha512-EfaYMC9f9ds7fahB/LYFTgd1Z2RS9Vpm2e46gazij0onkpoQG7Daq+MLm8/gQVqWwRVjL/RNDggbFx9MsrJEmQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-matcher-utils@30.5.1: resolution: {integrity: sha512-aroZVqwOz/wC2y6pC+obgFWKV9viaQWQTTSB6W5H55+egtUczIfXR/rxExTv92xD/ADYwpqaYfVWx1aqwKg7FA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -6060,51 +6516,78 @@ packages: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-message-util@30.5.0: + resolution: {integrity: sha512-dBYMhplGfspKaCnVk9TUy1cZnknWubpuPNEputjz0YJk1G/92R45rn45BvbPMPMtC5LVcIdxJGPOaOSQTiuzJw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-message-util@30.5.1: + resolution: {integrity: sha512-UdQlLdd9wL/Ys7xRErckqwD6wPlSZYueosSWuHc1r2ztGLwlgPvtSJq2+BPEgaEY13WLvfFbmhTj8pba0Sd1jg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-mock@29.7.0: resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-pnp-resolver@1.2.3: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true + jest-mock@30.5.0: + resolution: {integrity: sha512-bP5MHZpkYrV7xpV+yvhl36DPcXoEmTR57Un5EACcdVpMY7mpkDefCBq+V4mhcjE/3rwUajT6OTrcJTN7EwN1BA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-mock@30.5.1: + resolution: {integrity: sha512-9fVjc3leUpGID2/by/LU4Dvdcp7PFh9LlxS3QRWK3ABm+KtvEVsG/AEGeLY3gKOZsjkBxyfwGltoAVlW7dygHg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-regex-util@29.6.3: resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-regex-util@30.5.0: + resolution: {integrity: sha512-Mg0WK7A6xRHLSA1udJ8y9f3lM0uUhFTBnLKzwPmqB9AylvpleJ6BLemR8K9dK27DY+cesDryoA7yLZCAHsPG1A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve-dependencies@30.5.0: + resolution: {integrity: sha512-TnSBAp3wGOnqXBmLT3OXtJkugw6Vj2KU0IPde2EJmbGns/QMoNlkauJ7jZ8KYaxONSpx0o4pUvi+u1Q/LSk3Pg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve@30.5.0: + resolution: {integrity: sha512-NFvQWJ4G7e2kN5712iG+12Xr325NRFGAIhovrwLfgq5Oqd4bFHITw4CzcFkZGp1GTCqemC4v1l8/yZzedKZkjw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-runner@30.5.0: + resolution: {integrity: sha512-Q6Yt+1LvXvEstvru6sQLT7OQYC77VNl6dK0KEvBkeOHgThmXDqNp3Ox9TglDWFHU85pemqTNdKwxfnmO3vgrdA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-runtime@30.5.0: + resolution: {integrity: sha512-VTRz0sRIw2EISeHigx1O+CMuwoG4+RKJjF8dp8okzFaDNQEcv5Mw0h5QW8VJXgb2CRF4gZIjSEBb2jdzXPagFQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-snapshot@29.7.0: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-snapshot@30.5.0: + resolution: {integrity: sha512-pZWETdcqmKve9MDTE/AX6RaeAbRhzKhhAXGozAW8Pg2FfOSdUrQ/7D+VdwE3fLQsqjpITXJVQvYVZoMEzrUl0Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-util@30.5.0: + resolution: {integrity: sha512-lzU4aGUWaS+2X/B0CmgheDasfnsVlRfZh/rNQxB9b9s8cSYUq5BcqdQA95ld+KqJXBUVVt1sqnMQ2T3OxIalmg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-util@30.5.1: + resolution: {integrity: sha512-yKuxmNy2rSbTXw+3SIPanJo+nV4/BS1p26v44IYBFMsswSQySfMMcPHErnOncda7i9HEz0q605rIhSTBVgrZTg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-validate@29.7.0: resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-validate@30.5.0: + resolution: {integrity: sha512-N/hsPYKgBSzBeVZ2RHCs3yvBbTZNPX7Be8q33zhyo/yeFneBL1swzly31LYU4LJ3zJM9e8TxSM8IYLo2SDJZYQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-watch-select-projects@2.0.0: resolution: {integrity: sha512-j00nW4dXc2NiCW6znXgFLF9g8PJ0zP25cpQ1xRro/HU2GBfZQFZD0SoXnAlaoKkIY4MlfTMkKGbNXFpvCdjl1w==} @@ -6118,13 +6601,21 @@ packages: resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-watcher@30.5.0: + resolution: {integrity: sha512-ujjnEoL4Uu+Swu3WRwYenWMB9JMEiD2T3OypnveMJ64S/1r/5G8eC4OQ1wEOgYWQqMi+mT+buzccflCHr/XJ9Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-worker@29.7.0: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest@29.7.0: - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-worker@30.5.0: + resolution: {integrity: sha512-7kFk/607EoynNHLJa20daivkElM+c9PrCLduYy6AlMkYrXbh5TmVtW1BLXE05Y8baAFsJHMoC3xs2QRRTotwLw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest@30.5.0: + resolution: {integrity: sha512-HeFeOUEKh5gjnp1rjuSCse8Dhj0Y3KA8lsZ3azr4Wnq1nCxwMBu35MDc9mp8iblZxmeAz6wV4P241tyUB7J2Ew==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -6334,9 +6825,9 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - linkinator@7.6.1: - resolution: {integrity: sha512-+VzKKZXA8wyCW1x0B0YeQvyuenDu3vZGIWMdzK1yEK0HlBfmEKopt87+Judt4VdPOGRMioKzJK0+X8ifIvOc5Q==} - engines: {node: '>=20'} + linkinator@8.1.0: + resolution: {integrity: sha512-3AeucoHrnlsbxPinqP1w0bsVvit2ESRSFEhFoHAsJf8CNjvmNGny/f/AgtYQXVmz+x9qn+a74DlPX06yYbSRXg==} + engines: {node: '>=22'} hasBin: true locate-path@5.0.0: @@ -6427,8 +6918,8 @@ packages: engines: {node: '>= 20'} hasBin: true - marked@17.0.6: - resolution: {integrity: sha512-gB0gkNafnonOw0obSTEGZTT86IuhILt2Wfx0mWH/1Au83kybTayroZ/V6nS25mN7u8ASy+5fMhgB3XPNrOZdmA==} + marked@18.0.11: + resolution: {integrity: sha512-HnslJfsZkRPBDJRHvVtAaWlZHEpSu7u8LgQuJCELjRKuWR+hpq4A7sLq3p8HaI9ypVoXDXxV34CsQJEe1+J5Aw==} engines: {node: '>= 20'} hasBin: true @@ -6512,10 +7003,6 @@ packages: resolution: {integrity: sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==} engines: {node: '>=20'} - merge-options@3.0.4: - resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} - engines: {node: '>=10'} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -6810,6 +7297,10 @@ packages: resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} engines: {node: '>=10'} + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -6862,6 +7353,11 @@ packages: engines: {node: ^18 || >=20} hasBin: true + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -6887,6 +7383,9 @@ packages: nlcst-to-string@4.0.0: resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-fetch-native@1.6.7: resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} @@ -7066,6 +7565,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@1.8.0: resolution: {integrity: sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==} @@ -7126,6 +7628,10 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.2: resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} engines: {node: 18 || 20 || >=22} @@ -7227,6 +7733,10 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-format@30.5.0: + resolution: {integrity: sha512-mzNzBErpHwM0zpmWS7ExOv62yhQhvd546nUuFqVR0dmnJB59tfrw9sjDF0DJknwsr59OXP0buwJ7PaKguczHSg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + pretty-format@30.5.1: resolution: {integrity: sha512-byhRAPguVKMQIj4kjJwJ5lAskVhfuiSdiYl/aLTWpgkGEmic2jYhJh1yE9ih8Ox44Xg9ccCT11/S6QrzSJuNrg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -7274,8 +7784,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + pure-rand@7.0.1: + resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} qrcode@1.5.4: resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==} @@ -7635,10 +8145,6 @@ packages: resolve-workspace-root@2.0.1: resolution: {integrity: sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==} - resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} - resolve@1.22.12: resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} engines: {node: '>= 0.4'} @@ -7868,9 +8374,6 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -8101,6 +8604,10 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + synckit@0.11.13: + resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} + engines: {node: ^14.18.0 || >=16.0.0} + tabbable@6.5.0: resolution: {integrity: sha512-wieBHXygIm7OyQOu5hQlkk62/WyCFYGlWg7L6/ZCUZwx0o398Zkn4pVmMyfYhfMG8kGrj/Krt8eIk6UKC6VzwA==} @@ -8137,6 +8644,10 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} + test-exclude@7.0.2: + resolution: {integrity: sha512-u9E6A+ZDYdp7a4WnarkXPZOx8Ilz46+kby6p1yZ8zsGTz9gYa6FIS7lj2oezzNKmtdyyJNNmmXDppga5GB7kSw==} + engines: {node: '>=18'} + text-encoding@0.7.0: resolution: {integrity: sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==} deprecated: no longer maintained @@ -8307,10 +8818,6 @@ packages: undici-types@8.3.0: resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} - undici@7.29.0: - resolution: {integrity: sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==} - engines: {node: '>=20.18.1'} - undici@8.10.1: resolution: {integrity: sha512-YQ3WlbqjYMmNpdvDH64jAgLjxuAR9+649calDWhbshYaeQGO2bR4nI94ORJmwI3J9YhoKQnpyGOK+0zlWS5N5Q==} engines: {node: '>=22.19.0'} @@ -8395,6 +8902,9 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} + unrs-resolver@1.12.2: + resolution: {integrity: sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==} + unstorage@1.17.5: resolution: {integrity: sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==} peerDependencies: @@ -8890,6 +9400,10 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ws@7.5.13: resolution: {integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==} engines: {node: '>=8.3.0'} @@ -9446,7 +9960,7 @@ snapshots: dependencies: '@babel/types': 7.29.8 - '@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': + '@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) @@ -9601,7 +10115,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': + '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) @@ -9672,7 +10186,7 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': + '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-compilation-targets': 7.29.7 @@ -9723,7 +10237,7 @@ snapshots: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-react-jsx-development@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': + '@babel/plugin-transform-react-jsx-development@7.29.7(@babel/core@7.29.7(supports-color@10.2.2))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) @@ -10081,12 +10595,23 @@ snapshots: '@emmetio/stream-reader@2.2.0': {} + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + '@emnapi/core@1.11.1': dependencies: '@emnapi/wasi-threads': 1.2.2 tslib: 2.8.1 optional: true + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.11.1': dependencies: tslib: 2.8.1 @@ -10097,6 +10622,11 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.2.2': dependencies: tslib: 2.8.1 @@ -10212,31 +10742,31 @@ snapshots: '@expo-google-fonts/material-symbols@0.4.45': {} - '@expo/cli@57.0.22(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.15)(expo-constants@57.0.17)(expo-font@57.0.3)(expo-router@57.0.19)(expo@57.0.20)(react-dom@19.2.3(react@19.2.3))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2)(typescript@6.0.3)': + '@expo/cli@57.0.22(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.15)(expo-constants@57.0.17)(expo-font@57.0.3)(expo-router@57.0.19)(expo@57.0.20)(react-dom@19.2.3(react@19.2.3))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)(typescript@6.0.3)': dependencies: '@expo/code-signing-certificates': 0.0.6 '@expo/config': 57.0.9(supports-color@10.2.2)(typescript@6.0.3) '@expo/config-plugins': 57.0.9(supports-color@10.2.2)(typescript@6.0.3) - '@expo/devcert': 1.2.1(supports-color@10.2.2) + '@expo/devcert': 1.2.1 '@expo/env': 2.4.3(supports-color@10.2.2) '@expo/image-utils': 0.11.5(supports-color@10.2.2)(typescript@6.0.3) - '@expo/inline-modules': 0.1.7(supports-color@10.2.2)(typescript@6.0.3) + '@expo/inline-modules': 0.1.7(typescript@6.0.3) '@expo/json-file': 11.0.1 '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) '@expo/metro': 56.0.2(supports-color@10.2.2) '@expo/metro-config': 57.0.12(expo@57.0.20)(supports-color@10.2.2)(typescript@6.0.3) - '@expo/metro-file-map': 57.0.2(supports-color@10.2.2) + '@expo/metro-file-map': 57.0.2 '@expo/osascript': 2.7.1 '@expo/package-manager': 1.13.1 '@expo/plist': 0.8.1 - '@expo/prebuild-config': 57.0.15(supports-color@10.2.2)(typescript@6.0.3) + '@expo/prebuild-config': 57.0.15(typescript@6.0.3) '@expo/require-utils': 57.0.5(supports-color@10.2.2)(typescript@6.0.3) - '@expo/router-server': 57.0.9(@expo/metro-runtime@57.0.15)(expo-constants@57.0.17)(expo-font@57.0.3)(expo-router@57.0.19)(expo-server@57.0.3)(expo@57.0.20)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(supports-color@10.2.2) + '@expo/router-server': 57.0.9(@expo/metro-runtime@57.0.15)(expo-constants@57.0.17)(expo-font@57.0.3)(expo-router@57.0.19)(expo-server@57.0.3)(expo@57.0.20)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@expo/schema-utils': 57.0.2 '@expo/spawn-async': 1.8.0 '@expo/ws-tunnel': 2.0.0(ws@8.21.3) '@expo/xcpretty': 4.4.4 - '@react-native/dev-middleware': 0.86.3(supports-color@10.2.2) + '@react-native/dev-middleware': 0.86.3 accepts: 1.3.8 agent-cli-detector: 0.1.7 arg: 5.0.2 @@ -10248,7 +10778,7 @@ snapshots: connect: 3.7.0(supports-color@10.2.2) debug: 4.4.3(supports-color@10.2.2) dnssd-advertise: 1.1.6 - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) expo-server: 57.0.3 fetch-nodeshim: 0.4.10 getenv: 2.0.0 @@ -10275,7 +10805,7 @@ snapshots: ws: 8.21.3 zod: 3.25.76 optionalDependencies: - expo-router: 57.0.19(26dd6ac543705de237fb03b67790e5aa) + expo-router: 57.0.19(27134485083c1b5d336e2164f972e3ce) react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) transitivePeerDependencies: - '@expo/dom-webview' @@ -10331,10 +10861,10 @@ snapshots: - supports-color - typescript - '@expo/devcert@1.2.1(supports-color@10.2.2)': + '@expo/devcert@1.2.1': dependencies: '@expo/sudo-prompt': 9.3.2 - debug: 3.2.7(supports-color@10.2.2) + debug: 3.2.7 transitivePeerDependencies: - supports-color @@ -10347,7 +10877,7 @@ snapshots: '@expo/dom-webview@57.0.1(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)': dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) react: 19.2.3 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) @@ -10361,7 +10891,7 @@ snapshots: '@expo/expo-modules-macros-plugin@0.6.1': {} - '@expo/fingerprint@0.20.12(supports-color@10.2.2)': + '@expo/fingerprint@0.20.12': dependencies: '@expo/env': 2.4.3(supports-color@10.2.2) '@expo/spawn-async': 1.8.0 @@ -10390,7 +10920,7 @@ snapshots: - supports-color - typescript - '@expo/inline-modules@0.1.7(supports-color@10.2.2)(typescript@6.0.3)': + '@expo/inline-modules@0.1.7(typescript@6.0.3)': dependencies: '@expo/config-plugins': 57.0.9(supports-color@10.2.2)(typescript@6.0.3) transitivePeerDependencies: @@ -10402,7 +10932,7 @@ snapshots: '@babel/code-frame': 7.29.7 json5: 2.2.3 - '@expo/local-build-cache-provider@57.0.8(supports-color@10.2.2)(typescript@6.0.3)': + '@expo/local-build-cache-provider@57.0.8(typescript@6.0.3)': dependencies: '@expo/config': 57.0.9(supports-color@10.2.2)(typescript@6.0.3) chalk: 4.1.2 @@ -10414,7 +10944,7 @@ snapshots: dependencies: '@expo/dom-webview': 57.0.1(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) anser: 1.4.10 - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) react: 19.2.3 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) stacktrace-parser: 0.1.11 @@ -10445,14 +10975,14 @@ snapshots: postcss: 8.5.26 resolve-from: 5.0.0 optionalDependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) transitivePeerDependencies: - bufferutil - supports-color - typescript - utf-8-validate - '@expo/metro-file-map@57.0.2(supports-color@10.2.2)': + '@expo/metro-file-map@57.0.2': dependencies: debug: 4.4.3(supports-color@10.2.2) fb-watchman: 2.0.2 @@ -10467,7 +10997,7 @@ snapshots: dependencies: '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) anser: 1.4.10 - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) pretty-format: 29.7.0 react: 19.2.3 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) @@ -10489,7 +11019,7 @@ snapshots: metro-resolver: 0.84.5 metro-runtime: 0.84.5 metro-source-map: 0.84.5(supports-color@10.2.2) - metro-symbolicate: 0.84.5(supports-color@10.2.2) + metro-symbolicate: 0.84.5 metro-transform-plugins: 0.84.5(supports-color@10.2.2) metro-transform-worker: 0.84.5(supports-color@10.2.2) transitivePeerDependencies: @@ -10516,7 +11046,7 @@ snapshots: base64-js: 1.5.1 xmlbuilder: 15.1.1 - '@expo/prebuild-config@57.0.15(supports-color@10.2.2)(typescript@6.0.3)': + '@expo/prebuild-config@57.0.15(typescript@6.0.3)': dependencies: '@expo/config': 57.0.9(supports-color@10.2.2)(typescript@6.0.3) '@expo/config-plugins': 57.0.9(supports-color@10.2.2)(typescript@6.0.3) @@ -10525,7 +11055,7 @@ snapshots: '@expo/json-file': 11.0.1 '@react-native/normalize-colors': 0.86.3 debug: 4.4.3(supports-color@10.2.2) - expo-modules-autolinking: 57.0.12(supports-color@10.2.2)(typescript@6.0.3) + expo-modules-autolinking: 57.0.12(typescript@6.0.3) resolve-from: 5.0.0 semver: 7.8.5 transitivePeerDependencies: @@ -10542,17 +11072,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/router-server@57.0.9(@expo/metro-runtime@57.0.15)(expo-constants@57.0.17)(expo-font@57.0.3)(expo-router@57.0.19)(expo-server@57.0.3)(expo@57.0.20)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(supports-color@10.2.2)': + '@expo/router-server@57.0.9(@expo/metro-runtime@57.0.15)(expo-constants@57.0.17)(expo-font@57.0.3)(expo-router@57.0.19)(expo-server@57.0.3)(expo@57.0.20)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: debug: 4.4.3(supports-color@10.2.2) - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) expo-constants: 57.0.17(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(supports-color@10.2.2) expo-font: 57.0.3(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) expo-server: 57.0.3 react: 19.2.3 optionalDependencies: '@expo/metro-runtime': 57.0.15(@expo/log-box@57.0.4)(expo@57.0.20)(react-dom@19.2.3(react@19.2.3))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) - expo-router: 57.0.19(26dd6ac543705de237fb03b67790e5aa) + expo-router: 57.0.19(27134485083c1b5d336e2164f972e3ce) react-dom: 19.2.3(react@19.2.3) transitivePeerDependencies: - supports-color @@ -10569,7 +11099,7 @@ snapshots: '@expo/ui@57.0.16(a3657a30b8353d3521ef4aae0736abba)': dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) react: 19.2.3 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) sf-symbols-typescript: 2.2.0 @@ -10833,6 +11363,15 @@ snapshots: dependencies: '@swc/helpers': 0.5.23 + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/ttlcache@1.4.1': {} '@istanbuljs/load-nyc-config@1.1.0': @@ -10854,38 +11393,48 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(supports-color@10.2.2)': + '@jest/console@30.5.0': dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0(supports-color@10.2.2) - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0(supports-color@10.2.2) - '@jest/types': 29.6.3 + '@jest/types': 30.5.0 + '@types/node': 26.4.1 + chalk: 4.1.2 + jest-message-util: 30.5.0 + jest-util: 30.5.0 + slash: 3.0.0 + + '@jest/core@30.5.0(supports-color@10.2.2)': + dependencies: + '@jest/console': 30.5.0 + '@jest/pattern': 30.5.0 + '@jest/reporters': 30.5.0(supports-color@10.2.2) + '@jest/test-result': 30.5.0 + '@jest/transform': 30.5.0(supports-color@10.2.2) + '@jest/types': 30.5.0 '@types/node': 26.4.1 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 + ci-info: 4.4.0 + exit-x: 0.2.2 + fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@26.4.1)(supports-color@10.2.2) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0(supports-color@10.2.2) - jest-runner: 29.7.0(supports-color@10.2.2) - jest-runtime: 29.7.0(supports-color@10.2.2) - jest-snapshot: 29.7.0(supports-color@10.2.2) - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 + jest-changed-files: 30.5.0 + jest-config: 30.5.0(@types/node@26.4.1)(supports-color@10.2.2) + jest-haste-map: 30.5.0 + jest-message-util: 30.5.0 + jest-regex-util: 30.5.0 + jest-resolve: 30.5.0 + jest-resolve-dependencies: 30.5.0(supports-color@10.2.2) + jest-runner: 30.5.0(supports-color@10.2.2) + jest-runtime: 30.5.0(supports-color@10.2.2) + jest-snapshot: 30.5.0(supports-color@10.2.2) + jest-util: 30.5.0 + jest-validate: 30.5.0 + jest-watcher: 30.5.0 + pretty-format: 30.5.0 slash: 3.0.0 - strip-ansi: 6.0.1 transitivePeerDependencies: - babel-plugin-macros + - esbuild-register - supports-color - ts-node @@ -10902,10 +11451,25 @@ snapshots: '@types/node': 26.4.1 jest-mock: 29.7.0 + '@jest/environment@30.5.0': + dependencies: + '@jest/fake-timers': 30.5.0 + '@jest/types': 30.5.0 + '@types/node': 26.4.1 + jest-mock: 30.5.0 + '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 + '@jest/expect-utils@30.5.0': + dependencies: + '@jest/get-type': 30.5.0 + + '@jest/expect-utils@30.5.1': + dependencies: + '@jest/get-type': 30.5.0 + '@jest/expect@29.7.0(supports-color@10.2.2)': dependencies: expect: 29.7.0 @@ -10913,6 +11477,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/expect@30.5.0(supports-color@10.2.2)': + dependencies: + expect: 30.5.0 + jest-snapshot: 30.5.0(supports-color@10.2.2) + transitivePeerDependencies: + - supports-color + '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 @@ -10922,6 +11493,15 @@ snapshots: jest-mock: 29.7.0 jest-util: 29.7.0 + '@jest/fake-timers@30.5.0': + dependencies: + '@jest/types': 30.5.0 + '@sinonjs/fake-timers': 15.4.0 + '@types/node': 26.4.1 + jest-message-util: 30.5.0 + jest-mock: 30.5.0 + jest-util: 30.5.0 + '@jest/get-type@30.5.0': {} '@jest/globals@29.7.0(supports-color@10.2.2)': @@ -10933,31 +11513,44 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/reporters@29.7.0(supports-color@10.2.2)': + '@jest/globals@30.5.0(supports-color@10.2.2)': + dependencies: + '@jest/environment': 30.5.0 + '@jest/expect': 30.5.0(supports-color@10.2.2) + '@jest/types': 30.5.0 + jest-mock: 30.5.0 + transitivePeerDependencies: + - supports-color + + '@jest/pattern@30.5.0': + dependencies: + '@types/node': 26.4.1 + jest-regex-util: 30.5.0 + + '@jest/reporters@30.5.0(supports-color@10.2.2)': dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0(supports-color@10.2.2) - '@jest/types': 29.6.3 + '@jest/console': 30.5.0 + '@jest/test-result': 30.5.0 + '@jest/transform': 30.5.0(supports-color@10.2.2) + '@jest/types': 30.5.0 '@jridgewell/trace-mapping': 0.3.31 '@types/node': 26.4.1 chalk: 4.1.2 collect-v8-coverage: 1.0.3 - exit: 0.1.2 - glob: 7.2.3 + exit-x: 0.2.2 + glob: 13.0.6 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.2 istanbul-lib-instrument: 6.0.3(supports-color@10.2.2) istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1(supports-color@10.2.2) + istanbul-lib-source-maps: 5.0.6(supports-color@10.2.2) istanbul-reports: 3.2.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 + jest-message-util: 30.5.0 + jest-util: 30.5.0 + jest-worker: 30.5.0 slash: 3.0.0 string-length: 4.0.2 - strip-ansi: 6.0.1 v8-to-istanbul: 9.3.0 transitivePeerDependencies: - supports-color @@ -10970,10 +11563,18 @@ snapshots: dependencies: '@sinclair/typebox': 0.34.52 - '@jest/source-map@29.6.3': + '@jest/snapshot-utils@30.5.0': + dependencies: + '@jest/types': 30.5.0 + chalk: 4.1.2 + graceful-fs: 4.2.11 + natural-compare: 1.4.0 + + '@jest/source-map@30.5.0': dependencies: '@jridgewell/trace-mapping': 0.3.31 callsites: 3.1.0 + convert-source-map: 2.0.0 graceful-fs: 4.2.11 '@jest/test-result@29.7.0': @@ -10983,11 +11584,18 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.3 - '@jest/test-sequencer@29.7.0': + '@jest/test-result@30.5.0': dependencies: - '@jest/test-result': 29.7.0 + '@jest/console': 30.5.0 + '@jest/types': 30.5.0 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.3 + + '@jest/test-sequencer@30.5.0': + dependencies: + '@jest/test-result': 30.5.0 graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 + jest-haste-map: 30.5.0 slash: 3.0.0 '@jest/transform@29.7.0(supports-color@10.2.2)': @@ -11010,6 +11618,25 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/transform@30.5.0(supports-color@10.2.2)': + dependencies: + '@babel/core': 7.29.7(supports-color@10.2.2) + '@jest/types': 30.5.0 + '@jridgewell/trace-mapping': 0.3.31 + babel-plugin-istanbul: 8.0.0(supports-color@10.2.2) + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 30.5.0 + jest-regex-util: 30.5.0 + jest-util: 30.5.0 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 @@ -11019,6 +11646,26 @@ snapshots: '@types/yargs': 17.0.35 chalk: 4.1.2 + '@jest/types@30.5.0': + dependencies: + '@jest/pattern': 30.5.0 + '@jest/schemas': 30.5.0 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 26.4.1 + '@types/yargs': 17.0.35 + chalk: 4.1.2 + + '@jest/types@30.5.1': + dependencies: + '@jest/pattern': 30.5.0 + '@jest/schemas': 30.5.0 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 26.4.1 + '@types/yargs': 17.0.35 + chalk: 4.1.2 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.6.0 @@ -11140,6 +11787,13 @@ snapshots: outvariant: 1.4.3 strict-event-emitter: 0.5.1 + '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.3 + optional: true + '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: '@emnapi/core': 1.11.1 @@ -11194,8 +11848,69 @@ snapshots: '@pagefind/windows-x64@1.5.2': optional: true + '@parcel/watcher-android-arm64@2.6.0': + optional: true + + '@parcel/watcher-darwin-arm64@2.6.0': + optional: true + + '@parcel/watcher-darwin-x64@2.6.0': + optional: true + + '@parcel/watcher-freebsd-x64@2.6.0': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.6.0': + optional: true + + '@parcel/watcher-linux-arm-musl@2.6.0': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.6.0': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.6.0': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.6.0': + optional: true + + '@parcel/watcher-linux-x64-musl@2.6.0': + optional: true + + '@parcel/watcher-win32-arm64@2.6.0': + optional: true + + '@parcel/watcher-win32-x64@2.6.0': + optional: true + + '@parcel/watcher@2.6.0': + dependencies: + detect-libc: 2.1.2 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.7 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.6.0 + '@parcel/watcher-darwin-arm64': 2.6.0 + '@parcel/watcher-darwin-x64': 2.6.0 + '@parcel/watcher-freebsd-x64': 2.6.0 + '@parcel/watcher-linux-arm-glibc': 2.6.0 + '@parcel/watcher-linux-arm-musl': 2.6.0 + '@parcel/watcher-linux-arm64-glibc': 2.6.0 + '@parcel/watcher-linux-arm64-musl': 2.6.0 + '@parcel/watcher-linux-x64-glibc': 2.6.0 + '@parcel/watcher-linux-x64-musl': 2.6.0 + '@parcel/watcher-win32-arm64': 2.6.0 + '@parcel/watcher-win32-x64': 2.6.0 + '@phosphor-icons/core@2.1.1': {} + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.3.6': {} + '@playwright/test@1.62.1': dependencies: playwright: 1.62.1 @@ -11439,9 +12154,10 @@ snapshots: optionalDependencies: '@types/react': 19.2.18 - '@react-native-async-storage/async-storage@2.2.0(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))': + '@react-native-async-storage/async-storage@3.1.1(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)': dependencies: - merge-options: 3.0.4 + idb: 8.0.3 + react: 19.2.3 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) '@react-native-masked-view/masked-view@0.3.2(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)': @@ -11459,7 +12175,7 @@ snapshots: - '@babel/core' - supports-color - '@react-native/babel-plugin-codegen@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)': + '@react-native/babel-plugin-codegen@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))': dependencies: '@babel/traverse': 7.29.8(supports-color@10.2.2) '@react-native/codegen': 0.86.3(@babel/core@7.29.7(supports-color@10.2.2)) @@ -11553,7 +12269,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@react-native/debugger-shell@0.86.3(supports-color@10.2.2)': + '@react-native/debugger-shell@0.86.3': dependencies: cross-spawn: 7.0.6 debug: 4.4.3(supports-color@10.2.2) @@ -11580,11 +12296,11 @@ snapshots: - supports-color - utf-8-validate - '@react-native/dev-middleware@0.86.3(supports-color@10.2.2)': + '@react-native/dev-middleware@0.86.3': dependencies: '@isaacs/ttlcache': 1.4.1 '@react-native/debugger-frontend': 0.86.3 - '@react-native/debugger-shell': 0.86.3(supports-color@10.2.2) + '@react-native/debugger-shell': 0.86.3 chrome-launcher: 0.15.2(supports-color@10.2.2) chromium-edge-launcher: 0.3.0(supports-color@10.2.2) connect: 3.7.0(supports-color@10.2.2) @@ -12186,6 +12902,10 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 + '@sinonjs/fake-timers@15.4.0': + dependencies: + '@sinonjs/commons': 3.0.1 + '@standard-schema/spec@1.1.0': {} '@standard-schema/utils@0.3.0': {} @@ -12353,7 +13073,7 @@ snapshots: '@tanstack/virtual-core': 3.17.8 vue: 3.5.42(typescript@6.0.3) - '@testing-library/react-native@13.3.3(jest@29.7.0(@types/node@26.4.1)(supports-color@10.2.2))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react-test-renderer@19.2.3(react@19.2.3))(react@19.2.3)': + '@testing-library/react-native@13.3.3(jest@30.5.0(@types/node@26.4.1)(supports-color@10.2.2))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react-test-renderer@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: jest-matcher-utils: 30.5.1 picocolors: 1.1.1 @@ -12363,7 +13083,7 @@ snapshots: react-test-renderer: 19.2.3(react@19.2.3) redent: 3.0.0 optionalDependencies: - jest: 29.7.0(@types/node@26.4.1)(supports-color@10.2.2) + jest: 30.5.0(@types/node@26.4.1)(supports-color@10.2.2) '@tootallnate/once@2.0.1': {} @@ -12553,10 +13273,10 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 - '@types/jest@29.5.14': + '@types/jest@30.0.0': dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 + expect: 30.5.1 + pretty-format: 30.5.1 '@types/js-yaml@4.0.9': {} @@ -12693,6 +13413,76 @@ snapshots: unhead: 2.1.17 vue: 3.5.42(typescript@6.0.3) + '@unrs/resolver-binding-android-arm-eabi@1.12.2': + optional: true + + '@unrs/resolver-binding-android-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-darwin-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.12.2': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-loong64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-openharmony-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.12.2': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.12.2': + optional: true + '@upsetjs/venn.js@2.0.0': optionalDependencies: d3-selection: 3.0.0 @@ -13222,6 +14012,19 @@ snapshots: transitivePeerDependencies: - supports-color + babel-jest@30.5.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2): + dependencies: + '@babel/core': 7.29.7(supports-color@10.2.2) + '@jest/transform': 30.5.0(supports-color@10.2.2) + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 8.0.0(supports-color@10.2.2) + babel-preset-jest: 30.5.0(@babel/core@7.29.7(supports-color@10.2.2)) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + babel-plugin-istanbul@6.1.1(supports-color@10.2.2): dependencies: '@babel/helper-plugin-utils': 7.29.7 @@ -13232,6 +14035,16 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-istanbul@8.0.0(supports-color@10.2.2): + dependencies: + '@babel/helper-plugin-utils': 7.29.7 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.6 + istanbul-lib-instrument: 6.0.3(supports-color@10.2.2) + test-exclude: 7.0.2 + transitivePeerDependencies: + - supports-color + babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.29.7 @@ -13239,6 +14052,10 @@ snapshots: '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.28.0 + babel-plugin-jest-hoist@30.5.0: + dependencies: + '@types/babel__core': 7.20.5 + babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2): dependencies: '@babel/compat-data': 7.29.7 @@ -13302,11 +14119,11 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.7(supports-color@10.2.2)) - babel-preset-expo@57.0.10(@babel/core@7.29.7(supports-color@10.2.2))(@babel/runtime@7.29.7)(expo@57.0.20)(react-refresh@0.14.2)(supports-color@10.2.2): + babel-preset-expo@57.0.10(@babel/core@7.29.7(supports-color@10.2.2))(@babel/runtime@7.29.7)(expo@57.0.20)(react-refresh@0.14.2): dependencies: '@babel/generator': 7.29.8 '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) - '@babel/plugin-proposal-decorators': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-proposal-decorators': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-proposal-export-default-from': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-syntax-export-default-from': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) @@ -13316,7 +14133,7 @@ snapshots: '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-class-static-block': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-class-static-block': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-export-namespace-from': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) @@ -13326,7 +14143,7 @@ snapshots: '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) - '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) @@ -13334,13 +14151,13 @@ snapshots: '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-react-pure-annotations': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) - '@react-native/babel-plugin-codegen': 0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) + '@react-native/babel-plugin-codegen': 0.86.3(@babel/core@7.29.7(supports-color@10.2.2)) babel-plugin-react-compiler: 1.0.0 babel-plugin-react-native-web: 0.21.2 babel-plugin-syntax-hermes-parser: 0.36.1 @@ -13349,7 +14166,7 @@ snapshots: react-refresh: 0.14.2 optionalDependencies: '@babel/runtime': 7.29.7 - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) transitivePeerDependencies: - '@babel/core' - supports-color @@ -13360,6 +14177,12 @@ snapshots: babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7(supports-color@10.2.2)) + babel-preset-jest@30.5.0(@babel/core@7.29.7(supports-color@10.2.2)): + dependencies: + '@babel/core': 7.29.7(supports-color@10.2.2) + babel-plugin-jest-hoist: 30.5.0 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7(supports-color@10.2.2)) + bail@2.0.2: {} balanced-match@1.0.2: {} @@ -13368,8 +14191,6 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.11.13: {} - baseline-browser-mapping@2.11.20: {} bcp-47-match@2.0.3: {} @@ -13426,7 +14247,7 @@ snapshots: browserslist@4.28.8: dependencies: - baseline-browser-mapping: 2.11.13 + baseline-browser-mapping: 2.11.20 caniuse-lite: 1.0.30001810 electron-to-chromium: 1.5.421 node-releases: 2.0.54 @@ -13501,6 +14322,8 @@ snapshots: chalk@5.6.2: {} + chalk@6.0.0: {} + change-case@5.4.4: {} char-regex@1.0.2: {} @@ -13548,7 +14371,7 @@ snapshots: ci-info@4.4.0: {} - cjs-module-lexer@1.4.3: {} + cjs-module-lexer@2.2.1: {} class-variance-authority@0.7.1: dependencies: @@ -13695,21 +14518,6 @@ snapshots: dependencies: layout-base: 2.0.1 - create-jest@29.7.0(@types/node@26.4.1)(supports-color@10.2.2): - 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@26.4.1)(supports-color@10.2.2) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - crelt@1.0.7: {} cross-fetch@3.2.0: @@ -14009,11 +14817,9 @@ snapshots: optionalDependencies: supports-color: 10.2.2 - debug@3.2.7(supports-color@10.2.2): + debug@3.2.7: dependencies: ms: 2.1.3 - optionalDependencies: - supports-color: 10.2.2 debug@4.4.3(supports-color@10.2.2): dependencies: @@ -14099,8 +14905,16 @@ snapshots: domhandler: 5.0.3 entities: 4.5.0 + dom-serializer@3.1.1: + dependencies: + domelementtype: 3.0.0 + domhandler: 6.0.1 + entities: 8.0.0 + domelementtype@2.3.0: {} + domelementtype@3.0.0: {} + domexception@4.0.0: dependencies: webidl-conversions: 7.0.0 @@ -14109,6 +14923,10 @@ snapshots: dependencies: domelementtype: 2.3.0 + domhandler@6.0.1: + dependencies: + domelementtype: 3.0.0 + dompurify@3.4.14: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -14119,6 +14937,12 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 + domutils@4.0.2: + dependencies: + dom-serializer: 3.1.1 + domelementtype: 3.0.0 + domhandler: 6.0.1 + dset@3.1.4: {} dunder-proto@1.0.1: @@ -14168,6 +14992,8 @@ snapshots: entities@7.0.1: {} + entities@8.0.0: {} + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -14480,7 +15306,7 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - exit@0.1.2: {} + exit-x@0.2.2: {} expect-type@1.4.0: {} @@ -14492,14 +15318,32 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 + expect@30.5.0: + dependencies: + '@jest/expect-utils': 30.5.0 + '@jest/get-type': 30.5.0 + jest-matcher-utils: 30.5.0 + jest-message-util: 30.5.0 + jest-mock: 30.5.0 + jest-util: 30.5.0 + + expect@30.5.1: + dependencies: + '@jest/expect-utils': 30.5.1 + '@jest/get-type': 30.5.0 + jest-matcher-utils: 30.5.1 + jest-message-util: 30.5.1 + jest-mock: 30.5.1 + jest-util: 30.5.1 + expo-application@57.0.2(expo@57.0.20): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) expo-asset@57.0.16(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2)(typescript@6.0.3): dependencies: '@expo/image-utils': 0.11.5(supports-color@10.2.2)(typescript@6.0.3) - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) expo-constants: 57.0.17(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(supports-color@10.2.2) react: 19.2.3 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) @@ -14523,71 +15367,71 @@ snapshots: expo-blur@57.0.2(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) react: 19.2.3 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) expo-clipboard@57.0.1(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) react: 19.2.3 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(supports-color@10.2.2): dependencies: '@expo/env': 2.4.3(supports-color@10.2.2) - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) transitivePeerDependencies: - supports-color expo-crypto@57.0.2(expo@57.0.20): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) expo-document-picker@57.0.1(expo@57.0.20): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) expo-file-system@57.0.6(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2)): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) expo-font@57.0.3(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) fontfaceobserver: 2.3.0 react: 19.2.3 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) expo-glass-effect@57.0.1(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) react: 19.2.3 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) expo-haptics@57.0.2(expo@57.0.20): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) expo-image-loader@57.0.1(expo@57.0.20): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) expo-image-manipulator@57.0.16(expo@57.0.20): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) expo-image-loader: 57.0.1(expo@57.0.20) expo-image-picker@57.0.16(expo@57.0.20): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) expo-image-loader: 57.0.1(expo@57.0.20) expo-image@57.0.4(expo@57.0.20)(react-native-web@0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) react: 19.2.3 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) sf-symbols-typescript: 2.2.0 @@ -14596,12 +15440,12 @@ snapshots: expo-keep-awake@57.0.1(expo@57.0.20)(react@19.2.3): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) react: 19.2.3 expo-linear-gradient@57.0.1(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) react: 19.2.3 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) @@ -14615,7 +15459,7 @@ snapshots: - expo - supports-color - expo-modules-autolinking@57.0.12(supports-color@10.2.2)(typescript@6.0.3): + expo-modules-autolinking@57.0.12(typescript@6.0.3): dependencies: '@expo/require-utils': 57.0.5(supports-color@10.2.2)(typescript@6.0.3) '@expo/spawn-async': 1.8.0 @@ -14639,7 +15483,7 @@ snapshots: dependencies: react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) - expo-router@57.0.19(26dd6ac543705de237fb03b67790e5aa): + expo-router@57.0.19(27134485083c1b5d336e2164f972e3ce): dependencies: '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) '@expo/metro-runtime': 57.0.15(@expo/log-box@57.0.4)(expo@57.0.20)(react-dom@19.2.3(react@19.2.3))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) @@ -14652,7 +15496,7 @@ snapshots: color: 4.2.3 debug: 4.4.3(supports-color@10.2.2) escape-string-regexp: 4.0.0 - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) expo-constants: 57.0.17(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(supports-color@10.2.2) expo-glass-effect: 57.0.1(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) expo-linking: 57.0.9(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2) @@ -14675,7 +15519,7 @@ snapshots: standard-navigation: 0.0.5 vaul: 1.1.2(@types/react@19.2.18)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) optionalDependencies: - '@testing-library/react-native': 13.3.3(jest@29.7.0(@types/node@26.4.1)(supports-color@10.2.2))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react-test-renderer@19.2.3(react@19.2.3))(react@19.2.3) + '@testing-library/react-native': 13.3.3(jest@30.5.0(@types/node@26.4.1)(supports-color@10.2.2))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react-test-renderer@19.2.3(react@19.2.3))(react@19.2.3) react-dom: 19.2.3(react@19.2.3) react-native-gesture-handler: 2.32.0(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) react-native-reanimated: 4.5.1(react-native-worklets@0.10.1(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) @@ -14690,7 +15534,7 @@ snapshots: expo-secure-store@57.0.3(expo@57.0.20): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) expo-server@57.0.3: {} @@ -14698,7 +15542,7 @@ snapshots: dependencies: '@expo/config-plugins': 57.0.9(supports-color@10.2.2)(typescript@6.0.3) '@expo/image-utils': 0.11.5(supports-color@10.2.2)(typescript@6.0.3) - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) xml2js: 0.6.0 transitivePeerDependencies: - supports-color @@ -14706,14 +15550,14 @@ snapshots: expo-status-bar@57.0.1(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) react: 19.2.3 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) expo-symbols@57.0.2(expo-font@57.0.3)(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3): dependencies: '@expo-google-fonts/material-symbols': 0.4.45 - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) expo-font: 57.0.3(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) react: 19.2.3 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) @@ -14723,7 +15567,7 @@ snapshots: dependencies: '@react-native/normalize-colors': 0.86.3 debug: 4.4.3(supports-color@10.2.2) - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) optionalDependencies: react-native-web: 0.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -14732,35 +15576,35 @@ snapshots: expo-video@57.0.3(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) react: 19.2.3 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) expo-web-browser@57.0.2(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2)): dependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) - expo@57.0.20(c20337611ae09bde7005daa0dfa9c8a3): + expo@57.0.20(62be1033536defd3a3303dc4681665c5): dependencies: '@babel/runtime': 7.29.7 - '@expo/cli': 57.0.22(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.15)(expo-constants@57.0.17)(expo-font@57.0.3)(expo-router@57.0.19)(expo@57.0.20)(react-dom@19.2.3(react@19.2.3))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2)(typescript@6.0.3) + '@expo/cli': 57.0.22(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.15)(expo-constants@57.0.17)(expo-font@57.0.3)(expo-router@57.0.19)(expo@57.0.20)(react-dom@19.2.3(react@19.2.3))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)(typescript@6.0.3) '@expo/config': 57.0.9(supports-color@10.2.2)(typescript@6.0.3) '@expo/config-plugins': 57.0.9(supports-color@10.2.2)(typescript@6.0.3) '@expo/devtools': 57.0.1(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) - '@expo/fingerprint': 0.20.12(supports-color@10.2.2) - '@expo/local-build-cache-provider': 57.0.8(supports-color@10.2.2)(typescript@6.0.3) + '@expo/fingerprint': 0.20.12 + '@expo/local-build-cache-provider': 57.0.8(typescript@6.0.3) '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) '@expo/metro': 56.0.2(supports-color@10.2.2) '@expo/metro-config': 57.0.12(expo@57.0.20)(supports-color@10.2.2)(typescript@6.0.3) '@ungap/structured-clone': 1.4.0 - babel-preset-expo: 57.0.10(@babel/core@7.29.7(supports-color@10.2.2))(@babel/runtime@7.29.7)(expo@57.0.20)(react-refresh@0.14.2)(supports-color@10.2.2) + babel-preset-expo: 57.0.10(@babel/core@7.29.7(supports-color@10.2.2))(@babel/runtime@7.29.7)(expo@57.0.20)(react-refresh@0.14.2) expo-asset: 57.0.16(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2)(typescript@6.0.3) expo-constants: 57.0.17(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(supports-color@10.2.2) expo-file-system: 57.0.6(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2)) expo-font: 57.0.3(expo@57.0.20)(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) expo-keep-awake: 57.0.1(expo@57.0.20)(react@19.2.3) - expo-modules-autolinking: 57.0.12(supports-color@10.2.2)(typescript@6.0.3) + expo-modules-autolinking: 57.0.12(typescript@6.0.3) expo-modules-core: 57.0.16(react-native-worklets@0.10.1(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3) pretty-format: 29.7.0 react: 19.2.3 @@ -14906,6 +15750,11 @@ snapshots: dependencies: is-callable: 1.2.7 + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + form-data@4.0.6: dependencies: asynckit: 0.4.0 @@ -14996,6 +15845,15 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + glob@13.0.6: dependencies: minimatch: 10.2.6 @@ -15329,12 +16187,12 @@ snapshots: html-whitespace-sensitive-tag-names@3.0.1: {} - htmlparser2@10.1.0: + htmlparser2@12.0.0: dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 7.0.1 + domelementtype: 3.0.0 + domhandler: 6.0.1 + domutils: 4.0.2 + entities: 8.0.0 http-cache-semantics@4.2.0: {} @@ -15380,6 +16238,8 @@ snapshots: dependencies: safer-buffer: 2.1.2 + idb@8.0.3: {} + identifier-regex@1.1.0: dependencies: reserved-identifiers: 1.2.0 @@ -15537,8 +16397,6 @@ snapshots: is-obj@3.0.0: {} - is-plain-obj@2.1.0: {} - is-plain-obj@4.1.0: {} is-port-reachable@4.0.0: {} @@ -15624,11 +16482,11 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@4.0.1(supports-color@10.2.2): + istanbul-lib-source-maps@5.0.6(supports-color@10.2.2): dependencies: + '@jridgewell/trace-mapping': 0.3.31 debug: 4.4.3(supports-color@10.2.2) istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 transitivePeerDependencies: - supports-color @@ -15637,79 +16495,86 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - jest-changed-files@29.7.0: + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jest-changed-files@30.5.0: dependencies: execa: 5.1.1 - jest-util: 29.7.0 + jest-util: 30.5.0 p-limit: 3.1.0 - jest-circus@29.7.0(supports-color@10.2.2): + jest-circus@30.5.0(supports-color@10.2.2): dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0(supports-color@10.2.2) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 + '@jest/environment': 30.5.0 + '@jest/expect': 30.5.0(supports-color@10.2.2) + '@jest/test-result': 30.5.0 + '@jest/types': 30.5.0 '@types/node': 26.4.1 chalk: 4.1.2 co: 4.6.0 dedent: 1.7.2 is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0(supports-color@10.2.2) - jest-snapshot: 29.7.0(supports-color@10.2.2) - jest-util: 29.7.0 + jest-each: 30.5.0 + jest-matcher-utils: 30.5.0 + jest-message-util: 30.5.0 + jest-runtime: 30.5.0(supports-color@10.2.2) + jest-snapshot: 30.5.0(supports-color@10.2.2) + jest-util: 30.5.0 p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.1.0 + pretty-format: 30.5.0 + pure-rand: 7.0.1 slash: 3.0.0 stack-utils: 2.0.6 transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@26.4.1)(supports-color@10.2.2): + jest-cli@30.5.0(@types/node@26.4.1)(supports-color@10.2.2): dependencies: - '@jest/core': 29.7.0(supports-color@10.2.2) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 + '@jest/core': 30.5.0(supports-color@10.2.2) + '@jest/test-result': 30.5.0 + '@jest/types': 30.5.0 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@26.4.1)(supports-color@10.2.2) - exit: 0.1.2 + exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@26.4.1)(supports-color@10.2.2) - jest-util: 29.7.0 - jest-validate: 29.7.0 + jest-config: 30.5.0(@types/node@26.4.1)(supports-color@10.2.2) + jest-util: 30.5.0 + jest-validate: 30.5.0 yargs: 17.7.3 transitivePeerDependencies: - '@types/node' - babel-plugin-macros + - esbuild-register - supports-color - ts-node - jest-config@29.7.0(@types/node@26.4.1)(supports-color@10.2.2): + jest-config@30.5.0(@types/node@26.4.1)(supports-color@10.2.2): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) + '@jest/get-type': 30.5.0 + '@jest/pattern': 30.5.0 + '@jest/test-sequencer': 30.5.0 + '@jest/types': 30.5.0 + babel-jest: 30.5.0(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2) chalk: 4.1.2 - ci-info: 3.9.0 + ci-info: 4.4.0 deepmerge: 4.3.1 - glob: 7.2.3 + glob: 13.0.6 graceful-fs: 4.2.11 - jest-circus: 29.7.0(supports-color@10.2.2) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0(supports-color@10.2.2) - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 + jest-circus: 30.5.0(supports-color@10.2.2) + jest-docblock: 30.5.0 + jest-environment-node: 30.5.0 + jest-regex-util: 30.5.0 + jest-resolve: 30.5.0 + jest-runner: 30.5.0(supports-color@10.2.2) + jest-util: 30.5.0 + jest-validate: 30.5.0 parse-json: 5.2.0 - pretty-format: 29.7.0 + pretty-format: 30.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: @@ -15725,6 +16590,13 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 + jest-diff@30.5.0: + dependencies: + '@jest/diff-sequences': 30.5.0 + '@jest/get-type': 30.5.0 + chalk: 4.1.2 + pretty-format: 30.5.0 + jest-diff@30.5.1: dependencies: '@jest/diff-sequences': 30.5.0 @@ -15732,17 +16604,17 @@ snapshots: chalk: 4.1.2 pretty-format: 30.5.1 - jest-docblock@29.7.0: + jest-docblock@30.5.0: dependencies: detect-newline: 3.1.0 - jest-each@29.7.0: + jest-each@30.5.0: dependencies: - '@jest/types': 29.6.3 + '@jest/get-type': 30.5.0 + '@jest/types': 30.5.0 chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 + jest-util: 30.5.0 + pretty-format: 30.5.0 jest-environment-jsdom@29.7.0(supports-color@10.2.2): dependencies: @@ -15768,7 +16640,17 @@ snapshots: jest-mock: 29.7.0 jest-util: 29.7.0 - jest-expo@57.0.5(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(expo@57.0.20)(jest@29.7.0(@types/node@26.4.1)(supports-color@10.2.2))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2): + jest-environment-node@30.5.0: + dependencies: + '@jest/environment': 30.5.0 + '@jest/fake-timers': 30.5.0 + '@jest/types': 30.5.0 + '@types/node': 26.4.1 + jest-mock: 30.5.0 + jest-util: 30.5.0 + jest-validate: 30.5.0 + + jest-expo@57.0.5(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(expo@57.0.20)(jest@30.5.0(@types/node@26.4.1)(supports-color@10.2.2))(react-native@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2): dependencies: '@jest/create-cache-key-function': 29.7.0 '@jest/globals': 29.7.0(supports-color@10.2.2) @@ -15777,7 +16659,7 @@ snapshots: jest-environment-jsdom: 29.7.0(supports-color@10.2.2) jest-snapshot: 29.7.0(supports-color@10.2.2) jest-watch-select-projects: 2.0.0 - jest-watch-typeahead: 2.2.1(jest@29.7.0(@types/node@26.4.1)(supports-color@10.2.2)) + jest-watch-typeahead: 2.2.1(jest@30.5.0(@types/node@26.4.1)(supports-color@10.2.2)) json5: 2.2.3 lodash: 4.18.1 react-native: 0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(@react-native/jest-preset@0.86.3(@babel/core@7.29.7(supports-color@10.2.2))(react@19.2.3)(supports-color@10.2.2))(@react-native/metro-config@0.86.2(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2))(@types/react@19.2.18)(react@19.2.3)(supports-color@10.2.2) @@ -15785,7 +16667,7 @@ snapshots: server-only: 0.0.1 stacktrace-js: 2.0.2 optionalDependencies: - expo: 57.0.20(c20337611ae09bde7005daa0dfa9c8a3) + expo: 57.0.20(62be1033536defd3a3303dc4681665c5) transitivePeerDependencies: - '@babel/core' - bufferutil @@ -15813,6 +16695,20 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + jest-haste-map@30.5.0: + dependencies: + '@jest/types': 30.5.0 + '@parcel/watcher': 2.6.0 + '@types/node': 26.4.1 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + fdir: 6.5.0(picomatch@4.0.7) + graceful-fs: 4.2.11 + jest-regex-util: 30.5.0 + jest-util: 30.5.0 + jest-worker: 30.5.0 + picomatch: 4.0.7 + jest-junit@17.0.0: dependencies: mkdirp: 1.0.4 @@ -15820,10 +16716,10 @@ snapshots: uuid: 14.0.2 xml: 1.0.1 - jest-leak-detector@29.7.0: + jest-leak-detector@30.5.0: dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + '@jest/get-type': 30.5.0 + pretty-format: 30.5.0 jest-matcher-utils@29.7.0: dependencies: @@ -15832,6 +16728,13 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 + jest-matcher-utils@30.5.0: + dependencies: + '@jest/get-type': 30.5.0 + chalk: 4.1.2 + jest-diff: 30.5.0 + pretty-format: 30.5.0 + jest-matcher-utils@30.5.1: dependencies: '@jest/get-type': 30.5.0 @@ -15851,85 +16754,123 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 + jest-message-util@30.5.0: + dependencies: + '@babel/code-frame': 7.29.7 + '@jest/types': 30.5.0 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-util: 30.5.0 + picomatch: 4.0.7 + pretty-format: 30.5.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-message-util@30.5.1: + dependencies: + '@babel/code-frame': 7.29.7 + '@jest/types': 30.5.1 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-util: 30.5.1 + picomatch: 4.0.7 + pretty-format: 30.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/node': 26.4.1 jest-util: 29.7.0 - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - optionalDependencies: - jest-resolve: 29.7.0 + jest-mock@30.5.0: + dependencies: + '@jest/expect-utils': 30.5.0 + '@jest/types': 30.5.0 + '@types/node': 26.4.1 + jest-util: 30.5.0 + + jest-mock@30.5.1: + dependencies: + '@jest/expect-utils': 30.5.1 + '@jest/types': 30.5.1 + '@types/node': 26.4.1 + jest-util: 30.5.1 jest-regex-util@29.6.3: {} - jest-resolve-dependencies@29.7.0(supports-color@10.2.2): + jest-regex-util@30.5.0: {} + + jest-resolve-dependencies@30.5.0(supports-color@10.2.2): dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0(supports-color@10.2.2) + jest-regex-util: 30.5.0 + jest-snapshot: 30.5.0(supports-color@10.2.2) transitivePeerDependencies: - supports-color - jest-resolve@29.7.0: + jest-resolve@30.5.0: dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - resolve: 1.22.12 - resolve.exports: 2.0.3 + jest-haste-map: 30.5.0 + jest-util: 30.5.0 + jest-validate: 30.5.0 slash: 3.0.0 + unrs-resolver: 1.12.2 - jest-runner@29.7.0(supports-color@10.2.2): + jest-runner@30.5.0(supports-color@10.2.2): dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0(supports-color@10.2.2) - '@jest/types': 29.6.3 + '@jest/console': 30.5.0 + '@jest/environment': 30.5.0 + '@jest/source-map': 30.5.0 + '@jest/test-result': 30.5.0 + '@jest/transform': 30.5.0(supports-color@10.2.2) + '@jest/types': 30.5.0 '@types/node': 26.4.1 chalk: 4.1.2 emittery: 0.13.1 + exit-x: 0.2.2 graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0(supports-color@10.2.2) - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 + jest-docblock: 30.5.0 + jest-environment-node: 30.5.0 + jest-haste-map: 30.5.0 + jest-leak-detector: 30.5.0 + jest-message-util: 30.5.0 + jest-resolve: 30.5.0 + jest-runtime: 30.5.0(supports-color@10.2.2) + jest-util: 30.5.0 + jest-watcher: 30.5.0 + jest-worker: 30.5.0 p-limit: 3.1.0 - source-map-support: 0.5.13 transitivePeerDependencies: - supports-color - jest-runtime@29.7.0(supports-color@10.2.2): + jest-runtime@30.5.0(supports-color@10.2.2): dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0(supports-color@10.2.2) - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0(supports-color@10.2.2) - '@jest/types': 29.6.3 + '@jest/environment': 30.5.0 + '@jest/fake-timers': 30.5.0 + '@jest/globals': 30.5.0(supports-color@10.2.2) + '@jest/source-map': 30.5.0 + '@jest/test-result': 30.5.0 + '@jest/transform': 30.5.0(supports-color@10.2.2) + '@jest/types': 30.5.0 '@types/node': 26.4.1 chalk: 4.1.2 - cjs-module-lexer: 1.4.3 + cjs-module-lexer: 2.2.1 collect-v8-coverage: 1.0.3 - glob: 7.2.3 + es-module-lexer: 2.3.2 + glob: 13.0.6 graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0(supports-color@10.2.2) - jest-util: 29.7.0 + jest-haste-map: 30.5.0 + jest-message-util: 30.5.0 + jest-mock: 30.5.0 + jest-regex-util: 30.5.0 + jest-resolve: 30.5.0 + jest-snapshot: 30.5.0(supports-color@10.2.2) + jest-util: 30.5.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: @@ -15960,6 +16901,32 @@ snapshots: transitivePeerDependencies: - supports-color + jest-snapshot@30.5.0(supports-color@10.2.2): + dependencies: + '@babel/core': 7.29.7(supports-color@10.2.2) + '@babel/generator': 7.29.8 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7(supports-color@10.2.2)) + '@babel/types': 7.29.8 + '@jest/expect-utils': 30.5.0 + '@jest/get-type': 30.5.0 + '@jest/snapshot-utils': 30.5.0 + '@jest/transform': 30.5.0(supports-color@10.2.2) + '@jest/types': 30.5.0 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7(supports-color@10.2.2)) + chalk: 4.1.2 + expect: 30.5.0 + graceful-fs: 4.2.11 + jest-diff: 30.5.0 + jest-matcher-utils: 30.5.0 + jest-message-util: 30.5.0 + jest-util: 30.5.0 + pretty-format: 30.5.0 + semver: 7.8.5 + synckit: 0.11.13 + transitivePeerDependencies: + - supports-color + jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -15969,6 +16936,24 @@ snapshots: graceful-fs: 4.2.11 picomatch: 2.3.2 + jest-util@30.5.0: + dependencies: + '@jest/types': 30.5.0 + '@types/node': 26.4.1 + chalk: 4.1.2 + ci-info: 4.4.0 + graceful-fs: 4.2.11 + picomatch: 4.0.7 + + jest-util@30.5.1: + dependencies: + '@jest/types': 30.5.1 + '@types/node': 26.4.1 + chalk: 4.1.2 + ci-info: 4.4.0 + graceful-fs: 4.2.11 + picomatch: 4.0.7 + jest-validate@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -15978,17 +16963,26 @@ snapshots: leven: 3.1.0 pretty-format: 29.7.0 + jest-validate@30.5.0: + dependencies: + '@jest/get-type': 30.5.0 + '@jest/types': 30.5.0 + camelcase: 6.3.0 + chalk: 4.1.2 + leven: 3.1.0 + pretty-format: 30.5.0 + jest-watch-select-projects@2.0.0: dependencies: ansi-escapes: 4.3.2 chalk: 3.0.0 prompts: 2.4.2 - jest-watch-typeahead@2.2.1(jest@29.7.0(@types/node@26.4.1)(supports-color@10.2.2)): + jest-watch-typeahead@2.2.1(jest@30.5.0(@types/node@26.4.1)(supports-color@10.2.2)): dependencies: ansi-escapes: 6.2.1 chalk: 4.1.2 - jest: 29.7.0(@types/node@26.4.1)(supports-color@10.2.2) + jest: 30.5.0(@types/node@26.4.1)(supports-color@10.2.2) jest-regex-util: 29.6.3 jest-watcher: 29.7.0 slash: 5.1.0 @@ -16006,6 +17000,17 @@ snapshots: jest-util: 29.7.0 string-length: 4.0.2 + jest-watcher@30.5.0: + dependencies: + '@jest/test-result': 30.5.0 + '@jest/types': 30.5.0 + '@types/node': 26.4.1 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 30.5.0 + string-length: 4.0.2 + jest-worker@29.7.0: dependencies: '@types/node': 26.4.1 @@ -16013,15 +17018,24 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@26.4.1)(supports-color@10.2.2): + jest-worker@30.5.0: dependencies: - '@jest/core': 29.7.0(supports-color@10.2.2) - '@jest/types': 29.6.3 + '@types/node': 26.4.1 + '@ungap/structured-clone': 1.4.0 + jest-util: 30.5.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@30.5.0(@types/node@26.4.1)(supports-color@10.2.2): + dependencies: + '@jest/core': 30.5.0(supports-color@10.2.2) + '@jest/types': 30.5.0 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@26.4.1)(supports-color@10.2.2) + jest-cli: 30.5.0(@types/node@26.4.1)(supports-color@10.2.2) transitivePeerDependencies: - '@types/node' - babel-plugin-macros + - esbuild-register - supports-color - ts-node @@ -16199,18 +17213,19 @@ snapshots: lines-and-columns@1.2.4: {} - linkinator@7.6.1: + linkinator@8.1.0: dependencies: - chalk: 5.6.2 + chalk: 6.0.0 escape-html: 1.0.3 glob: 13.0.6 - htmlparser2: 10.1.0 - marked: 17.0.6 - marked-gfm-heading-id: 4.1.4(marked@17.0.6) + htmlparser2: 12.0.0 + marked: 18.0.11 + marked-gfm-heading-id: 4.1.4(marked@18.0.11) meow: 14.1.0 mime: 4.1.0 + saxes: 6.0.0 srcset: 5.0.3 - undici: 7.29.0 + undici: 8.10.1 locate-path@5.0.0: dependencies: @@ -16290,14 +17305,14 @@ snapshots: markdown-table@3.0.4: {} - marked-gfm-heading-id@4.1.4(marked@17.0.6): + marked-gfm-heading-id@4.1.4(marked@18.0.11): dependencies: github-slugger: 2.0.0 - marked: 17.0.6 + marked: 18.0.11 marked@16.4.2: {} - marked@17.0.6: {} + marked@18.0.11: {} marky@1.3.0: {} @@ -16498,10 +17513,6 @@ snapshots: meow@14.1.0: {} - merge-options@3.0.4: - dependencies: - is-plain-obj: 2.1.0 - merge-stream@2.0.0: {} mermaid@11.17.2: @@ -16679,7 +17690,7 @@ snapshots: '@babel/types': 7.29.8 flow-enums-runtime: 0.0.6 invariant: 2.2.4 - metro-symbolicate: 0.84.5(supports-color@10.2.2) + metro-symbolicate: 0.84.5 nullthrows: 1.1.1 ob1: 0.84.5 source-map: 0.5.7 @@ -16693,7 +17704,7 @@ snapshots: '@babel/types': 7.29.8 flow-enums-runtime: 0.0.6 invariant: 2.2.4 - metro-symbolicate: 0.84.6(supports-color@10.2.2) + metro-symbolicate: 0.84.6 nullthrows: 1.1.1 ob1: 0.84.6 source-map: 0.5.7 @@ -16701,7 +17712,7 @@ snapshots: transitivePeerDependencies: - supports-color - metro-symbolicate@0.84.5(supports-color@10.2.2): + metro-symbolicate@0.84.5: dependencies: flow-enums-runtime: 0.0.6 invariant: 2.2.4 @@ -16709,10 +17720,8 @@ snapshots: nullthrows: 1.1.1 source-map: 0.5.7 vlq: 1.0.1 - transitivePeerDependencies: - - supports-color - metro-symbolicate@0.84.6(supports-color@10.2.2): + metro-symbolicate@0.84.6: dependencies: flow-enums-runtime: 0.0.6 invariant: 2.2.4 @@ -16720,8 +17729,6 @@ snapshots: nullthrows: 1.1.1 source-map: 0.5.7 vlq: 1.0.1 - transitivePeerDependencies: - - supports-color metro-transform-plugins@0.84.5(supports-color@10.2.2): dependencies: @@ -16815,7 +17822,7 @@ snapshots: metro-resolver: 0.84.5 metro-runtime: 0.84.5 metro-source-map: 0.84.5(supports-color@10.2.2) - metro-symbolicate: 0.84.5(supports-color@10.2.2) + metro-symbolicate: 0.84.5 metro-transform-plugins: 0.84.5(supports-color@10.2.2) metro-transform-worker: 0.84.5(supports-color@10.2.2) mime-types: 3.0.2 @@ -16860,7 +17867,7 @@ snapshots: metro-resolver: 0.84.6 metro-runtime: 0.84.6 metro-source-map: 0.84.6(supports-color@10.2.2) - metro-symbolicate: 0.84.6(supports-color@10.2.2) + metro-symbolicate: 0.84.6 metro-transform-plugins: 0.84.6(supports-color@10.2.2) metro-transform-worker: 0.84.6(supports-color@10.2.2) mime-types: 3.0.2 @@ -17196,6 +18203,10 @@ snapshots: dependencies: brace-expansion: 2.1.4 + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.4 + minimist@1.2.8: {} minipass@7.1.3: {} @@ -17243,6 +18254,8 @@ snapshots: nanoid@5.1.16: {} + napi-postinstall@0.3.4: {} + natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -17261,6 +18274,8 @@ snapshots: dependencies: '@types/nlcst': 2.0.3 + node-addon-api@7.1.1: {} + node-fetch-native@1.6.7: {} node-fetch@2.7.0: @@ -17443,6 +18458,8 @@ snapshots: p-try@2.2.0: {} + package-json-from-dist@1.0.1: {} + package-manager-detector@1.8.0: {} pagefind@1.5.2: @@ -17513,6 +18530,11 @@ snapshots: path-parse@1.0.7: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + path-scurry@2.0.2: dependencies: lru-cache: 11.5.2 @@ -17595,6 +18617,13 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 + pretty-format@30.5.0: + dependencies: + '@jest/react-is-18': react-is@18.3.1 + '@jest/react-is-19': react-is@19.2.8 + '@jest/schemas': 30.5.0 + ansi-styles: 5.2.0 + pretty-format@30.5.1: dependencies: '@jest/react-is-18': react-is@18.3.1 @@ -17641,7 +18670,7 @@ snapshots: punycode@2.3.1: {} - pure-rand@6.1.0: {} + pure-rand@7.0.1: {} qrcode@1.5.4: dependencies: @@ -18147,8 +19176,6 @@ snapshots: resolve-workspace-root@2.0.1: {} - resolve.exports@2.0.3: {} - resolve@1.22.12: dependencies: es-errors: 1.3.0 @@ -18500,11 +19527,6 @@ snapshots: source-map-js@1.2.1: {} - source-map-support@0.5.13: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 @@ -18730,6 +19752,10 @@ snapshots: symbol-tree@3.2.4: {} + synckit@0.11.13: + dependencies: + '@pkgr/core': 0.3.6 + tabbable@6.5.0: {} tagged-tag@1.0.0: {} @@ -18762,6 +19788,12 @@ snapshots: glob: 7.2.3 minimatch: 3.1.5 + test-exclude@7.0.2: + dependencies: + '@istanbuljs/schema': 0.1.6 + glob: 10.5.0 + minimatch: 10.2.6 + text-encoding@0.7.0: {} throat@5.0.0: {} @@ -18914,8 +19946,6 @@ snapshots: undici-types@8.3.0: {} - undici@7.29.0: {} - undici@8.10.1: {} unhead@2.1.17: @@ -19014,6 +20044,33 @@ snapshots: unpipe@1.0.0: {} + unrs-resolver@1.12.2: + dependencies: + napi-postinstall: 0.3.4 + optionalDependencies: + '@unrs/resolver-binding-android-arm-eabi': 1.12.2 + '@unrs/resolver-binding-android-arm64': 1.12.2 + '@unrs/resolver-binding-darwin-arm64': 1.12.2 + '@unrs/resolver-binding-darwin-x64': 1.12.2 + '@unrs/resolver-binding-freebsd-x64': 1.12.2 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.12.2 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.12.2 + '@unrs/resolver-binding-linux-arm64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-arm64-musl': 1.12.2 + '@unrs/resolver-binding-linux-loong64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-loong64-musl': 1.12.2 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-riscv64-musl': 1.12.2 + '@unrs/resolver-binding-linux-s390x-gnu': 1.12.2 + '@unrs/resolver-binding-linux-x64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-x64-musl': 1.12.2 + '@unrs/resolver-binding-openharmony-arm64': 1.12.2 + '@unrs/resolver-binding-wasm32-wasi': 1.12.2 + '@unrs/resolver-binding-win32-arm64-msvc': 1.12.2 + '@unrs/resolver-binding-win32-ia32-msvc': 1.12.2 + '@unrs/resolver-binding-win32-x64-msvc': 1.12.2 + unstorage@1.17.5: dependencies: anymatch: 3.1.3 @@ -19425,6 +20482,11 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + ws@7.5.13: {} ws@8.21.3: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 45be35cc9..96c10d603 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -22,9 +22,11 @@ minimumReleaseAgeIgnoreMissingTime: true # Approve only install scripts that are needed for native/runtime setup. allowBuilds: + '@parcel/watcher': false esbuild: true msw: true sharp: true + unrs-resolver: false vue-demi: false overrides: @@ -33,14 +35,14 @@ overrides: # Patch transitive vulnerabilities in expo/metro dev tooling (GHSA advisories). # Scoped to the vulnerable ranges so unrelated consumers keep their major. "shell-quote@<1.8.4": ">=1.8.4" # GHSA-wpn peer7jw-789q-3m8p - "ws@>=7.0.0 <7.5.11": ">=7.5.11 <8" # GHSA-96hv-2xvq-fx4p + "ws@>=7.0.0 <7.5.11": ">=7.5.11 <9" # GHSA-96hv-2xvq-fx4p "uuid@<11.1.1": ">=11.1.1" # GHSA-w5hq-g745-h8pq "yaml@<2.8.1": ">=2.8.1" # GHSA-48c2-rrv3-qjmp "postcss@<8.5.18": ">=8.5.18" # GHSA-r28c-9q8g-f849 - "brace-expansion@<1.1.17": ">=1.1.17 <2" # GHSA-mh99-v99m-4gvg + "brace-expansion@<1.1.17": ">=1.1.17 <6" # GHSA-mh99-v99m-4gvg "brace-expansion@>=4.0.0 <5.0.8": ">=5.0.8" # GHSA-mh99-v99m-4gvg # 3.15.1 already carries the fix, so only the 4.x range needs lifting. - "js-yaml@>=4.0.0 <4.3.1": ">=4.3.1 <5" # GHSA-5p4m-2wfm-xmqj + "js-yaml@>=4.0.0 <4.3.1": ">=4.3.1 <6" # GHSA-5p4m-2wfm-xmqj # NativeWind v5 requires pinning lightningcss (per its install docs). lightningcss: 1.33.0 @@ -53,6 +55,9 @@ catalog: "@types/node": ^26.2.0 playwright: ^1.62.1 tailwindcss: 4.3.3 + # 7.0 is the native compiler and drops the programmatic API `astro check` + # loads, breaking typecheck in docs/ and www/. Renovate blocks 7.0.x only, so + # 7.1 arrives as a PR whose docs/www typecheck says whether the API is back. typescript: ^6.0.3 # Expo SDK packages land in same-day waves, so the release-age gate would block From a6b9350032331b268f2f1c448cc9032a23f3ded3 Mon Sep 17 00:00:00 2001 From: Simon van Lierde Date: Mon, 7 Sep 2026 07:05:50 +0200 Subject: [PATCH 2/2] chore(deps): drop dependency policy entries that no longer apply Reviewed the hand-maintained dependency policy against the resolved tree. - correct the shell-quote advisory id, which had been mangled to `GHSA-wpn peer7jw-789q-3m8p`, to GHSA-w7jw-789q-3m8p - drop the two image-size advisories from ignoreGhsas and from ci.yml's allow-ghsas: the package is no longer in the tree, so both entries were waiving nothing. `just audit` now reports 1 ignored finding, not 3 - drop the dompurify@3.4.13 release-age exclusion, superseded by the override pinning 3.4.14 - restate why lightningcss is pinned: the NativeWind reason is gone with the Uniwind migration, but removing it resolves three copies side by side --- .github/workflows/ci.yml | 8 +------- pnpm-workspace.yaml | 10 ++++------ 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6e7f9b4f3..58152134b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -343,12 +343,6 @@ jobs: # pnpm-workspace.yaml so `just audit` enforces the same policy. # Re-check the whole list when expo or metro moves a major version. # - # GHSA-5p2g-fcmc-qvqq, GHSA-w3rx-r6r6-pgpr: image-size 1.2.1 arrives through - # metro/@expo/cli. Both cover every published version (<= 2.0.2) with no fix - # available, and the parsers only ever see files the developer already has - # locally: metro is build tooling, and image-size is in no shipped bundle. - # Drop once upstream ships a patched image-size. - # # GHSA-vcc3-ghjq-m6fr: decode-uri-component 0.2.2 arrives through # query-string@7, which expo-router depends on -- 57.0.17, the latest, still # pins ^7.1.3, so there is no version of the app's own tree that avoids it. @@ -357,7 +351,7 @@ jobs: # deep link can stall the JS thread of the app that opened it, which costs # that one user a force-quit and reaches no server and no other user. Drop # when expo-router moves to query-string@8+ or query-string@7 backports. - allow-ghsas: GHSA-5p2g-fcmc-qvqq, GHSA-w3rx-r6r6-pgpr, GHSA-vcc3-ghjq-m6fr + allow-ghsas: GHSA-vcc3-ghjq-m6fr audit: name: Dependency Audit diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 96c10d603..cc6433bb1 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -10,8 +10,6 @@ preferFrozenLockfile: true # the per-advisory justifications and removal conditions. Keep the two in sync. auditConfig: ignoreGhsas: - - GHSA-5p2g-fcmc-qvqq # image-size (metro build tooling, no fix in range) - - GHSA-w3rx-r6r6-pgpr # image-size (same) - GHSA-vcc3-ghjq-m6fr # decode-uri-component (query-string@7 pins ^0.2.2) # Wait 3 days before accepting newly published packages. @@ -34,7 +32,7 @@ overrides: monaco-editor@0.55.1>dompurify: 3.4.14 # Patch transitive vulnerabilities in expo/metro dev tooling (GHSA advisories). # Scoped to the vulnerable ranges so unrelated consumers keep their major. - "shell-quote@<1.8.4": ">=1.8.4" # GHSA-wpn peer7jw-789q-3m8p + "shell-quote@<1.8.4": ">=1.8.4" # GHSA-w7jw-789q-3m8p "ws@>=7.0.0 <7.5.11": ">=7.5.11 <9" # GHSA-96hv-2xvq-fx4p "uuid@<11.1.1": ">=11.1.1" # GHSA-w5hq-g745-h8pq "yaml@<2.8.1": ">=2.8.1" # GHSA-48c2-rrv3-qjmp @@ -43,7 +41,9 @@ overrides: "brace-expansion@>=4.0.0 <5.0.8": ">=5.0.8" # GHSA-mh99-v99m-4gvg # 3.15.1 already carries the fix, so only the 4.x range needs lifting. "js-yaml@>=4.0.0 <4.3.1": ">=4.3.1 <6" # GHSA-5p4m-2wfm-xmqj - # NativeWind v5 requires pinning lightningcss (per its install docs). + # Carried over from NativeWind, which the app no longer uses, but still + # earning its place: without it the tree resolves 1.30.1, 1.32.0 and + # 1.33.0 side by side, each with its own native binary. lightningcss: 1.33.0 catalog: @@ -69,5 +69,3 @@ minimumReleaseAgeExclude: - '@expo/*' - babel-preset-expo - jest-expo - # Renovate security update: dompurify@3.4.13 - - dompurify@3.4.13