From e4826ee5adf017ad01b2970a0373f4ac11835fe9 Mon Sep 17 00:00:00 2001 From: Kevin De Porre Date: Wed, 14 Jan 2026 18:35:57 +0100 Subject: [PATCH 01/11] test: assert DefaultOnlineDetector works in React Native environments (issue #1013) --- .../tests/OnlineDetector.test.ts | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 packages/offline-transactions/tests/OnlineDetector.test.ts diff --git a/packages/offline-transactions/tests/OnlineDetector.test.ts b/packages/offline-transactions/tests/OnlineDetector.test.ts new file mode 100644 index 000000000..bfc4549ac --- /dev/null +++ b/packages/offline-transactions/tests/OnlineDetector.test.ts @@ -0,0 +1,97 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { DefaultOnlineDetector } from '../src/connectivity/OnlineDetector' + +describe(`DefaultOnlineDetector`, () => { + describe(`React Native compatibility`, () => { + let originalWindow: typeof globalThis.window + let originalDocument: typeof globalThis.document + + beforeEach(() => { + // Store originals + originalWindow = globalThis.window + originalDocument = globalThis.document + }) + + afterEach(() => { + // Restore originals + Object.defineProperty(globalThis, `window`, { value: originalWindow, writable: true }) + Object.defineProperty(globalThis, `document`, { value: originalDocument, writable: true }) + }) + + it(`should not throw when window exists but addEventListener is undefined (issue #1013)`, () => { + // Simulate React Native environment where window exists but addEventListener is not available + Object.defineProperty(globalThis, `window`, { + value: { + // window exists but addEventListener is not defined + setTimeout: global.setTimeout, + clearTimeout: global.clearTimeout, + }, + writable: true, + }) + + Object.defineProperty(globalThis, `document`, { + value: undefined, + writable: true, + }) + + // This should NOT throw - the detector should gracefully handle missing addEventListener + expect(() => { + const detector = new DefaultOnlineDetector() + detector.dispose() + }).not.toThrow() + }) + + it(`should not throw when document exists but addEventListener is undefined`, () => { + // Simulate environment where document exists but has no addEventListener + Object.defineProperty(globalThis, `window`, { + value: { + addEventListener: vi.fn(), + removeEventListener: vi.fn(), + }, + writable: true, + }) + + Object.defineProperty(globalThis, `document`, { + value: { + visibilityState: `visible`, + // document exists but addEventListener is not defined + }, + writable: true, + }) + + // This should NOT throw + expect(() => { + const detector = new DefaultOnlineDetector() + detector.dispose() + }).not.toThrow() + }) + + it(`should still function when subscription is called in limited environment`, () => { + Object.defineProperty(globalThis, `window`, { + value: { + // No addEventListener + }, + writable: true, + }) + + Object.defineProperty(globalThis, `document`, { + value: undefined, + writable: true, + }) + + const detector = new DefaultOnlineDetector() + const callback = vi.fn() + + // Should be able to subscribe without throwing + const unsubscribe = detector.subscribe(callback) + expect(typeof unsubscribe).toBe(`function`) + + // Manual notification should still work + detector.notifyOnline() + expect(callback).toHaveBeenCalledTimes(1) + + unsubscribe() + detector.dispose() + }) + }) +}) From 3f17c31fec29a78fbd9ce28b0cbff8d4363e6a80 Mon Sep 17 00:00:00 2001 From: Kevin De Porre Date: Thu, 15 Jan 2026 12:00:55 +0100 Subject: [PATCH 02/11] OnlineDetector for RN --- packages/offline-transactions/package.json | 24 + .../src/OfflineExecutor.ts | 9 +- .../src/connectivity/OnlineDetector.ts | 13 +- .../connectivity/ReactNativeOnlineDetector.ts | 105 + packages/offline-transactions/src/index.ts | 5 +- .../src/react-native/OfflineExecutor.ts | 24 + .../src/react-native/index.ts | 45 + packages/offline-transactions/src/types.ts | 9 +- .../tests/OnlineDetector.test.ts | 207 +- .../tests/ReactNativeOnlineDetector.test.ts | 317 +++ packages/offline-transactions/vite.config.ts | 3 +- pnpm-lock.yaml | 1749 ++++++++++++++++- 12 files changed, 2373 insertions(+), 137 deletions(-) create mode 100644 packages/offline-transactions/src/connectivity/ReactNativeOnlineDetector.ts create mode 100644 packages/offline-transactions/src/react-native/OfflineExecutor.ts create mode 100644 packages/offline-transactions/src/react-native/index.ts create mode 100644 packages/offline-transactions/tests/ReactNativeOnlineDetector.test.ts diff --git a/packages/offline-transactions/package.json b/packages/offline-transactions/package.json index e1a38a8b7..3d2abf3d8 100644 --- a/packages/offline-transactions/package.json +++ b/packages/offline-transactions/package.json @@ -40,6 +40,16 @@ "default": "./dist/cjs/index.cjs" } }, + "./react-native": { + "import": { + "types": "./dist/esm/react-native/index.d.ts", + "default": "./dist/esm/react-native/index.js" + }, + "require": { + "types": "./dist/cjs/react-native/index.d.cts", + "default": "./dist/cjs/react-native/index.cjs" + } + }, "./package.json": "./package.json" }, "sideEffects": false, @@ -50,9 +60,23 @@ "dependencies": { "@tanstack/db": "workspace:*" }, + "peerDependencies": { + "@react-native-community/netinfo": ">=11.0.0", + "react-native": ">=0.70.0" + }, + "peerDependenciesMeta": { + "@react-native-community/netinfo": { + "optional": true + }, + "react-native": { + "optional": true + } + }, "devDependencies": { + "@react-native-community/netinfo": "^11.4.1", "@types/node": "^24.6.2", "eslint": "^9.39.2", + "react-native": "^0.83.1", "typescript": "^5.9.2", "vitest": "^3.2.4" } diff --git a/packages/offline-transactions/src/OfflineExecutor.ts b/packages/offline-transactions/src/OfflineExecutor.ts index 977e7a3e1..e515938c1 100644 --- a/packages/offline-transactions/src/OfflineExecutor.ts +++ b/packages/offline-transactions/src/OfflineExecutor.ts @@ -13,7 +13,7 @@ import { WebLocksLeader } from './coordination/WebLocksLeader' import { BroadcastChannelLeader } from './coordination/BroadcastChannelLeader' // Connectivity -import { DefaultOnlineDetector } from './connectivity/OnlineDetector' +import { WebOnlineDetector } from './connectivity/OnlineDetector' // API import { OfflineTransaction as OfflineTransactionAPI } from './api/OfflineTransaction' @@ -30,6 +30,7 @@ import type { OfflineConfig, OfflineMode, OfflineTransaction, + OnlineDetector, StorageAdapter, StorageDiagnostic, } from './types' @@ -44,7 +45,7 @@ export class OfflineExecutor { private scheduler: KeyScheduler private executor: TransactionExecutor | null private leaderElection: LeaderElection | null - private onlineDetector: DefaultOnlineDetector + private onlineDetector: OnlineDetector private isLeaderState = false private unsubscribeOnline: (() => void) | null = null private unsubscribeLeadership: (() => void) | null = null @@ -71,7 +72,7 @@ export class OfflineExecutor { constructor(config: OfflineConfig) { this.config = config this.scheduler = new KeyScheduler() - this.onlineDetector = new DefaultOnlineDetector() + this.onlineDetector = config.onlineDetector ?? new WebOnlineDetector() // Initialize as pending - will be set by async initialization this.storage = null @@ -491,7 +492,7 @@ export class OfflineExecutor { return this.executor.getRunningCount() } - getOnlineDetector(): DefaultOnlineDetector { + getOnlineDetector(): OnlineDetector { return this.onlineDetector } diff --git a/packages/offline-transactions/src/connectivity/OnlineDetector.ts b/packages/offline-transactions/src/connectivity/OnlineDetector.ts index 9ebd587bf..5f7a1600c 100644 --- a/packages/offline-transactions/src/connectivity/OnlineDetector.ts +++ b/packages/offline-transactions/src/connectivity/OnlineDetector.ts @@ -1,6 +1,12 @@ import type { OnlineDetector } from '../types' -export class DefaultOnlineDetector implements OnlineDetector { +/** + * Web-based online detector that uses browser APIs. + * Listens for: + * - `window.online` event for network connectivity changes + * - `document.visibilitychange` event for tab/window focus changes + */ +export class WebOnlineDetector implements OnlineDetector { private listeners: Set<() => void> = new Set() private isListening = false @@ -85,3 +91,8 @@ export class DefaultOnlineDetector implements OnlineDetector { this.listeners.clear() } } + +/** + * @deprecated Use `WebOnlineDetector` instead. This alias is kept for backwards compatibility. + */ +export const DefaultOnlineDetector = WebOnlineDetector diff --git a/packages/offline-transactions/src/connectivity/ReactNativeOnlineDetector.ts b/packages/offline-transactions/src/connectivity/ReactNativeOnlineDetector.ts new file mode 100644 index 000000000..e969732df --- /dev/null +++ b/packages/offline-transactions/src/connectivity/ReactNativeOnlineDetector.ts @@ -0,0 +1,105 @@ +import NetInfo from '@react-native-community/netinfo' +import { AppState } from 'react-native' +import type { AppStateStatus, NativeEventSubscription } from 'react-native' +import type { OnlineDetector } from '../types' + +/** + * React Native online detector that uses RN APIs. + * Listens for: + * - Network connectivity changes via `@react-native-community/netinfo` + * - App state changes (foreground/background) via `AppState` + */ +export class ReactNativeOnlineDetector implements OnlineDetector { + private listeners: Set<() => void> = new Set() + private netInfoUnsubscribe: (() => void) | null = null + private appStateSubscription: NativeEventSubscription | null = null + private isListening = false + private wasConnected = true + + constructor() { + this.startListening() + } + + private startListening(): void { + if (this.isListening) { + return + } + + this.isListening = true + + // Subscribe to network state changes + this.netInfoUnsubscribe = NetInfo.addEventListener((state) => { + const isConnected = + state.isConnected === true && state.isInternetReachable !== false + + // Only notify when transitioning to online + if (isConnected && !this.wasConnected) { + this.notifyListeners() + } + + this.wasConnected = isConnected + }) + + // Subscribe to app state changes (foreground/background) + this.appStateSubscription = AppState.addEventListener( + `change`, + this.handleAppStateChange, + ) + } + + private handleAppStateChange = (nextState: AppStateStatus): void => { + // Notify when app becomes active (foreground) + if (nextState === `active`) { + this.notifyListeners() + } + } + + private stopListening(): void { + if (!this.isListening) { + return + } + + this.isListening = false + + if (this.netInfoUnsubscribe) { + this.netInfoUnsubscribe() + this.netInfoUnsubscribe = null + } + + if (this.appStateSubscription) { + this.appStateSubscription.remove() + this.appStateSubscription = null + } + } + + private notifyListeners(): void { + for (const listener of this.listeners) { + try { + listener() + } catch (error) { + console.warn(`ReactNativeOnlineDetector listener error:`, error) + } + } + } + + subscribe(callback: () => void): () => void { + this.listeners.add(callback) + + return () => { + this.listeners.delete(callback) + + if (this.listeners.size === 0) { + this.stopListening() + } + } + } + + notifyOnline(): void { + this.notifyListeners() + } + + dispose(): void { + this.stopListening() + this.listeners.clear() + } +} diff --git a/packages/offline-transactions/src/index.ts b/packages/offline-transactions/src/index.ts index 67dc9657a..f43f4633a 100644 --- a/packages/offline-transactions/src/index.ts +++ b/packages/offline-transactions/src/index.ts @@ -33,7 +33,10 @@ export { WebLocksLeader } from './coordination/WebLocksLeader' export { BroadcastChannelLeader } from './coordination/BroadcastChannelLeader' // Connectivity -export { DefaultOnlineDetector } from './connectivity/OnlineDetector' +export { + WebOnlineDetector, + DefaultOnlineDetector, +} from './connectivity/OnlineDetector' // API components export { OfflineTransaction as OfflineTransactionAPI } from './api/OfflineTransaction' diff --git a/packages/offline-transactions/src/react-native/OfflineExecutor.ts b/packages/offline-transactions/src/react-native/OfflineExecutor.ts new file mode 100644 index 000000000..7fc832164 --- /dev/null +++ b/packages/offline-transactions/src/react-native/OfflineExecutor.ts @@ -0,0 +1,24 @@ +import { OfflineExecutor as BaseOfflineExecutor } from '../OfflineExecutor' +import { ReactNativeOnlineDetector } from '../connectivity/ReactNativeOnlineDetector' +import type { OfflineConfig } from '../types' + +/** + * OfflineExecutor configured for React Native environments. + * Uses ReactNativeOnlineDetector by default instead of WebOnlineDetector. + */ +export class OfflineExecutor extends BaseOfflineExecutor { + constructor(config: OfflineConfig) { + super({ + ...config, + onlineDetector: config.onlineDetector ?? new ReactNativeOnlineDetector(), + }) + } +} + +/** + * Start an offline executor configured for React Native environments. + * Uses ReactNativeOnlineDetector by default instead of WebOnlineDetector. + */ +export function startOfflineExecutor(config: OfflineConfig): OfflineExecutor { + return new OfflineExecutor(config) +} diff --git a/packages/offline-transactions/src/react-native/index.ts b/packages/offline-transactions/src/react-native/index.ts new file mode 100644 index 000000000..977b1e93f --- /dev/null +++ b/packages/offline-transactions/src/react-native/index.ts @@ -0,0 +1,45 @@ +// Re-export from main entry (types, utilities, etc.) +export { + // Types + type OfflineTransaction, + type OfflineConfig, + type OfflineMode, + type StorageAdapter, + type StorageDiagnostic, + type StorageDiagnosticCode, + type RetryPolicy, + type LeaderElection, + type OnlineDetector, + type CreateOfflineTransactionOptions, + type CreateOfflineActionOptions, + type SerializedError, + type SerializedMutation, + NonRetriableError, + // Storage adapters + IndexedDBAdapter, + LocalStorageAdapter, + // Retry policies + DefaultRetryPolicy, + BackoffCalculator, + // Coordination + WebLocksLeader, + BroadcastChannelLeader, + // Connectivity - export web detector too for flexibility + WebOnlineDetector, + DefaultOnlineDetector, + // API components + OfflineTransactionAPI, + createOfflineAction, + // Outbox management + OutboxManager, + TransactionSerializer, + // Execution engine + KeyScheduler, + TransactionExecutor, +} from '../index' + +// Export RN-specific detector +export { ReactNativeOnlineDetector } from '../connectivity/ReactNativeOnlineDetector' + +// Export RN-configured executor +export { OfflineExecutor, startOfflineExecutor } from './OfflineExecutor' diff --git a/packages/offline-transactions/src/types.ts b/packages/offline-transactions/src/types.ts index 8cf18cc88..85cac664a 100644 --- a/packages/offline-transactions/src/types.ts +++ b/packages/offline-transactions/src/types.ts @@ -88,7 +88,7 @@ export interface StorageDiagnostic { } export interface OfflineConfig { - // eslint-disable-next-line @typescript-eslint/no-explicit-any + collections: Record> mutationFns: Record storage?: StorageAdapter @@ -101,6 +101,12 @@ export interface OfflineConfig { onLeadershipChange?: (isLeader: boolean) => void onStorageFailure?: (diagnostic: StorageDiagnostic) => void leaderElection?: LeaderElection + /** + * Custom online detector implementation. + * Defaults to WebOnlineDetector for browser environments. + * Use ReactNativeOnlineDetector from '@tanstack/offline-transactions/react-native' for RN/Expo. + */ + onlineDetector?: OnlineDetector } export interface StorageAdapter { @@ -126,6 +132,7 @@ export interface LeaderElection { export interface OnlineDetector { subscribe: (callback: () => void) => () => void notifyOnline: () => void + dispose: () => void } export interface CreateOfflineTransactionOptions { diff --git a/packages/offline-transactions/tests/OnlineDetector.test.ts b/packages/offline-transactions/tests/OnlineDetector.test.ts index bfc4549ac..503aa38a3 100644 --- a/packages/offline-transactions/tests/OnlineDetector.test.ts +++ b/packages/offline-transactions/tests/OnlineDetector.test.ts @@ -1,97 +1,194 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import { DefaultOnlineDetector } from '../src/connectivity/OnlineDetector' +import { + DefaultOnlineDetector, + WebOnlineDetector, +} from '../src/connectivity/OnlineDetector' -describe(`DefaultOnlineDetector`, () => { - describe(`React Native compatibility`, () => { +describe(`WebOnlineDetector`, () => { + describe(`browser event handling`, () => { let originalWindow: typeof globalThis.window let originalDocument: typeof globalThis.document + let windowEventListeners: Map> + let documentEventListeners: Map> beforeEach(() => { // Store originals originalWindow = globalThis.window originalDocument = globalThis.document - }) - afterEach(() => { - // Restore originals - Object.defineProperty(globalThis, `window`, { value: originalWindow, writable: true }) - Object.defineProperty(globalThis, `document`, { value: originalDocument, writable: true }) - }) + // Create maps to track event listeners + windowEventListeners = new Map() + documentEventListeners = new Map() - it(`should not throw when window exists but addEventListener is undefined (issue #1013)`, () => { - // Simulate React Native environment where window exists but addEventListener is not available + // Mock window with event listener tracking Object.defineProperty(globalThis, `window`, { value: { - // window exists but addEventListener is not defined - setTimeout: global.setTimeout, - clearTimeout: global.clearTimeout, + addEventListener: vi.fn((event: string, handler: EventListener) => { + if (!windowEventListeners.has(event)) { + windowEventListeners.set(event, new Set()) + } + windowEventListeners.get(event)!.add(handler) + }), + removeEventListener: vi.fn( + (event: string, handler: EventListener) => { + windowEventListeners.get(event)?.delete(handler) + }, + ), }, writable: true, + configurable: true, }) + // Mock document with event listener tracking Object.defineProperty(globalThis, `document`, { - value: undefined, + value: { + visibilityState: `hidden`, + addEventListener: vi.fn((event: string, handler: EventListener) => { + if (!documentEventListeners.has(event)) { + documentEventListeners.set(event, new Set()) + } + documentEventListeners.get(event)!.add(handler) + }), + removeEventListener: vi.fn( + (event: string, handler: EventListener) => { + documentEventListeners.get(event)?.delete(handler) + }, + ), + }, writable: true, + configurable: true, }) - - // This should NOT throw - the detector should gracefully handle missing addEventListener - expect(() => { - const detector = new DefaultOnlineDetector() - detector.dispose() - }).not.toThrow() }) - it(`should not throw when document exists but addEventListener is undefined`, () => { - // Simulate environment where document exists but has no addEventListener + afterEach(() => { + // Restore originals Object.defineProperty(globalThis, `window`, { - value: { - addEventListener: vi.fn(), - removeEventListener: vi.fn(), - }, + value: originalWindow, writable: true, + configurable: true, }) - Object.defineProperty(globalThis, `document`, { - value: { - visibilityState: `visible`, - // document exists but addEventListener is not defined - }, + value: originalDocument, writable: true, + configurable: true, }) + }) + + it(`should notify subscribers when online event fires`, () => { + const detector = new WebOnlineDetector() + const callback = vi.fn() + + detector.subscribe(callback) - // This should NOT throw - expect(() => { - const detector = new DefaultOnlineDetector() - detector.dispose() - }).not.toThrow() + // Simulate the online event + const onlineHandlers = windowEventListeners.get(`online`) + expect(onlineHandlers).toBeDefined() + expect(onlineHandlers!.size).toBe(1) + + // Fire the online event + for (const handler of onlineHandlers!) { + handler(new Event(`online`)) + } + + expect(callback).toHaveBeenCalledTimes(1) + + detector.dispose() }) - it(`should still function when subscription is called in limited environment`, () => { - Object.defineProperty(globalThis, `window`, { - value: { - // No addEventListener - }, - writable: true, - }) + it(`should notify subscribers when visibility changes to visible`, () => { + const detector = new WebOnlineDetector() + const callback = vi.fn() - Object.defineProperty(globalThis, `document`, { - value: undefined, - writable: true, - }) + detector.subscribe(callback) + + // Simulate visibility change to visible + ;(globalThis.document as any).visibilityState = `visible` + + const visibilityHandlers = documentEventListeners.get(`visibilitychange`) + expect(visibilityHandlers).toBeDefined() + expect(visibilityHandlers!.size).toBe(1) + + // Fire the visibilitychange event + for (const handler of visibilityHandlers!) { + handler(new Event(`visibilitychange`)) + } - const detector = new DefaultOnlineDetector() + expect(callback).toHaveBeenCalledTimes(1) + + detector.dispose() + }) + + it(`should not notify when visibility changes to hidden`, () => { + const detector = new WebOnlineDetector() const callback = vi.fn() - // Should be able to subscribe without throwing - const unsubscribe = detector.subscribe(callback) - expect(typeof unsubscribe).toBe(`function`) + detector.subscribe(callback) + + // Keep visibility as hidden + ;(globalThis.document as any).visibilityState = `hidden` + + const visibilityHandlers = documentEventListeners.get(`visibilitychange`) + + // Fire the visibilitychange event + for (const handler of visibilityHandlers!) { + handler(new Event(`visibilitychange`)) + } + + expect(callback).not.toHaveBeenCalled() + + detector.dispose() + }) + + it(`should unsubscribe from events on dispose`, () => { + const detector = new WebOnlineDetector() + const callback = vi.fn() + + detector.subscribe(callback) + detector.dispose() + + expect(window.removeEventListener).toHaveBeenCalledWith( + `online`, + expect.any(Function), + ) + expect(document.removeEventListener).toHaveBeenCalledWith( + `visibilitychange`, + expect.any(Function), + ) + }) + + it(`should support multiple subscribers`, () => { + const detector = new WebOnlineDetector() + const callback1 = vi.fn() + const callback2 = vi.fn() + + detector.subscribe(callback1) + detector.subscribe(callback2) - // Manual notification should still work detector.notifyOnline() - expect(callback).toHaveBeenCalledTimes(1) - unsubscribe() + expect(callback1).toHaveBeenCalledTimes(1) + expect(callback2).toHaveBeenCalledTimes(1) + detector.dispose() }) + + it(`should stop listening when all subscribers unsubscribe`, () => { + const detector = new WebOnlineDetector() + const callback = vi.fn() + + const unsubscribe = detector.subscribe(callback) + unsubscribe() + + expect(window.removeEventListener).toHaveBeenCalledWith( + `online`, + expect.any(Function), + ) + }) + }) +}) + +describe(`DefaultOnlineDetector (backwards compatibility alias)`, () => { + it(`should be the same as WebOnlineDetector`, () => { + expect(DefaultOnlineDetector).toBe(WebOnlineDetector) }) }) diff --git a/packages/offline-transactions/tests/ReactNativeOnlineDetector.test.ts b/packages/offline-transactions/tests/ReactNativeOnlineDetector.test.ts new file mode 100644 index 000000000..9a9cf697a --- /dev/null +++ b/packages/offline-transactions/tests/ReactNativeOnlineDetector.test.ts @@ -0,0 +1,317 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' + +// Import after mocks are set up +import { AppState } from 'react-native' +import NetInfo from '@react-native-community/netinfo' +import { ReactNativeOnlineDetector } from '../src/connectivity/ReactNativeOnlineDetector' + +// Mock the react-native module +vi.mock(`react-native`, () => { + const listeners: Array<(state: string) => void> = [] + return { + AppState: { + addEventListener: vi.fn( + (event: string, callback: (state: string) => void) => { + if (event === `change`) { + listeners.push(callback) + } + return { + remove: vi.fn(() => { + const index = listeners.indexOf(callback) + if (index > -1) { + listeners.splice(index, 1) + } + }), + } + }, + ), + // Expose for testing + __listeners: listeners, + __triggerChange: (state: string) => { + for (const listener of listeners) { + listener(state) + } + }, + }, + } +}) + +// Mock the @react-native-community/netinfo module +vi.mock(`@react-native-community/netinfo`, () => { + const listeners: Array< + (state: { isConnected: boolean; isInternetReachable: boolean | null }) => void + > = [] + return { + default: { + addEventListener: vi.fn( + ( + callback: (state: { + isConnected: boolean + isInternetReachable: boolean | null + }) => void, + ) => { + listeners.push(callback) + return () => { + const index = listeners.indexOf(callback) + if (index > -1) { + listeners.splice(index, 1) + } + } + }, + ), + // Expose for testing + __listeners: listeners, + __triggerState: (state: { + isConnected: boolean + isInternetReachable: boolean | null + }) => { + for (const listener of listeners) { + listener(state) + } + }, + }, + } +}) + +describe(`ReactNativeOnlineDetector`, () => { + beforeEach(() => { + vi.clearAllMocks() + // Clear internal listener arrays + ;(AppState as any).__listeners.length = 0 + ;(NetInfo as any).__listeners.length = 0 + }) + + describe(`initialization`, () => { + it(`should subscribe to NetInfo on construction`, () => { + const detector = new ReactNativeOnlineDetector() + + expect(NetInfo.addEventListener).toHaveBeenCalledTimes(1) + expect(NetInfo.addEventListener).toHaveBeenCalledWith(expect.any(Function)) + + detector.dispose() + }) + + it(`should subscribe to AppState on construction`, () => { + const detector = new ReactNativeOnlineDetector() + + expect(AppState.addEventListener).toHaveBeenCalledTimes(1) + expect(AppState.addEventListener).toHaveBeenCalledWith( + `change`, + expect.any(Function), + ) + + detector.dispose() + }) + }) + + describe(`network connectivity changes`, () => { + it(`should notify subscribers when transitioning from offline to online`, () => { + const detector = new ReactNativeOnlineDetector() + const callback = vi.fn() + + detector.subscribe(callback) + + // First, simulate offline state + ;(NetInfo as any).__triggerState({ + isConnected: false, + isInternetReachable: false, + }) + + expect(callback).not.toHaveBeenCalled() + + // Now simulate coming online + ;(NetInfo as any).__triggerState({ + isConnected: true, + isInternetReachable: true, + }) + + expect(callback).toHaveBeenCalledTimes(1) + + detector.dispose() + }) + + it(`should not notify when already online and staying online`, () => { + const detector = new ReactNativeOnlineDetector() + const callback = vi.fn() + + detector.subscribe(callback) + + // Simulate online state (detector starts assuming online) + ;(NetInfo as any).__triggerState({ + isConnected: true, + isInternetReachable: true, + }) + + // Should not trigger since we were already considered online + expect(callback).not.toHaveBeenCalled() + + detector.dispose() + }) + + it(`should treat isInternetReachable null as potentially reachable`, () => { + const detector = new ReactNativeOnlineDetector() + const callback = vi.fn() + + detector.subscribe(callback) + + // First go offline + ;(NetInfo as any).__triggerState({ + isConnected: false, + isInternetReachable: false, + }) + + // Now come online with null isInternetReachable (unknown) + ;(NetInfo as any).__triggerState({ + isConnected: true, + isInternetReachable: null, + }) + + expect(callback).toHaveBeenCalledTimes(1) + + detector.dispose() + }) + }) + + describe(`app state changes`, () => { + it(`should notify subscribers when app becomes active`, () => { + const detector = new ReactNativeOnlineDetector() + const callback = vi.fn() + + detector.subscribe(callback) + + // Simulate app becoming active (foregrounded) + ;(AppState as any).__triggerChange(`active`) + + expect(callback).toHaveBeenCalledTimes(1) + + detector.dispose() + }) + + it(`should not notify when app goes to background`, () => { + const detector = new ReactNativeOnlineDetector() + const callback = vi.fn() + + detector.subscribe(callback) + + // Simulate app going to background + ;(AppState as any).__triggerChange(`background`) + + expect(callback).not.toHaveBeenCalled() + + detector.dispose() + }) + + it(`should not notify when app becomes inactive`, () => { + const detector = new ReactNativeOnlineDetector() + const callback = vi.fn() + + detector.subscribe(callback) + + // Simulate app becoming inactive + ;(AppState as any).__triggerChange(`inactive`) + + expect(callback).not.toHaveBeenCalled() + + detector.dispose() + }) + }) + + describe(`subscription management`, () => { + it(`should support multiple subscribers`, () => { + const detector = new ReactNativeOnlineDetector() + const callback1 = vi.fn() + const callback2 = vi.fn() + + detector.subscribe(callback1) + detector.subscribe(callback2) + + detector.notifyOnline() + + expect(callback1).toHaveBeenCalledTimes(1) + expect(callback2).toHaveBeenCalledTimes(1) + + detector.dispose() + }) + + it(`should allow unsubscribing`, () => { + const detector = new ReactNativeOnlineDetector() + const callback = vi.fn() + + const unsubscribe = detector.subscribe(callback) + unsubscribe() + + detector.notifyOnline() + + expect(callback).not.toHaveBeenCalled() + + detector.dispose() + }) + + it(`should handle notifyOnline() manual trigger`, () => { + const detector = new ReactNativeOnlineDetector() + const callback = vi.fn() + + detector.subscribe(callback) + + detector.notifyOnline() + detector.notifyOnline() + + expect(callback).toHaveBeenCalledTimes(2) + + detector.dispose() + }) + }) + + describe(`disposal`, () => { + it(`should unsubscribe from all native events on dispose`, () => { + const detector = new ReactNativeOnlineDetector() + const callback = vi.fn() + + detector.subscribe(callback) + detector.dispose() + + // NetInfo and AppState listeners should be cleared + expect((NetInfo as any).__listeners.length).toBe(0) + expect((AppState as any).__listeners.length).toBe(0) + }) + + it(`should not notify after dispose`, () => { + const detector = new ReactNativeOnlineDetector() + const callback = vi.fn() + + detector.subscribe(callback) + detector.dispose() + + // Try to trigger events - should not notify + detector.notifyOnline() + + expect(callback).not.toHaveBeenCalled() + }) + }) + + describe(`error handling`, () => { + it(`should catch and warn on listener errors without stopping other listeners`, () => { + const detector = new ReactNativeOnlineDetector() + const consoleWarnSpy = vi.spyOn(console, `warn`).mockImplementation(() => {}) + const errorCallback = vi.fn(() => { + throw new Error(`Test error`) + }) + const successCallback = vi.fn() + + detector.subscribe(errorCallback) + detector.subscribe(successCallback) + + detector.notifyOnline() + + expect(errorCallback).toHaveBeenCalledTimes(1) + expect(successCallback).toHaveBeenCalledTimes(1) + expect(consoleWarnSpy).toHaveBeenCalledWith( + `ReactNativeOnlineDetector listener error:`, + expect.any(Error), + ) + + consoleWarnSpy.mockRestore() + detector.dispose() + }) + }) +}) diff --git a/packages/offline-transactions/vite.config.ts b/packages/offline-transactions/vite.config.ts index aa589f666..87883e4ce 100644 --- a/packages/offline-transactions/vite.config.ts +++ b/packages/offline-transactions/vite.config.ts @@ -15,7 +15,8 @@ const config = defineConfig({ export default mergeConfig( config, tanstackViteConfig({ - entry: `./src/index.ts`, + entry: [`./src/index.ts`, `./src/react-native/index.ts`], srcDir: `./src`, + externalDeps: [`react-native`, `@react-native-community/netinfo`], }), ) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 538537cb2..e3eae1cb4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,7 +16,7 @@ importers: version: 9.39.2 '@fast-check/vitest': specifier: ^0.2.0 - version: 0.2.4(vitest@3.2.4) + version: 0.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@svitejs/changesets-changelog-github-compact': specifier: ^1.2.0 version: 1.2.0(encoding@0.1.13) @@ -106,7 +106,7 @@ importers: version: 7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) zod: specifier: ^3.25.76 version: 3.25.76 @@ -133,10 +133,10 @@ importers: version: 20.3.15(@angular/common@19.2.17(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@19.2.17(@angular/common@19.2.17(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0)))(rxjs@7.8.2) '@tanstack/angular-db': specifier: ^0.1.46 - version: link:../../../packages/angular-db + version: 0.1.46(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)(typescript@5.9.3) '@tanstack/db': specifier: ^0.5.20 - version: link:../../../packages/db + version: 0.5.20(typescript@5.9.3) rxjs: specifier: ^7.8.2 version: 7.8.2 @@ -149,7 +149,7 @@ importers: devDependencies: '@angular/build': specifier: ^20.3.13 - version: 20.3.13(@angular/compiler-cli@20.3.15(@angular/compiler@20.3.16)(typescript@5.9.3))(@angular/compiler@20.3.16)(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@19.2.17(@angular/common@19.2.17(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0)))(@types/node@24.7.0)(chokidar@4.0.3)(jiti@2.6.1)(karma@6.4.4)(lightningcss@1.30.2)(postcss@8.5.6)(tailwindcss@4.1.18)(terser@5.44.0)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@3.2.4)(yaml@2.8.1) + version: 20.3.13(@angular/compiler-cli@20.3.15(@angular/compiler@20.3.16)(typescript@5.9.3))(@angular/compiler@20.3.16)(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@19.2.17(@angular/common@19.2.17(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0)))(@types/node@24.7.0)(chokidar@4.0.3)(jiti@2.6.1)(karma@6.4.4)(lightningcss@1.30.2)(postcss@8.5.6)(tailwindcss@4.1.18)(terser@5.44.0)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(yaml@2.8.1) '@angular/cli': specifier: ^20.3.13 version: 20.3.13(@types/node@24.7.0)(chokidar@4.0.3) @@ -194,13 +194,13 @@ importers: dependencies: '@tanstack/offline-transactions': specifier: ^1.0.10 - version: link:../../../packages/offline-transactions + version: 1.0.10(typescript@5.9.3) '@tanstack/query-db-collection': specifier: ^1.0.16 - version: link:../../../packages/query-db-collection + version: 1.0.16(@tanstack/query-core@5.90.16)(typescript@5.9.3) '@tanstack/react-db': specifier: ^0.1.64 - version: link:../../../packages/react-db + version: 0.1.64(react@19.2.3)(typescript@5.9.3) '@tanstack/react-query': specifier: ^5.90.16 version: 5.90.16(react@19.2.3) @@ -261,10 +261,10 @@ importers: dependencies: '@tanstack/db': specifier: ^0.5.20 - version: link:../../../packages/db + version: 0.5.20(typescript@5.9.3) '@tanstack/react-db': specifier: ^0.1.64 - version: link:../../../packages/react-db + version: 0.1.64(react@19.2.3)(typescript@5.9.3) mitt: specifier: ^3.0.1 version: 3.0.1 @@ -301,10 +301,10 @@ importers: version: 5.90.16 '@tanstack/query-db-collection': specifier: ^1.0.16 - version: link:../../../packages/query-db-collection + version: 1.0.16(@tanstack/query-core@5.90.16)(typescript@5.9.3) '@tanstack/react-db': specifier: ^0.1.64 - version: link:../../../packages/react-db + version: 0.1.64(react@19.2.3)(typescript@5.9.3) '@tanstack/react-router': specifier: ^1.144.0 version: 1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -425,7 +425,7 @@ importers: version: 5.9.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) web-vitals: specifier: ^5.1.0 version: 5.1.0 @@ -434,25 +434,25 @@ importers: dependencies: '@tanstack/electric-db-collection': specifier: ^0.2.24 - version: link:../../../packages/electric-db-collection + version: 0.2.24(typescript@5.9.3) '@tanstack/query-core': specifier: ^5.90.16 version: 5.90.16 '@tanstack/query-db-collection': specifier: ^1.0.16 - version: link:../../../packages/query-db-collection + version: 1.0.16(@tanstack/query-core@5.90.16)(typescript@5.9.3) '@tanstack/react-db': specifier: ^0.1.64 - version: link:../../../packages/react-db + version: 0.1.64(react@19.2.3)(typescript@5.9.3) '@tanstack/react-router': specifier: ^1.144.0 version: 1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@tanstack/react-start': specifier: ^1.145.5 - version: 1.145.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 1.145.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@tanstack/trailbase-db-collection': specifier: ^0.1.64 - version: link:../../../packages/trailbase-db-collection + version: 0.1.64(typescript@5.9.3) cors: specifier: ^2.8.5 version: 2.8.5 @@ -555,25 +555,25 @@ importers: dependencies: '@tanstack/electric-db-collection': specifier: ^0.2.24 - version: link:../../../packages/electric-db-collection + version: 0.2.24(typescript@5.9.3) '@tanstack/query-core': specifier: ^5.90.16 version: 5.90.16 '@tanstack/query-db-collection': specifier: ^1.0.16 - version: link:../../../packages/query-db-collection + version: 1.0.16(@tanstack/query-core@5.90.16)(typescript@5.9.3) '@tanstack/solid-db': specifier: ^0.2.0 - version: link:../../../packages/solid-db + version: 0.2.0(solid-js@1.9.10)(typescript@5.9.3) '@tanstack/solid-router': specifier: ^1.144.0 version: 1.144.0(solid-js@1.9.10) '@tanstack/solid-start': specifier: ^1.145.5 - version: 1.145.5(@tanstack/react-router@1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(solid-js@1.9.10)(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 1.145.5(@tanstack/react-router@1.144.0)(solid-js@1.9.10)(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@tanstack/trailbase-db-collection': specifier: ^0.1.64 - version: link:../../../packages/trailbase-db-collection + version: 0.1.64(typescript@5.9.3) cors: specifier: ^2.8.5 version: 2.8.5 @@ -680,7 +680,7 @@ importers: version: 19.2.17(@angular/common@19.2.17(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/compiler@20.3.16)(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@19.2.17(@angular/common@19.2.17(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))) '@vitest/coverage-istanbul': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) rxjs: specifier: ^7.8.2 version: 7.8.2 @@ -708,7 +708,7 @@ importers: version: 0.22.2(@types/node@24.7.0)(@typescript-eslint/utils@8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(rollup@4.52.5)(typescript@5.9.3)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@vitest/coverage-istanbul': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) arktype: specifier: ^2.1.29 version: 2.1.29 @@ -751,7 +751,7 @@ importers: version: 7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) packages/db-ivm: dependencies: @@ -770,7 +770,7 @@ importers: version: 4.1.12 '@vitest/coverage-istanbul': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) packages/electric-db-collection: dependencies: @@ -798,7 +798,7 @@ importers: version: 8.16.0 '@vitest/coverage-istanbul': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) pg: specifier: ^8.16.3 version: 8.16.3 @@ -809,12 +809,18 @@ importers: specifier: workspace:* version: link:../db devDependencies: + '@react-native-community/netinfo': + specifier: ^11.4.1 + version: 11.4.1(react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)) '@types/node': specifier: ^24.6.2 version: 24.7.0 eslint: specifier: ^9.39.2 version: 9.39.2(jiti@2.6.1) + react-native: + specifier: ^0.83.1 + version: 0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) typescript: specifier: ^5.9.2 version: 5.9.3 @@ -851,7 +857,7 @@ importers: version: 4.1.12 '@vitest/coverage-istanbul': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) packages/query-db-collection: dependencies: @@ -870,7 +876,7 @@ importers: version: 5.90.16 '@vitest/coverage-istanbul': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) packages/react-db: dependencies: @@ -898,7 +904,7 @@ importers: version: 1.5.0 '@vitest/coverage-istanbul': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) react: specifier: ^19.2.3 version: 19.2.3 @@ -935,7 +941,7 @@ importers: version: 4.1.12 '@vitest/coverage-istanbul': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) packages/solid-db: dependencies: @@ -954,7 +960,7 @@ importers: version: 0.8.10(solid-js@1.9.10) '@vitest/coverage-istanbul': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) jsdom: specifier: ^27.4.0 version: 27.4.0 @@ -966,7 +972,7 @@ importers: version: 2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) packages/svelte-db: dependencies: @@ -982,7 +988,7 @@ importers: version: 6.2.1(svelte@5.46.1)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@vitest/coverage-istanbul': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) publint: specifier: ^0.3.16 version: 0.3.16 @@ -1019,7 +1025,7 @@ importers: version: 4.1.12 '@vitest/coverage-istanbul': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) packages/vue-db: dependencies: @@ -1035,7 +1041,7 @@ importers: version: 6.0.3(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vue@3.5.26(typescript@5.9.3)) '@vitest/coverage-istanbul': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) vue: specifier: ^3.5.26 version: 3.5.26(typescript@5.9.3) @@ -1312,6 +1318,10 @@ packages: resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} + engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.24.7': resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} @@ -1337,12 +1347,91 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.28.6': + resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.27.1': resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.27.1': resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} engines: {node: '>=6.9.0'} @@ -2568,10 +2657,42 @@ packages: resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} + '@isaacs/ttlcache@1.4.1': + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + '@istanbuljs/schema@0.1.3': resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} + '@jest/create-cache-key-function@29.7.0': + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.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/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.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} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -3178,6 +3299,67 @@ packages: resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} engines: {node: '>=18'} + '@react-native-community/netinfo@11.4.1': + resolution: {integrity: sha512-B0BYAkghz3Q2V09BF88RA601XursIEA111tnc2JOaN7axJWmNefmfjZqw/KdSxKZp7CZUuPpjBmz/WCR9uaHYg==} + peerDependencies: + react-native: '>=0.59' + + '@react-native/assets-registry@0.83.1': + resolution: {integrity: sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==} + engines: {node: '>= 20.19.4'} + + '@react-native/codegen@0.83.1': + resolution: {integrity: sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==} + engines: {node: '>= 20.19.4'} + peerDependencies: + '@babel/core': '*' + + '@react-native/community-cli-plugin@0.83.1': + resolution: {integrity: sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==} + engines: {node: '>= 20.19.4'} + peerDependencies: + '@react-native-community/cli': '*' + '@react-native/metro-config': '*' + peerDependenciesMeta: + '@react-native-community/cli': + optional: true + '@react-native/metro-config': + optional: true + + '@react-native/debugger-frontend@0.83.1': + resolution: {integrity: sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==} + engines: {node: '>= 20.19.4'} + + '@react-native/debugger-shell@0.83.1': + resolution: {integrity: sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==} + engines: {node: '>= 20.19.4'} + + '@react-native/dev-middleware@0.83.1': + resolution: {integrity: sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==} + engines: {node: '>= 20.19.4'} + + '@react-native/gradle-plugin@0.83.1': + resolution: {integrity: sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==} + engines: {node: '>= 20.19.4'} + + '@react-native/js-polyfills@0.83.1': + resolution: {integrity: sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==} + engines: {node: '>= 20.19.4'} + + '@react-native/normalize-colors@0.83.1': + resolution: {integrity: sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==} + + '@react-native/virtualized-lists@0.83.1': + resolution: {integrity: sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==} + engines: {node: '>= 20.19.4'} + peerDependencies: + '@types/react': ^19.2.0 + react: '*' + react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@rolldown/pluginutils@1.0.0-beta.40': resolution: {integrity: sha512-s3GeJKSQOwBlzdUrj4ISjJj5SfSh+aqn0wjOar4Bx95iV1ETI7F6S/5hLcfAxZ9kXDcyrAkxPlqmd1ZITttf+w==} @@ -3485,6 +3667,15 @@ packages: resolution: {integrity: sha512-HcWLW28yTMGXpwE9VLx9J+N2KEUaELadLrkPEEI9tpI5la70xNEVEsu/C+m3u7uoq4FulLqZQhgBCzR9IZhFpA==} engines: {node: '>=20.0.0'} + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} @@ -3716,11 +3907,30 @@ packages: peerDependencies: vite: ^5.2.0 || ^6 || ^7 + '@tanstack/angular-db@0.1.46': + resolution: {integrity: sha512-OTqSkMZzwkMDPUyVuLmTGz8D3Qtu9xPLnqUbj5AJ7kaswKxldgNEVG4OeUrMYd1kbIArZWk8BZytLVKAT93nGg==} + peerDependencies: + '@angular/core': '>=16.0.0' + rxjs: '>=6.0.0' + '@tanstack/config@0.22.2': resolution: {integrity: sha512-zP1b6xd864AOOJQ7u6r+kicohRc8dAyql6sBbQh2f2RjoEynAfn0GrMHGeqhl1LN8JThokCkcjfGnXbPEz3q3A==} engines: {node: '>=18'} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + '@tanstack/db-ivm@0.1.16': + resolution: {integrity: sha512-DIMfUoHtAcQ1IYghU+XqprDdzToy2d6qg3R5h0DJH60XPsmRTt0qOnlu/HVZqwCP7XL/b2UhRvyR5utz/N4KGg==} + peerDependencies: + typescript: '>=4.7' + + '@tanstack/db@0.5.20': + resolution: {integrity: sha512-vpN2JlqxdkvLQq2Uc5H0+JXfVTKaAxArOZATCbiDt+NaTw1kriA20rgJRJTPBA8RxQwNmZEUWKEYfjAn7+YI+g==} + peerDependencies: + typescript: '>=4.7' + + '@tanstack/electric-db-collection@0.2.24': + resolution: {integrity: sha512-Zp758uXGAMW4D45WMAf38tilun8F5iI06G75sCT7nkqZI4gyi4t/j44FaslLjiFQrZ4VspY5YFuBGk9Iy+Ph0w==} + '@tanstack/eslint-config@0.3.3': resolution: {integrity: sha512-8VFyAaIFV9onJcfc5yVj5WWl6DmN3W4m+t0Mb+nZrQmqHy+kDndw5O5Xv2BHVWRRPTqnhlJYh6wHWGh0R81ZzQ==} engines: {node: '>=18'} @@ -3735,6 +3945,9 @@ packages: resolution: {integrity: sha512-LS54XNyxyTs5m/pl1lkwlg7uZM3lvsv2FIIV1rsJgnfwVCnI+n4ZGZ2CcjNT13BPu/3hPP+iHmliBSscJxW5FQ==} engines: {node: '>=12'} + '@tanstack/offline-transactions@1.0.10': + resolution: {integrity: sha512-DXTaJX4P9X1xzXwscwgjXbBx9BnQK5ZRsifxE4DusJEJGwd/pNrkU1V6nmG/5+22/uEuT0aItwbSruT5cOY7Bw==} + '@tanstack/pacer-lite@0.2.0': resolution: {integrity: sha512-aT/tP+xu/FLSxI32LhyE3hF+3fB6iD1K3f57+y2tWAHAZ3jb+hqdCpXrpYBVdbgeTKJ9u1L+z4pW96R1/3VxBw==} engines: {node: '>=18'} @@ -3746,6 +3959,17 @@ packages: '@tanstack/query-core@5.90.16': resolution: {integrity: sha512-MvtWckSVufs/ja463/K4PyJeqT+HMlJWtw6PrCpywznd2NSgO3m4KwO9RqbFqGg6iDE8vVMFWMeQI4Io3eEYww==} + '@tanstack/query-db-collection@1.0.16': + resolution: {integrity: sha512-9LSmsojCmQr7UoKD8M4eoV6oZ0vV66A22BFAysw/D1jsJV28w255lnrE+CzrOF0trALWk2F/yW8Np+s6u7Jbtg==} + peerDependencies: + '@tanstack/query-core': ^5.0.0 + typescript: '>=4.7' + + '@tanstack/react-db@0.1.64': + resolution: {integrity: sha512-XT5Z0pimU4KfRgsVb0OIX83hgEU8NE0XZRwRRYtWDzZCvlZJjMwegWMKDOS1lzRtYvj7PDoZa7zyTyGXEgi2Wg==} + peerDependencies: + react: '>=16.8.0' + '@tanstack/react-query@5.90.16': resolution: {integrity: sha512-bpMGOmV4OPmif7TNMteU/Ehf/hoC0Kf98PDc0F4BZkFrEapRMEqI/V6YS0lyzwSV6PQpY1y4xxArUIfBW5LVxQ==} peerDependencies: @@ -3852,6 +4076,11 @@ packages: resolution: {integrity: sha512-N24G4LpfyK8dOlnP8BvNdkuxg1xQljkyl6PcrdiPSA301pOjatRT1y8wuCCJZKVVD8gkd0MpCZ0VEjRMGILOtA==} engines: {node: '>=12'} + '@tanstack/solid-db@0.2.0': + resolution: {integrity: sha512-48BU2H2WzRJTKAssEbeEqT9G94HkU9tQPtHFNlWW7Uk2kVqFXzztQh4iRpOspPHWLv4x60GM/lZmZP8ycfvN5g==} + peerDependencies: + solid-js: '>=1.9.0' + '@tanstack/solid-router@1.144.0': resolution: {integrity: sha512-8S2BFvYE4MLw5SXCNwL69NF/E9fdOQmXokQDsM6NTfDuJGGuNvXRTiVxgnk9ungEmVbMZ3kowXMGxOuuVbZnIg==} engines: {node: '>=12'} @@ -3907,6 +4136,11 @@ packages: '@tanstack/store@0.8.0': resolution: {integrity: sha512-Om+BO0YfMZe//X2z0uLF2j+75nQga6TpTJgLJQBiq85aOyZNIhkCgleNcud2KQg4k4v9Y9l+Uhru3qWMPGTOzQ==} + '@tanstack/trailbase-db-collection@0.1.64': + resolution: {integrity: sha512-PospVRrzrVbvScij/TAiPQeohfdwKVwsdGEn/bfK4edeoDUlNNQucNWhDMv35EMoigiQ7wA/EjgEh9m3nk0vkg==} + peerDependencies: + typescript: '>=4.7' + '@tanstack/typedoc-config@0.3.2': resolution: {integrity: sha512-4S6vIl2JmjvSQC87py/ZS9YWb1//1RRlHQRCUNLaGAdnptZYX7qJvSJS8GmAZ6nele2eRlpmPZGSw3MpCR22Tg==} engines: {node: '>=18'} @@ -4034,12 +4268,24 @@ packages: '@types/express@5.0.5': resolution: {integrity: sha512-LuIQOcb6UmnF7C1PCFmEU1u2hmiHL43fgFQX67sN3H4Z+0Yk0Neo++mFsBjhOAuLzvlQeqAAkeDOZrJs9rzumQ==} + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} '@types/http-errors@2.0.5': resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/jasmine@5.1.13': resolution: {integrity: sha512-MYCcDkruFc92LeYZux5BC0dmqo2jk+M5UIZ4/oFnAPCXN9mCcQhLyj7F3/Za7rocVyt5YRr1MmqJqFlvQ9LVcg==} @@ -4087,6 +4333,9 @@ packages: '@types/simple-peer@9.11.9': resolution: {integrity: sha512-6Gdl7TSS5oh9nuwKD4Pl8cSmaxWycYeZz9HLnJBNvIwWjZuGVsmHe9RwW3+9RxfhC1aIR9Z83DvaJoMw6rhkbg==} + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -4102,6 +4351,12 @@ packages: '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + '@typescript-eslint/eslint-plugin@8.47.0': resolution: {integrity: sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4436,6 +4691,10 @@ packages: resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} engines: {node: ^18.17.0 || >=20.5.0} + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -4490,6 +4749,9 @@ packages: resolution: {integrity: sha512-Y+moNhsqgLmvJdgTsO4GZNgsaDWv8AOGAaPeIeHKlDn/XunoAqYbA+XNpBd1dW8GOXAUDyxC9Rxc7AV4kpFcIg==} engines: {node: '>= 14.0.0'} + anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -4593,6 +4855,9 @@ packages: as-typed@1.3.2: resolution: {integrity: sha512-94ezeKlKB97OJUyMaU7dQUAB+Cmjlgr4T9/cxCoKaLM4F2HAmuIHm3Q5ClGCsX5PvRwCQehCzAa/6foRFXRbqA==} + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + asn1js@3.0.6: resolution: {integrity: sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA==} engines: {node: '>=12.0.0'} @@ -4623,11 +4888,39 @@ packages: babel-dead-code-elimination@1.0.11: resolution: {integrity: sha512-mwq3W3e/pKSI6TG8lXMiDWvEi1VXYlSBlJlB3l+I0bAb5u1RNUl88udos85eOPNK3m5EXK9uO7d2g08pesTySQ==} + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + 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-jsx-dom-expressions@0.40.1: resolution: {integrity: sha512-b4iHuirqK7RgaMzB2Lsl7MqrlDgQtVRSSazyrmx7wB3T759ggGjod5Rkok5MfHjQXhR7tRPmdwoeGPqBnW2KfA==} peerDependencies: '@babel/core': ^7.20.12 + babel-plugin-syntax-hermes-parser@0.32.0: + resolution: {integrity: sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==} + + babel-preset-current-node-syntax@1.2.0: + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} + peerDependencies: + '@babel/core': ^7.0.0 || ^8.0.0-0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + babel-preset-solid@1.9.9: resolution: {integrity: sha512-pCnxWrciluXCeli/dj5PIEHgbNzim3evtTn12snjqqg8QZWJNMjH1AWIp4iG/tbVjqQ72aBEymMSagvmgxubXw==} peerDependencies: @@ -4731,6 +5024,9 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + bson@6.10.4: resolution: {integrity: sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==} engines: {node: '>=16.20.1'} @@ -4769,6 +5065,14 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + caniuse-lite@1.0.30001755: resolution: {integrity: sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==} @@ -4818,6 +5122,17 @@ packages: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} + chrome-launcher@0.15.2: + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} + hasBin: true + + chromium-edge-launcher@0.2.0: + resolution: {integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==} + + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -4870,6 +5185,10 @@ packages: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + commander@13.1.0: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} @@ -5358,6 +5677,9 @@ packages: err-code@3.0.1: resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + es-abstract@1.24.0: resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} engines: {node: '>= 0.4'} @@ -5425,6 +5747,10 @@ packages: escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -5596,6 +5922,10 @@ packages: resolution: {integrity: sha512-Vi6aIiAmakzx81JAwhw8L988aSX5a3ZqqVjHyZa9xFU6P4oT1IotoDreWtjNlS+fvEnASvyIQT565nmkOtns/Q==} engines: {node: '>=16'} + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -5678,6 +6008,14 @@ packages: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} + fb-dotslash@0.5.8: + resolution: {integrity: sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==} + engines: {node: '>=20'} + hasBin: true + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fd-package-json@2.0.0: resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} @@ -5731,6 +6069,9 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flow-enums-runtime@0.0.6: + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} + follow-redirects@1.15.11: resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} @@ -5837,6 +6178,10 @@ packages: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} @@ -5963,6 +6308,15 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true + hermes-compiler@0.14.0: + resolution: {integrity: sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==} + + hermes-estree@0.32.0: + resolution: {integrity: sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==} + + hermes-parser@0.32.0: + resolution: {integrity: sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==} + hosted-git-info@8.1.0: resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==} engines: {node: ^18.17.0 || >=20.5.0} @@ -5971,9 +6325,9 @@ packages: resolution: {integrity: sha512-gEf705MZLrDPkbbhi8PnoO4ZwYgKoNL+ISZ3AjZMht2r3N5tuTwncyDi6Fv2/qDnMmZxgs0yI8WDOyR8q3G+SQ==} engines: {node: ^20.17.0 || >=22.9.0} - html-encoding-sniffer@6.0.0: - resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} html-entities@2.3.3: resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} @@ -6056,6 +6410,11 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + image-size@1.2.1: + resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} + engines: {node: '>=16.x'} + hasBin: true + immutable@5.1.3: resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} @@ -6097,6 +6456,9 @@ packages: resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} engines: {node: '>= 0.10'} + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + ip-address@10.0.1: resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} engines: {node: '>= 12'} @@ -6148,6 +6510,11 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -6294,6 +6661,10 @@ packages: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -6358,6 +6729,42 @@ packages: jasmine-core@5.13.0: resolution: {integrity: sha512-vsYjfh7lyqvZX5QgqKc4YH8phs7g96Z8bsdIFNEU3VqXhlHaq+vov/Fgn/sr6MiUczdZkyXRC3TX369Ll4Nzbw==} + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.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-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.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-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.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} + jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true @@ -6385,6 +6792,9 @@ packages: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true + jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + jsdom@27.4.0: resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} @@ -6501,10 +6911,17 @@ packages: resolution: {integrity: sha512-QUOgl5ZrS9IRuhq5FvOKFSsD/3+IA6MLE81/bOOTRA/YQpKDza2sFdN5g6JCB9BOpqMJDGefLCQ9F12hRS13TA==} engines: {node: '>=20.0.0'} + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lighthouse-logger@1.4.2: + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + lightningcss-android-arm64@1.30.2: resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} engines: {node: '>= 12.0.0'} @@ -6631,6 +7048,9 @@ packages: lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -6697,6 +7117,9 @@ packages: resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==} engines: {node: ^18.17.0 || >=20.5.0} + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + markdown-it@14.1.0: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true @@ -6709,6 +7132,9 @@ packages: engines: {node: '>= 20'} hasBin: true + marky@1.3.0: + resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -6727,6 +7153,9 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} + memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + memory-pager@1.5.0: resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} @@ -6756,6 +7185,64 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} + metro-babel-transformer@0.83.3: + resolution: {integrity: sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==} + engines: {node: '>=20.19.4'} + + metro-cache-key@0.83.3: + resolution: {integrity: sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==} + engines: {node: '>=20.19.4'} + + metro-cache@0.83.3: + resolution: {integrity: sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==} + engines: {node: '>=20.19.4'} + + metro-config@0.83.3: + resolution: {integrity: sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==} + engines: {node: '>=20.19.4'} + + metro-core@0.83.3: + resolution: {integrity: sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==} + engines: {node: '>=20.19.4'} + + metro-file-map@0.83.3: + resolution: {integrity: sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==} + engines: {node: '>=20.19.4'} + + metro-minify-terser@0.83.3: + resolution: {integrity: sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==} + engines: {node: '>=20.19.4'} + + metro-resolver@0.83.3: + resolution: {integrity: sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==} + engines: {node: '>=20.19.4'} + + metro-runtime@0.83.3: + resolution: {integrity: sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==} + engines: {node: '>=20.19.4'} + + metro-source-map@0.83.3: + resolution: {integrity: sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==} + engines: {node: '>=20.19.4'} + + metro-symbolicate@0.83.3: + resolution: {integrity: sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==} + engines: {node: '>=20.19.4'} + hasBin: true + + metro-transform-plugins@0.83.3: + resolution: {integrity: sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==} + engines: {node: '>=20.19.4'} + + metro-transform-worker@0.83.3: + resolution: {integrity: sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==} + engines: {node: '>=20.19.4'} + + metro@0.83.3: + resolution: {integrity: sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==} + engines: {node: '>=20.19.4'} + hasBin: true + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -6994,6 +7481,9 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} @@ -7049,6 +7539,13 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + + ob1@0.83.3: + resolution: {integrity: sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==} + engines: {node: '>=20.19.4'} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -7104,6 +7601,10 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} + open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -7317,6 +7818,10 @@ packages: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + piscina@5.1.3: resolution: {integrity: sha512-0u3N7H4+hbr40KjuVn2uNhOcthu/9usKhnw5vT3J7ply79v3D3M8naI00el9Klcy16x557VsEkkUQaHCWFXC/g==} engines: {node: '>=20.x'} @@ -7381,6 +7886,10 @@ packages: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + proc-log@5.0.0: resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -7389,6 +7898,9 @@ packages: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} + promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -7447,6 +7959,9 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -7462,6 +7977,9 @@ packages: resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==} engines: {node: '>= 0.10'} + react-devtools-core@6.1.5: + resolution: {integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==} + react-dom@19.2.3: resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} peerDependencies: @@ -7473,6 +7991,24 @@ packages: react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-native@0.83.1: + resolution: {integrity: sha512-mL1q5HPq5cWseVhWRLl+Fwvi5z1UO+3vGOpjr+sHFwcUletPRZ5Kv+d0tUfqHmvi73/53NjlQqX1Pyn4GguUfA==} + engines: {node: '>= 20.19.4'} + hasBin: true + peerDependencies: + '@types/react': ^19.1.1 + react: ^19.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + react-refresh@0.18.0: resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} engines: {node: '>=0.10.0'} @@ -7523,6 +8059,9 @@ packages: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + regexp.prototype.flags@1.5.4: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} @@ -7680,6 +8219,10 @@ packages: resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} engines: {node: '>= 18'} + serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} + seroval-plugins@1.3.3: resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==} engines: {node: '>=10'} @@ -7897,6 +8440,10 @@ packages: source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -7943,9 +8490,20 @@ packages: resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} engines: {node: '>=12.0.0'} + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + stacktrace-parser@0.1.11: + resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} + engines: {node: '>=6'} + statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -8123,6 +8681,10 @@ packages: engines: {node: '>=10'} hasBin: true + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + test-exclude@7.0.1: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} @@ -8131,6 +8693,9 @@ packages: resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} engines: {node: '>=8'} + throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} @@ -8177,6 +8742,9 @@ packages: resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -8258,10 +8826,18 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} + type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -8575,6 +9151,9 @@ packages: jsdom: optional: true + vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + void-elements@2.0.1: resolution: {integrity: sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==} engines: {node: '>=0.10.0'} @@ -8604,6 +9183,9 @@ packages: resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} engines: {node: 20 || >=22} + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + watchpack@2.4.4: resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} engines: {node: '>=10.13.0'} @@ -8644,6 +9226,9 @@ packages: engines: {node: '>=18'} deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} @@ -8722,12 +9307,28 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - engines: {node: '>=10.0.0'} + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' peerDependenciesMeta: bufferutil: optional: true @@ -8959,7 +9560,7 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/build@20.3.13(@angular/compiler-cli@20.3.15(@angular/compiler@20.3.16)(typescript@5.9.3))(@angular/compiler@20.3.16)(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@19.2.17(@angular/common@19.2.17(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0)))(@types/node@24.7.0)(chokidar@4.0.3)(jiti@2.6.1)(karma@6.4.4)(lightningcss@1.30.2)(postcss@8.5.6)(tailwindcss@4.1.18)(terser@5.44.0)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@3.2.4)(yaml@2.8.1)': + '@angular/build@20.3.13(@angular/compiler-cli@20.3.15(@angular/compiler@20.3.16)(typescript@5.9.3))(@angular/compiler@20.3.16)(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(@angular/platform-browser@19.2.17(@angular/common@19.2.17(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2))(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0)))(@types/node@24.7.0)(chokidar@4.0.3)(jiti@2.6.1)(karma@6.4.4)(lightningcss@1.30.2)(postcss@8.5.6)(tailwindcss@4.1.18)(terser@5.44.0)(tslib@2.8.1)(tsx@4.21.0)(typescript@5.9.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(yaml@2.8.1)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2003.13(chokidar@4.0.3) @@ -8998,7 +9599,7 @@ snapshots: lmdb: 3.4.2 postcss: 8.5.6 tailwindcss: 4.1.18 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - chokidar @@ -9225,6 +9826,8 @@ snapshots: '@babel/helper-plugin-utils@7.27.1': {} + '@babel/helper-plugin-utils@7.28.6': {} + '@babel/helper-split-export-declaration@7.24.7': dependencies: '@babel/types': 7.28.5 @@ -9244,11 +9847,86 @@ snapshots: dependencies: '@babel/types': 7.28.5 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -9872,10 +10550,10 @@ snapshots: '@exodus/bytes@1.7.0': {} - '@fast-check/vitest@0.2.4(vitest@3.2.4)': + '@fast-check/vitest@0.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: fast-check: 3.23.2 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) '@firebase/ai@1.4.1(@firebase/app-types@0.9.3)(@firebase/app@0.13.2)': dependencies: @@ -10377,8 +11055,71 @@ snapshots: dependencies: minipass: 7.1.2 + '@isaacs/ttlcache@1.4.1': {} + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + '@istanbuljs/schema@0.1.3': {} + '@jest/create-cache-key-function@29.7.0': + dependencies: + '@jest/types': 29.6.3 + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 24.7.0 + jest-mock: 29.7.0 + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 24.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.28.5 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.31 + babel-plugin-istanbul: 6.1.1 + 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: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 24.7.0 + '@types/yargs': 17.0.35 + chalk: 4.1.2 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -10395,7 +11136,6 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - optional: true '@jridgewell/sourcemap-codec@1.5.5': {} @@ -10987,6 +11727,77 @@ snapshots: '@publint/pack@0.1.2': {} + '@react-native-community/netinfo@11.4.1(react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))': + dependencies: + react-native: 0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) + + '@react-native/assets-registry@0.83.1': {} + + '@react-native/codegen@0.83.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/parser': 7.28.5 + glob: 7.2.3 + hermes-parser: 0.32.0 + invariant: 2.2.4 + nullthrows: 1.1.1 + yargs: 17.7.2 + + '@react-native/community-cli-plugin@0.83.1': + dependencies: + '@react-native/dev-middleware': 0.83.1 + debug: 4.4.3 + invariant: 2.2.4 + metro: 0.83.3 + metro-config: 0.83.3 + metro-core: 0.83.3 + semver: 7.7.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@react-native/debugger-frontend@0.83.1': {} + + '@react-native/debugger-shell@0.83.1': + dependencies: + cross-spawn: 7.0.6 + fb-dotslash: 0.5.8 + + '@react-native/dev-middleware@0.83.1': + dependencies: + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.83.1 + '@react-native/debugger-shell': 0.83.1 + chrome-launcher: 0.15.2 + chromium-edge-launcher: 0.2.0 + connect: 3.7.0 + debug: 4.4.3 + invariant: 2.2.4 + nullthrows: 1.1.1 + open: 7.4.2 + serve-static: 1.16.2 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@react-native/gradle-plugin@0.83.1': {} + + '@react-native/js-polyfills@0.83.1': {} + + '@react-native/normalize-colors@0.83.1': {} + + '@react-native/virtualized-lists@0.83.1(@types/react@19.2.7)(react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3)': + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react: 19.2.3 + react-native: 0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.7 + '@rolldown/pluginutils@1.0.0-beta.40': {} '@rolldown/pluginutils@1.0.0-beta.53': {} @@ -11238,6 +12049,16 @@ snapshots: '@peculiar/asn1-x509': 2.6.0 '@peculiar/x509': 1.14.2 + '@sinclair/typebox@0.27.8': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + '@socket.io/component-emitter@3.1.2': {} '@solid-devtools/debugger@0.28.1(solid-js@1.9.10)': @@ -11489,6 +12310,14 @@ snapshots: tailwindcss: 4.1.18 vite: 7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + '@tanstack/angular-db@0.1.46(@angular/core@19.2.18(rxjs@7.8.2)(zone.js@0.16.0))(rxjs@7.8.2)(typescript@5.9.3)': + dependencies: + '@angular/core': 19.2.18(rxjs@7.8.2)(zone.js@0.16.0) + '@tanstack/db': 0.5.20(typescript@5.9.3) + rxjs: 7.8.2 + transitivePeerDependencies: + - typescript + '@tanstack/config@0.22.2(@types/node@24.7.0)(@typescript-eslint/utils@8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(rollup@4.52.5)(typescript@5.9.3)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@tanstack/eslint-config': 0.3.3(@typescript-eslint/utils@8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) @@ -11505,6 +12334,30 @@ snapshots: - typescript - vite + '@tanstack/db-ivm@0.1.16(typescript@5.9.3)': + dependencies: + fractional-indexing: 3.2.0 + sorted-btree: 1.8.1 + typescript: 5.9.3 + + '@tanstack/db@0.5.20(typescript@5.9.3)': + dependencies: + '@standard-schema/spec': 1.1.0 + '@tanstack/db-ivm': 0.1.16(typescript@5.9.3) + '@tanstack/pacer-lite': 0.2.0 + typescript: 5.9.3 + + '@tanstack/electric-db-collection@0.2.24(typescript@5.9.3)': + dependencies: + '@electric-sql/client': 1.3.1 + '@standard-schema/spec': 1.1.0 + '@tanstack/db': 0.5.20(typescript@5.9.3) + '@tanstack/store': 0.8.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + - typescript + '@tanstack/eslint-config@0.3.3(@typescript-eslint/utils@8.51.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint/js': 9.39.2 @@ -11539,6 +12392,12 @@ snapshots: '@tanstack/history@1.141.0': {} + '@tanstack/offline-transactions@1.0.10(typescript@5.9.3)': + dependencies: + '@tanstack/db': 0.5.20(typescript@5.9.3) + transitivePeerDependencies: + - typescript + '@tanstack/pacer-lite@0.2.0': {} '@tanstack/publish-config@0.2.2': @@ -11552,6 +12411,21 @@ snapshots: '@tanstack/query-core@5.90.16': {} + '@tanstack/query-db-collection@1.0.16(@tanstack/query-core@5.90.16)(typescript@5.9.3)': + dependencies: + '@standard-schema/spec': 1.1.0 + '@tanstack/db': 0.5.20(typescript@5.9.3) + '@tanstack/query-core': 5.90.16 + typescript: 5.9.3 + + '@tanstack/react-db@0.1.64(react@19.2.3)(typescript@5.9.3)': + dependencies: + '@tanstack/db': 0.5.20(typescript@5.9.3) + react: 19.2.3 + use-sync-external-store: 1.6.0(react@19.2.3) + transitivePeerDependencies: + - typescript + '@tanstack/react-query@5.90.16(react@19.2.3)': dependencies: '@tanstack/query-core': 5.90.16 @@ -11630,6 +12504,26 @@ snapshots: - vite-plugin-solid - webpack + '@tanstack/react-start@1.145.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': + dependencies: + '@tanstack/react-router': 1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@tanstack/react-start-client': 1.145.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@tanstack/react-start-server': 1.145.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@tanstack/router-utils': 1.143.11 + '@tanstack/start-client-core': 1.145.0 + '@tanstack/start-plugin-core': 1.145.5(@tanstack/react-router@1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + '@tanstack/start-server-core': 1.145.5 + pathe: 2.0.3 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + vite: 7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + transitivePeerDependencies: + - '@rsbuild/core' + - crossws + - supports-color + - vite-plugin-solid + - webpack + '@tanstack/react-store@0.8.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@tanstack/store': 0.8.0 @@ -11693,6 +12587,29 @@ snapshots: transitivePeerDependencies: - supports-color + '@tanstack/router-plugin@1.145.4(@tanstack/react-router@1.144.0)(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': + dependencies: + '@babel/core': 7.28.5 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + '@tanstack/router-core': 1.144.0 + '@tanstack/router-generator': 1.145.4 + '@tanstack/router-utils': 1.143.11 + '@tanstack/virtual-file-routes': 1.145.4 + babel-dead-code-elimination: 1.0.11 + chokidar: 3.6.0 + unplugin: 2.3.10 + zod: 3.25.76 + optionalDependencies: + '@tanstack/react-router': 1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + vite: 7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite-plugin-solid: 2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + transitivePeerDependencies: + - supports-color + '@tanstack/router-utils@1.143.11': dependencies: '@babel/core': 7.28.5 @@ -11705,6 +12622,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@tanstack/solid-db@0.2.0(solid-js@1.9.10)(typescript@5.9.3)': + dependencies: + '@solid-primitives/map': 0.7.2(solid-js@1.9.10) + '@tanstack/db': 0.5.20(typescript@5.9.3) + solid-js: 1.9.10 + transitivePeerDependencies: + - typescript + '@tanstack/solid-router@1.144.0(solid-js@1.9.10)': dependencies: '@solid-devtools/logger': 0.9.11(solid-js@1.9.10) @@ -11739,13 +12664,13 @@ snapshots: transitivePeerDependencies: - crossws - '@tanstack/solid-start@1.145.5(@tanstack/react-router@1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(solid-js@1.9.10)(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': + '@tanstack/solid-start@1.145.5(@tanstack/react-router@1.144.0)(solid-js@1.9.10)(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@tanstack/solid-router': 1.144.0(solid-js@1.9.10) '@tanstack/solid-start-client': 1.145.0(solid-js@1.9.10) '@tanstack/solid-start-server': 1.145.5(solid-js@1.9.10) '@tanstack/start-client-core': 1.145.0 - '@tanstack/start-plugin-core': 1.145.5(@tanstack/react-router@1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + '@tanstack/start-plugin-core': 1.145.5(@tanstack/react-router@1.144.0)(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@tanstack/start-server-core': 1.145.5 pathe: 2.0.3 solid-js: 1.9.10 @@ -11805,27 +12730,100 @@ snapshots: - vite-plugin-solid - webpack - '@tanstack/start-server-core@1.145.5': + '@tanstack/start-plugin-core@1.145.5(@tanstack/react-router@1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: - '@tanstack/history': 1.141.0 + '@babel/code-frame': 7.27.1 + '@babel/core': 7.28.5 + '@babel/types': 7.28.5 + '@rolldown/pluginutils': 1.0.0-beta.40 '@tanstack/router-core': 1.144.0 + '@tanstack/router-generator': 1.145.4 + '@tanstack/router-plugin': 1.145.4(@tanstack/react-router@1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + '@tanstack/router-utils': 1.143.11 '@tanstack/start-client-core': 1.145.0 - '@tanstack/start-storage-context': 1.144.0 - h3-v2: h3@2.0.1-rc.7 - seroval: 1.4.2 - tiny-invariant: 1.3.3 + '@tanstack/start-server-core': 1.145.5 + babel-dead-code-elimination: 1.0.11 + cheerio: 1.1.2 + exsolve: 1.0.7 + pathe: 2.0.3 + srvx: 0.10.0 + tinyglobby: 0.2.15 + ufo: 1.6.1 + vite: 7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitefu: 1.1.1(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + xmlbuilder2: 4.0.3 + zod: 3.25.76 transitivePeerDependencies: + - '@rsbuild/core' + - '@tanstack/react-router' - crossws + - supports-color + - vite-plugin-solid + - webpack - '@tanstack/start-storage-context@1.144.0': + '@tanstack/start-plugin-core@1.145.5(@tanstack/react-router@1.144.0)(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.28.5 + '@babel/types': 7.28.5 + '@rolldown/pluginutils': 1.0.0-beta.40 '@tanstack/router-core': 1.144.0 - - '@tanstack/store@0.8.0': {} - - '@tanstack/typedoc-config@0.3.2(typescript@5.9.3)': - dependencies: - typedoc: 0.28.14(typescript@5.9.3) + '@tanstack/router-generator': 1.145.4 + '@tanstack/router-plugin': 1.145.4(@tanstack/react-router@1.144.0)(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + '@tanstack/router-utils': 1.143.11 + '@tanstack/start-client-core': 1.145.0 + '@tanstack/start-server-core': 1.145.5 + babel-dead-code-elimination: 1.0.11 + cheerio: 1.1.2 + exsolve: 1.0.7 + pathe: 2.0.3 + srvx: 0.10.0 + tinyglobby: 0.2.15 + ufo: 1.6.1 + vite: 7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitefu: 1.1.1(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + xmlbuilder2: 4.0.3 + zod: 3.25.76 + transitivePeerDependencies: + - '@rsbuild/core' + - '@tanstack/react-router' + - crossws + - supports-color + - vite-plugin-solid + - webpack + + '@tanstack/start-server-core@1.145.5': + dependencies: + '@tanstack/history': 1.141.0 + '@tanstack/router-core': 1.144.0 + '@tanstack/start-client-core': 1.145.0 + '@tanstack/start-storage-context': 1.144.0 + h3-v2: h3@2.0.1-rc.7 + seroval: 1.4.2 + tiny-invariant: 1.3.3 + transitivePeerDependencies: + - crossws + + '@tanstack/start-storage-context@1.144.0': + dependencies: + '@tanstack/router-core': 1.144.0 + + '@tanstack/store@0.8.0': {} + + '@tanstack/trailbase-db-collection@0.1.64(typescript@5.9.3)': + dependencies: + '@standard-schema/spec': 1.1.0 + '@tanstack/db': 0.5.20(typescript@5.9.3) + '@tanstack/store': 0.8.0 + debug: 4.4.3 + trailbase: 0.8.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@tanstack/typedoc-config@0.3.2(typescript@5.9.3)': + dependencies: + typedoc: 0.28.14(typescript@5.9.3) typedoc-plugin-frontmatter: 1.3.0(typedoc-plugin-markdown@4.9.0(typedoc@0.28.14(typescript@5.9.3))) typedoc-plugin-markdown: 4.9.0(typedoc@0.28.14(typescript@5.9.3)) transitivePeerDependencies: @@ -12003,12 +13001,26 @@ snapshots: '@types/express-serve-static-core': 5.0.7 '@types/serve-static': 1.15.8 + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 24.7.0 + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 '@types/http-errors@2.0.5': {} + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + '@types/jasmine@5.1.13': {} '@types/json-schema@7.0.11': {} @@ -12058,6 +13070,8 @@ snapshots: dependencies: '@types/node': 24.7.0 + '@types/stack-utils@2.0.3': {} + '@types/unist@3.0.3': {} '@types/use-sync-external-store@1.5.0': {} @@ -12072,6 +13086,12 @@ snapshots: dependencies: '@types/node': 24.7.0 + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.35': + dependencies: + '@types/yargs-parser': 21.0.3 + '@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -12339,7 +13359,7 @@ snapshots: vite: 7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) vue: 3.5.26(typescript@5.9.3) - '@vitest/coverage-istanbul@3.2.4(vitest@3.2.4)': + '@vitest/coverage-istanbul@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@istanbuljs/schema': 0.1.3 debug: 4.4.3 @@ -12351,7 +13371,7 @@ snapshots: magicast: 0.3.5 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12501,6 +13521,10 @@ snapshots: abbrev@3.0.1: {} + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + accepts@1.3.8: dependencies: mime-types: 2.1.35 @@ -12576,6 +13600,8 @@ snapshots: '@algolia/requester-fetch': 5.35.0 '@algolia/requester-node-http': 5.35.0 + anser@1.4.10: {} + ansi-colors@4.1.3: {} ansi-escapes@4.3.2: @@ -12694,6 +13720,8 @@ snapshots: as-typed@1.3.2: {} + asap@2.0.6: {} + asn1js@3.0.6: dependencies: pvtsutils: 1.3.6 @@ -12727,6 +13755,36 @@ snapshots: transitivePeerDependencies: - supports-color + babel-jest@29.7.0(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.28.5) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.28.6 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.28.0 + babel-plugin-jsx-dom-expressions@0.40.1(@babel/core@7.28.5): dependencies: '@babel/core': 7.28.5 @@ -12737,6 +13795,35 @@ snapshots: parse5: 7.3.0 validate-html-nesting: 1.2.3 + babel-plugin-syntax-hermes-parser@0.32.0: + dependencies: + hermes-parser: 0.32.0 + + babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5) + + babel-preset-jest@29.6.3(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) + babel-preset-solid@1.9.9(@babel/core@7.28.5)(solid-js@1.9.10): dependencies: '@babel/core': 7.28.5 @@ -12864,6 +13951,10 @@ snapshots: node-releases: 2.0.27 update-browserslist-db: 1.1.4(browserslist@4.28.0) + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + bson@6.10.4: {} buffer-from@1.1.2: {} @@ -12911,6 +14002,10 @@ snapshots: callsites@3.1.0: {} + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + caniuse-lite@1.0.30001755: {} chai@5.3.3: @@ -12979,6 +14074,28 @@ snapshots: chownr@3.0.0: {} + chrome-launcher@0.15.2: + dependencies: + '@types/node': 24.7.0 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + transitivePeerDependencies: + - supports-color + + chromium-edge-launcher@0.2.0: + dependencies: + '@types/node': 24.7.0 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + mkdirp: 1.0.4 + rimraf: 3.0.2 + transitivePeerDependencies: + - supports-color + + ci-info@2.0.0: {} + ci-info@3.9.0: {} cli-cursor@5.0.0: @@ -13027,10 +14144,11 @@ snapshots: commander@11.1.0: optional: true + commander@12.1.0: {} + commander@13.1.0: {} - commander@2.20.3: - optional: true + commander@2.20.3: {} comment-parser@1.4.1: {} @@ -13408,6 +14526,10 @@ snapshots: err-code@3.0.1: {} + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + es-abstract@1.24.0: dependencies: array-buffer-byte-length: 1.0.2 @@ -13634,6 +14756,8 @@ snapshots: escape-html@1.0.3: {} + escape-string-regexp@2.0.0: {} + escape-string-regexp@4.0.0: {} eslint-compat-utils@0.5.1(eslint@9.39.2(jiti@2.6.1)): @@ -13849,6 +14973,8 @@ snapshots: array-push-at-sort-position: 4.0.1 binary-decision-diagram: 3.2.0 + event-target-shim@5.0.1: {} + eventemitter3@4.0.7: {} eventemitter3@5.0.1: {} @@ -13993,6 +15119,12 @@ snapshots: dependencies: websocket-driver: 0.7.4 + fb-dotslash@0.5.8: {} + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + fd-package-json@2.0.0: dependencies: walk-up-path: 4.0.0 @@ -14096,6 +15228,8 @@ snapshots: flatted@3.3.3: {} + flow-enums-runtime@0.0.6: {} + follow-redirects@1.15.11: {} for-each@0.3.5: @@ -14205,6 +15339,8 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 + get-package-type@0.1.0: {} + get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 @@ -14321,6 +15457,14 @@ snapshots: he@1.2.0: {} + hermes-compiler@0.14.0: {} + + hermes-estree@0.32.0: {} + + hermes-parser@0.32.0: + dependencies: + hermes-estree: 0.32.0 + hosted-git-info@8.1.0: dependencies: lru-cache: 10.4.3 @@ -14329,11 +15473,9 @@ snapshots: dependencies: lru-cache: 11.2.4 - html-encoding-sniffer@6.0.0: + html-encoding-sniffer@4.0.0: dependencies: - '@exodus/bytes': 1.7.0 - transitivePeerDependencies: - - '@exodus/crypto' + whatwg-encoding: 3.1.1 html-entities@2.3.3: {} @@ -14416,6 +15558,10 @@ snapshots: ignore@7.0.5: {} + image-size@1.2.1: + dependencies: + queue: 6.0.2 + immutable@5.1.3: {} import-fresh@3.3.1: @@ -14448,6 +15594,10 @@ snapshots: interpret@1.4.0: {} + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + ip-address@10.0.1: {} ipaddr.js@1.9.1: {} @@ -14505,6 +15655,8 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 + is-docker@2.2.1: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: @@ -14630,6 +15782,10 @@ snapshots: is-windows@1.0.2: {} + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + isarray@2.0.5: {} isbinaryfile@4.0.10: {} @@ -14712,6 +15868,78 @@ snapshots: jasmine-core@5.13.0: {} + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 24.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 24.7.0 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 24.7.0 + jest-util: 29.7.0 + + jest-regex-util@29.6.3: {} + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 24.7.0 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-worker@29.7.0: + dependencies: + '@types/node': 24.7.0 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + jiti@2.6.1: {} jju@1.4.0: {} @@ -14733,6 +15961,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsc-safe-url@0.2.4: {} + jsdom@27.4.0: dependencies: '@acemir/cssom': 0.9.30 @@ -14741,7 +15971,7 @@ snapshots: cssstyle: 5.3.5 data-urls: 6.0.0 decimal.js: 10.6.0 - html-encoding-sniffer: 6.0.0 + html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 @@ -14891,11 +16121,20 @@ snapshots: kysely@0.28.8: {} + leven@3.1.0: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + lighthouse-logger@1.4.2: + dependencies: + debug: 2.6.9 + marky: 1.3.0 + transitivePeerDependencies: + - supports-color + lightningcss-android-arm64@1.30.2: optional: true @@ -15026,6 +16265,8 @@ snapshots: lodash.startcase@4.4.0: {} + lodash.throttle@4.1.1: {} + lodash@4.17.21: {} log-symbols@6.0.0: @@ -15113,6 +16354,10 @@ snapshots: transitivePeerDependencies: - supports-color + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + markdown-it@14.1.0: dependencies: argparse: 2.0.1 @@ -15129,6 +16374,8 @@ snapshots: marked@17.0.1: {} + marky@1.3.0: {} + math-intrinsics@1.1.0: {} mdn-data@2.12.2: {} @@ -15139,6 +16386,8 @@ snapshots: media-typer@1.1.0: {} + memoize-one@5.2.1: {} + memory-pager@1.5.0: {} meow@12.1.1: {} @@ -15157,6 +16406,181 @@ snapshots: methods@1.1.2: {} + metro-babel-transformer@0.83.3: + dependencies: + '@babel/core': 7.28.5 + flow-enums-runtime: 0.0.6 + hermes-parser: 0.32.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + metro-cache-key@0.83.3: + dependencies: + flow-enums-runtime: 0.0.6 + + metro-cache@0.83.3: + dependencies: + exponential-backoff: 3.1.2 + flow-enums-runtime: 0.0.6 + https-proxy-agent: 7.0.6 + metro-core: 0.83.3 + transitivePeerDependencies: + - supports-color + + metro-config@0.83.3: + dependencies: + connect: 3.7.0 + flow-enums-runtime: 0.0.6 + jest-validate: 29.7.0 + metro: 0.83.3 + metro-cache: 0.83.3 + metro-core: 0.83.3 + metro-runtime: 0.83.3 + yaml: 2.8.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + metro-core@0.83.3: + dependencies: + flow-enums-runtime: 0.0.6 + lodash.throttle: 4.1.1 + metro-resolver: 0.83.3 + + metro-file-map@0.83.3: + dependencies: + debug: 4.4.3 + fb-watchman: 2.0.2 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-worker: 29.7.0 + micromatch: 4.0.8 + nullthrows: 1.1.1 + walker: 1.0.8 + transitivePeerDependencies: + - supports-color + + metro-minify-terser@0.83.3: + dependencies: + flow-enums-runtime: 0.0.6 + terser: 5.44.0 + + metro-resolver@0.83.3: + dependencies: + flow-enums-runtime: 0.0.6 + + metro-runtime@0.83.3: + dependencies: + '@babel/runtime': 7.28.4 + flow-enums-runtime: 0.0.6 + + metro-source-map@0.83.3: + dependencies: + '@babel/traverse': 7.28.5 + '@babel/traverse--for-generate-function-map': '@babel/traverse@7.28.5' + '@babel/types': 7.28.5 + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-symbolicate: 0.83.3 + nullthrows: 1.1.1 + ob1: 0.83.3 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + metro-symbolicate@0.83.3: + dependencies: + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-source-map: 0.83.3 + nullthrows: 1.1.1 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + metro-transform-plugins@0.83.3: + dependencies: + '@babel/core': 7.28.5 + '@babel/generator': 7.28.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.5 + flow-enums-runtime: 0.0.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + metro-transform-worker@0.83.3: + dependencies: + '@babel/core': 7.28.5 + '@babel/generator': 7.28.5 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + flow-enums-runtime: 0.0.6 + metro: 0.83.3 + metro-babel-transformer: 0.83.3 + metro-cache: 0.83.3 + metro-cache-key: 0.83.3 + metro-minify-terser: 0.83.3 + metro-source-map: 0.83.3 + metro-transform-plugins: 0.83.3 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + metro@0.83.3: + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.28.5 + '@babel/generator': 7.28.5 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + accepts: 1.3.8 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 4.4.3 + error-stack-parser: 2.1.4 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + hermes-parser: 0.32.0 + image-size: 1.2.1 + invariant: 2.2.4 + jest-worker: 29.7.0 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.83.3 + metro-cache: 0.83.3 + metro-cache-key: 0.83.3 + metro-config: 0.83.3 + metro-core: 0.83.3 + metro-file-map: 0.83.3 + metro-resolver: 0.83.3 + metro-runtime: 0.83.3 + metro-source-map: 0.83.3 + metro-symbolicate: 0.83.3 + metro-transform-plugins: 0.83.3 + metro-transform-worker: 0.83.3 + mime-types: 2.1.35 + nullthrows: 1.1.1 + serialize-error: 2.1.0 + source-map: 0.5.7 + throat: 5.0.0 + ws: 7.5.10 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -15361,6 +16785,8 @@ snapshots: transitivePeerDependencies: - supports-color + node-int64@0.4.0: {} + node-releases@2.0.27: {} nopt@8.1.0: @@ -15429,6 +16855,12 @@ snapshots: dependencies: boolbase: 1.0.0 + nullthrows@1.1.1: {} + + ob1@0.83.3: + dependencies: + flow-enums-runtime: 0.0.6 + object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -15489,6 +16921,11 @@ snapshots: dependencies: mimic-function: 5.0.1 + open@7.4.2: + dependencies: + is-docker: 2.2.1 + is-wsl: 2.2.0 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -15725,6 +17162,8 @@ snapshots: pify@4.0.1: {} + pirates@4.0.7: {} + piscina@5.1.3: optionalDependencies: '@napi-rs/nice': 1.1.1 @@ -15775,6 +17214,12 @@ snapshots: ansi-styles: 5.2.0 react-is: 17.0.2 + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + proc-log@5.0.0: {} promise-retry@2.0.1: @@ -15782,6 +17227,10 @@ snapshots: err-code: 2.0.3 retry: 0.12.0 + promise@8.3.0: + dependencies: + asap: 2.0.6 + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -15848,6 +17297,10 @@ snapshots: queue-microtask@1.2.3: {} + queue@6.0.2: + dependencies: + inherits: 2.0.4 + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -15868,6 +17321,14 @@ snapshots: iconv-lite: 0.7.0 unpipe: 1.0.0 + react-devtools-core@6.1.5: + dependencies: + shell-quote: 1.8.3 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + react-dom@19.2.3(react@19.2.3): dependencies: react: 19.2.3 @@ -15877,6 +17338,58 @@ snapshots: react-is@17.0.2: {} + react-is@18.3.1: {} + + react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3): + dependencies: + '@jest/create-cache-key-function': 29.7.0 + '@react-native/assets-registry': 0.83.1 + '@react-native/codegen': 0.83.1(@babel/core@7.28.5) + '@react-native/community-cli-plugin': 0.83.1 + '@react-native/gradle-plugin': 0.83.1 + '@react-native/js-polyfills': 0.83.1 + '@react-native/normalize-colors': 0.83.1 + '@react-native/virtualized-lists': 0.83.1(@types/react@19.2.7)(react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + abort-controller: 3.0.0 + anser: 1.4.10 + ansi-regex: 5.0.1 + babel-jest: 29.7.0(@babel/core@7.28.5) + babel-plugin-syntax-hermes-parser: 0.32.0 + base64-js: 1.5.1 + commander: 12.1.0 + flow-enums-runtime: 0.0.6 + glob: 7.2.3 + hermes-compiler: 0.14.0 + invariant: 2.2.4 + jest-environment-node: 29.7.0 + memoize-one: 5.2.1 + metro-runtime: 0.83.3 + metro-source-map: 0.83.3 + nullthrows: 1.1.1 + pretty-format: 29.7.0 + promise: 8.3.0 + react: 19.2.3 + react-devtools-core: 6.1.5 + react-refresh: 0.14.2 + regenerator-runtime: 0.13.11 + scheduler: 0.27.0 + semver: 7.7.3 + stacktrace-parser: 0.1.11 + whatwg-fetch: 3.6.20 + ws: 7.5.10 + yargs: 17.7.2 + optionalDependencies: + '@types/react': 19.2.7 + transitivePeerDependencies: + - '@babel/core' + - '@react-native-community/cli' + - '@react-native/metro-config' + - bufferutil + - supports-color + - utf-8-validate + + react-refresh@0.14.2: {} + react-refresh@0.18.0: {} react@19.2.3: {} @@ -15934,6 +17447,8 @@ snapshots: get-proto: 1.0.1 which-builtin-type: 1.2.1 + regenerator-runtime@0.13.11: {} + regexp.prototype.flags@1.5.4: dependencies: call-bind: 1.0.8 @@ -16201,6 +17716,8 @@ snapshots: transitivePeerDependencies: - supports-color + serialize-error@2.1.0: {} + seroval-plugins@1.3.3(seroval@1.3.2): dependencies: seroval: 1.3.2 @@ -16472,6 +17989,8 @@ snapshots: buffer-from: 1.1.2 source-map: 0.6.1 + source-map@0.5.7: {} + source-map@0.6.1: {} source-map@0.7.6: {} @@ -16511,8 +18030,18 @@ snapshots: stable-hash-x@0.2.0: {} + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + stackback@0.0.2: {} + stackframe@1.3.4: {} + + stacktrace-parser@0.1.11: + dependencies: + type-fest: 0.7.1 + statuses@1.5.0: {} statuses@2.0.1: {} @@ -16728,7 +18257,12 @@ snapshots: acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 - optional: true + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 test-exclude@7.0.1: dependencies: @@ -16738,6 +18272,8 @@ snapshots: text-extensions@2.4.0: {} + throat@5.0.0: {} + through@2.3.8: {} tiny-invariant@1.3.3: {} @@ -16772,6 +18308,8 @@ snapshots: tmp@0.2.5: {} + tmpl@1.0.5: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -16844,8 +18382,12 @@ snapshots: dependencies: prelude-ls: 1.2.1 + type-detect@4.0.8: {} + type-fest@0.21.3: {} + type-fest@0.7.1: {} + type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -17140,6 +18682,50 @@ snapshots: optionalDependencies: vite: 7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): + dependencies: + '@types/chai': 5.2.2 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + debug: 4.4.3 + expect-type: 1.2.2 + magic-string: 0.30.21 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.12 + '@types/node': 24.7.0 + '@vitest/ui': 3.2.4(vitest@3.2.4) + jsdom: 27.4.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 @@ -17184,6 +18770,8 @@ snapshots: - tsx - yaml + vlq@1.0.1: {} + void-elements@2.0.1: {} vscode-uri@3.1.0: {} @@ -17216,6 +18804,10 @@ snapshots: walk-up-path@4.0.0: {} + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + watchpack@2.4.4: dependencies: glob-to-regexp: 0.4.1 @@ -17248,6 +18840,8 @@ snapshots: dependencies: iconv-lite: 0.6.3 + whatwg-fetch@3.6.20: {} + whatwg-mimetype@4.0.0: {} whatwg-url@14.2.0: @@ -17356,6 +18950,13 @@ snapshots: wrappy@1.0.2: {} + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + ws@7.5.10: {} + ws@8.17.1: {} ws@8.18.3: {} From 288bd384939d5db1b68851aafe930dd15846816e Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 13:55:27 +0000 Subject: [PATCH 03/11] ci: apply automated fixes --- packages/offline-transactions/src/types.ts | 1 - .../tests/ReactNativeOnlineDetector.test.ts | 13 ++++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/offline-transactions/src/types.ts b/packages/offline-transactions/src/types.ts index 85cac664a..ff07f6bf7 100644 --- a/packages/offline-transactions/src/types.ts +++ b/packages/offline-transactions/src/types.ts @@ -88,7 +88,6 @@ export interface StorageDiagnostic { } export interface OfflineConfig { - collections: Record> mutationFns: Record storage?: StorageAdapter diff --git a/packages/offline-transactions/tests/ReactNativeOnlineDetector.test.ts b/packages/offline-transactions/tests/ReactNativeOnlineDetector.test.ts index 9a9cf697a..f1bd98218 100644 --- a/packages/offline-transactions/tests/ReactNativeOnlineDetector.test.ts +++ b/packages/offline-transactions/tests/ReactNativeOnlineDetector.test.ts @@ -39,7 +39,10 @@ vi.mock(`react-native`, () => { // Mock the @react-native-community/netinfo module vi.mock(`@react-native-community/netinfo`, () => { const listeners: Array< - (state: { isConnected: boolean; isInternetReachable: boolean | null }) => void + (state: { + isConnected: boolean + isInternetReachable: boolean | null + }) => void > = [] return { default: { @@ -86,7 +89,9 @@ describe(`ReactNativeOnlineDetector`, () => { const detector = new ReactNativeOnlineDetector() expect(NetInfo.addEventListener).toHaveBeenCalledTimes(1) - expect(NetInfo.addEventListener).toHaveBeenCalledWith(expect.any(Function)) + expect(NetInfo.addEventListener).toHaveBeenCalledWith( + expect.any(Function), + ) detector.dispose() }) @@ -292,7 +297,9 @@ describe(`ReactNativeOnlineDetector`, () => { describe(`error handling`, () => { it(`should catch and warn on listener errors without stopping other listeners`, () => { const detector = new ReactNativeOnlineDetector() - const consoleWarnSpy = vi.spyOn(console, `warn`).mockImplementation(() => {}) + const consoleWarnSpy = vi + .spyOn(console, `warn`) + .mockImplementation(() => {}) const errorCallback = vi.fn(() => { throw new Error(`Test error`) }) From b42ffaff44776532adda6abd409b27bda1826f67 Mon Sep 17 00:00:00 2001 From: Kevin De Porre Date: Thu, 15 Jan 2026 14:56:10 +0100 Subject: [PATCH 04/11] Changeset --- .changeset/spicy-foxes-grab.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/spicy-foxes-grab.md diff --git a/.changeset/spicy-foxes-grab.md b/.changeset/spicy-foxes-grab.md new file mode 100644 index 000000000..9360934b7 --- /dev/null +++ b/.changeset/spicy-foxes-grab.md @@ -0,0 +1,5 @@ +--- +'@tanstack/offline-transactions': patch +--- + +Introduce specialized OnlineDetector for React Native From fc5b520585b0129ef84d84156018389dd4b1dd5d Mon Sep 17 00:00:00 2001 From: Kevin De Porre Date: Thu, 15 Jan 2026 13:52:10 +0100 Subject: [PATCH 05/11] Offline transactions demo app for RN --- .../offline-transactions/.expo/README.md | 8 + .../offline-transactions/.expo/devices.json | 3 + .../offline-transactions/README.md | 83 + .../offline-transactions/android/.gitignore | 16 + .../android/app/build.gradle | 177 + .../android/app/debug.keystore | Bin 0 -> 2257 bytes .../android/app/proguard-rules.pro | 14 + .../android/app/src/debug/AndroidManifest.xml | 7 + .../android/app/src/main/AndroidManifest.xml | 29 + .../offlinetransactions/MainActivity.kt | 61 + .../offlinetransactions/MainApplication.kt | 57 + .../res/drawable-hdpi/splashscreen_logo.png | Bin 0 -> 20754 bytes .../res/drawable-mdpi/splashscreen_logo.png | Bin 0 -> 12863 bytes .../res/drawable-xhdpi/splashscreen_logo.png | Bin 0 -> 29081 bytes .../res/drawable-xxhdpi/splashscreen_logo.png | Bin 0 -> 47123 bytes .../drawable-xxxhdpi/splashscreen_logo.png | Bin 0 -> 66529 bytes .../res/drawable/ic_launcher_background.xml | 6 + .../res/drawable/rn_edit_text_material.xml | 37 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 3056 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 5024 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 2096 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 2858 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 4569 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 7098 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 6464 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 10676 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 9250 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 15523 bytes .../app/src/main/res/values/colors.xml | 4 + .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/styles.xml | 8 + .../offline-transactions/android/build.gradle | 37 + .../android/gradle.properties | 56 + .../android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43583 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + .../offline-transactions/android/gradlew | 251 ++ .../offline-transactions/android/gradlew.bat | 94 + .../android/settings.gradle | 39 + .../offline-transactions/app.json | 29 + .../offline-transactions/app/_layout.tsx | 26 + .../offline-transactions/app/index.tsx | 10 + .../offline-transactions/babel.config.js | 6 + .../offline-transactions/metro.config.js | 48 + .../offline-transactions/package.json | 48 + .../offline-transactions/server/index.ts | 112 + .../src/components/TodoList.tsx | 465 ++ .../src/db/AsyncStorageAdapter.ts | 45 + .../offline-transactions/src/db/todos.ts | 167 + .../offline-transactions/src/polyfills.ts | 24 + .../offline-transactions/src/utils/api.ts | 93 + .../src/utils/queryClient.ts | 10 + .../offline-transactions/tsconfig.json | 15 + pnpm-lock.yaml | 3790 ++++++++++++++++- 53 files changed, 5696 insertions(+), 189 deletions(-) create mode 100644 examples/react-native/offline-transactions/.expo/README.md create mode 100644 examples/react-native/offline-transactions/.expo/devices.json create mode 100644 examples/react-native/offline-transactions/README.md create mode 100644 examples/react-native/offline-transactions/android/.gitignore create mode 100644 examples/react-native/offline-transactions/android/app/build.gradle create mode 100644 examples/react-native/offline-transactions/android/app/debug.keystore create mode 100644 examples/react-native/offline-transactions/android/app/proguard-rules.pro create mode 100644 examples/react-native/offline-transactions/android/app/src/debug/AndroidManifest.xml create mode 100644 examples/react-native/offline-transactions/android/app/src/main/AndroidManifest.xml create mode 100644 examples/react-native/offline-transactions/android/app/src/main/java/com/tanstack/offlinetransactions/MainActivity.kt create mode 100644 examples/react-native/offline-transactions/android/app/src/main/java/com/tanstack/offlinetransactions/MainApplication.kt create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/drawable/rn_edit_text_material.xml create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/values/colors.xml create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/values/strings.xml create mode 100644 examples/react-native/offline-transactions/android/app/src/main/res/values/styles.xml create mode 100644 examples/react-native/offline-transactions/android/build.gradle create mode 100644 examples/react-native/offline-transactions/android/gradle.properties create mode 100644 examples/react-native/offline-transactions/android/gradle/wrapper/gradle-wrapper.jar create mode 100644 examples/react-native/offline-transactions/android/gradle/wrapper/gradle-wrapper.properties create mode 100755 examples/react-native/offline-transactions/android/gradlew create mode 100644 examples/react-native/offline-transactions/android/gradlew.bat create mode 100644 examples/react-native/offline-transactions/android/settings.gradle create mode 100644 examples/react-native/offline-transactions/app.json create mode 100644 examples/react-native/offline-transactions/app/_layout.tsx create mode 100644 examples/react-native/offline-transactions/app/index.tsx create mode 100644 examples/react-native/offline-transactions/babel.config.js create mode 100644 examples/react-native/offline-transactions/metro.config.js create mode 100644 examples/react-native/offline-transactions/package.json create mode 100644 examples/react-native/offline-transactions/server/index.ts create mode 100644 examples/react-native/offline-transactions/src/components/TodoList.tsx create mode 100644 examples/react-native/offline-transactions/src/db/AsyncStorageAdapter.ts create mode 100644 examples/react-native/offline-transactions/src/db/todos.ts create mode 100644 examples/react-native/offline-transactions/src/polyfills.ts create mode 100644 examples/react-native/offline-transactions/src/utils/api.ts create mode 100644 examples/react-native/offline-transactions/src/utils/queryClient.ts create mode 100644 examples/react-native/offline-transactions/tsconfig.json diff --git a/examples/react-native/offline-transactions/.expo/README.md b/examples/react-native/offline-transactions/.expo/README.md new file mode 100644 index 000000000..f7eb5fe7e --- /dev/null +++ b/examples/react-native/offline-transactions/.expo/README.md @@ -0,0 +1,8 @@ +> Why do I have a folder named ".expo" in my project? +The ".expo" folder is created when an Expo project is started using "expo start" command. +> What do the files contain? +- "devices.json": contains information about devices that have recently opened this project. This is used to populate the "Development sessions" list in your development builds. +- "settings.json": contains the server configuration that is used to serve the application manifest. +> Should I commit the ".expo" folder? +No, you should not share the ".expo" folder. It does not contain any information that is relevant for other developers working on the project, it is specific to your machine. +Upon project creation, the ".expo" folder is already added to your ".gitignore" file. diff --git a/examples/react-native/offline-transactions/.expo/devices.json b/examples/react-native/offline-transactions/.expo/devices.json new file mode 100644 index 000000000..5efff6c8c --- /dev/null +++ b/examples/react-native/offline-transactions/.expo/devices.json @@ -0,0 +1,3 @@ +{ + "devices": [] +} diff --git a/examples/react-native/offline-transactions/README.md b/examples/react-native/offline-transactions/README.md new file mode 100644 index 000000000..0f86df7f9 --- /dev/null +++ b/examples/react-native/offline-transactions/README.md @@ -0,0 +1,83 @@ +# Offline Transactions - React Native Demo + +This example demonstrates offline-first transactions using TanStack DB on React Native / Expo. + +## Features + +- Offline transaction queuing with AsyncStorage +- Automatic sync when coming back online +- Network status detection using `@react-native-community/netinfo` +- App state detection (foreground/background) + +## Prerequisites + +- Node.js 18+ +- pnpm +- Xcode (for iOS simulator) or Android Studio (for Android emulator) +- Expo Go app on a physical device (optional) + +## Setup + +From the monorepo root: + +```bash +# Install dependencies +pnpm install + +# Build the packages +pnpm build +``` + +## Running the App + +```bash +# Navigate to this example +cd examples/react-native/offline-transactions + +# Install dependencies (if not already done) +pnpm install + +# Start the backend server (in one terminal) +pnpm server + +# Start the Expo dev server (in another terminal) +pnpm start + +# Or run directly on iOS simulator +pnpm ios + +# Or run directly on Android emulator +pnpm android +``` + +The backend server runs on port 3001 and is shared by all emulators/devices. This allows you to test real syncing between multiple devices. + +## Testing Sync Between Devices + +1. **Start the server** with `pnpm server` +2. **Run the app on two emulators** (e.g., iOS + Android, or two Android emulators) +3. **Add a todo on one device** - It syncs to the server +4. **Pull to refresh on the other device** - You'll see the new todo + +## Testing Offline Mode + +1. **Add todos while online** - They sync immediately to the backend server +2. **Enable airplane mode** on your device/simulator +3. **Add more todos** - They're queued locally in AsyncStorage +4. **Disable airplane mode** - Queued transactions sync automatically + +## Architecture + +- **AsyncStorageAdapter**: Implements `StorageAdapter` for React Native using `@react-native-async-storage/async-storage` +- **ReactNativeOnlineDetector**: Uses `NetInfo` and `AppState` to detect connectivity changes (imported from `@tanstack/offline-transactions/react-native`) +- **todoCollection**: TanStack DB collection with live queries +- **Offline actions**: Create, toggle, delete todos with optimistic updates + +## Key Differences from Web + +| Web | React Native | +|-----|-------------| +| IndexedDB / localStorage | AsyncStorage | +| `window.addEventListener('online')` | NetInfo.addEventListener | +| `document.visibilitychange` | AppState.addEventListener | +| Import from `@tanstack/offline-transactions` | Import from `@tanstack/offline-transactions/react-native` | diff --git a/examples/react-native/offline-transactions/android/.gitignore b/examples/react-native/offline-transactions/android/.gitignore new file mode 100644 index 000000000..8a6be0771 --- /dev/null +++ b/examples/react-native/offline-transactions/android/.gitignore @@ -0,0 +1,16 @@ +# OSX +# +.DS_Store + +# Android/IntelliJ +# +build/ +.idea +.gradle +local.properties +*.iml +*.hprof +.cxx/ + +# Bundle artifacts +*.jsbundle diff --git a/examples/react-native/offline-transactions/android/app/build.gradle b/examples/react-native/offline-transactions/android/app/build.gradle new file mode 100644 index 000000000..860628dd9 --- /dev/null +++ b/examples/react-native/offline-transactions/android/app/build.gradle @@ -0,0 +1,177 @@ +apply plugin: "com.android.application" +apply plugin: "org.jetbrains.kotlin.android" +apply plugin: "com.facebook.react" + +def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath() + +/** + * This is the configuration block to customize your React Native Android app. + * By default you don't need to apply any configuration, just uncomment the lines you need. + */ +react { + entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", projectRoot, "android", "absolute"].execute(null, rootDir).text.trim()) + reactNativeDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() + hermesCommand = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc" + codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() + + enableBundleCompression = (findProperty('android.enableBundleCompression') ?: false).toBoolean() + // Use Expo CLI to bundle the app, this ensures the Metro config + // works correctly with Expo projects. + cliFile = new File(["node", "--print", "require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })"].execute(null, rootDir).text.trim()) + bundleCommand = "export:embed" + + /* Folders */ + // The root of your project, i.e. where "package.json" lives. Default is '../..' + // root = file("../../") + // The folder where the react-native NPM package is. Default is ../../node_modules/react-native + // reactNativeDir = file("../../node_modules/react-native") + // The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen + // codegenDir = file("../../node_modules/@react-native/codegen") + + /* Variants */ + // The list of variants to that are debuggable. For those we're going to + // skip the bundling of the JS bundle and the assets. By default is just 'debug'. + // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. + // debuggableVariants = ["liteDebug", "prodDebug"] + + /* Bundling */ + // A list containing the node command and its flags. Default is just 'node'. + // nodeExecutableAndArgs = ["node"] + + // + // The path to the CLI configuration file. Default is empty. + // bundleConfig = file(../rn-cli.config.js) + // + // The name of the generated asset file containing your JS bundle + // bundleAssetName = "MyApplication.android.bundle" + // + // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' + // entryFile = file("../js/MyApplication.android.js") + // + // A list of extra flags to pass to the 'bundle' commands. + // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle + // extraPackagerArgs = [] + + /* Hermes Commands */ + // The hermes compiler command to run. By default it is 'hermesc' + // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" + // + // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" + // hermesFlags = ["-O", "-output-source-map"] + + /* Autolinking */ + autolinkLibrariesWithApp() +} + +/** + * Set this to true to Run Proguard on Release builds to minify the Java bytecode. + */ +def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean() + +/** + * The preferred build flavor of JavaScriptCore (JSC) + * + * For example, to use the international variant, you can use: + * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` + * + * The international variant includes ICU i18n library and necessary data + * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that + * give correct results when using with locales other than en-US. Note that + * this variant is about 6MiB larger per architecture than default. + */ +def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+' + +android { + ndkVersion rootProject.ext.ndkVersion + + buildToolsVersion rootProject.ext.buildToolsVersion + compileSdk rootProject.ext.compileSdkVersion + + namespace "com.offlinetransactionsdemo" + defaultConfig { + applicationId "com.offlinetransactionsdemo" + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 1 + versionName "1.0" + } + signingConfigs { + debug { + storeFile file('debug.keystore') + storePassword 'android' + keyAlias 'androiddebugkey' + keyPassword 'android' + } + } + buildTypes { + debug { + signingConfig signingConfigs.debug + } + release { + // Caution! In production, you need to generate your own keystore file. + // see https://reactnative.dev/docs/signed-apk-android. + signingConfig signingConfigs.debug + shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false) + minifyEnabled enableProguardInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + crunchPngs (findProperty('android.enablePngCrunchInReleaseBuilds')?.toBoolean() ?: true) + } + } + packagingOptions { + jniLibs { + useLegacyPackaging (findProperty('expo.useLegacyPackaging')?.toBoolean() ?: false) + } + } + androidResources { + ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~' + } +} + +// Apply static values from `gradle.properties` to the `android.packagingOptions` +// Accepts values in comma delimited lists, example: +// android.packagingOptions.pickFirsts=/LICENSE,**/picasa.ini +["pickFirsts", "excludes", "merges", "doNotStrip"].each { prop -> + // Split option: 'foo,bar' -> ['foo', 'bar'] + def options = (findProperty("android.packagingOptions.$prop") ?: "").split(","); + // Trim all elements in place. + for (i in 0.. 0) { + println "android.packagingOptions.$prop += $options ($options.length)" + // Ex: android.packagingOptions.pickFirsts += '**/SCCS/**' + options.each { + android.packagingOptions[prop] += it + } + } +} + +dependencies { + // The version of react-native is set by the React Native Gradle Plugin + implementation("com.facebook.react:react-android") + + def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true"; + def isWebpEnabled = (findProperty('expo.webp.enabled') ?: "") == "true"; + def isWebpAnimatedEnabled = (findProperty('expo.webp.animated') ?: "") == "true"; + + if (isGifEnabled) { + // For animated gif support + implementation("com.facebook.fresco:animated-gif:${expoLibs.versions.fresco.get()}") + } + + if (isWebpEnabled) { + // For webp support + implementation("com.facebook.fresco:webpsupport:${expoLibs.versions.fresco.get()}") + if (isWebpAnimatedEnabled) { + // Animated webp support + implementation("com.facebook.fresco:animated-webp:${expoLibs.versions.fresco.get()}") + } + } + + if (hermesEnabled.toBoolean()) { + implementation("com.facebook.react:hermes-android") + } else { + implementation jscFlavor + } +} diff --git a/examples/react-native/offline-transactions/android/app/debug.keystore b/examples/react-native/offline-transactions/android/app/debug.keystore new file mode 100644 index 0000000000000000000000000000000000000000..364e105ed39fbfd62001429a68140672b06ec0de GIT binary patch literal 2257 zcmchYXEfYt8;7T1^dLH$VOTZ%2NOdOH5j5LYLtZ0q7x-V8_6gU5)#7dkq{HTmsfNq zB3ZqcAxeY^G10@?efK?Q&)M(qInVv!xjx+IKEL}p*K@LYvIzo#AZG>st5|P)KF1_Z;y){W{<7K{nl!CPuE z_^(!C(Ol0n8 zK13*rzAtW>(wULKPRYLd7G18F8#1P`V*9`(Poj26eOXYyBVZPno~Cvvhx7vPjAuZo zF?VD!zB~QG(!zbw#qsxT8%BSpqMZ4f70ZPn-3y$L8{EVbbN9$H`B&Z1quk9tgp5FM zuxp3pJ0b8u|3+#5bkJ4SRnCF2l7#DyLYXYY8*?OuAwK4E6J{0N=O3QNVzQ$L#FKkR zi-c@&!nDvezOV$i$Lr}iF$XEcwnybQ6WZrMKuw8gCL^U#D;q3t&HpTbqyD%vG=TeDlzCT~MXUPC|Leb-Uk+ z=vnMd(|>ld?Fh>V8poP;q;;nc@en$|rnP0ytzD&fFkCeUE^kG9Kx4wUh!!rpjwKDP zyw_e|a^x_w3E zP}}@$g>*LLJ4i0`Gx)qltL}@;mDv}D*xR^oeWcWdPkW@Uu)B^X&4W1$p6}ze!zudJ zyiLg@uggoMIArBr*27EZV7djDg@W1MaL+rcZ-lrANJQ%%>u8)ZMWU@R2qtnmG(acP z0d_^!t>}5W zpT`*2NR+0+SpTHb+6Js4b;%LJB;B_-ChhnU5py}iJtku*hm5F0!iql8Hrpcy1aYbT z1*dKC5ua6pMX@@iONI?Hpr%h;&YaXp9n!ND7-=a%BD7v&g zOO41M6EbE24mJ#S$Ui0-brR5ML%@|ndz^)YLMMV1atna{Fw<;TF@>d&F|!Z>8eg>>hkFrV)W+uv=`^F9^e zzzM2*oOjT9%gLoub%(R57p-`TXFe#oh1_{&N-YN z<}artH|m=d8TQuKSWE)Z%puU|g|^^NFwC#N=@dPhasyYjoy(fdEVfKR@cXKHZV-`06HsP`|Ftx;8(YD$fFXumLWbGnu$GMqRncXYY9mwz9$ap zQtfZB^_BeNYITh^hA7+(XNFox5WMeG_LtJ%*Q}$8VKDI_p8^pqX)}NMb`0e|wgF7D zuQACY_Ua<1ri{;Jwt@_1sW9zzdgnyh_O#8y+C;LcZq6=4e^cs6KvmK@$vVpKFGbQ= z$)Eux5C|Fx;Gtmv9^#Y-g@7Rt7*eLp5n!gJmn7&B_L$G?NCN`AP>cXQEz}%F%K;vUs{+l4Q{}eWW;ATe2 zqvXzxoIDy(u;F2q1JH7Sf;{jy_j})F+cKlIOmNfjBGHoG^CN zM|Ho&&X|L-36f}Q-obEACz`sI%2f&k>z5c$2TyTSj~vmO)BW~+N^kt`Jt@R|s!){H ze1_eCrlNaPkJQhL$WG&iRvF*YG=gXd1IyYQ9ew|iYn7r~g!wOnw;@n42>enAxBv*A zEmV*N#sxdicyNM=A4|yaOC5MByts}s_Hpfj|y<6G=o=!3S@eIFKDdpR7|FY>L&Wat&oW&cm&X~ z5Bt>Fcq(fgnvlvLSYg&o6>&fY`ODg4`V^lWWD=%oJ#Kbad2u~! zLECFS*??>|vDsNR&pH=Ze0Eo`sC_G`OjoEKVHY|wmwlX&(XBE<@sx3Hd^gtd-fNwUHsylg06p`U2y_={u}Bc + + + + + diff --git a/examples/react-native/offline-transactions/android/app/src/main/AndroidManifest.xml b/examples/react-native/offline-transactions/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..150248b6b --- /dev/null +++ b/examples/react-native/offline-transactions/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/react-native/offline-transactions/android/app/src/main/java/com/tanstack/offlinetransactions/MainActivity.kt b/examples/react-native/offline-transactions/android/app/src/main/java/com/tanstack/offlinetransactions/MainActivity.kt new file mode 100644 index 000000000..9e8421cec --- /dev/null +++ b/examples/react-native/offline-transactions/android/app/src/main/java/com/tanstack/offlinetransactions/MainActivity.kt @@ -0,0 +1,61 @@ +package com.tanstack.offlinetransactions + +import android.os.Build +import android.os.Bundle + +import com.facebook.react.ReactActivity +import com.facebook.react.ReactActivityDelegate +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled +import com.facebook.react.defaults.DefaultReactActivityDelegate + +import expo.modules.ReactActivityDelegateWrapper + +class MainActivity : ReactActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + // Set the theme to AppTheme BEFORE onCreate to support + // coloring the background, status bar, and navigation bar. + // This is required for expo-splash-screen. + setTheme(R.style.AppTheme); + super.onCreate(null) + } + + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + override fun getMainComponentName(): String = "main" + + /** + * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] + * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] + */ + override fun createReactActivityDelegate(): ReactActivityDelegate { + return ReactActivityDelegateWrapper( + this, + BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, + object : DefaultReactActivityDelegate( + this, + mainComponentName, + fabricEnabled + ){}) + } + + /** + * Align the back button behavior with Android S + * where moving root activities to background instead of finishing activities. + * @see onBackPressed + */ + override fun invokeDefaultOnBackPressed() { + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) { + if (!moveTaskToBack(false)) { + // For non-root activities, use the default implementation to finish them. + super.invokeDefaultOnBackPressed() + } + return + } + + // Use the default back button implementation on Android S + // because it's doing more than [Activity.moveTaskToBack] in fact. + super.invokeDefaultOnBackPressed() + } +} diff --git a/examples/react-native/offline-transactions/android/app/src/main/java/com/tanstack/offlinetransactions/MainApplication.kt b/examples/react-native/offline-transactions/android/app/src/main/java/com/tanstack/offlinetransactions/MainApplication.kt new file mode 100644 index 000000000..8c05a1e37 --- /dev/null +++ b/examples/react-native/offline-transactions/android/app/src/main/java/com/tanstack/offlinetransactions/MainApplication.kt @@ -0,0 +1,57 @@ +package com.tanstack.offlinetransactions + +import android.app.Application +import android.content.res.Configuration + +import com.facebook.react.PackageList +import com.facebook.react.ReactApplication +import com.facebook.react.ReactNativeHost +import com.facebook.react.ReactPackage +import com.facebook.react.ReactHost +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load +import com.facebook.react.defaults.DefaultReactNativeHost +import com.facebook.react.soloader.OpenSourceMergedSoMapping +import com.facebook.soloader.SoLoader + +import expo.modules.ApplicationLifecycleDispatcher +import expo.modules.ReactNativeHostWrapper + +class MainApplication : Application(), ReactApplication { + + override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper( + this, + object : DefaultReactNativeHost(this) { + override fun getPackages(): List { + val packages = PackageList(this).packages + // Packages that cannot be autolinked yet can be added manually here, for example: + // packages.add(MyReactNativePackage()) + return packages + } + + override fun getJSMainModuleName(): String = ".expo/.virtual-metro-entry" + + override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG + + override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED + override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED + } + ) + + override val reactHost: ReactHost + get() = ReactNativeHostWrapper.createReactHost(applicationContext, reactNativeHost) + + override fun onCreate() { + super.onCreate() + SoLoader.init(this, OpenSourceMergedSoMapping) + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + // If you opted-in for the New Architecture, we load the native entry point for this app. + load() + } + ApplicationLifecycleDispatcher.onApplicationCreate(this) + } + + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig) + } +} diff --git a/examples/react-native/offline-transactions/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png b/examples/react-native/offline-transactions/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..31df827b18bba369596d713b3ed5f554c432c5db GIT binary patch literal 20754 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 literal 0 HcmV?d00001 diff --git a/examples/react-native/offline-transactions/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png b/examples/react-native/offline-transactions/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ef243aab6c07672628b98d8eb239605edfb97c5c GIT binary patch literal 12863 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 F{}05A4LSe- literal 0 HcmV?d00001 diff --git a/examples/react-native/offline-transactions/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png b/examples/react-native/offline-transactions/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e9d5474519c701b4b518f2f0a24d7d8742e93416 GIT binary patch literal 29081 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≠L7uC6uw!O1FhM6L%0j13*GG?(4u1V2&G-kNU^`GA60;00Pj##6Wfqd6CHh3> z4^Ap>`S?%+aA9GJJ(uAMY61X~A$MVII&$(WO$L0yj?H?gNqd1iZ+VLiOy;Vps-7;t zl;`uM0Hxu9Ei4_%5}>IpEfL`la~?is0J$ZnHo{bVDii`YMSRzAex%*Qhoo-s$E|0- zO_8n=WY{T)w!^=gBAhbZucVD9-Y6P&SzKJ)Iq3rS=XUcZo$q4oIEo<8!k|3uS12)^ zdo@2fR1krCIMx9R)+itW2%=m3MXzKO6IDk8C-i-9uq^>p>xQfR{fjt_(caX;0;+%# zNV4$xI#{wp_C$=kBt@QuO-3P$Oat|mD}CcxG>+#wZ z{9*Atu%~}YOFKMvL`|F>&BuWn4*Z^Qc*%)#xt2STP6WUik!K7?kJ$=Ifo?Q-`7Gn) zX2&{E&{Xr^NX&E4C>9%x7U+{=r^3OfcDtz4hQ4KoOm%j$#IgD*4%q_TQ|EzdK?rzM zSisRzn!`=XxgtB-S~UGdJ804jf~~$0U<>cb*pS-tzZ6Kag+pUZaNl(89 zItH>_1uwn#0>=nOSWK+6Z>b7$9i}gsaM04tjR@?8+RO9R{@U6boRV3~ zM~A(-@wuRHWu=$IjDf-a7r7t{17`Sw#bb`FEGOK_taL?ElghjTOZ;UEXPZOYWPKl(>}u1R4vu-}n@I8SHg6II^}v79~McQ$s^3JkF%F&|mIl z&}*X0$lBK+bF8j?{FixwzNRSZ4@C}8`ogB5g#YKTC#^CIO!joA>)%?{aYyJwPoE13 zHyogd&Ia);@q?!(APP2_=RJPgE#<&&!rMUp3gSbI@FTq^viDp8_BSKO1~VLXS7Rjp)oD)l%! z_VWMxrvZ=})MbhOhK(`Rx!U;qQ@&r|tMP_{dq@WuZw^R3Rdt3+;#0BBKKF7V$^kTxFJvi_6?}<6cusizXB{54nFm zVkIZ9W^%U$GI2bV>%Vhy7BYL?&rkZ!qg8H~XK>_~czE_fIUv$)susOk=wyARODJLR z;KS$7Qr`mq68bN^E1`w+GzXp*t*Sg^qKw^1&}Uft)dXQ^2m#q>ylh56XOK#UKEB5T z8ZP`dz6#^(#Rw~Yv4*gbo}L5(hTE_sqsC=SAM7+|G*%k7(>oup2wF=Yfhbl{QxlP$ zE!QE)n<6eGFCQ8lY%cj|KiQ>|N0AOV2LK&4h$0|8=H_xtw@5z)v70se9l{g}(_u=| z-+`g3IylgR2XuJvM#{5{E)V`COxL=xlN1+65Bk%CYY%^NWhh<-WgP)#57HNKRnoPwk5hOPY-MagVqtS-~F;0?KBN0Uxvke99TtRWJDLoBZpS zn5?jHo}XXy?y`JasI1>_1?&z0#)^Bha=03(VGq}O0CJL<1+}+Ic5SKR}&pa-dodPOI3qkzn^~l5L%>2gZrkZpF(lW zF_l@uO$Nh9Ng z4uMK6Xj*E=Cwn4ta!)~jD}{7XH9-Ky1R2onD_L1&AJO;q#o*FB6l_dGc%oJFpTB%L z>>k~dB!a;p@(lA8zF6BkEF&O`awQ2*gxRM*e;#7>9GI6T34$Pm!3Sgo$cl7Fr&K^Q zA<};T&WNUw$1TIt$7j(gWx#&-lXRdGKLgZK7=d?YMuF5GeC2kT4UnZ$0jAhI!z*0_ z811LA+K!m$C=^?KG?4Dhj0}9e5QtD&vcXJ0=0hCh6(viq#;+(Ls+&7dJ~>9stqTDZI$qg!y?I))?-&y0>q+puxj2 zwJ)t4IBf^$U3aP`_)SvAm@FRe67i*+TiAWouHqbsnf``GH&>})DZ>Cxel{TpHlR=*l*T0>nCQ$@> zwP7%t{Ogb9=-fb#wq6JhdL0grOHwMv zqSgf%%5pFpUoi=|q>g^^Kkd-mK?Uj_N$J|hlq<+xc(M-Md+z^i4Oq@nT;159ccEit zW&OF;e6R2OcYhGq<`^gszzzqtK`};IZa-3t+2}@#QsLUW$590FI6>Lz@Dm zUCU-Yjd>9Fa9kUroEu1X&d%KaV30NF0(zDrD)4q88JWCcu5>L`LH_=Z(rQsq69C_l z0lxEC?AAVf9MEu!j~jG)MLI|~tR!JX0w84(5;lvO3~g-iclWTP*mTIuKoBv!y}UbS zT4a^MQ+K7W>O1bXUS4dt+wS`6^IUQemX?k&tZ^6&5=hf@Cr5MwOA^Zfc}cTCKO}Q@ z8&|Osi!up=kON3+)EzWiS65O@A5^-y5*76#N8Rg1f`hn z_3}0n5~Vnhbz?F*Gtl4*E}FQIE&k z7iJ`lZ+O%kRJ4H;lu2}y78PBz;0Fm zkmO8!9RcD969AwgieHb+nInqlq4{QKqndd5F7!kB)zlYppxv3-*+&D9N2Z|d@s3Rf z545T3cK2+rYx}BWfvt2yz=||{urmj(PLzearnftiL_n3_6PQCS&m_<3|RJUrZ(G7T_~v6&e?2IMNJI|G8J1lw;Q3aiEuY8 zE_MPWQV&H&`$qp0D$p=9T_v!W!wv5P4U>XmL8*Q*U`saW>miXT0}2F!lwzY_uUuKY)v!9~$ z^l=!{h=_25<~z+f>nZWnv}KTf@Q&FD2?>qv+zEnM>3nbdnY7PVP71u&YKpRfVMbc~3OzK%uf;ZQm%Q9b9@|5Qu%z z4ojrJKhc-FxBexw02gB!p!pD2@~?Nqz!gX_%Fyw4e4NqFo#?1sY(OwPawB-7u6;#&4ZQ@U~#x(nwYo_VJ3*p6*2(8kT6h1p%cUm2$D&- z6JNv8SpYQVgxiA|#;UTqK{)aBq{r$=6Xg|6PfyE0vD;K=MXmau@^YIJ7x7R-0JD_W zi<;-_T3ZX_*<=X{=vRiZ2tXasPnr>-DK!%d{ad-WAcDKpwzkIElb$1F5`e2hhw^_{ zh5ZKk4x}Pmk!brNlP)2C2tIc7WJEPjV6R*=c&34-B@Earwv{zEGhewv?!I^Q`1$ka zUmR(G`6u^rgFEOzb;jP&S@Yvx8|oV@nfxOy_aY0czr!v^E;bB5|^9v#z6wnb+LokBTz31T(J%krwrJJjZf}3cC zE73gp+>f9yh=wx?>$2))DT+|NO#dX|s5L$=j;aQ7u(@5h;OE^>p*?buwx`(2b01In=oYleH5!&E7CN2VR;<=6 z8i8_)vNa>awj!?E`67*#pI>G!ulB#2DECsWMYmU#6EcxeDy4COey$OJgnfNe)04P3 zgkn`=<0t44)eXpUsk;DU4;0tc)Ivak8{U9EF;I9(Xh$$02jkr9EkNE?V7yOla3o;-EI>rH4LT#cEOQB)uXd z{yZ88HS0|jq%?|p8RKJVc^zlE2>hXT(aCVLX zAuVrWqE6-YO;BG*Kzr~q55bbK{$~}dO;pCnL#P79&Ph_OLCmqQZ)t(C01g|f92s6Y zTj1e-e#`?*;>d%!W`6$+<=Gok0;(!#|5tV`wNhoCIKRJt+`l)-b} z;iV7xX&I&@zLuh4hiL|C^+*vZ#H29pWlzOOt3C3c7e6m^rXUqnCQ)?6vp;2q*6$72 zR=7w^t_(6)H%hO^g9RfEYHa*PN{%p;eZ*6BxMez3K`zgwOS=svqjwMSX@ss_i?&c2 zr-Thrym|8`_{M1_w2neoEOEHH5Z-4DA?P!{$Ty=*xi`STp``^QYCcZt7lnX}4F3bL z%Gi*;%47h@3>O@{?VMs)@QwHuAf|ZSp!P(gX zrmb9UM1il8TiNW zfo{pQ1QoQEV@A-=siS}((1g?N(qU+4fS-gBJY8f2V>!jZlxy&&{lFi>HKbR#;{1F7 zZ!BjH?~^>mHpaBD>n+23^QP$Il_4t=BO?VLA2RCBEa{|`ZT1KkDDzIZFbueOd9lLO6Ld6% zCnj=WN(u_>0NW_SP!W_&V;2-TM8I%(F5R>8^(CS11UXzwlwe|}nNCJrTmu(>iC&G! zHWV4~q3J*GXo9w#TU5j@4|6h5DFH)&0*3~^wcB87V$x0hJXkqWbyt&LFfhbjGQ=+g zH3#z6XAC9v+;ZUeMzkH#;KqeLvM#9L-`abl>iCkf! z{YAWa3z@;C;bFZ_!MPLst<|-)1-Ly#uPB^H{=gGKD2A?+kx zm@=TvFjG?_hBeq?nUaY^)fE6A4i66p+utrV)ElhgS0ZdEBi9~*H1qO5Up7J>CZrd3 zK=_7;PO^5ZL<}Q6Rj0@Q0~dl69}1xpd2QcYv(>rgPmJEBT7wo@OvrlEkXI-NDFOR` zu}GLW;bMeh*?Jz$HLc)sIhKkdE6>PISaOAuZ^e#z3z?1SCar0v^mY4n))rXGWpb{rj{Z z?}c7PrOfCKuwi2f|$lb_4@$PPi-mfI*}5GG<32 zR#p#$Vvt`H$@+RG#gfFt*RR&-PFY1{PPJ&9Vb1zFNEnof>S4opM~}0AD-^Cv{kN`a ze!5@Kg~pT%ji7NiL;2~SfVX0r!HgttP>OU3LGg(3WBGz4fD`=m#VySsz4C85ais6@z?ocR z9!31rG@UUI-3Sc6Eh1 z5@lv)Ld8v_Ph^<4-%=eK_5n5gpSbTD2@O1`YW~b26pY#B-jK7vUSVWn>I6n<`@!~t zww9K{ksWBVu?Bp~2@p(v4hEM5^3O+FzH!5c51RlqQDs^4$qmf3wr_mrWswwA~kiC9_F$kl@c3C5RSa)n66 z$(!KG=kMo;i2;MzHo3L$$zYVkGYjrF_9ie!48WVtuQbKw<_7%sXRp%Yi7~BrQ*3Ml z<_HbQy^m+rct(guFr-&eBn0s8gycSzt<6mpPTy=|a|slL=Frg4|HFJ(sB9b@$g9-3 zo+#x;sp7h%x3&aqhaII$|M@59mdw%jq?#HGb-I%Y>=cZ$1pl;w*k4p=4|vvAQ}e-T zzv!hQK4|QsiLImK0$Ci#p~B!&>Ree2^DyES3Yk zAtkf%C8K``tMrT8ZEPY*DE0YMaR(qPJM-Vdb4p5LJ}#k^t*5MTDa+B>xod2UN0Bz( z2iN!J$PM-ItSn)O`@Nr6-5wvWiov^jZXpqe-;)LtKJ4RiS)zs)8U*E(=_aojnBU@< znl@9zFsX0~iQ=N{d+Th`bP8oXlc1oy8XP(OzSoSn&Oa81Ba|UXg4~4gN7dC29K~=A zVB!)FEbRen0URpy`PSH;y*%#$slV;)H__HMJCFMFiq6wY+ap46snVC z&o7>^iY|hn3*QfUu~q?QLdQ@t4(p?;oLQOkf2<|V`pYuAyHF+=;yw>(7YobOfj0Rk6ic0y1q!>g68eWYO+=J0XV=G#- zL;2G;Iw79sDrWmGkl?%o(!zxpm6|+GwKx<5`OO0Th<+i8SNb#XsSUItsP=%x6FC91 zhIi)XGr)wZpb^^lZ7g&L4n2Vu4BBXVWoS)s|K4kb(GW<>$D)ZQCQYdR%^!R~4ONgd zVJJXfUEnB81t7?*uV0JcVsXp=S4Ll3EqbYn{GwZ&48(_ZVgvQ<(YoumuU{=U=sud|MHKqK2mL%g z-dDD+^g~jPDLg7c%lp~(Nke3mF5fMf8_8EW+wy5s{@+bG(G(O;A)v6|W?n9j}D16k+dw~2`m{-o9Spih%reG&x&lo!L4q`ZCVFM5fjv$@<$ zbD!_z247T-0k#hlaxq^g`A|u#_%w=j&CLUKr7(ddibB`Cfk134BAc+e;W7`cELND_ z&!1_*GcP`ajK;~?g@D^bcvpfFu0{a?N@ z=z2Bs5dh7S65{O^i5vB9GXTi}-aXBfxVP{zrKH!kiX^=Abv=YtgEyhs0mn`?O{=TM zpTV$AN+}=-P>P6&h2!=gvH&PL;50N~TO%V$!CEB2GcyF+iuo+k-t64kWzNzsN^V z=9mlxq1ad!aH>w9*%^dr{%FC7)7zgP`;6{nE5mrbY+u#Ttb9mu@xy@i(!CdbOYQx> zU!GrtW)T=J+LMuOX+JyT6w)Tg@eELkaWz(stQ+~G!lKY*%g8E=H@F9gfDT4%x&n|e+3+LtUb|3` zncKw!y4dd5<@cTgCtGU!dnV)d?QJxQWTyg@5=g`Ixc;w+3GV%0ls6&KPxpX#HGT5k z8<2pDRI2B{nWL zP=wP?hJFtlCnq*&c2R|@8~5)dhwN*?q7FBpF*&1eiFT`~^r|W$At!H|EKDV^Sv0uQ z0RP_r=TU@MrK7FA8%}<~WA*cS0R~oZAQVg7TmS?T28P0;{`8x^&~8=n5*|FXYn}vh z`kthxBYi9_0-r2g1Q;Dh(yBEYLOK(OEFl2#RB?rG2M2-!t|W6Pn)b}ip_sTcHzU@Y zAle+%)cf3rumVkmXONQ?1OtymXIf>00a;H^Nh@R&=4O|zudIHc{q5rR!|DG07v|$j zwpB?u5fNmfS?dQ6=s=?|vY54n>CTDtysfQ(4USX9>_KG>CK7b11sEwPko~FybACe; z=^_1I=FlXmh;>Y!m@vM%Hd}|DMfSz%GL)OL7OaMXsPqIf{~AK|)TNP^gf6S@11VmMrMN-o-k5v${m!EFhws3Pf-&O-CH+XF6I z?o&;kq=LrAYivwRXiV>LzRu^_Kff8yol|v>w=*^}pTR=v@2et-4~DxyM#qIvOM4ip zc>m=KeOd7yq8_2=tf4klSyiL$Y^MHJo0%8~V*mW=C?mR8Xy z%1?m86MWpj-w@S|%*;hw5$y!9R5_0YC-7h)@ZiqLsj14!O4USl`U4nMzSnlf26bk~ zSKu_(_wQ%eR7%cUd|qWUYy2sfC4F!SNyByt8wTDCFLuxe;FC!}l-=BP-PqWGx@xBv z>u;HtFkl0A)egA|;VCD>_Dg_|F*eYvg_ z>i_pl8)Bp~a3#g)cTSL&M&LNN<~nHTV_*_9+;3qQ;qC2>jPDudP1iaHeln|TYD%F* zGClI`+XwiVja-neWIlx*GZK0MIf+J-qq7-CTB?&nSU znGEf(>M)ST62pyxenVm^945{JOxFMx`hLF;N7Rn@M+S!+1zYyf%l9=Yu5-~AeE4wr z%U#fiPtSovZBF3^eNcT%4A4C~C_(rN#Bn}{%>o9~rT5_B8$xmk7z)wrdS;Dm&l&hXk`1{Zp-Abb{ ztFPeCUHw1^D+--}Bmj3kX@4-7^=@*K%r-0Q`r|)G7oMK;147-q#PE=Mi$)2>wE1px zsy>&ut$QF-f+p7c8Ik}9s^RUlqr=@r#~PTSdYbe>px4ll;Rq&@5h@eJ2ztAh75s#X z$hjU2E(3F+VXXEv8`30-JdzWr-lBdnLgk2?ES$jJ;led~GUd9u)UFu8Kf!?ZUn%9{ zaZrT3JMa(d5?9pwO^UBFaS1$&3+{OFnQayMc$xnv#|r4rjf-Q%$!;?<#!dH^{102H zRgSKKPJDQH%hTt8mJ9TNVuMTYp*c*O)q`ao=)@402M<^;-H@SFnGnP+ktDKkq3R2nKNW(IEb_fk$ETc zQ0D2q?#`$8+w*>V*R$3>=d82Vw)cJC|LOO;rv2BnMExP0GF*)K>%(C(H_NJO12kCrc^Qe_Vu`1tLc7Xi)w7`^{K&%y8cs669e*_^@}-cO^V_(kQ} znGRm>vL%3~!#b|?2#x8!KA~adhit7gO00}hA^D=L=z@04d;7Sfu5g`cF?(|N({C`#L{A0U|cG3T-sgacWB}uU|{c4Fm4G zNv~aEr)S;9e_)PX&#f6*x3@o#zXAP!h4y5-UF#>58KI!jgvd(l7Ofa0VD6*GVallZ z`c>{?OiGfe6ZF7SvWV@mzB($Jm!~L-RwnC|AK?lENK?%w-%pIR!q<)H%{sceKD4#1 zgD#iMuBxhjc|tH75GQ$U zdDoriqtODM0^Sg?_w`(kA z)oq_39t2HcGj>%Fr&?dW#U)Qoy*h78mX49++SHzA2c4<}aR@Nl-pMY*K~fjh?QazT zLmr4w7~IeqlOjb~W!1g^6>ShH3g3m2<9XJY6zndl!g|_(gDU$o;L~Bz3Bc#N@;zZv zdKiSU!^Ut_vUmz|$_jUQ7~fuEIB!tV%f-Fj!*2x^D(=eLGHlj@7UwK~rsfXZ}NM@v+k zES+NSa~JR~(JXs;NnDKCAYI4EJzMhVk$+p}6W=rGcOG&?If^_Bg)>v4!0zfOtKfrZ zlYM63VlKu=Is$W22ySYk8iybL44w8!!a6&m?un^1m8Q6F;k=a0jm5c!u;}nF`^Q{g>9;I!n#aMydZnThcb4dm=wnrfOJ?x-zYgoBLTT$7K#is#a5ES`Nv!j3!$hORU^!?Tyio$A(%z63w zqQRAY3TkS>2#gCF`*1IHzw9S!VJFWpPJvB99Z*K{V=5#n5Y|X^(!GvK4^O?0Gu|0> zR*OP8NI29v&#EU>H#f6aUvTmRD#=#;P;DJ5L(rVq#j8K{^f0g!@{MeR6n?Xe`|u4` zX)BV+2B}5~A5eRFb_W^IZla{>U76GPT@NTk;Zd5GEOIX{-Z|QO3%GDK-iL!)fSr?* zmn2v1CAu_4@N@hv@ zo;^Qt4uKd%9;D(yHW-)HP<$Gbb~XNVT$uJ~>#RpUB%I*r5#Uk${U>p8ajtw_6w1@= zc1=KrI0-x#f7#=!&^?fj$E5Vmv|3hv{!GU1{47c0!EZm4pF_v5s%?YDF9)&!6r}Oq z(+NF#5iTDG#bqlV9a(N0rdCHSg!@IwumNrD%9zOPar6oIy7H&*~xTK>CtHEL=Wzbe=$K3t3;6+{G2(Qh@6 zgG1j?YDh)4v>(3hrc|wUMrI}_&JT0xNZ^_M@fdhpyC?|Uk;f8zq_^Cc2^0jic;ejm zjEr+|hGydp7qV`fmy#P^o?wYna$*G9$r(Sf1RGu^&`hEk9TjVKdMb#LYd*L2T%gTq z*ArX#qmUnRUq@Uw6q1`4rcMpEIn26l^&6%B@`K*m^yOQ&?m1C?$>W5XFDoa<{|FR$ z?m#AvvWmpUZYxL_A3wK=aWir#pyl6EUJtU>whDUCh6D;r{7%@!_0y>JF!-#06a;IC zKMGc|IBp7`MiGT%>iZH&FWCa}+werGP0W0{3nBz&c%x9ad1P#?I!MI(KI|PwbXk4F zb|w&UZVopMT3oHANTCpwsq@PU)Y-mi}qpNIZhAI zlpt#l;Bq}tOP9k^<-M50l$M{JO(ef<{OkF0n9p;mHEmX3nC=4yzo(SfhuY-$V~%=Z zj=Bb@sPxVMOz38Q6ciD$qs!kNkN|W6(2wrxavNj>fSkDOS$`k2)VrB4ZeY)yExTm{ zwXB-0ZHe;3c{9Qqw%x7ncMTV+?!^IiL{XJNK;9Y>Yvicb|>ab=AQg0CmBBa0y%Kg)EM1SAw~RKlBR&e4Y%U zbZTW4`1e;Qfbj{Ors0uH(W6?Csn=6lYQ=b{AOzcDV1;4{0=N)*IthOFKq&xboJN`@ z$;s=n0W)H3Ade^`M&Z%y?Cq!OUXRUAZV|YJ6$nF6G_)n;3xF;L8&)>@`=3UusFi!B zas?MqV;h7yyRYKYc&1C9$^1H@1!tHXN*gHEj$q|d|4gsbXWYoES zxXX%moU$@vdA>vN`=A{frv!*0e0{n3HXVTfdtb)66$Y?QQ&0YV@|EYzFbjZg3%+0u z^w4O>4(X&-*F!R_DfOZkc^8c}wmFwJWQeMNsW6H;r3gPu#x z9Z*tYZTu;FFdwi}AV_a7FYTMS8aV1-T|K?!*+wCaRX&2wq`(RU1t7fqY$z9?6~O-L z7mZvmODj7&UIY$6O`(g(8}E}ZPZ08(!a}#V`8zRGI^_5YBWUk%0GPfs^#1wLd3(U2 z91NA`&}WglA6PQcaMT*SN? zY$$0+vFC}wHd7rUQvFEc$UFqnDS?5TAy370ch?CxC2g2>N+@FlrVVx9!4}7!@^wN= zvWyn3St73SK|@3K28La}8L>yV7ZFgZT0jB{1(e^9j=t^BZC$M)KK*XL5^;64wk(=D z1a=K$#WofWAuK74V|Zw5sc4kvON|OUC4pr-g>W$fawLYreWoRfnv;U!i*pz=Y3%>7}M0yz(H(Lm@?1Lsh3fs4g7w04JNDd!q}>$ zgE&R*q#XNPQ32x?A2x}^G775*Wm({%h{j(4#BC)4%3(bO29*S(AAqm6t}b0OvxAU= zCWr@sL{5TMSS>(}jqTO^_t@AIFT>kpk=uCTs3h;vR2sG^pv#Q%)>p2u0rUW(dPqGX zXmH_bht=??K}Gi0w9L%SYg+T1kTM`ms z5P3kDqX|ba3p6?)I||@J@X=xMM*-5Y!sQ=6@a>M+#37`_Ag(2k%)@!A$SMO6+w5$= ziLy0PDd+g8!DEM@$pkRg85s(*T(h$B(+isv6(tMKq?@AIoABWBYg0IebMGH075!3- zWJlgH9X~&x_v{8nMmd9S@MmJTEI9ef1aXQZMXZc>Qii~Lym5%#Onq^5`@_6E4gkfB zEtl6rp8487ac6=j&rTy!P>Ow<_N5E(pH+^I^0<2}nOw*A!^Bjggq4PkY2hZe$zUNR zM~0$|eq^_G;*bm7&a-RaM(n%7!h2|%47De0=ZAm&Iu<=6aGeeEq!g zUC314E9|`tS&-KJ+FgOPlT6@;Y6oB4t>%Tk_{W&=A$7|g%bZMk4xtWAV`Bv(6*4C< zvkMD3>f~HqUGEyksc3q9+6|Yte8E1YXanwHoHf(E)FcILQMxAH0>oUoK%mxOhI6m9 zBFBXV!knf{Fg6LoOdNod@7^)mb_Hee3V;9)?z2Cc;CWM%|0P{~7Ti)RD=Tf< z_4h?tFCl!IMw5S6QgSR~M3biQBn4W~c7?s!(%Wt-AeGD^3<^VA=lGq(kbyAlm zLL_+Xk$!duG?#v1r^?`sJpo>jUE2$SJthcbh?$fjiZex|^3*n2IWIXypZ`O@0h_xO>$CylV3t z5T3$QQ6@1e0KLV~O~KqV0tgDDNG_{ZXmGFIdtwzixKNe7uSau*S~kr*LzMLiwBOUN*0!E=-(1p8Ty_-VpLrq>9PA9f zfa^#IX$NLfIV=8k$R_9XyV~VABx|~nBlLE>TbWgr+H$2p zr1cj3KU9=ha>!WFGzn+XKZJiZ{4QOcPo!^oQ&JM>9%=IoSh#8lLEz-Z z^1G)|c-EJc_`ezB8YWu4lY4qT9&CJMbDFpnCESXj7EOVG!>Cj*R1vyr;#x*VkwQUE ztIHklpnJ8U)D8YboT2c(2%+Ke@g%jh{5P_}y}jzot8-=8UX1yY_hWs0HpZ?}b5V}0 z?i~Re+f`L&NM?SFY)gUXZBt%)Kal{OF=9N+*?Mc?XQM`{UZpN&O}1D4F7lR+6Tld@ zUX0%69f?wUROq&06&h)4I~AC+vD0XG1dJ=ysuSh|u;SdwmVr_ngdW<5O1M#+G@z~( z;t&&jQ1QN6$;y0?Wo4<&f?sa!1Pd*s6m?DtznRV-Ke)BFj#6!u<;ox zq(V>{+(mrcuQ|>ztF3AL%^22f;`0{fzTjqFe!#GIEA4pxjmXs0Ge_ zxbkii<@wY&<-8HGBFx3tO>{_;lSAh@Geg z3*YSAf&`R;^Er*`sbH=1gtbbL&1su*r8R?Ta$#Z6=s1pn@FOw_js0J98&9($MVIu| zf9d7PJ>YX8326jBtZfp0L?0(wh`E^=|H@1zArZ{Jql zvdlrp@#V{nrv_C+cmQp(?3f?Nv~j`5bX#wsqK^TzZdp95Y<}<%W(ejjYVF+oe2J(I zWXF9QFh~g|Bn?1;=8Rk8?4*!qL=Q^d}(fKG2OkT89?sV6&H( z2_Aes?JdFDVq0Dg7iE1@R8-&lMi+DnV{FPFSSa@Bj*?%t=N-#@H+=+Wl;=zfCCNPF zhKoz&Y+^hYBLGm18oJ^T&|#z)_C(tmCV~^!VWy|Hu2%aH|#)SD}h4Ie!_X_>fjKzYU$zFZEbhDXWhI@_n`968@3Ja za^s>IbM^ieEq>8@OI^Z?J^N>wqCQ-tF0Q|Mj9FTA%d@w_F<+yihu%GvZ_HcAcN~3X@0!RS%4E3Jc>cm-`0S#Y}&w4ax#Txk7S(3oa*z|U%nX5 zu(9<|8<+mw+38t2S2C#IJ-0whP#>rKjO|8FkJVaVu*NIkxLP^PSU zHY8{yK(#>6FI#C`opd~-sA!lvQsfzCss}Wowy)2Ww7a9j1qRoNsFjs((4T(C4-P0h ze>c$EWP)04Oc7_Sab>XXdAjBq-g&c4B7b*DwEjdlM`lCrvbL++K1 z1*(X8jXz5<42m_*jcRZ-Jh)#SjQcS1`}^W!Bp}&g-oq5WS5>t*I(D0ly}dF@Vu28& zf#N5II}1JL3~%2apFx(%Px^y{tLX{wBd?3!WZ{zvXya=8*RQo$2<_j#eVo9CxEf}Z zS2sL-&)eQUdEjjG8F>wj+T~>_%dZ`=11@DAs>Q`~^3g&z*RCldEl=5N@g`c9#a_o# z(-fp@rImTFxVLw$O6Oni9v30E$ygk$cYW6!Qe8*?aPQ+&rAKARG^Y$rbQW6RDbIj- z%Cu1sjPT50cD;OaUA!KOr9#JEt)V4#fGYGjm#(4fU7h=qnl3~}p2U<3D@zW491+p- z`t|GY`gpbp-ixQfS-2Nc)(k1GuAwhv@FvLP>ZYenBO@ah+uPgaggE4Xzi78CiZVv7 zq}#}D9T>q}dl(Y3^!G(m@N;r;hR$Hp;VT%On6R_6+c`J>t*)!fUx-AK+_h3)Z!Qp0 zEx=)CIwCtV(irKPJb>T#P^tY^oS#!%3>8Xyy%A+m4?|<%CRKj?72D*AJ;@izq``_n zwjG>fV`KCX%JQ2vuynOkPWb5)*v;EL&HUes;w3MibNbXNsf7)5<6}|&{;J9LC#o_3^rw$G6$I%xPBj=dPNSEzX6Tn(BQ#FMBlIpFN1`tt1rL>xi&H zgUCojTl-y>yBEy=*60DFlHhe)B3II`f!td5>vN!--~-0DNo=3On=XY%S+4%!wm?sK zF|jm?%R_oXl>leN(sLAJGQ<#yN0KGpsM@lbKNW$ zN{z34TwHWNZE4wv{K&^LYDlIv%RKjScGeDa!24my5*~={?c1gGjYP0~?OG(3f7zNS zCy89Mx_V9{S}6I8DS*A~tgLuU_8@@=hZkaaeAZIf%DaKZB|tfF)xm+zM#og{#)9bT zItK#&#$dxY*x?Tb1s#btkQ`ci5gv1fWvEEg@`_nehJNej#rNk!3kyxK9$8pe+B-Uq zb&J@k#M#OzV=(QN)#FnpLXPV#W{lL1jv8#?=U-}R$%UIP63-W_IC-RqVYvkVFx{bA zK>_o3ZLMCZ|KrSX@~yC-r{}hRxT!$t;dq>85nJ&F;DRe2y>WYyX@QAb2N_b z+HvrjdE@G;|J%#5TfakO=r+(Fvi5Z7=Hp1UwdJ{rep+Dla9?FBtth{1F@!7^ZE$0% zZ^XVGcN&Syx_Z64zA`v7)dmRb$m(djNch;;2>o-iWr_`=iL8n;>fox{cg|BS-F@zx z#(+K|4~jHg#?3d9CI2ta`9Bzn|C+ZXQ>5_AfB)$W{I9v~|4-9lZN2ny_wmO$Js$YU PMTS3g4RtcK&inljbZB-$ literal 0 HcmV?d00001 diff --git a/examples/react-native/offline-transactions/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png b/examples/react-native/offline-transactions/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d61da15d2410dd60355d0d9ca34bb2aa741267f0 GIT binary patch literal 47123 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 literal 0 HcmV?d00001 diff --git a/examples/react-native/offline-transactions/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png b/examples/react-native/offline-transactions/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4aeed11d00badbb02d5b40a3d24fcf97dbabbd5a GIT binary patch literal 66529 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

^;WArDFIvK1}FmU%q zb+zU6%uIr7I{6WX=_6R$phjcp^c+g!&^Cwk0OzgUVD~7pRb3qRMNvI9RT=qAL&?|U zVAH@E6Z53U$`xQiH#eW!FP<2Jn1lTB;6aJLx)~j?xv3%j??T=OV($IZ{qzKC0*nqE zx)nklcpek4cQ|=Y4xT{?ePZ{_pWOB?Z3_bEOKe*ok8(ep%rQ?-x)UeNpAH6coWmqQ%9vD?Q!-CG^_r(N(`iIgJS!DggM^2*A4fF*ss>fS}(Jx)LSLtG>>q-><7 z&HyP-qooxSXNPg>2z*Q}A0Js%#m^p$|40c531Rpk4}SUVgah2Bb}8WCeDPwFNjvjX z$GsSqwwC1DC&aZ6N@ytKVFj++<^_;cWLp}uOXZ>BQRN`_odBF5C!Use^oE7y+mpK{ z=C^?F`0e|K$2Z%Ke?-lB<$IOkg$s3^)#JA?9r0Mv9cfq3qYG=0VuZ4S)gBf`hopqH zrGolysjM2eXiqP%{-;p`+#Bk`fBXm_i5?ZONgfK$AT!AooF0w8!VkqvBYY{O<~>*$EU={Eft1*|`E zwlBl$+uR_w6VfYq%}i>wFhl>k^o-4VhNf~#oyK$itZ*pjqqv#oU%ih!6ItT{OG|-E z*RQRGNvA{ZMfkMm{U=Sapr$ER`zRx#2#?-o%I8?GNkoVP{362@g(jtiG_F`24K(fhW`7D3P~*jmy>op}G$&Oc zJ_G$C17z!)B`?u6%F%FBSBd;WS9{TlL!}nay}Bmmn4wPeqCy%RSt_}U89W=sL=&Vg zj?gZHe+%;SJ*5^Q?$y^McpLg7F}`}$X!xfx*!aJHo7YrXY?Ry$;dl0z!>w$c`%umi zv6Xx2h9JCWm2{ktNV+tMjg6@UlCfDEQn&XC&>29|4BBj|aPix3-b>G142;(c z6>N&4!9Ys7__G0d>~1LGL8rli?|5~W2ZY5ib7*$+{hiv{aEq4Y>{T~Pz}IAF)lD#J zo>&{&fn5e2?mEYM#iqt1iDt#mb4*zk?tBF%2awXxp)o|V zyqlzB6jLWsY<5XU=gnudfsi|Ck-}nY8dzH4U>Ei;FXX5N)v1`9Cm0pstGucz{MoaO zJ9q8cw|e!8K_I8*K^@P=tNUiGXK7IrdOujvd}gqrVe2}k)q}O}A5T{A(R!!A!Vp3W zk(!E|n?sOmo}V3jdO@3q~5(HKUGJry=~J$;&{S29U|vMDyh?DmennN^s*vQJli zD5F842;T{s5N(*DsGYXmpL-{AWMn7MTr>>rp_s@GVqa^86 z|GFOl-=xQZ0Mh;T%A!6`4eGwzTsW$nwQEN(oR@jOS8ZwR=g!qkGZ1ic8tA-tf(FDl zNO##=Z%)u_3tKG+?i^h2_NJ$&hr3tXa~Cp4E{S-f74n*xzj*x#mZbH1CzPi3p z#&;OL2jws^ICiQRM&)SE3iRuS?f{r4k&@zk^Szj1yPRBG{F5hpND*Dfkv-gx3IJrS z@>kB2p@uiiULI5U0Fa$BQp-wGC37;n-eebo;|+o-_KuFhP=H~MXbfdV=mRuqoNa(i z3`zzM>~Dvoi0~P=1BSmIn;PYOK|ujWVbO5zs5nOyC(>QNvj{>a#gqh`x^VW45~l|hh44K;N$$Bg`ah)+Ox5E zP`7YuuV4?VQ#R2*mks+n3_@+Ow6xSSXY`vMOMc+}`!a+X<`m?#Y;*wmq^`eJvaq~4 z*>1e74NMLb3{UK~hy=SFx+5KZ<%QVvcyIhTm>w@sQ@4+esYG%fOQ&sN(yQ+kK_}2I zd$bmeoC*u;BJZy7s{+swz%QV26D7#jdBR+pOI}rVPmsEnPTm2H2#^Ine|~5nc3nY1 z0R%#{5rHUB7u<=$5~=Wrh>Fs`@#iZ=dC7$zfsHk?3b&qh z5$Y>~7Ld(J*@k{Oa0elX<+qJAS`rgYpAVe}{&7UbPce+(4@E^(*zFWyopR5!{QmU| ztaXw{ZA}Ym9bU!W?+fn9upegNLW$LAV`C#YYWDS84BI6H;zb4G*D6Akz*hj)$vf;Z zs|n3TjA~+4w0YTntBnT-yKsa}1HCz50bOaszVP)qR_#8bBtt@QS8{2xVM&P)SF}jR zYsZc9f1E*(A8{2++2FCP@trkii4UH9V!`3)WCjc;q77`27)~c8YK8yKGLO# z#D5SI1Spqo-L6J9clnB#`+hP4!5z*hZ04FCz@gD+*jLL6zMA_ENlR1h?0D7RX55*-6G80NF_CQc831@z$bQk>?3{EZtn0si;Ii17??-m^Bz05w)PV2 z)O7Op#0|84vf}yfy|2p3eNts^1Dzi3TuF((`MP`wrqKPlqv20iny+)_7LTN;>FP6f zoow*h5XFM~9XEjgLLbIAdsXX{m{1f2l|@O(V>xC@t}xpK7#TolF?B=<(?B~&D|A`I zzN@MGfzQvcZ`Xc&pR@_AZyq4FHXVgCJ-ap;wu_Ne;}i|G{9%FqPaO(qay}`j9ll&_ zw!XOJk`dw~s(L_y&FC&*&+>$?tXgDaM;7RE=&FJE&t8>QD5!4SO}?*aoqFzNJ3eeZYVT_&+WidJbZc4>}_(_QFUB4N-1$aPWraDE7$swdfN=W2JiTIXP6v5mxw zu%#1AO0KZcjeW;JF#5z=s=b;hY9%ozBmL%u^Hw9>xXk~Is+I4c0w2>W-zvlsq>OrL2J_Ci)w&VA(;Od`NSszn$2iM?riG}6hpFd2AH0 zC=Iq@+~wbYxA9O?e?fo$f4*ko-`6~?K_T?ah&A>5Dl1J9vJ*SSK&(jTlCfK$!!RP6 zgE!%5`}vvdF%J)3^k4w5y}t4O!{FH1RSc5Z^78Tm%_N^OgXjcscZpYg1W?onY*uUs z1D$Y#xERM?$awwv9Np4ceQFK*`7BMHZy-7=itV!|N^3oYxsCvA`)Bk7%GYt{t!d!0 z%2(M^PtPs}2p;Lb#Ren_ILBOEc&M`p*Gw_sBX=H_1k9x9R8e8B?_JZ>*;Q(H+sVz1 zIaY_S#zrudjocncsIpPG(ZFJAsh~azMZ&3%ao?8g(vKNJBJU?yALqQ4KBsk!h{h&D z;HyCJoBh?^ikV3nG+H!pTy}OrTIrAk=jr+B-OiQWoUA80q0<6+$iH1|PQ)m33%sde z&fOG$ga8A&t;g?KMQUB|WHxMXYj2M~+WJKfbzww!+yNDVRZed6Xx3wL4uTS5lIwm= zv-W9|l-tW%>Fk%Q24WnfC+U`9LVdeVNLJtE1Rl0Z4*K}f^&u!rvFbt^hc9@oKnvJD z#yt?ANix`Az)ZE#B8*PWk$tWu5YRph8+vB)fMlQ8Cq3iAlS1tHZ}vD zN8i2@0i7Vxye!s7fRL0(^{)U_49pSoB+b~}oSB=nWNWx=YwHUxa)!26n-_~}4z2b9lt9!y z6-^iiO+6Z*c7*3PDu6p1ydDH}9O_qF%ohd(m!Zc>ixDb}@Be(UDKKf@K9@m{ItqhE zC{f@sXus(26@iBO_VlQ=!ajC(OpdY9;gqO!9oU7s+*E_|bU+ecwZ2nvcfTtG{M5qG zJn6JIdT`3JZqgPsGt``dAI%!Dz1bPMmf zFk_429xsk^>-_Q0T9} zz5i0xfWx^i>S@^sX*+KdJSsw>dg(%1#Jb=ws=>sk{toC_nyf=-T(bgkKjqG^}_tey~|3t~$vgsfb2YNo%`s#WtNkAvv3 z5s|F=$nBgnOQ$0IAj(FUy#L@_Y?hDvgFs8BojQ#O`6%Z5X)@U6<5TSqu#}7Ii$vm! z&)VR9K;N;J_4ON>&o2@s0U|hndto25Sc{&|XvZnNMi@Sg3Zr4pGd0x;SpV8zb_?|d zJ*hjK6|GH@6mwu1+#Vo4w%3ng=mR|0N;7kzBz-g|($l4$M@8{@f{>MFgmQK!M1Ccf zACeZ6VzF_|XO$l``QmW_8Hybs0u5x(lD1&rB%?_dNrEUhJxPw_ryXRLCy*!5w3LGL_~ntx+3BuR^1F9OnU$+u8larinPaD0qGZ`|cU{E_2l%{m`*uT2p+R32?AK>4Y#Krt zuM+@fACeq6yj&Xzt%HH)2+-@EbY`3cnC9fvap#d;O7gmVx2hB~^F9~f>Ypjy5g!_Ys=bybdO)FuQ!(2vIX29mV*|QXhYZ*q%vTZA3jLY*z8pB zj6pGmL1TQV&S+|w>4c_IEYccMy+B;gcjm|LW9fSn^f(Jg8ly!-kT;)Gfm+>O_w(a}N!hs2Ay*`H1Z#;xl5SAcV3o~#8cAbGnwC}2g#M+ZU3l;mXk3`z$G zDfVOLo5AG4hPJRMapp#U_smmA9ycL3TFeOFHM^=MgD!wItWd5{mARWbKm7fG$#1=~ zNHHH2L<;~7DIP~lOO=86HXOu}6j{v<7W7M>!(lkXkd(UJRYSYRncqEr4Bd>&KzqjU zv{nJ0L+^6r=fI{mueCwy>M%=5M3q+o{2$%jEBZ@hEgP zQO&`;Z}ZAOW0l~?ZfB!}LfZkys~u1X@Hz3tcjMzPu(1z6_Ud}>{0{p`ufPPey>w0+ z2#o3A5CjQXG@scRp`e6N(zhyfOP{a6hYuyFurbh@j~U^CO@A-zLA|Ws5cE7%(4r%H zyE(fvAb%AMptbbsi$Mw>uv2mIlNtxa!ZaLy{qoF1)r}#%rHrc_*mE8Zxq3q$Y2c2r z>N?AGVDiEmw+0ii*X#~!i?HX-^zh+|;Lien+D%SaNbsX=hJBO|<|h%+3~S)@?AF?v zwvyf9=IkODpzE?x`wMmAa491;rw0^xpP;nCx%Jpv5vi+G(jXi{F&74FxCXfb#2iI)dEs@m32o@B`|j2zP;vqSq)#y~}>z{~isW*x5a8QH7rAZ-~H5 z3o)WSa&)~t*!}$y=tEerYXF97{{@aj|E}oh%}{*fFi{4P3l$Ss9{I!-U~yfvHk?>r z=(~iKyf+u&*qUY_oc8LoIbdg)16ElXej6VzNZb^!NeL1pJWl!PjK7Qe)SKa{e#}nb zP>11H(%G|9|F~6w4~Slr-HQ5Nu%-KVA*ncdG9gF7Oe3$n2W%nHzrrx|5ur?&5?(T^W8E6VnA2iS3Pff)5&~hUY z(gCI<*z>7rz9RHN6zx3uhf+|!&wA6h3pelWjTY#ro&WV!(x!ULz)!-evKHrHr1Nva z2d0k57nmenx_;U9j{|q%E9ct1lpxF3Qz}pg1fl31=dVwG6fZ_0Ihg((j%=tv;rB!i16p zc3eaMonLbXlXDA^I->U0Enc>$+Xy&~stWyrp-CpU2V3ZaA zu3EKUCdCz814!=O=*Ym@O2o48!dMM>H_K>o^2Vlv?plPtQnM@lWnc`T>6l4H0mQ@% z3p&qEGUW;gQL_Ozv=Ct0DP5+QIs zs*Em10u;fH-*dy%Rul_nvgl~{i6`zwtL-n$Vs4IPTsYK>GYps_d%q!cjfZ_PDHfP7yo}CfiBy*74p)r-lF5{tK9liMipWW_pM^f*KP!LEmsVQ?fk zwZqsnzSTnR5x^0nFoaw4SuS0N6bBpoBXqtAB@~tvPzLP9dwkH1$cFMA)1&W??`w87 zC4X`M*gY%Qg)8#1cw|<&-TO4CBtwH^5bc}(sks*lhBrzu=NQitI?nz`cb285EZWN5 zuB%_EhP;FTPp7&u48r zdnKVaV=7Eur-}RQ8>snhY#I9bd?%!+>W7c2&3C+-%Df$$nbv$mUgwQjNz*~;LhwAK zxlG~ZvCS~UDKK!yQJqJMlPohYHm!k{e5F~eP2G7fbVj-`>1k2u%0$!F&Pj8v)HU4$ zIV@7gO)WznOE{^UaNbXK^)4ya&vyg;9~(-tw0q4h+Up6!7$2WggR*>cEjo|x+6W9k zw61=XQE#6g<(oZ)t4xi3Y=>R+VC;@ZNhdnWTml0Fdp>>QrKS0lK}Talfu7a?wDoIz zr;hYMU;LKEO&A)?b<{7lf6qrw+gA>3Q$w?jCk3**E*Fr)Me{YA!V@ua0|NK{S2%=iAMJ zRchyU%+Jq@9_FK^k+~&FLvt7gs7CH~<A5RmO!f`;nO+mFs~pP%>f82wOcfSZ1Cy&)~l>^4}oH-k${ z{?@<$>(^reOAB*wZGHu{izy7xildC(_x@^k_syvfAHLiu!Q&MZjeaJwFkad*id%;p zh&3?eu~W@=@?+}o?}ydZ+c2V%b}Deb6w5^t;_p*UO-)K`X)Z3mz(wmDkRU?w{f#BL z{h8ZT|9s7xLqg&^J5hP&{Q2}}j-ZaG7P&g%7Nze{RD{xmMTwNy=x^nsqD?zhRML%& z;+jWB_QJ@w!Yb>ClheyLZ;X1*4RlR`YOb?nKWH3FL$k215Z_qPD(a}uoz%%b#ehix#u>QSI_CCszjeUPS zsmM6z%h#_GtvPC~Z{Hp;GBRo!&QW{Q-+v&vWgs&<+c{fTamS9~XO8mT-qRj)lS%#% z8!f^IeCgqvnwOVHek5imZZymUYCMJ}AJ*0FoSr!aPrPm9Z_fWd4kd)EAj;vEMqq6O zZo}CXL?A4<<(JR8@Tg(B#q9Rg#hzs3P*rlYDN`DkE zY+8bB?17#5Q)AfguW$4Iz5lcHp*_6bUiH)QiOSB-4#c1J_g9HneIh0%v+|(9-=Dk( zX;8b<=VpCbSy{iF#+;1LDF!yP1|PPh$PT}vtp5CWhu={{QB#7zU+u zt`c1EXU(hu;}(df&La;GkIayeHN&S9VlnNpV|Z~gWm#TOKp;GN^kvfKnhW!SI&bFs zLIU?~{c_r&Ztjb#`feyaBQ3^ljX} z!p?DKynYAW(SXUsz&9BFpG+DU7(kWMgOBv&$&*ay!Ax`!|MM5~=mA?ekw7Gygxj&HwKXrvJXl{~a*?Zzn(hhc)&okp7xza(8Ud+!_*O N_G%kxm1)=q{|~x=+3WxS literal 0 HcmV?d00001 diff --git a/examples/react-native/offline-transactions/android/app/src/main/res/drawable/ic_launcher_background.xml b/examples/react-native/offline-transactions/android/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 000000000..883b2a080 --- /dev/null +++ b/examples/react-native/offline-transactions/android/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/examples/react-native/offline-transactions/android/app/src/main/res/drawable/rn_edit_text_material.xml b/examples/react-native/offline-transactions/android/app/src/main/res/drawable/rn_edit_text_material.xml new file mode 100644 index 000000000..5c25e728e --- /dev/null +++ b/examples/react-native/offline-transactions/android/app/src/main/res/drawable/rn_edit_text_material.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + diff --git a/examples/react-native/offline-transactions/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/examples/react-native/offline-transactions/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..a2f5908281d070150700378b64a84c7db1f97aa1 GIT binary patch literal 3056 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 axPAxe%7rDusX+w*00006jj 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⁣ zwiG+x#%j}{0gU~J8;<|!B1@-XaB@{KORFwrYg_8rOv({b0EO#DbeQRm;B6_9=mXGf z-x|VL{zd`)#@yN}HkCSJbjbNlE|zL3Wm9Q8HY`sV)}3%pgN>cL^67{Z;PPL(*wT8N zUjXU{@|*hvm}({wsAC=x0^ok0%UAz0;sogW{B!nDqk|JJ5x~4NfTDgP49^zeu`csl?5mY@JdQdISc zFs!E{^grmkLnUk9 zny~m)1vws@5BFI<-0Tuo2JWX(0v`W|t(wg;s--L47WTvTMz-8l#TL^=OJNRS2?_Qj z3AKT+gvbyBi#H*-tJ%tWD|>EV3wy|8qxfzS!5RW;Jpl5*zo&^UBU=fG#2}UvRyNkK zA06Dy9;K1ca@r2T>yThYgI!ont$(G{6q#2QT+00r_x0(b)gsE`lBB?2gr55gq^D3Fi&p%E(p9>U%bv zkg1Jco(RbyTX7FDHOnl7-O@ zI$AaIl?9NJKPm(WiBP`1-#CB1QzU>&hKm)fpa5DKE{2$X0hGz-0uZ?cyTk(YC!Y&| zL=1VrNERSA5NA2jq7FACfX4JfPyj5XXl1yv0>~s;eF7L2$>&oMqeTFT2m$y7FlkON z_yurD1yIOvA;5C6016pyxBznGUt0kJ&k5r#;&>Jow`r)sp9R~PmK~lz$3xH%LT*1U zJdOyABZ3!FvNoR*vN$5ykHS8f`jA4zV+|L}i1C4`B2c{R0;UdYxaU|H)2avz@ z=mEYc|2S<+(B2Tj+FkX+2D+yFI!k9lWMA61DJ{)e;lum$(;O87?vGJJe!KtK04+N_ zI*P~t@dUb>9Xh{dbyl{-ZQ(UMgz7$|QfL5XSPkskt^NgctYC#;4WcZB1@%@wy@2t3 z2z0DI7&%b$*Aw~abe?GxE`ez@+6hOh-6*8fHRV{1os$EL@}uUZeG4h1&Be`98q*7j z=3-v+lhIjfWVo12!<>%V^a6lTgW3+_#W6n|p*~==zOH7z$0{LSZk(Tpd7EaD04hnA zL;#fxS0aD{`5^&D`}>0Uq?byDD-l2=!wm_bLcUl4gc(% za1p|itVANvFF>hghAS07Im1;IK;|b*W)}VDyI;BIp2=K*yu2a)j?B|f<44NI$NbmJ z#dE0>jI$fMr&@>4kN8MLFb4&2O9fEKaQg%(QO$4_1rVQywG^CmBLh#}_7gKW3vd?| z2?1^&KWq8}8I^_S0|)MowU_pw$q@nl@Nkn$z>BQq_KA^9yaR`(R3u{{Ig;cwt z@AJ^{ODQCm^neroM9nKNUAXi9RCK`OsP_LuR0PUR(YZCCX5dNF6VzcoK&=b^r`W?ltt|*F zpkoae%ZT{C1h~EcFui~b7fF`vb<<~j_VquuUA$}QqIKYELPp#;{u?q8Dz}WAG-(3; zjrm$i%7UbyZMM(Y{>!uJ#vNB?R~B{6Htp=>e*<{fQQ5W7V(1coCWlOON!MzZxhum| ztZBQpGR z;~#ur^&PockKdV{Q6R>o`Pl{0x!DEbpZ7y9Y;*ZvE!*gU`V1W3znva{f=?WO5I&>B z&hw6}tjECtaghm5z|C#%M;Yf_*pI^};h}Vl=^r9EN=tVDj86D;C$jIJ?K7VP+00000NkvXXu0mjf D5i!M* literal 0 HcmV?d00001 diff --git a/examples/react-native/offline-transactions/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/examples/react-native/offline-transactions/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..459ca609d3ae0d3943ab44cdc27feef9256dc6d7 GIT binary patch literal 7098 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 literal 0 HcmV?d00001 diff --git a/examples/react-native/offline-transactions/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/examples/react-native/offline-transactions/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..8ca12fe024be86e868d14e91120a6902f8e88ac6 GIT binary patch literal 6464 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 B0*L?s literal 0 HcmV?d00001 diff --git a/examples/react-native/offline-transactions/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/examples/react-native/offline-transactions/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..8e19b410a1b15ff180f3dacac19395fe3046cdec GIT binary patch literal 10676 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 literal 0 HcmV?d00001 diff --git a/examples/react-native/offline-transactions/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/examples/react-native/offline-transactions/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..4c19a13c239cb67b8a2134ddd5f325db1d2d5bee GIT binary patch literal 15523 zcmZu&byQSev_3Py&@gnDfPjP`DLFJqiULXtibx~fLnvK>bPOP+(%nO&(%r2fA>H-( zz4z~1>*iYL?tRWZ_k8=?-?=ADTT_`3j}{LAK&YyspmTRd|F`47?v6Thw%7njTB|C^ zKKGc}$-p)u@1g1$=G5ziQhGf`pecnFHQK@{)H)R`NQF;K%92o17K-93yUfN21$b29 zQwz1oFs@r6GO|&!sP_4*_5J}y@1EmX38MLHp9O5Oe0Nc6{^^wzO4l(d z;mtZ_YZu`gPyE@_DZic*_^gGkxh<(}XliiFNpj1&`$dYO3scX$PHr^OPt}D-`w9aR z4}a$o1nmaz>bV)|i2j5($CXJ<=V0%{^_5JXJ2~-Q=5u(R41}kRaj^33P50Hg*ot1f z?w;RDqu}t{QQ%88FhO3t>0-Sy@ck7!K1c53XC+HJeY@B0BH+W}BTA1!ueRG49Clr? z+R!2Jlc`n)zZ?XWaZO0BnqvRN#k{$*;dYA4UO&o_-b>h3>@8fgSjOUsv0wVwlxy0h z{E1|}P_3K!kMbGZt_qQIF~jd+Km4P8D0dwO{+jQ1;}@_Weti;`V}a_?BkaNJA?PXD zNGH$uRwng<4o9{nk4gW z3E-`-*MB=(J%0*&SA1UclA>pLfP4H?eSsQV$G$t!uXTEio7TY9E35&?0M-ERfX4he z{_Hb&AE`T%j8hIZEp@yBVycpvW2!bHrfxbuu6>_i<^9@?ak)9gHU*#bS~}$sGY*Fi z=%P&i3aH%N`b;I~s8{&6uGo$>-`ukQ<8ri(6aH6p_F`Fhdi6HuacwfQn10HVL7Om1 z4aZpjatkbgjp$L5Mceab#G#C)Hr{^W|TJX~?B3@2buj0;kfuNTf4c3*Au~O^aj=W2$j^4okeCxh#lwexN@eam-u4dNz zN2NIuIM4566{T&^k%4ftShcPk#=im-zXm>QWqH^0>A@?MqlDZCZ@8Wi*@tvhn5p<} zRwFm@gz|WZp91S5Z{}tB^e9|FBg(~Ik+?&_53J6ye_QQOSJ*846~H%s#LD}|O9v9H z1fLrrgoPo_&bs}eqEr}2en3iqAcP^>YsKiez$5-6m6(#3ZZ$@M5Ck=_Vv`QA>1A*v z3w-nJ_;5Nc(0_%`kG91#sotIlhO!*5#|yg+Gx{V;0ty`*=Y9=jCh$l*=fE(~t}%R# zc}iNpO)OZX`P=leQY^?^DF1w%FJh>Dkp}-o5Ig|2!6^E>|W|zc~W7gF;MtxX7 zV~UjQNsUC$EYXpN?~o{83D2c*0~7;Tm~%FRTAnnt3ln{?DcLZ=NsBY|JxwUA-6K3V zP&#|9t#a}Q4{Sg{6v-OmjJBkCh>m)8vLNm4lStMUT$)FZeJG05A)px&o3H)5oAl9= z31@?HyCriHcCDnt628BFN+T;U69Wl#itfvqIDBydMvOJO0Zl?go$cfG5>TK75CMj3 zakLaH3=&J0e}Xmqlav$S0>E@_Yo_V~3SiiXrw)$&!XhrHCDQ%P1BHPusuKr0LthAB zg)mDrLy>2*yevMMOQe6fZ|)%PEb!lC^*9yaX9UMy7-v!fSICssTR|wML0Ic2BhKAq z3I1X~ z7^_!M&;6Z9?br3#HU_&kfJ~%botXQkC1v<}ZZxN5q-T)|Sb2cW3WYUBbDZ`TH{!*^ zrmAeRM+(QI>D+?}guZ+dH*X)@^!O|oL69&Avbtw2^M3HP(+2kV{O$^3BN1RLfrC8nwz7=VhBR%>!;7WR<~;34B_j3A{>^@e@H+Q! zL=UNr1(JvKAQLKT0b}EMn|QUWtY>!>8-t@fVj_&`~gGd{_aPy5W>0u5L$zrsU^rBO=i$`#Xd*>kh)lPf}A znNXSEl`+HlhXtylgS9(#N02A=zVV?#OF?)Gr>(HszVa+1*2VG@qYttJuXaBlzP`Pb zX)ueu?s&}R>xI#^*r4gR?tMFi!_eeKlIM5g)Nk)Y^h=ZCR**xY>$E5knctRrq!zw? zX{2|hwR9LXTY1)pTlKg7U4_ej{dcj2{!+1sZ6<@9^?mn)=37V)DIAvS(}S`IgFO!6 zn({?nYw`Z-@jvt@!q|5z?TI3(dx^1szSn%azAwp>N#fk^kt|=MejKtacAs@Rdku#zT>9$s z=m7ek)`=O7hO2n+2Uj$QUs&2EIqycF{(L9Y#^IyxXA%R@ z&j`VAprIV~d!pH-7~zA+bjwVn3kOB3;rlg{nr&wHV12N}g^i>Upls~=z`VX>9HQ#= zTu&luVb@_Lkz63&&^_M!6(-2^0?GCAX9XKp{O={pd|AlIMGriX6s_Jy8_q9|{5jLc zxd1aj_ucE7Vcti#$r!s~w~W=XpaLQ}#mX`apR7^n9-d3?O+adJYr*L;{c)x@REewM@vZN0njS3iE$88KHPWAkWt((OUMherUnPm?i&8@!9E@ zUW^$%CpdruZR0ohzUq-XQ$KEIB8Sjgs1+wKSUH&Y;=ee%E&O$X18{&979d~K2uJW` zd*8awHCXb;Q>4z$B|sPNv+Zd__f6&@KmS+L`z3H1x+x|Xs7-N-iw|1C=QiJdU)f~z z{vO4hpP`0MyqmwIHN=l?jSq>OKG6CEC#O`*blP`?>)CUWj5j1cB>%6N7;`kfZ1iQV zam~SDB?{uyp^=vF_u|=8xn3S)L;wF8ZRZV{bezM-EH;MC91JQZ{KcZZ$IWJUy?SJGeGUWm6PeuO8-K2|hD~p;Ls~9Y-4lE+?|bF)XaNKUNX(K7 zBQk0Z{n>hrH-CA`bTr$6z0n@Cn9EL$XZ3=X7NopjcI=;z<(X7-oEmK}BId=PxX*!b7Q6oL@ufd%eEPc`_la(}WkT zKe?-YJWn^6b$^{dhdJZ)I!Kn6c}iw%o5mLDyvM7qJZbkGG?zLU;M|W;Wis|A;SuY3{_X53`+>9g^B%O4b{;^t$^;{oKHbo*CY%u91 zp#2d8Pg=I0&UX{qwr=y=o_^BLdk=KYH$=Z8+k|p8V5`ph~3b^{^NnL4m_+4zx( zeoTt@f<$DmsB1}o%R1Hx`ToPuBl+P6cb-?uF{1!z-2WvdR4+vJ*SYTic5@gwnzu%e zD!HF^X=$ha^#1hi*@~^nDL!HQ;MC&e+6=onaJgm-J-+|>PpmU=SIe?EQE5vJiqziw z*K=Z%bWZz_we!qiFqE`I?#$yozNxIE7Ei;csv>++r*?)0bozFpF&oLh94u z-2c2L`5BarP7l>87|f)vxaT*9(!Q`2xBMZ&^JVj-|1)Tg!6OW=lk=w zLwVlr!*<(l*L$a?ox3+%!~UIj3Ej@KD;W>1E_c)1szDi93BC;0K?drOQ>@$yi|DtT zSir}!Yx>znf&b0KS;Lk7VKPDF@e>(qQr0%SNcGQd(p9StjqJ`QSW&c{ggF?5{d22w zlkX%JTUq`;(3WSH+)WHl%qlF)iNG_?}K?ZM3cS7#u5v zZ!apx4Apv=PWsn}eD%MI#=KA)OlNy0)l@~D^1;NC5k@|OPW3wt>WNYDN+8~+gM%E! z$ z`Olr0;eytiK&~O*ps%KV?2vq+DhuRh*!6Ilzu>A;iMe9 zI?zug9nT9CI_o)O}KF_I_U z_Cswu{)3pCYgw{eOt#E?UCqBwkAugSl>5 zX?G=Ci(Lo+r3suuJezyQyDvw*<1b{rx*&ZaY2HlJ>k{Qc%IZeU43pQXw4mh!4I5>l zZ@4$uxaPY#!*IhL4Hctn#!n#S+SiPcZP_PTd5fXf1exhFi5zf3kl`UcW2RUk)F2oF z_ogN`{03PiseQR;fa#{Uy;jeNlJ0Sle`~;ZYhLjkuy>a^!Z_nR~`$&F?NVuIE3HX;i zD82snwlwPb`7yE)ZA_Ndmq5zuSO1{{1}(d9u4#!Fl_|eOuxKBwOfQ*tG`VjCV$-WF zxi0c&+w}Z)rqz{%f46@`ADPdGm#x)+zpT+gyfDi;_P zR{#Ta`Mzd=putKO@5lQJO*aNy(i?}Ltwy^Z;69f|eqi#UCI1$vL!+(#mi?dK`OL$! z3jQnx$_$+Li2<__CL@Wuk4^J7-!n3j2I4N8e#=qpir+iEQcrn3`B4yNOd1BBLEni<(tdRWE>m0I^ zt(^*Td+S3}$5rOzXy=MW>%#MN_qy%5St!>HrGZ~Fq1WKw-&kv@2TrCcPCPzY%2aO- zN?7@+$4?&qA|uv{QHuV)O9haZpG7Jx2f%D)7J@oWTxJ#E_YSq_6qT1tomOD?02(1otT{Hk8{?g(944>h4f% zOJ8tzjecV{x2uWde&6oAP)*({ zFkW0Q%gdI*9@W)oKO65DgP<3F_BIKvRXLAR?Z61&0g2TR6mEZ7OZK?dP7zukdg?s_tNZeuOsh^e1Tmdlz5rIg?LcK|%aQ1FsSDv#W0EnHd z9M)p;gAL_R~Z5cojTdwy+qDsd6R01Vtxmq&FhfPz{wxmB$${zW~z@{Ro_ zK#y5^KqIp!#@or>GD`c+aZ(PV1=`Eo1?a55p6a*WepFgxvmp!^2518YEU-;{F}fLr zD~)=S0m=+px3TUN8-El}Xb}{2ET*_i3-|WlY@V7vr6#&cOr*+oS9?GF?@)K6op>>o z4af0@%KwaLr`{3P&)474<3rDMsd!IM-bepWfhfuMmJt}#0%PgDSx*q(s0m%ZFgWTj zwwvH%2!(i9{RHX~FVUB5qHvF{+ZF}+(bZVPG1)a*Ph>KV;cYNK^aB@R#dS~&`^60V zn2Z24Y{{djzK33}t@q%!v5k)u7jAXB_H{#4Ut2 z1}0j5$RXcTyfazqL9=^Qe%GL`G)=!lirv7AgVRf^=XyEM&kiOe_%JD!O?sXK&hrDo zF}m9B68im!oGshuZluy2H#T$`XPZQu@zf;(nBCZB-cjQ&w*p@Tm_$pe^MTN3EauI) zJG&G^H-4S|1OCd#@A6jO+IcAXG#5M-d9E!^YNmV7Z(=F^?8bfrYf&mLMnRd_22&Q} z2*msbLsrI!XPeOK@|V?n>`kNC`8eSFmekELLr|!-wQRltxZnuRedup<7VflowJ+gC z)F}P6lUSsh^B41?=~0*68YA6z63lKG`W$@{GV!cC2FCl0s<7yz6!3JWoBbUDTgpg% z4VNUk%xblMy7PjLF2We*3XY7K*N(*9Yx!_M zjU$&JXLiNxaTzoa&k@NSbzbLJTn$6bu6SPWYx)Zc1Li~Lqj($GuWsA#;zg85eH{yx zz3IIOea3A4QFGmJCfn7N_d$8a77j+T^W}Sr%0XdVLFf&zJ$s^D5Vrc!iV&GXyb5*A z6mG8d*6EDN7a;=dgVjYI--~4@Fe{{fcJ4B|;_Qg~&%6#?I(?X_$S4rDw{=>=8iZS=M^I#EF!m zXn%K_xXWwmm7R40LKXPo6ZzNZfN1-$S6RuVU=JlC|3#Xjo-%ebJvvC4n%IM)Q8NDh zGXd)L;ay_JMozc^mU*Uifnp=#+if>LD*O9MV#@wB1l``z|tlu(7PJqS6rm)0@ zJzP50{0Vpa`_?92oB;*i(?i225a6tZgT+9Dg?vTh)N4OKA~(c8{$8-ZKz=mb@$4IT9g8>;k11WIT+Y=%Z})`y#OJ zK-~rlEy!T%0h!Qo+jjPF2RQz2Z^B;dbvYg2JS`+@D~OWH{2-EEs^BdnuJskh>CKeT z1b;%8dU6QU%i@z?^6Q-{XESe^qRiw`ka+k!d-{c%&lXM}vCX^T=|?|;t6r?N*h-W4 z?o4Hy%BWqW+5=+md#5^8|49zjM zon_Do@rhzZ4XAb}-m|bMH$Vg<;^Bo6A8cfhUQ>|wFk~j(`>1NgD3sTg)He1pWrUj9WZ8R(Wn5Rr zhc&dXvv_m%HrwwHo9l_))NgdVUff%d&@4^$Pc=MDZdZ^xHL$KX^ z7W1{3UJ%>9v$W{Y3>vBvflE-soDj8{`>#F|8Z$EF%lN$NylORTn5JsI4mTMHWd*%- z2sD(RO(H-&i8&Ge)5i12slI5VekYCZ)s8rv&_)194;vKY2m8DIC2{4<&xTM3HHxwT zd(42n)gCJ$O4I|8sJq07#0U7Yk7PjPK&bMdy-5b)OdhSsBo^|IB_H43@&F@tpdJR0 z#~)=UJdP|=)O{0(rVZnjbTtwHV^}&kfLJQP@R6rda;K;O>9J9bnW$BgbzOZ8aO{D8 zPuJ%=Nqg~rdzk-IW0ZC5I%cc;ek5~=lDXl4?gMOQQ!KE5Aq$9qeGFM6jFP;Xy6)%N zjg{q(E6fnF02P3L*tutbHRR-gyYK3g^y9H?GMtIs;ojG zY~3*C>qD)(8jz}89w|xfb7L`^d>AG#%D-uq=qz}(o9kzzrx0LSBX90ykr*5oM+YmoTRWe+Cj6aq^xnWRymLmE>krCpoC9K%2LT0aK0Y< zt@kUUrrj1WL9rmBB8B;WXqg-BztOiUZX-!`*a&-75+!WZ!R0OPiZz?w`Of4q#+(;m z`${Ea6GnTCY3`V2R8w*}knf)*`RA@(8k{Lp4VP;<+ z9O_z0_{3=HcVi z5)&QGEB_&$)mu@)(Z8zuw#>Gc6C>^O-FUZEo;TO1@$>-xu%`v`tMS3V-8R1pb5w&zP%&rAP2*5h z$k{jqReFXCJhJ?-{x(2j5gH_zQ>;#Ec*@bUqF0u}XB09+U-K}+jQd>)k#AOkr6M8x zHyhrfJ`99@Vzr_B@*p@`DxeJ#`jimavZ9ZV%v{mO0!%9$TY(f%_}BU~3R%QxmSdD1 z2Bp45R0C=8qtx-~+oULrzCMHMof!&H<~~>BhOu9t%ti7ERzy&MfeFI`yIK^$C)AW3 zNQRoy0G}{Z0U#b~iYF^Jc^xOlG#4#C=;O>}m0(@{S^B2chkhuBA^ur)c`E;iGC9@z z7%fqif|WXh26-3;GTi8YpXUOSVWuR&C%jb}s5V4o;X~?V>XaR)8gBIQvmh3-xs)|E z8CExUnh>Ngjb^6YLgG<K?>j`V4Zp4G4%h8vUG^ouv)P!AnMkAWurg1zX2{E)hFp5ex ziBTDWLl+>ihx>1Um{+p<{v-zS?fx&Ioeu#9;aON_P4|J-J)gPF2-0?yt=+nHsn^1G z2bM#YbR1hHRbR9Or49U3T&x=1c0%dKX4HI!55MQv`3gt5ENVMAhhgEp@kG2k+qT|<5K~u`9G7x z?eB%b2B#mq)&K}m$lwDv|MU~=Y(D2jO{j*Box$GUn=$90z6O^7F?7pn=P;{r4C8qa zv1n*5N7uIvTn`8$>}(74>Oqk=E7){#pHUFd5XRJ5ObMhqODTa}=V0;+a(7JZR-4<3 zBTvsqRwLh?*ZF)JWsWOkEq7*XMQ!G3Rmkdh7ZbM#v1~?jt((e2y}u}Ky>1qa&Y7m@ zveIzH@?5Gexr79*?sbZGkVS;s1U<7D(%~7HjAmzj$aDYv_FGl5JX@LW8>w=HCDl6W z%?rsr0)bErYJ5G1v&zjr{8=lW)ZYcstgZAuL}!0~8HAcgOm@nJ9cvOOtL@)Fpl2Dr z8876Lt<|1eF88Jx#C*XyGI)C5z_o!Os!t=Xy0$Kj^4fG1pb@16%g z+<)zJ1n1QO78g#$3yHj+(Smv`HW5y_-PP{h2A1UXMG-c%hMvHLbF6t}G>KA)H# z`AWL~>8JUT(iq7;zJr!Aj)AS+n{mRbA3aM+Gj}b#PhHdTM_NkwQm330EC9waM$=slPfxR1vmr!vf~t_M?a%`@`&tdE}ipY-p#Q#zhLK zd9eFC;PjIEAKLkRkO94{rTuNFqKbNUGtaNZRRbax9;|%2WbnGu!44#64RriY5u0O} z05G^e&JB?Wb*8^g)aM`yt|}~QJkKCipFNeyex~P~SFPVEafD(73rncKmm)m~&`O*YUyY9z7tO%ec7z@wWcoOr-ebP z1k+|y?d{>1jLC=s4B2tEhiTtu->WVJno&%%6bG46KuU9D`GEN!C!9chM>zd=cl0+- z^k>4rpkq7_iWGHtBvy$Q`dja2;1ZdYmF6cANU6{v>l1=fSKRpsTRonp@alC%p{bhU z>g+(%-)&_nDQ~#bq5;xo^06RggA&uH4RMVb6wt;oQI+`m_zt>SiI5hXkfEnn6@ZNk zh9KUr1jtt6lBg$O#TAoTRvwUtWeMP3EjnGoRPQppiNF(sX%|Q4@kIjas|WZWXSENO zfF#2yOb;%XO*LeOoAwlf{u7_39$x(w3xT~)2BNJ2l5u4n3a0NkNLT4yT);7fA?1Vt zCz*`hbw-doYa09E!05zcfOT0EOORY``E@D z5{v%@F~&|UfNt@>vrj66W5f>jy+G_8&VB9D0*>N!7_Nr=-x6N?A)M8>1~q(X34sXp zpA%@w&c};L7u*G3;(Qe=LFL}NbTF$|aX#A%P(h`-N=ZRxCvlG$>Klv}jo0MS|UR8qKq-1FokBJmrbTJjQ!k#Is0tY+0c)m4Gp80YzYD zEGXd~ihaihk;?xUknXNH?rssjzaF+l6?HnDQjVP$i=q}{lp_WbOTKKg}HPKW)2sW`L#NvgmaY0^b2Ldk|t{P6{L{>ym;Xgao1PrudBgEMRFb^ zkPJ6v0h^tJ>K@;maHk_|6Z>yFzq@YvDOeO6Ob_?P4Ey>kHiJv`Wlh_MX4fBY36f%^ zV#2t;$Rg&}!Kwifm z;TVZXMxw3~$--{&A8-6vnUZ#s4`Z-zQ#+y7UI8#Hgsc|ompLUc zqlAG!Ti>t{JzYF^5pM925*PUWUvDuYDGKhC4FMx45c`L#V7%V+88@|khLj|V=J9Un zJEcP5qVCzR6p{FK!nIY~TXo)tJ!{>CG;~&u;EPlnNrwJ=5)ke@hJosN!siM$8b2mM zmc&weo-rY{n1+%c`c<{AT3i zjF{p253Ul-)s5A+!8Dp7?viXAdH1+qlY%mK5pp?{pS1t!3qmmDOq2TnoV`F3<>(XK z1=gfH39N_~8O+~({MZX~+QHyB>vtgwK0@uqGkX^eaf$UFHiO#>LB*7@=c0o6`0muj zmH00_F#p)s3E*$A-zP+p2bvXARTg3)Lxh`tf~9X>7!Z^kHV`uE%V9+BiBG=mxj*)M zr%3rn=)>GR`{#zmwD)$3ToLMx++uqsCx(+50Uk*5QJp2c6msxLD&P-y{c|XK6zZl3 z_Fgu8kp|gKVWv`GS!c56FWPO)ZrCCtYh#*yp-ssus)ot>_~UB zyGfjTjz#fXod{^KEQK1~@jN|;SZw5OgH#0wK78Oe4#vV3*|&XPQU z$r~5u8ziT0<#ICrX^<1){mvtaqT9OqlW?wiSu4X#rOC(0uL{Ownb%i1F_G&d>=l51 zx!FEO4_LK+)W^N6UF+fAccyyp{t)TE`;vF@1irbNjcXF8b?yFh zl5UEB>@;wO`~gMF!QB;h<``+f(lxAb_8B$;&vT7)(bXG(7x_5f%AZ5;h#3WjHisX{ zLTSguapAADXMwWZ&jsD0+K!+8#*6z7-(T+QUk>(~!Q|0&!d)PgEw8F6RK;LkB;!HXg79$+l*KU&-fRF|$o+kR4mJ36k9p&>*uS~RhCV+*Y$3U-k%~M)jxCFW zl9;bQ-fx4HPy)*(bhrKL!81M6*@6p5W?z*W`jb;@JKMFwmic{gQPv*) z?I{Fh)y)}(-6uh^I52xKo!LRZV0c*1X)Z(g+GVFN{2n%vD*@&IkVI{R_0;M28M z8vu?M+xVF-&<{l@1g{PA#hnyAq(gudz4WKSFL5YOr3q!|qrxa7z~F~rEJ29VQKgNe z1*L^m9&acg2p7&`u&V%oY|AKF(Xpv=)wf&j#n|;2UYEaUIHLJuTQw$SbrNn+)38PlfV^0<6s>)|hT#IAAS*T)_^_q@I} z0S%tV-HrXOjzkvW!YSbDjdH=g;=4A@whsDB zI8^aX6n=|ab(?!Ay!)CxH(wC(iX~Q@%FEx>C{Hmp98f2ku$Bsw%lk6v50(U@; zu68Z9U&za}O#-Mv^+!V=eyj6S)5oS{My`1MVs)nlnYl_$xU^QId1_jMf7&K8ij)jQ zJ|+~@l)xpV%~Y{P()$`+nBihkjE|3t3t8PoKU3wZ_Eg%0P<>%(A@oW#*8i$X!nfG& z;&&2ZIKlD~*Gff+p3A7QB!}Ei>RGhUUz^UoEpeJ{`2ov>wH!O@1$VW>A#D#{i2z9l z{d)FK9OYxRY#(6NUMO=q^5Ve7R|72%f}ZDlsm0BN&LzyaSHurXV4p5HGf7|Z)}8)g z5J#S6h{-+_U0m$k#+|N{6_8MYactWzWb+1~ea8wX3zX<@O0>pU*q($J{=R&7)P&jg z6Kb)o=HAnC_MP;cIeBq}{gG^0CZzOUJZ|7C-VjE}!?*UtKTcwwF33v^BYC&}Rq)C* zpAJ07-!{`flYX1@n;ZK-=x4)!o(%(1UqulVmes(D z^`_HNfM#umEYy~=zh$9&+?8$4!l(4rr?d#8hS4iks@9w%E4l`BKmhUtvsm1X-mKC3 z>4(u4yS45OgZIOQ;EQ6s`sjNelo!~mLe7gS69TW2WnFwEKcAwioq2mLXV<9CIa#(0`sQpl>vwW`A$D?!2%nt*HEb;Ga=o?92 zHAOICmXHEQ%Cc{m2>dLjPU1J}^w7zilFIxy9nG(OZbYPtW?3KJyv@A7|1A*NiD_v! zTLC}%E4kI*d?$lQBRL==MPsD#FyN0ZSr`;aeQ4C6a2INH9klU~_gCH;G2%8R4EuHb z44Ej^6301>?c06FP3X~xyP{77p`-3td;HKAGf4mZw1qRd6Z^^L#?qaiAKv~px)*jAV^re~beps9m{kJzb6n(oS8uCt#Lnjofg;Rl z=apY)JsV;^dVkzCW)jDrii_WTT`3iKri(xmCC1^AO}Vqt-1B*wwIlBAmE1AmdRtMc zD!fB@mtwHPHyV-^VIVU??*~*{olz-Ub)NCX941BDj_CKZ+QYQ?+``tyhy_7WFXF}_ z?~CVO#LsDYD!&}cph22{PZ*TK?$K^u`E7%{^na89Rm%!jSZs7vI-D zL1POD!1cu56G)*p1gui3-i^JZPX3tI*_Fq&JRwbz*#8LUSiMRWjuu`zD|uk;+X&d@ zuxF5C2{Zp#O?GtOB+R2~tF>MDI(}%p-W=M>1tEY}8E=b_l*WbOO zY9tCPgL3vMEqz)_eWeqmN{qobq_4)XdXJSe6Hj;Eie0??2ZZ?p;*_K8@(&v~1evu- zxQCA2YYvv@qhzamqdi`?{Z{c*7$arCdz4-4G(`O5It%y&8>d{#Y9Vax^FZ99ZK zUdIPpkNhp8uP3T+W4lhvUIYaoY##y6KtxBFoj3&5^@Q(^{677%C#3YJh$p-Ee2M6F ztJAoQv1N0L!|N8XBD(eAYcB#gRaIX7T8U5xXbx~cJSon~YnC zaJYE%zOj9y?E==_B$*9NiAm{~)2Z}t1$$l?qOYct5Ep5HvqFKvuSE7A5YF$K@2>UE zbQOdTNzjD#zS(L>wa2$K-WK!Pc%pY^8To58;^JaXZ}F30wuYl;WWs~rCoo&vrEtUh zTBLMU??yx1#;-weCPZyOJ%Yeb?14z+OXW0L_E+<)(q=;xz74U-Q~R~n*oC;MxyrJo(74r$y2t;x`D~{nhUw`N{Bbc zo`l5kb`Yy;L=&@MTQ~Ml_%V%){mCIj4WC}5q=A_ACx2^by!4w1rVX6H0ifayJsw;; z=+}5kjC?RG*q)^FA;udd?fK$7vU1x>y0w;A-)YbE%l$J%nRRjAIlrItFPgQvJ7Ytb z%HSFnjF2||X&L_g-Q>1{(mholW_-EJmSzsO%*VVVB4)#OAv<(kOIx2H!f)I9#e_Nyjdb$&*1KN^gM}yFIhi%%BWB}7Ke0M{0WY>CxJQUuL<9GW$I>S z8~;QmE{^wS?I`=DyV^l+MozMPWLoFz=uSLu99tiVHdCN>7jRs~vd13`&Gey!!7_+< z6o@25%!eN~+Eki#7iq@#{Hxl7pF0^`N;~p~#tc6HXJP0g5xvK|AuLSwNHVI2_Y-!& z4hemc%vOM5!ySDypyEGe=lAeFbIp`w8FIUcTqUwens>sTIV-jDhrcKGX7XHFXyazb z^DO8=ZgefY6R6&+)c1_i*WoenjtR5@_JU#Ph;4M8fpmznxE9R`=r@-#_y zkD?Muq|*gg7f*BQeI|Np#}Q|NXLJHM6GE{;SJn8ce`V1Gehym~{8c+M<2~=HcCRuk z-v&$8dc8YG+tK}NYVhwdm1iZ&A#r+T<>Ez88)Eq9j+G5h5D(_u{WQdUTOs+QbA(=? z{F6n6UV8D2*lvb)0vDrca$729KG$xO2aH$jWoWl0drlmefYsTswh)`GjMtmR=vEkJ zN$aTp_@@KL%KQ-VDB2ppbZK@X`6cJA5n`g>sbCTvU_xdid!{9gWA|>Mfs6rtHx6s` z_wMt*FgUTBZ@I2C62&zbs?pPvK9TpatkXzqDqe4YTr^nnQg8gWxjKt*s&eOMEp!Qc zG~PT`>xg76Xqh^dKI-Eu#K*VnvEf9qT{L0yNpVj)eVD#kQzGgVRbTB!5nWY=?t!cggiEGBAcWM2xNtW&9 zZB_6RZ}|a87CuEYRYCRJ`Sg+_gBK$_J@*zoWcJJw>eBw?G9WY(Jw~qN|A3MBR^~jm?>k5oGv7z+0jWOox(co@%nya|* zE-2peyX)#@svgwwDMPJ89dT=iO>}@wtNR@NUQ|cJZ};sX(w2uWP4AE5)@A ziJgy_TIZ+T&vG&xPh@Jmt!OJ|zA6C0ZxfF2 z7>aIZqecbmM$lyvDMwg2?Ipo9b)-WL6K_7(X_rmJgdd$-Qc^ywEw4SThChz6*_yu= z{v~a4V|RJtH-GThc2C0Z|JHPl{II-!?B~7cWnRz&dgP*UqoY!iCo&i-xeM}kl?ID* zKTX`w+;z0+MCdGcl{N?xb|tYb%Id=k++k_@(V%bTS&n09`0{S0)|>IH_F;V@_zrxS-dKDDc7+i`nHN8J z;38w69lzAS*WWa+dnVvk(0-KD3%*)TerLH zSCc}Tjc-mR5|1HAL$C1}oue|Qp&M!hmyDUcg)Cz>GXPEyeYf}+s48kIl*pL{{treP BIP(Ai literal 0 HcmV?d00001 diff --git a/examples/react-native/offline-transactions/android/app/src/main/res/values/colors.xml b/examples/react-native/offline-transactions/android/app/src/main/res/values/colors.xml new file mode 100644 index 000000000..21cc1554d --- /dev/null +++ b/examples/react-native/offline-transactions/android/app/src/main/res/values/colors.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + \ No newline at end of file diff --git a/examples/react-native/offline-transactions/android/app/src/main/res/values/strings.xml b/examples/react-native/offline-transactions/android/app/src/main/res/values/strings.xml new file mode 100644 index 000000000..da60a7387 --- /dev/null +++ b/examples/react-native/offline-transactions/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Offline Transactions Demo + diff --git a/examples/react-native/offline-transactions/android/app/src/main/res/values/styles.xml b/examples/react-native/offline-transactions/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..26f3404be --- /dev/null +++ b/examples/react-native/offline-transactions/android/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + diff --git a/examples/react-native/offline-transactions/android/build.gradle b/examples/react-native/offline-transactions/android/build.gradle new file mode 100644 index 000000000..fa7b11e23 --- /dev/null +++ b/examples/react-native/offline-transactions/android/build.gradle @@ -0,0 +1,37 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + repositories { + google() + mavenCentral() + } + dependencies { + classpath('com.android.tools.build:gradle') + classpath('com.facebook.react:react-native-gradle-plugin') + classpath('org.jetbrains.kotlin:kotlin-gradle-plugin') + } +} + +def reactNativeAndroidDir = new File( + providers.exec { + workingDir(rootDir) + commandLine("node", "--print", "require.resolve('react-native/package.json')") + }.standardOutput.asText.get().trim(), + "../android" +) + +allprojects { + repositories { + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url(reactNativeAndroidDir) + } + + google() + mavenCentral() + maven { url 'https://www.jitpack.io' } + } +} + +apply plugin: "expo-root-project" +apply plugin: "com.facebook.react.rootproject" diff --git a/examples/react-native/offline-transactions/android/gradle.properties b/examples/react-native/offline-transactions/android/gradle.properties new file mode 100644 index 000000000..7531e9eb2 --- /dev/null +++ b/examples/react-native/offline-transactions/android/gradle.properties @@ -0,0 +1,56 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m +org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true + +# Enable AAPT2 PNG crunching +android.enablePngCrunchInReleaseBuilds=true + +# Use this property to specify which architecture you want to build. +# You can also override it from the CLI using +# ./gradlew -PreactNativeArchitectures=x86_64 +reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 + +# Use this property to enable support to the new architecture. +# This will allow you to use TurboModules and the Fabric render in +# your application. You should enable this flag either if you want +# to write custom TurboModules/Fabric components OR use libraries that +# are providing them. +newArchEnabled=true + +# Use this property to enable or disable the Hermes JS engine. +# If set to false, you will be using JSC instead. +hermesEnabled=true + +# Enable GIF support in React Native images (~200 B increase) +expo.gif.enabled=true +# Enable webp support in React Native images (~85 KB increase) +expo.webp.enabled=true +# Enable animated webp support (~3.4 MB increase) +# Disabled by default because iOS doesn't support animated webp +expo.webp.animated=false + +# Enable network inspector +EX_DEV_CLIENT_NETWORK_INSPECTOR=true + +# Use legacy packaging to compress native libraries in the resulting APK. +expo.useLegacyPackaging=false diff --git a/examples/react-native/offline-transactions/android/gradle/wrapper/gradle-wrapper.jar b/examples/react-native/offline-transactions/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..a4b76b9530d66f5e68d973ea569d8e19de379189 GIT binary patch literal 43583 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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 GZ~q4|mN%#X literal 0 HcmV?d00001 diff --git a/examples/react-native/offline-transactions/android/gradle/wrapper/gradle-wrapper.properties b/examples/react-native/offline-transactions/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..37f853b1c --- /dev/null +++ b/examples/react-native/offline-transactions/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/examples/react-native/offline-transactions/android/gradlew b/examples/react-native/offline-transactions/android/gradlew new file mode 100755 index 000000000..f3b75f3b0 --- /dev/null +++ b/examples/react-native/offline-transactions/android/gradlew @@ -0,0 +1,251 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/examples/react-native/offline-transactions/android/gradlew.bat b/examples/react-native/offline-transactions/android/gradlew.bat new file mode 100644 index 000000000..9b42019c7 --- /dev/null +++ b/examples/react-native/offline-transactions/android/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/examples/react-native/offline-transactions/android/settings.gradle b/examples/react-native/offline-transactions/android/settings.gradle new file mode 100644 index 000000000..6617bce75 --- /dev/null +++ b/examples/react-native/offline-transactions/android/settings.gradle @@ -0,0 +1,39 @@ +pluginManagement { + def reactNativeGradlePlugin = new File( + providers.exec { + workingDir(rootDir) + commandLine("node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })") + }.standardOutput.asText.get().trim() + ).getParentFile().absolutePath + includeBuild(reactNativeGradlePlugin) + + def expoPluginsPath = new File( + providers.exec { + workingDir(rootDir) + commandLine("node", "--print", "require.resolve('expo-modules-autolinking/package.json', { paths: [require.resolve('expo/package.json')] })") + }.standardOutput.asText.get().trim(), + "../android/expo-gradle-plugin" + ).absolutePath + includeBuild(expoPluginsPath) +} + +plugins { + id("com.facebook.react.settings") + id("expo-autolinking-settings") +} + +extensions.configure(com.facebook.react.ReactSettingsExtension) { ex -> + if (System.getenv('EXPO_USE_COMMUNITY_AUTOLINKING') == '1') { + ex.autolinkLibrariesFromCommand() + } else { + ex.autolinkLibrariesFromCommand(expoAutolinking.rnConfigCommand) + } +} +expoAutolinking.useExpoModules() + +rootProject.name = 'OfflineTransactionsDemo' + +expoAutolinking.useExpoVersionCatalog() + +include ':app' +includeBuild(expoAutolinking.reactNativeGradlePlugin) diff --git a/examples/react-native/offline-transactions/app.json b/examples/react-native/offline-transactions/app.json new file mode 100644 index 000000000..8178a1cda --- /dev/null +++ b/examples/react-native/offline-transactions/app.json @@ -0,0 +1,29 @@ +{ + "expo": { + "name": "Offline Transactions Demo", + "slug": "offline-transactions-demo", + "version": "1.0.0", + "orientation": "portrait", + "icon": "./assets/icon.png", + "userInterfaceStyle": "light", + "newArchEnabled": true, + "splash": { + "image": "./assets/splash-icon.png", + "resizeMode": "contain", + "backgroundColor": "#ffffff" + }, + "ios": { + "supportsTablet": true, + "bundleIdentifier": "com.tanstack.offlinetransactions" + }, + "android": { + "adaptiveIcon": { + "foregroundImage": "./assets/adaptive-icon.png", + "backgroundColor": "#ffffff" + }, + "package": "com.tanstack.offlinetransactions" + }, + "scheme": "offline-transactions", + "plugins": ["expo-router"] + } +} diff --git a/examples/react-native/offline-transactions/app/_layout.tsx b/examples/react-native/offline-transactions/app/_layout.tsx new file mode 100644 index 000000000..b9d10f17b --- /dev/null +++ b/examples/react-native/offline-transactions/app/_layout.tsx @@ -0,0 +1,26 @@ +// Must be first import to polyfill crypto before anything else loads +import '../src/polyfills' + +import { Stack } from 'expo-router' +import { QueryClientProvider } from '@tanstack/react-query' +import { SafeAreaProvider } from 'react-native-safe-area-context' +import { StatusBar } from 'expo-status-bar' +import { queryClient } from '../src/utils/queryClient' + +export default function RootLayout() { + return ( + + + + + + + + + ) +} diff --git a/examples/react-native/offline-transactions/app/index.tsx b/examples/react-native/offline-transactions/app/index.tsx new file mode 100644 index 000000000..46f1e79d8 --- /dev/null +++ b/examples/react-native/offline-transactions/app/index.tsx @@ -0,0 +1,10 @@ +import { SafeAreaView } from 'react-native-safe-area-context' +import { TodoList } from '../src/components/TodoList' + +export default function HomeScreen() { + return ( + + + + ) +} diff --git a/examples/react-native/offline-transactions/babel.config.js b/examples/react-native/offline-transactions/babel.config.js new file mode 100644 index 000000000..e1e3637af --- /dev/null +++ b/examples/react-native/offline-transactions/babel.config.js @@ -0,0 +1,6 @@ +module.exports = function (api) { + api.cache(true) + return { + presets: ['babel-preset-expo'], + } +} diff --git a/examples/react-native/offline-transactions/metro.config.js b/examples/react-native/offline-transactions/metro.config.js new file mode 100644 index 000000000..50a634ac6 --- /dev/null +++ b/examples/react-native/offline-transactions/metro.config.js @@ -0,0 +1,48 @@ +const { getDefaultConfig } = require('expo/metro-config') +const path = require('path') + +const projectRoot = __dirname +const monorepoRoot = path.resolve(projectRoot, '../../..') + +const config = getDefaultConfig(projectRoot) + +// Watch all files in the monorepo +config.watchFolders = [monorepoRoot] + +// Ensure symlinks are followed (important for pnpm) +config.resolver.unstable_enableSymlinks = true + +// Force all React-related packages to resolve from THIS project's node_modules +// This prevents the "multiple copies of React" error +const localNodeModules = path.resolve(projectRoot, 'node_modules') +config.resolver.extraNodeModules = new Proxy( + { + 'react': path.resolve(localNodeModules, 'react'), + 'react-native': path.resolve(localNodeModules, 'react-native'), + 'react/jsx-runtime': path.resolve(localNodeModules, 'react/jsx-runtime'), + 'react/jsx-dev-runtime': path.resolve(localNodeModules, 'react/jsx-dev-runtime'), + }, + { + get: (target, name) => { + if (target[name]) { + return target[name] + } + // Fall back to normal resolution for other modules + return path.resolve(localNodeModules, name) + }, + } +) + +// Block react-native 0.83 from root node_modules +config.resolver.blockList = [ + new RegExp(`${monorepoRoot.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}/node_modules/\\.pnpm/react-native@0\\.83.*`), + new RegExp(`${monorepoRoot.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}/node_modules/\\.pnpm/react@(?!19\\.0\\.0).*`), +] + +// Let Metro know where to resolve packages from (local first, then root) +config.resolver.nodeModulesPaths = [ + localNodeModules, + path.resolve(monorepoRoot, 'node_modules'), +] + +module.exports = config diff --git a/examples/react-native/offline-transactions/package.json b/examples/react-native/offline-transactions/package.json new file mode 100644 index 000000000..7272cdcbe --- /dev/null +++ b/examples/react-native/offline-transactions/package.json @@ -0,0 +1,48 @@ +{ + "name": "offline-transactions-react-native", + "version": "1.0.0", + "private": true, + "main": "expo-router/entry", + "pnpm": { + "overrides": { + "react-native": "0.79.6", + "react": "19.0.0" + } + }, + "scripts": { + "start": "expo start", + "ios": "expo run:ios", + "android": "expo run:android", + "reset-cache": "expo start --clear", + "server": "npx tsx server/index.ts" + }, + "dependencies": { + "@expo/metro-runtime": "~5.0.5", + "@react-native-async-storage/async-storage": "2.1.2", + "@react-native-community/netinfo": "11.4.1", + "@tanstack/offline-transactions": "workspace:*", + "@tanstack/query-db-collection": "workspace:*", + "@tanstack/react-db": "workspace:*", + "@tanstack/react-query": "^5.90.16", + "expo": "~53.0.0", + "expo-constants": "~17.1.0", + "expo-linking": "~7.1.0", + "expo-router": "~5.1.10", + "expo-status-bar": "~2.2.0", + "react": "19.0.0", + "react-native": "0.79.6", + "react-native-safe-area-context": "5.4.0", + "react-native-screens": "~4.11.1", + "zod": "^3.25.76" + }, + "devDependencies": { + "@babel/core": "^7.26.0", + "@types/cors": "^2.8.17", + "@types/express": "^5.0.0", + "@types/react": "~19.0.10", + "cors": "^2.8.5", + "express": "^5.0.1", + "tsx": "^4.19.0", + "typescript": "~5.8.3" + } +} diff --git a/examples/react-native/offline-transactions/server/index.ts b/examples/react-native/offline-transactions/server/index.ts new file mode 100644 index 000000000..f0e72c72d --- /dev/null +++ b/examples/react-native/offline-transactions/server/index.ts @@ -0,0 +1,112 @@ +import express from 'express' +import cors from 'cors' + +const app = express() +const PORT = 3001 + +app.use(cors()) +app.use(express.json()) + +// Types +interface Todo { + id: string + text: string + completed: boolean + createdAt: string + updatedAt: string +} + +// In-memory store +const todosStore = new Map() + +// Helper function to generate IDs +function generateId(): string { + return Math.random().toString(36).substring(2) + Date.now().toString(36) +} + +// Add some initial data +const initialTodos = [ + { id: '1', text: 'Learn TanStack DB', completed: false }, + { id: '2', text: 'Build offline-first app', completed: false }, + { id: '3', text: 'Test on React Native', completed: true }, +] + +initialTodos.forEach((todo) => { + const now = new Date().toISOString() + todosStore.set(todo.id, { + ...todo, + createdAt: now, + updatedAt: now, + }) +}) + +// Simulate network delay +const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)) + +// GET all todos +app.get('/api/todos', async (_req, res) => { + console.log('GET /api/todos') + await delay(200) + const todos = Array.from(todosStore.values()).sort( + (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime() + ) + res.json(todos) +}) + +// POST create todo +app.post('/api/todos', async (req, res) => { + console.log('POST /api/todos', req.body) + await delay(200) + + const { text, completed } = req.body + if (!text || text.trim() === '') { + return res.status(400).json({ error: 'Todo text is required' }) + } + + const now = new Date().toISOString() + const todo: Todo = { + id: generateId(), + text, + completed: completed ?? false, + createdAt: now, + updatedAt: now, + } + todosStore.set(todo.id, todo) + res.status(201).json(todo) +}) + +// PUT update todo +app.put('/api/todos/:id', async (req, res) => { + console.log('PUT /api/todos/' + req.params.id, req.body) + await delay(200) + + const existing = todosStore.get(req.params.id) + if (!existing) { + return res.status(404).json({ error: 'Todo not found' }) + } + + const updated: Todo = { + ...existing, + ...req.body, + updatedAt: new Date().toISOString(), + } + todosStore.set(req.params.id, updated) + res.json(updated) +}) + +// DELETE todo +app.delete('/api/todos/:id', async (req, res) => { + console.log('DELETE /api/todos/' + req.params.id) + await delay(200) + + if (!todosStore.delete(req.params.id)) { + return res.status(404).json({ error: 'Todo not found' }) + } + res.json({ success: true }) +}) + +app.listen(PORT, '0.0.0.0', () => { + console.log(`Server running at http://0.0.0.0:${PORT}`) + console.log(`\nFor Android emulator, use: http://10.0.2.2:${PORT}`) + console.log(`For iOS simulator, use: http://localhost:${PORT}`) +}) diff --git a/examples/react-native/offline-transactions/src/components/TodoList.tsx b/examples/react-native/offline-transactions/src/components/TodoList.tsx new file mode 100644 index 000000000..62a5c4246 --- /dev/null +++ b/examples/react-native/offline-transactions/src/components/TodoList.tsx @@ -0,0 +1,465 @@ +import React, { useEffect, useMemo, useState } from 'react' +import { + View, + Text, + TextInput, + TouchableOpacity, + FlatList, + StyleSheet, + ActivityIndicator, +} from 'react-native' +import NetInfo from '@react-native-community/netinfo' +import { useLiveQuery } from '@tanstack/react-db' +import { + todoCollection, + createOfflineExecutor, + createTodoActions, +} from '../db/todos' + +export function TodoList() { + const [newTodoText, setNewTodoText] = useState(``) + const [error, setError] = useState(null) + const [isOnline, setIsOnline] = useState(true) + const [pendingCount, setPendingCount] = useState(0) + const [offline, setOffline] = useState | null>(null) + const [initError, setInitError] = useState(null) + const [isInitialized, setIsInitialized] = useState(false) + + // Initialize offline executor + useEffect(() => { + console.log(`[TodoList] Initializing...`) + try { + const executor = createOfflineExecutor() + setOffline(executor) + setIsInitialized(true) + console.log(`[TodoList] Executor created successfully`) + + return () => { + executor.dispose() + } + } catch (err) { + console.error(`[TodoList] Failed to create executor:`, err) + setInitError(err instanceof Error ? err.message : `Failed to initialize`) + setIsInitialized(true) + } + }, []) + + // Create actions based on offline executor + const actions = useMemo(() => createTodoActions(offline), [offline]) + + // Use live query to get todos + const queryResult = useLiveQuery((q) => + q + .from({ todo: todoCollection }) + .orderBy(({ todo }) => todo.createdAt, `desc`) + ) + const todoList = queryResult.data ?? [] + const isLoading = queryResult.isLoading + + useEffect(() => { + console.log(`[TodoList] Query state:`, { todoCount: todoList.length, isLoading }) + }, [todoList.length, isLoading]) + + // Monitor network status + useEffect(() => { + const unsubscribe = NetInfo.addEventListener((state) => { + const connected = state.isConnected === true && state.isInternetReachable !== false + setIsOnline(connected) + + if (connected && offline) { + offline.notifyOnline() + } + }) + + return () => unsubscribe() + }, [offline]) + + // Monitor pending transactions + useEffect(() => { + if (!offline) return + + const interval = setInterval(() => { + setPendingCount(offline.getPendingCount()) + }, 100) + + return () => clearInterval(interval) + }, [offline]) + + const handleAddTodo = async () => { + if (!newTodoText.trim() || !actions.addTodo) return + + try { + setError(null) + await actions.addTodo(newTodoText) + setNewTodoText(``) + } catch (err) { + setError(err instanceof Error ? err.message : `Failed to add todo`) + } + } + + const handleToggleTodo = async (id: string) => { + if (!actions.toggleTodo) return + + try { + setError(null) + await actions.toggleTodo(id) + } catch (err) { + setError(err instanceof Error ? err.message : `Failed to toggle todo`) + } + } + + const handleDeleteTodo = async (id: string) => { + if (!actions.deleteTodo) return + + try { + setError(null) + await actions.deleteTodo(id) + } catch (err) { + setError(err instanceof Error ? err.message : `Failed to delete todo`) + } + } + + // Show init error if any + if (initError) { + return ( + + Initialization Error + + {initError} + + + ) + } + + // Show loading while initializing + if (!isInitialized) { + return ( + + Offline Transactions Demo + + + Initializing... + + + ) + } + + return ( + + Offline Transactions Demo + TanStack DB on React Native + + {/* Debug info */} + + Init: {isInitialized ? `yes` : `no`} | Offline: {offline ? `yes` : `no`} | Loading: {isLoading ? `yes` : `no`} | Todos: {todoList.length} + + + {/* Status indicators */} + + + + {isOnline ? `Online` : `Offline`} + + + + + + {offline?.isOfflineEnabled ? `Offline Mode` : `Online Only`} + + + + {pendingCount > 0 && ( + + + {pendingCount} pending + + )} + + + {/* Error display */} + {error && ( + + {error} + + )} + + {/* Add new todo */} + + + + Add + + + + {/* Todo list */} + {isLoading && todoList.length === 0 ? ( + + + Loading todos... + + ) : todoList.length === 0 ? ( + + No todos yet. Add one above! + Try going offline to test offline mode + + ) : ( + item.id} + style={styles.list} + renderItem={({ item: todo }) => ( + + handleToggleTodo(todo.id)} + > + {todo.completed && ✓} + + + + {todo.text} + + + {new Date(todo.createdAt).toLocaleDateString()} + + + handleDeleteTodo(todo.id)} + > + Delete + + + )} + /> + )} + + {/* Instructions */} + + Try this: + 1. Add some todos while online + 2. Enable airplane mode + 3. Add more todos (queued locally) + 4. Disable airplane mode to sync + + + ) +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + padding: 16, + backgroundColor: `#f5f5f5`, + }, + title: { + fontSize: 24, + fontWeight: `bold`, + color: `#111`, + marginBottom: 4, + }, + subtitle: { + fontSize: 14, + color: `#666`, + marginBottom: 16, + }, + statusRow: { + flexDirection: `row`, + flexWrap: `wrap`, + gap: 8, + marginBottom: 16, + }, + statusBadge: { + flexDirection: `row`, + alignItems: `center`, + paddingHorizontal: 12, + paddingVertical: 6, + borderRadius: 16, + gap: 6, + }, + statusDot: { + width: 8, + height: 8, + borderRadius: 4, + }, + statusText: { + fontSize: 12, + fontWeight: `500`, + }, + online: { + backgroundColor: `#dcfce7`, + }, + onlineDot: { + backgroundColor: `#22c55e`, + }, + offline: { + backgroundColor: `#fee2e2`, + }, + offlineDot: { + backgroundColor: `#ef4444`, + }, + enabled: { + backgroundColor: `#dbeafe`, + }, + enabledDot: { + backgroundColor: `#3b82f6`, + }, + disabled: { + backgroundColor: `#e5e5e5`, + }, + disabledDot: { + backgroundColor: `#737373`, + }, + pending: { + backgroundColor: `#fef3c7`, + }, + errorBox: { + backgroundColor: `#fee2e2`, + borderWidth: 1, + borderColor: `#fca5a5`, + borderRadius: 8, + padding: 12, + marginBottom: 16, + }, + errorText: { + color: `#dc2626`, + fontSize: 14, + }, + inputRow: { + flexDirection: `row`, + gap: 8, + marginBottom: 16, + }, + input: { + flex: 1, + backgroundColor: `#fff`, + borderWidth: 1, + borderColor: `#d1d5db`, + borderRadius: 8, + paddingHorizontal: 12, + paddingVertical: 10, + fontSize: 16, + }, + addButton: { + backgroundColor: `#3b82f6`, + paddingHorizontal: 20, + paddingVertical: 10, + borderRadius: 8, + justifyContent: `center`, + }, + addButtonDisabled: { + opacity: 0.5, + }, + addButtonText: { + color: `#fff`, + fontWeight: `600`, + fontSize: 16, + }, + loadingContainer: { + flex: 1, + justifyContent: `center`, + alignItems: `center`, + gap: 12, + }, + loadingText: { + color: `#666`, + fontSize: 14, + }, + emptyContainer: { + flex: 1, + justifyContent: `center`, + alignItems: `center`, + }, + emptyText: { + color: `#666`, + fontSize: 16, + }, + emptySubtext: { + color: `#999`, + fontSize: 12, + marginTop: 4, + }, + list: { + flex: 1, + }, + todoItem: { + flexDirection: `row`, + alignItems: `center`, + backgroundColor: `#fff`, + borderWidth: 1, + borderColor: `#e5e5e5`, + borderRadius: 8, + padding: 12, + marginBottom: 8, + gap: 12, + }, + checkbox: { + width: 24, + height: 24, + borderWidth: 2, + borderColor: `#d1d5db`, + borderRadius: 4, + justifyContent: `center`, + alignItems: `center`, + }, + checkboxChecked: { + backgroundColor: `#22c55e`, + borderColor: `#22c55e`, + }, + checkmark: { + color: `#fff`, + fontSize: 14, + fontWeight: `bold`, + }, + todoContent: { + flex: 1, + }, + todoText: { + fontSize: 16, + color: `#111`, + }, + todoTextCompleted: { + textDecorationLine: `line-through`, + color: `#999`, + }, + todoDate: { + fontSize: 12, + color: `#999`, + marginTop: 2, + }, + deleteButton: { + paddingHorizontal: 12, + paddingVertical: 6, + }, + deleteButtonText: { + color: `#dc2626`, + fontSize: 14, + }, + instructions: { + backgroundColor: `#f0f0f0`, + borderRadius: 8, + padding: 16, + marginTop: 16, + }, + instructionsTitle: { + fontWeight: `600`, + color: `#111`, + marginBottom: 8, + }, + instructionsText: { + color: `#666`, + fontSize: 13, + marginBottom: 2, + }, +}) diff --git a/examples/react-native/offline-transactions/src/db/AsyncStorageAdapter.ts b/examples/react-native/offline-transactions/src/db/AsyncStorageAdapter.ts new file mode 100644 index 000000000..cdbbb7358 --- /dev/null +++ b/examples/react-native/offline-transactions/src/db/AsyncStorageAdapter.ts @@ -0,0 +1,45 @@ +import AsyncStorage from '@react-native-async-storage/async-storage' +import type { StorageAdapter } from '@tanstack/offline-transactions' + +/** + * AsyncStorage adapter for React Native offline transactions. + * Implements the StorageAdapter interface using @react-native-async-storage/async-storage. + */ +export class AsyncStorageAdapter implements StorageAdapter { + private prefix: string + + constructor(prefix = `offline-tx:`) { + this.prefix = prefix + } + + private getKey(key: string): string { + return `${this.prefix}${key}` + } + + async get(key: string): Promise { + return AsyncStorage.getItem(this.getKey(key)) + } + + async set(key: string, value: string): Promise { + await AsyncStorage.setItem(this.getKey(key), value) + } + + async delete(key: string): Promise { + await AsyncStorage.removeItem(this.getKey(key)) + } + + async keys(): Promise> { + const allKeys = await AsyncStorage.getAllKeys() + return allKeys + .filter((k) => k.startsWith(this.prefix)) + .map((k) => k.slice(this.prefix.length)) + } + + async clear(): Promise { + const keys = await this.keys() + const prefixedKeys = keys.map((k) => this.getKey(k)) + if (prefixedKeys.length > 0) { + await AsyncStorage.multiRemove(prefixedKeys) + } + } +} diff --git a/examples/react-native/offline-transactions/src/db/todos.ts b/examples/react-native/offline-transactions/src/db/todos.ts new file mode 100644 index 000000000..b95e9fcce --- /dev/null +++ b/examples/react-native/offline-transactions/src/db/todos.ts @@ -0,0 +1,167 @@ +import { createCollection } from '@tanstack/react-db' +import { queryCollectionOptions } from '@tanstack/query-db-collection' +import { startOfflineExecutor } from '@tanstack/offline-transactions/react-native' +import { z } from 'zod' +import { queryClient } from '../utils/queryClient' +import { todoApi } from '../utils/api' +import { AsyncStorageAdapter } from './AsyncStorageAdapter' +import type {Todo} from '../utils/api'; +import type { PendingMutation } from '@tanstack/db' + +// Define schema +const todoSchema = z.object({ + id: z.string(), + text: z.string(), + completed: z.boolean(), + createdAt: z.date(), + updatedAt: z.date(), +}) + +// Create the todo collection with polling to sync changes from other devices +export const todoCollection = createCollection( + queryCollectionOptions({ + id: `todos-collection`, // Explicit ID to avoid crypto.randomUUID() on RN + queryClient, + queryKey: [`todos`], + queryFn: async (): Promise> => { + const todos = await todoApi.getAll() + return todos + }, + getKey: (item) => item.id, + schema: todoSchema, + // Poll every 3 seconds to sync changes from other devices + refetchInterval: 3000, + }) +) + +// Sync function to push mutations to the "backend" +async function syncTodos({ + transaction, + idempotencyKey, +}: { + transaction: { mutations: Array } + idempotencyKey: string +}) { + const mutations = transaction.mutations + + console.log(`[Sync] Processing ${mutations.length} mutations`, idempotencyKey) + + for (const mutation of mutations) { + try { + switch (mutation.type) { + case `insert`: { + const todoData = mutation.modified as Todo + await todoApi.create({ + text: todoData.text, + completed: todoData.completed, + }) + break + } + + case `update`: { + const todoData = mutation.modified as Partial + const id = (mutation.modified as Todo).id + await todoApi.update(id, { + text: todoData.text, + completed: todoData.completed, + }) + break + } + + case `delete`: { + const id = (mutation.original as Todo).id + await todoApi.delete(id) + break + } + } + } catch (error) { + console.error(`[Sync] Error syncing mutation:`, mutation, error) + throw error + } + } + + // Refresh the collection after sync + await todoCollection.utils.refetch() +} + +// Create the offline executor with React Native support +export function createOfflineExecutor() { + console.log(`[Offline] Creating executor with AsyncStorage adapter`) + + const executor = startOfflineExecutor({ + collections: { todos: todoCollection }, + storage: new AsyncStorageAdapter(`offline-todos:`), + mutationFns: { + syncTodos, + }, + onLeadershipChange: (isLeader) => { + console.log(`[Offline] Leadership changed:`, isLeader) + }, + onStorageFailure: (diagnostic) => { + console.warn(`[Offline] Storage failure:`, diagnostic) + }, + }) + + console.log(`[Offline] Executor mode:`, executor.mode) + console.log(`[Offline] Storage diagnostic:`, executor.storageDiagnostic) + + return executor +} + +// Helper functions to create offline actions +export function createTodoActions(offline: ReturnType | null) { + if (!offline) { + return { + addTodo: null, + toggleTodo: null, + deleteTodo: null, + } + } + + const addTodoAction = offline.createOfflineAction({ + mutationFnName: `syncTodos`, + onMutate: (text: string) => { + // Use Math.random based ID generation (crypto.randomUUID not available on RN Hermes) + const id = `${Date.now().toString(36)}-${Math.random().toString(36).substring(2, 10)}` + const newTodo = { + id, + text: text.trim(), + completed: false, + createdAt: new Date(), + updatedAt: new Date(), + } + todoCollection.insert(newTodo) + return newTodo + }, + }) + + const toggleTodoAction = offline.createOfflineAction({ + mutationFnName: `syncTodos`, + onMutate: (id: string) => { + const todo = todoCollection.get(id) + if (!todo) return + todoCollection.update(id, (draft) => { + draft.completed = !draft.completed + draft.updatedAt = new Date() + }) + return todo + }, + }) + + const deleteTodoAction = offline.createOfflineAction({ + mutationFnName: `syncTodos`, + onMutate: (id: string) => { + const todo = todoCollection.get(id) + if (todo) { + todoCollection.delete(id) + } + return todo + }, + }) + + return { + addTodo: addTodoAction, + toggleTodo: toggleTodoAction, + deleteTodo: deleteTodoAction, + } +} diff --git a/examples/react-native/offline-transactions/src/polyfills.ts b/examples/react-native/offline-transactions/src/polyfills.ts new file mode 100644 index 000000000..0a629871a --- /dev/null +++ b/examples/react-native/offline-transactions/src/polyfills.ts @@ -0,0 +1,24 @@ +// Polyfill for crypto.randomUUID() which is not available in React Native Hermes +if (typeof global.crypto === 'undefined') { + global.crypto = {} as Crypto +} + +if (typeof global.crypto.randomUUID !== 'function') { + global.crypto.randomUUID = function randomUUID(): `${string}-${string}-${string}-${string}-${string}` { + // Simple UUID v4 implementation + const hex = '0123456789abcdef' + let uuid = '' + for (let i = 0; i < 36; i++) { + if (i === 8 || i === 13 || i === 18 || i === 23) { + uuid += '-' + } else if (i === 14) { + uuid += '4' // Version 4 + } else if (i === 19) { + uuid += hex[(Math.random() * 4) | 8] // Variant bits + } else { + uuid += hex[(Math.random() * 16) | 0] + } + } + return uuid as `${string}-${string}-${string}-${string}-${string}` + } +} diff --git a/examples/react-native/offline-transactions/src/utils/api.ts b/examples/react-native/offline-transactions/src/utils/api.ts new file mode 100644 index 000000000..1a744332a --- /dev/null +++ b/examples/react-native/offline-transactions/src/utils/api.ts @@ -0,0 +1,93 @@ +import { Platform } from 'react-native' + +// Server URL differs by platform +// Android emulator: 10.0.2.2 maps to host machine's localhost +// iOS simulator: localhost works directly +const SERVER_PORT = 3001 +const BASE_URL = Platform.select({ + android: `http://10.0.2.2:${SERVER_PORT}`, + ios: `http://localhost:${SERVER_PORT}`, + default: `http://localhost:${SERVER_PORT}`, +}) + +export interface Todo { + id: string + text: string + completed: boolean + createdAt: Date + updatedAt: Date +} + +interface TodoResponse { + id: string + text: string + completed: boolean + createdAt: string + updatedAt: string +} + +// Convert API response to Todo with Date objects +function parseTodo(todo: TodoResponse): Todo { + return { + ...todo, + createdAt: new Date(todo.createdAt), + updatedAt: new Date(todo.updatedAt), + } +} + +// API client that calls the shared backend server +export const todoApi = { + async getAll(): Promise> { + const response = await fetch(`${BASE_URL}/api/todos`) + if (!response.ok) { + throw new Error(`Failed to fetch todos: ${response.status}`) + } + const data: Array = await response.json() + return data.map(parseTodo) + }, + + async create(data: { text: string; completed?: boolean }): Promise { + const response = await fetch(`${BASE_URL}/api/todos`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(data), + }) + if (!response.ok) { + throw new Error(`Failed to create todo: ${response.status}`) + } + const todo: TodoResponse = await response.json() + return parseTodo(todo) + }, + + async update( + id: string, + data: { text?: string; completed?: boolean } + ): Promise { + const response = await fetch(`${BASE_URL}/api/todos/${id}`, { + method: 'PUT', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(data), + }) + if (response.status === 404) { + return null + } + if (!response.ok) { + throw new Error(`Failed to update todo: ${response.status}`) + } + const todo: TodoResponse = await response.json() + return parseTodo(todo) + }, + + async delete(id: string): Promise { + const response = await fetch(`${BASE_URL}/api/todos/${id}`, { + method: 'DELETE', + }) + if (response.status === 404) { + return false + } + if (!response.ok) { + throw new Error(`Failed to delete todo: ${response.status}`) + } + return true + }, +} diff --git a/examples/react-native/offline-transactions/src/utils/queryClient.ts b/examples/react-native/offline-transactions/src/utils/queryClient.ts new file mode 100644 index 000000000..55c589ceb --- /dev/null +++ b/examples/react-native/offline-transactions/src/utils/queryClient.ts @@ -0,0 +1,10 @@ +import { QueryClient } from '@tanstack/react-query' + +export const queryClient = new QueryClient({ + defaultOptions: { + queries: { + staleTime: 1000 * 60, // 1 minute + retry: 3, + }, + }, +}) diff --git a/examples/react-native/offline-transactions/tsconfig.json b/examples/react-native/offline-transactions/tsconfig.json new file mode 100644 index 000000000..e2a251e04 --- /dev/null +++ b/examples/react-native/offline-transactions/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "expo/tsconfig.base", + "compilerOptions": { + "strict": true, + "paths": { + "~/*": [ + "./src/*" + ] + } + }, + "include": [ + "**/*.ts", + "**/*.tsx" + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e3eae1cb4..9ce8a8346 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -190,6 +190,85 @@ importers: specifier: ^5.9.2 version: 5.9.3 + examples/react-native/offline-transactions: + dependencies: + '@expo/metro-runtime': + specifier: ~5.0.5 + version: 5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + '@react-native-async-storage/async-storage': + specifier: 2.1.2 + version: 2.1.2(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + '@react-native-community/netinfo': + specifier: 11.4.1 + version: 11.4.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + '@tanstack/offline-transactions': + specifier: workspace:* + version: link:../../../packages/offline-transactions + '@tanstack/query-db-collection': + specifier: workspace:* + version: link:../../../packages/query-db-collection + '@tanstack/react-db': + specifier: workspace:* + version: link:../../../packages/react-db + '@tanstack/react-query': + specifier: ^5.90.16 + version: 5.90.16(react@19.0.0) + expo: + specifier: ~53.0.0 + version: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + expo-constants: + specifier: ~17.1.0 + version: 17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + expo-linking: + specifier: ~7.1.0 + version: 7.1.7(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + expo-router: + specifier: ~5.1.10 + version: 5.1.10(uoxodvmysyuykgknmjs5xsiuxa) + expo-status-bar: + specifier: ~2.2.0 + version: 2.2.3(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react: + specifier: 19.0.0 + version: 19.0.0 + react-native: + specifier: 0.79.6 + version: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + react-native-safe-area-context: + specifier: 5.4.0 + version: 5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react-native-screens: + specifier: ~4.11.1 + version: 4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + zod: + specifier: ^3.25.76 + version: 3.25.76 + devDependencies: + '@babel/core': + specifier: ^7.26.0 + version: 7.28.5 + '@types/cors': + specifier: ^2.8.17 + version: 2.8.19 + '@types/express': + specifier: ^5.0.0 + version: 5.0.5 + '@types/react': + specifier: ~19.0.10 + version: 19.0.14 + cors: + specifier: ^2.8.5 + version: 2.8.5 + express: + specifier: ^5.0.1 + version: 5.1.0 + tsx: + specifier: ^4.19.0 + version: 4.21.0 + typescript: + specifier: ~5.8.3 + version: 5.8.3 + examples/react/offline-transactions: dependencies: '@tanstack/offline-transactions': @@ -319,7 +398,7 @@ importers: version: 1.145.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@tanstack/router-plugin': specifier: ^1.145.4 - version: 1.145.4(@tanstack/react-router@1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 1.145.4(@tanstack/react-router@1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@trpc/client': specifier: ^11.8.1 version: 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3) @@ -826,7 +905,7 @@ importers: version: 5.9.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) packages/powersync-db-collection: dependencies: @@ -1048,6 +1127,14 @@ importers: packages: + '@0no-co/graphql.web@1.2.0': + resolution: {integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + graphql: + optional: true + '@acemir/cssom@0.9.30': resolution: {integrity: sha512-9CnlMCI0LmCIq0olalQqdWrJHPzm0/tw3gzOA9zJSgvFX7Xau3D24mAGa4BtwxwY69nsuJW6kQqqCzf/mEcQgg==} @@ -1268,14 +1355,25 @@ packages: '@asamuzakjp/nwsapi@2.3.9': resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + '@babel/code-frame@7.10.4': + resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} + '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.28.6': + resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.28.4': resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.28.6': + resolution: {integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==} + engines: {node: '>=6.9.0'} + '@babel/core@7.28.3': resolution: {integrity: sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==} engines: {node: '>=6.9.0'} @@ -1288,6 +1386,10 @@ packages: resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} + '@babel/generator@7.28.6': + resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.27.3': resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} @@ -1296,10 +1398,35 @@ packages: resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.28.6': + resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.28.5': + resolution: {integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.5': + resolution: {integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.18.6': resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} @@ -1308,12 +1435,26 @@ packages: resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.28.3': resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.27.1': resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} @@ -1322,6 +1463,22 @@ packages: resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} + '@babel/helper-remap-async-to-generator@7.27.1': + resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.24.7': resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} @@ -1338,15 +1495,40 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.28.6': + resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==} + engines: {node: '>=6.9.0'} + '@babel/helpers@7.28.4': resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} + '@babel/highlight@7.25.9': + resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.28.5': resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.28.6': + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-proposal-decorators@7.28.6': + resolution: {integrity: sha512-RVdFPPyY9fCRAX68haPmOk2iyKW8PKJFthmm8NeSI3paNxKWGZIn99+VbIf0FrtCpFnPgnpF/L48tadi617ULg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-export-default-from@7.27.1': + resolution: {integrity: sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-async-generators@7.8.4': resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -1368,6 +1550,29 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-decorators@7.28.6': + resolution: {integrity: sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-default-from@7.28.6': + resolution: {integrity: sha512-Svlx1fjJFnNz0LZeUaybRukSxZI3KkpApUmIRzEdXC5k8ErTOz0OD0kNrICi5Vc3GlpP5ZCeRyRO+mfWTSz+iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-flow@7.28.6': + resolution: {integrity: sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.28.6': resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} engines: {node: '>=6.9.0'} @@ -1390,6 +1595,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -1438,110 +1649,350 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-self@7.27.1': - resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + '@babel/plugin-syntax-typescript@7.28.6': + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-source@7.27.1': - resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + '@babel/plugin-transform-arrow-functions@7.27.1': + resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.28.4': - resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + '@babel/plugin-transform-async-generator-functions@7.28.6': + resolution: {integrity: sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + '@babel/plugin-transform-async-to-generator@7.28.6': + resolution: {integrity: sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@babel/traverse@7.28.5': - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + '@babel/plugin-transform-block-scoping@7.28.6': + resolution: {integrity: sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + '@babel/plugin-transform-class-properties@7.28.6': + resolution: {integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@better-auth/core@1.3.26': - resolution: {integrity: sha512-S5ooXaOcn9eLV3/JayfbMsAB5PkfoTRaRrtpb5djwvI/UAJOgLyjqhd+rObsBycovQ/nPQvMKjzyM/G1oBKngA==} + '@babel/plugin-transform-classes@7.28.6': + resolution: {integrity: sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@better-auth/utils@0.3.0': - resolution: {integrity: sha512-W+Adw6ZA6mgvnSnhOki270rwJ42t4XzSK6YWGF//BbVXL6SwCLWfyzBc1lN2m/4RM28KubdBKQ4X5VMoLRNPQw==} + '@babel/plugin-transform-computed-properties@7.28.6': + resolution: {integrity: sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@better-fetch/fetch@1.1.18': - resolution: {integrity: sha512-rEFOE1MYIsBmoMJtQbl32PGHHXuG2hDxvEd7rUHE0vCBoFQVSDqaVs9hkZEtHCxRoY+CljXKFCOuJ8uxqw1LcA==} + '@babel/plugin-transform-destructuring@7.28.5': + resolution: {integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/apply-release-plan@7.0.14': - resolution: {integrity: sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA==} + '@babel/plugin-transform-export-namespace-from@7.27.1': + resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/assemble-release-plan@6.0.9': - resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} + '@babel/plugin-transform-flow-strip-types@7.27.1': + resolution: {integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/changelog-git@0.2.1': - resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} + '@babel/plugin-transform-for-of@7.27.1': + resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/cli@2.29.8': - resolution: {integrity: sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA==} - hasBin: true + '@babel/plugin-transform-function-name@7.27.1': + resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/config@3.1.2': - resolution: {integrity: sha512-CYiRhA4bWKemdYi/uwImjPxqWNpqGPNbEBdX1BdONALFIDK7MCUj6FPkzD+z9gJcvDFUQJn9aDVf4UG7OT6Kog==} + '@babel/plugin-transform-literals@7.27.1': + resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/errors@0.2.0': - resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + '@babel/plugin-transform-logical-assignment-operators@7.28.6': + resolution: {integrity: sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/get-dependents-graph@2.1.3': - resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} + '@babel/plugin-transform-modules-commonjs@7.28.6': + resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/get-github-info@0.6.0': - resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': + resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 - '@changesets/get-release-plan@4.0.14': - resolution: {integrity: sha512-yjZMHpUHgl4Xl5gRlolVuxDkm4HgSJqT93Ri1Uz8kGrQb+5iJ8dkXJ20M2j/Y4iV5QzS2c5SeTxVSKX+2eMI0g==} + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6': + resolution: {integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/get-version-range-type@0.4.0': - resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + '@babel/plugin-transform-numeric-separator@7.28.6': + resolution: {integrity: sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/git@3.0.4': - resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} + '@babel/plugin-transform-object-rest-spread@7.28.6': + resolution: {integrity: sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/logger@0.1.1': - resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} + '@babel/plugin-transform-optional-catch-binding@7.28.6': + resolution: {integrity: sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/parse@0.4.2': - resolution: {integrity: sha512-Uo5MC5mfg4OM0jU3up66fmSn6/NE9INK+8/Vn/7sMVcdWg46zfbvvUSjD9EMonVqPi9fbrJH9SXHn48Tr1f2yA==} + '@babel/plugin-transform-optional-chaining@7.28.6': + resolution: {integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/pre@2.0.2': - resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} + '@babel/plugin-transform-parameters@7.27.7': + resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/read@0.6.6': - resolution: {integrity: sha512-P5QaN9hJSQQKJShzzpBT13FzOSPyHbqdoIBUd2DJdgvnECCyO6LmAOWSV+O8se2TaZJVwSXjL+v9yhb+a9JeJg==} + '@babel/plugin-transform-private-methods@7.28.6': + resolution: {integrity: sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/should-skip-package@0.1.2': - resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} + '@babel/plugin-transform-private-property-in-object@7.28.6': + resolution: {integrity: sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/types@4.1.0': - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + '@babel/plugin-transform-react-display-name@7.28.0': + resolution: {integrity: sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/types@6.1.0': - resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} + '@babel/plugin-transform-react-jsx-development@7.27.1': + resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@changesets/write@0.4.0': - resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@colors/colors@1.5.0': - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@commitlint/parse@20.2.0': - resolution: {integrity: sha512-LXStagGU1ivh07X7sM+hnEr4BvzFYn1iBJ6DRg2QsIN8lBfSzyvkUcVCDwok9Ia4PWiEgei5HQjju6xfJ1YaSQ==} - engines: {node: '>=v18'} + '@babel/plugin-transform-react-jsx@7.28.6': + resolution: {integrity: sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - '@commitlint/types@20.2.0': + '@babel/plugin-transform-react-pure-annotations@7.27.1': + resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.28.6': + resolution: {integrity: sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.28.5': + resolution: {integrity: sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.27.1': + resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.28.6': + resolution: {integrity: sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.27.1': + resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.28.6': + resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.27.1': + resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-react@7.28.5': + resolution: {integrity: sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.28.5': + resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.5': + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.6': + resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.6': + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} + engines: {node: '>=6.9.0'} + + '@better-auth/core@1.3.26': + resolution: {integrity: sha512-S5ooXaOcn9eLV3/JayfbMsAB5PkfoTRaRrtpb5djwvI/UAJOgLyjqhd+rObsBycovQ/nPQvMKjzyM/G1oBKngA==} + + '@better-auth/utils@0.3.0': + resolution: {integrity: sha512-W+Adw6ZA6mgvnSnhOki270rwJ42t4XzSK6YWGF//BbVXL6SwCLWfyzBc1lN2m/4RM28KubdBKQ4X5VMoLRNPQw==} + + '@better-fetch/fetch@1.1.18': + resolution: {integrity: sha512-rEFOE1MYIsBmoMJtQbl32PGHHXuG2hDxvEd7rUHE0vCBoFQVSDqaVs9hkZEtHCxRoY+CljXKFCOuJ8uxqw1LcA==} + + '@changesets/apply-release-plan@7.0.14': + resolution: {integrity: sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA==} + + '@changesets/assemble-release-plan@6.0.9': + resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} + + '@changesets/changelog-git@0.2.1': + resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} + + '@changesets/cli@2.29.8': + resolution: {integrity: sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA==} + hasBin: true + + '@changesets/config@3.1.2': + resolution: {integrity: sha512-CYiRhA4bWKemdYi/uwImjPxqWNpqGPNbEBdX1BdONALFIDK7MCUj6FPkzD+z9gJcvDFUQJn9aDVf4UG7OT6Kog==} + + '@changesets/errors@0.2.0': + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + + '@changesets/get-dependents-graph@2.1.3': + resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} + + '@changesets/get-github-info@0.6.0': + resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} + + '@changesets/get-release-plan@4.0.14': + resolution: {integrity: sha512-yjZMHpUHgl4Xl5gRlolVuxDkm4HgSJqT93Ri1Uz8kGrQb+5iJ8dkXJ20M2j/Y4iV5QzS2c5SeTxVSKX+2eMI0g==} + + '@changesets/get-version-range-type@0.4.0': + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + + '@changesets/git@3.0.4': + resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} + + '@changesets/logger@0.1.1': + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} + + '@changesets/parse@0.4.2': + resolution: {integrity: sha512-Uo5MC5mfg4OM0jU3up66fmSn6/NE9INK+8/Vn/7sMVcdWg46zfbvvUSjD9EMonVqPi9fbrJH9SXHn48Tr1f2yA==} + + '@changesets/pre@2.0.2': + resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} + + '@changesets/read@0.6.6': + resolution: {integrity: sha512-P5QaN9hJSQQKJShzzpBT13FzOSPyHbqdoIBUd2DJdgvnECCyO6LmAOWSV+O8se2TaZJVwSXjL+v9yhb+a9JeJg==} + + '@changesets/should-skip-package@0.1.2': + resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} + + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + + '@changesets/types@6.1.0': + resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} + + '@changesets/write@0.4.0': + resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + + '@commitlint/parse@20.2.0': + resolution: {integrity: sha512-LXStagGU1ivh07X7sM+hnEr4BvzFYn1iBJ6DRg2QsIN8lBfSzyvkUcVCDwok9Ia4PWiEgei5HQjju6xfJ1YaSQ==} + engines: {node: '>=v18'} + + '@commitlint/types@20.2.0': resolution: {integrity: sha512-KTy0OqRDLR5y/zZMnizyx09z/rPlPC/zKhYgH8o/q6PuAjoQAKlRfY4zzv0M64yybQ//6//4H1n14pxaLZfUnA==} engines: {node: '>=v18'} @@ -2256,6 +2707,92 @@ packages: '@exodus/crypto': optional: true + '@expo/cli@0.24.23': + resolution: {integrity: sha512-uIlgadw38yVOczYOm9BeW0wkWdC5rtcSP0+NHqOS31DAh2KNzOPRt9dnNuP0ErS+QJM3ymZSjZgo4hUvyFQ7Kw==} + hasBin: true + + '@expo/code-signing-certificates@0.0.5': + resolution: {integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==} + + '@expo/config-plugins@10.1.2': + resolution: {integrity: sha512-IMYCxBOcnuFStuK0Ay+FzEIBKrwW8OVUMc65+v0+i7YFIIe8aL342l7T4F8lR4oCfhXn7d6M5QPgXvjtc/gAcw==} + + '@expo/config-types@53.0.5': + resolution: {integrity: sha512-kqZ0w44E+HEGBjy+Lpyn0BVL5UANg/tmNixxaRMLS6nf37YsDrLk2VMAmeKMMk5CKG0NmOdVv3ngeUjRQMsy9g==} + + '@expo/config@11.0.13': + resolution: {integrity: sha512-TnGb4u/zUZetpav9sx/3fWK71oCPaOjZHoVED9NaEncktAd0Eonhq5NUghiJmkUGt3gGSjRAEBXiBbbY9/B1LA==} + + '@expo/devcert@1.2.1': + resolution: {integrity: sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==} + + '@expo/env@1.0.7': + resolution: {integrity: sha512-qSTEnwvuYJ3umapO9XJtrb1fAqiPlmUUg78N0IZXXGwQRt+bkp0OBls+Y5Mxw/Owj8waAM0Z3huKKskRADR5ow==} + + '@expo/fingerprint@0.13.4': + resolution: {integrity: sha512-MYfPYBTMfrrNr07DALuLhG6EaLVNVrY/PXjEzsjWdWE4ZFn0yqI0IdHNkJG7t1gePT8iztHc7qnsx+oo/rDo6w==} + hasBin: true + + '@expo/image-utils@0.7.6': + resolution: {integrity: sha512-GKnMqC79+mo/1AFrmAcUcGfbsXXTRqOMNS1umebuevl3aaw+ztsYEFEiuNhHZW7PQ3Xs3URNT513ZxKhznDscw==} + + '@expo/json-file@10.0.8': + resolution: {integrity: sha512-9LOTh1PgKizD1VXfGQ88LtDH0lRwq9lsTb4aichWTWSWqy3Ugfkhfm3BhzBIkJJfQQ5iJu3m/BoRlEIjoCGcnQ==} + + '@expo/json-file@9.1.5': + resolution: {integrity: sha512-prWBhLUlmcQtvN6Y7BpW2k9zXGd3ySa3R6rAguMJkp1z22nunLN64KYTUWfijFlprFoxm9r2VNnGkcbndAlgKA==} + + '@expo/metro-config@0.20.18': + resolution: {integrity: sha512-qPYq3Cq61KQO1CppqtmxA1NGKpzFOmdiL7WxwLhEVnz73LPSgneW7dV/3RZwVFkjThzjA41qB4a9pxDqtpepPg==} + + '@expo/metro-runtime@5.0.5': + resolution: {integrity: sha512-P8UFTi+YsmiD1BmdTdiIQITzDMcZgronsA3RTQ4QKJjHM3bas11oGzLQOnFaIZnlEV8Rrr3m1m+RHxvnpL+t/A==} + peerDependencies: + react-native: '*' + + '@expo/osascript@2.3.8': + resolution: {integrity: sha512-/TuOZvSG7Nn0I8c+FcEaoHeBO07yu6vwDgk7rZVvAXoeAK5rkA09jRyjYsZo+0tMEFaToBeywA6pj50Mb3ny9w==} + engines: {node: '>=12'} + + '@expo/package-manager@1.9.9': + resolution: {integrity: sha512-Nv5THOwXzPprMJwbnXU01iXSrCp3vJqly9M4EJ2GkKko9Ifer2ucpg7x6OUsE09/lw+npaoUnHMXwkw7gcKxlg==} + + '@expo/plist@0.3.5': + resolution: {integrity: sha512-9RYVU1iGyCJ7vWfg3e7c/NVyMFs8wbl+dMWZphtFtsqyN9zppGREU3ctlD3i8KUE0sCUTVnLjCWr+VeUIDep2g==} + + '@expo/prebuild-config@9.0.12': + resolution: {integrity: sha512-AKH5Scf+gEMgGxZZaimrJI2wlUJlRoqzDNn7/rkhZa5gUTnO4l6slKak2YdaH+nXlOWCNfAQWa76NnpQIfmv6Q==} + + '@expo/schema-utils@0.1.8': + resolution: {integrity: sha512-9I6ZqvnAvKKDiO+ZF8BpQQFYWXOJvTAL5L/227RUbWG1OVZDInFifzCBiqAZ3b67NRfeAgpgvbA7rejsqhY62A==} + + '@expo/sdk-runtime-versions@1.0.0': + resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} + + '@expo/server@0.6.3': + resolution: {integrity: sha512-Ea7NJn9Xk1fe4YeJ86rObHSv/bm3u/6WiQPXEqXJ2GrfYpVab2Swoh9/PnSM3KjR64JAgKjArDn1HiPjITCfHA==} + + '@expo/spawn-async@1.7.2': + resolution: {integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==} + engines: {node: '>=12'} + + '@expo/sudo-prompt@9.3.2': + resolution: {integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==} + + '@expo/vector-icons@14.1.0': + resolution: {integrity: sha512-7T09UE9h8QDTsUeMGymB4i+iqvtEeaO5VvUjryFB4tugDTG/bkzViWA74hm5pfjjDEhYMXWaX112mcvhccmIwQ==} + peerDependencies: + expo-font: '*' + react: '*' + react-native: '*' + + '@expo/ws-tunnel@1.0.6': + resolution: {integrity: sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==} + + '@expo/xcpretty@4.3.2': + resolution: {integrity: sha512-ReZxZ8pdnoI3tP/dNnJdnmAk7uLT4FjsKDGW7YeDdvdOMz2XCQSmSCM9IWlrXuWtMF9zeSB6WJtEhCQ41gQOfw==} + hasBin: true + '@fast-check/vitest@0.2.4': resolution: {integrity: sha512-Ilcr+JAIPhb1s6FRm4qoglQYSGXXrS+zAupZeNuWAA3qHVGDA1d1Gb84Hb/+otL3GzVZjFJESg5/1SfIvrgssA==} peerDependencies: @@ -3299,21 +3836,73 @@ packages: resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} engines: {node: '>=18'} + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.2.0': + resolution: {integrity: sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@react-native-async-storage/async-storage@2.1.2': + resolution: {integrity: sha512-dvlNq4AlGWC+ehtH12p65+17V0Dx7IecOWl6WanF2ja38O1Dcjjvn7jVzkUHJ5oWkQBlyASurTPlTHgKXyYiow==} + peerDependencies: + react-native: ^0.0.0-0 || >=0.65 <1.0 + '@react-native-community/netinfo@11.4.1': resolution: {integrity: sha512-B0BYAkghz3Q2V09BF88RA601XursIEA111tnc2JOaN7axJWmNefmfjZqw/KdSxKZp7CZUuPpjBmz/WCR9uaHYg==} peerDependencies: react-native: '>=0.59' + '@react-native/assets-registry@0.79.6': + resolution: {integrity: sha512-UVSP1224PWg0X+mRlZNftV5xQwZGfawhivuW8fGgxNK9MS/U84xZ+16lkqcPh1ank6MOt239lIWHQ1S33CHgqA==} + engines: {node: '>=18'} + '@react-native/assets-registry@0.83.1': resolution: {integrity: sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==} engines: {node: '>= 20.19.4'} + '@react-native/babel-plugin-codegen@0.79.6': + resolution: {integrity: sha512-CS5OrgcMPixOyUJ/Sk/HSsKsKgyKT5P7y3CojimOQzWqRZBmoQfxdST4ugj7n1H+ebM2IKqbgovApFbqXsoX0g==} + engines: {node: '>=18'} + + '@react-native/babel-preset@0.79.6': + resolution: {integrity: sha512-H+FRO+r2Ql6b5IwfE0E7D52JhkxjeGSBSUpCXAI5zQ60zSBJ54Hwh2bBJOohXWl4J+C7gKYSAd2JHMUETu+c/A==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + + '@react-native/codegen@0.79.6': + resolution: {integrity: sha512-iRBX8Lgbqypwnfba7s6opeUwVyaR23mowh9ILw7EcT2oLz3RqMmjJdrbVpWhGSMGq2qkPfqAH7bhO8C7O+xfjQ==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + '@react-native/codegen@0.83.1': resolution: {integrity: sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==} engines: {node: '>= 20.19.4'} peerDependencies: '@babel/core': '*' + '@react-native/community-cli-plugin@0.79.6': + resolution: {integrity: sha512-ZHVst9vByGsegeaddkD2YbZ6NvYb4n3pD9H7Pit94u+NlByq2uBJghoOjT6EKqg+UVl8tLRdi88cU2pDPwdHqA==} + engines: {node: '>=18'} + peerDependencies: + '@react-native-community/cli': '*' + peerDependenciesMeta: + '@react-native-community/cli': + optional: true + '@react-native/community-cli-plugin@0.83.1': resolution: {integrity: sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==} engines: {node: '>= 20.19.4'} @@ -3326,6 +3915,10 @@ packages: '@react-native/metro-config': optional: true + '@react-native/debugger-frontend@0.79.6': + resolution: {integrity: sha512-lIK/KkaH7ueM22bLO0YNaQwZbT/oeqhaghOvmZacaNVbJR1Cdh/XAqjT8FgCS+7PUnbxA8B55NYNKGZG3O2pYw==} + engines: {node: '>=18'} + '@react-native/debugger-frontend@0.83.1': resolution: {integrity: sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==} engines: {node: '>= 20.19.4'} @@ -3334,21 +3927,47 @@ packages: resolution: {integrity: sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==} engines: {node: '>= 20.19.4'} + '@react-native/dev-middleware@0.79.6': + resolution: {integrity: sha512-BK3GZBa9c7XSNR27EDRtxrgyyA3/mf1j3/y+mPk7Ac0Myu85YNrXnC9g3mL5Ytwo0g58TKrAIgs1fF2Q5Mn6mQ==} + engines: {node: '>=18'} + '@react-native/dev-middleware@0.83.1': resolution: {integrity: sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==} engines: {node: '>= 20.19.4'} + '@react-native/gradle-plugin@0.79.6': + resolution: {integrity: sha512-C5odetI6py3CSELeZEVz+i00M+OJuFZXYnjVD4JyvpLn462GesHRh+Se8mSkU5QSaz9cnpMnyFLJAx05dokWbA==} + engines: {node: '>=18'} + '@react-native/gradle-plugin@0.83.1': resolution: {integrity: sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==} engines: {node: '>= 20.19.4'} + '@react-native/js-polyfills@0.79.6': + resolution: {integrity: sha512-6wOaBh1namYj9JlCNgX2ILeGUIwc6OP6MWe3Y5jge7Xz9fVpRqWQk88Q5Y9VrAtTMTcxoX3CvhrfRr3tGtSfQw==} + engines: {node: '>=18'} + '@react-native/js-polyfills@0.83.1': resolution: {integrity: sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==} engines: {node: '>= 20.19.4'} + '@react-native/normalize-colors@0.79.6': + resolution: {integrity: sha512-0v2/ruY7eeKun4BeKu+GcfO+SHBdl0LJn4ZFzTzjHdWES0Cn+ONqKljYaIv8p9MV2Hx/kcdEvbY4lWI34jC/mQ==} + '@react-native/normalize-colors@0.83.1': resolution: {integrity: sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==} + '@react-native/virtualized-lists@0.79.6': + resolution: {integrity: sha512-khA/Hrbb+rB68YUHrLubfLgMOD9up0glJhw25UE3Kntj32YDyuO0Tqc81ryNTcCekFKJ8XrAaEjcfPg81zBGPw==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^19.0.0 + react: '*' + react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@react-native/virtualized-lists@0.83.1': resolution: {integrity: sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==} engines: {node: '>= 20.19.4'} @@ -3360,6 +3979,50 @@ packages: '@types/react': optional: true + '@react-navigation/bottom-tabs@7.9.1': + resolution: {integrity: sha512-1MHn1b5tWFa8t8LXUvaNtlg5WGVXcNTsiV00ygQDBFDusMcu0ZPOU1exqELZwHf6kDntmTQE96/NRM+Cd2QR+A==} + peerDependencies: + '@react-navigation/native': ^7.1.27 + react: '>= 18.2.0' + react-native: '*' + react-native-safe-area-context: '>= 4.0.0' + react-native-screens: '>= 4.0.0' + + '@react-navigation/core@7.13.7': + resolution: {integrity: sha512-k2ABo3250vq1ovOh/iVwXS6Hwr5PVRGXoPh/ewVFOOuEKTvOx9i//OBzt8EF+HokBxS2HBRlR2b+aCOmscRqBw==} + peerDependencies: + react: '>= 18.2.0' + + '@react-navigation/elements@2.9.4': + resolution: {integrity: sha512-TMFh+QzwesEuSaKpvZk4BFC5105t5gJs9eq+jG7jtfdlMKyrcFwheu2/dy1zfrW4WYbVcoMxhzFqCU4mKwI4fw==} + peerDependencies: + '@react-native-masked-view/masked-view': '>= 0.2.0' + '@react-navigation/native': ^7.1.27 + react: '>= 18.2.0' + react-native: '*' + react-native-safe-area-context: '>= 4.0.0' + peerDependenciesMeta: + '@react-native-masked-view/masked-view': + optional: true + + '@react-navigation/native-stack@7.9.1': + resolution: {integrity: sha512-DIRv72UliHvCWkBO1xwvik0maRka4aebn10huL9u4lPRXZZjumlMFHhA9z8vOaj02ri54m8pQUybRdbVzNeqgQ==} + peerDependencies: + '@react-navigation/native': ^7.1.27 + react: '>= 18.2.0' + react-native: '*' + react-native-safe-area-context: '>= 4.0.0' + react-native-screens: '>= 4.0.0' + + '@react-navigation/native@7.1.27': + resolution: {integrity: sha512-kW7LGP/RrisktpGyizTKw6HwSeQJdXnAN9L8GyQJcJAlgL9YtfEg6yEyD5n9RWH90CL8G0cRyUhphKIAFf4lVw==} + peerDependencies: + react: '>= 18.2.0' + react-native: '*' + + '@react-navigation/routers@7.5.3': + resolution: {integrity: sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==} + '@rolldown/pluginutils@1.0.0-beta.40': resolution: {integrity: sha512-s3GeJKSQOwBlzdUrj4ISjJj5SfSh+aqn0wjOar4Bx95iV1ETI7F6S/5hLcfAxZ9kXDcyrAkxPlqmd1ZITttf+w==} @@ -4321,6 +4984,9 @@ packages: peerDependencies: '@types/react': ^19.2.0 + '@types/react@19.0.14': + resolution: {integrity: sha512-ixLZ7zG7j1fM0DijL9hDArwhwcCb4vqmePgwtV0GfnkHRSCUEv4LvzarcTdhoqgyMznUx/EhoTUv31CKZzkQlw==} + '@types/react@19.2.7': resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==} @@ -4573,6 +5239,14 @@ packages: cpu: [x64] os: [win32] + '@urql/core@5.2.0': + resolution: {integrity: sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==} + + '@urql/exchange-retry@1.3.2': + resolution: {integrity: sha512-TQMCz2pFJMfpNxmSfX1VSfTjwUIFx/mL+p1bnfM1xjjdla7Z+KnGMW/EhFbpckp3LyWAH4PgOsMwOMnIN+MBFg==} + peerDependencies: + '@urql/core': ^5.0.0 + '@vitejs/plugin-basic-ssl@2.1.0': resolution: {integrity: sha512-dOxxrhgyDIEUADhb/8OlV9JIqYLgos03YorAueTIeOUskLJSEsfwCByjbu98ctXitUN3znXKp0bYD/WHSudCeA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -4680,6 +5354,10 @@ packages: '@vue/shared@3.5.26': resolution: {integrity: sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==} + '@xmldom/xmldom@0.8.11': + resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==} + engines: {node: '>=10.0.0'} + '@yarnpkg/lockfile@1.1.0': resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} @@ -4764,6 +5442,10 @@ packages: resolution: {integrity: sha512-YdhtCd19sKRKfAAUsrcC1wzm4JuzJoiX4pOJqIoW2qmKj5WzG/dL8uUJ0361zaXtHqK7gEhOwtAtz7t3Yq3X5g==} engines: {node: '>=18'} + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -4772,6 +5454,10 @@ packages: resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -4788,10 +5474,16 @@ packages: resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==} engines: {node: '>=14'} + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -4874,6 +5566,9 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} + async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + async-mutex@0.5.0: resolution: {integrity: sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==} @@ -4907,14 +5602,46 @@ packages: peerDependencies: '@babel/core': ^7.20.12 - babel-plugin-syntax-hermes-parser@0.32.0: - resolution: {integrity: sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==} + babel-plugin-polyfill-corejs2@0.4.14: + resolution: {integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-preset-current-node-syntax@1.2.0: - resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} + babel-plugin-polyfill-corejs3@0.13.0: + resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.5: + resolution: {integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-react-native-web@0.19.13: + resolution: {integrity: sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==} + + babel-plugin-syntax-hermes-parser@0.25.1: + resolution: {integrity: sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==} + + babel-plugin-syntax-hermes-parser@0.32.0: + resolution: {integrity: sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==} + + babel-plugin-transform-flow-enums@0.0.2: + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + + babel-preset-current-node-syntax@1.2.0: + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} peerDependencies: '@babel/core': ^7.0.0 || ^8.0.0-0 + babel-preset-expo@13.2.4: + resolution: {integrity: sha512-3IKORo3KR+4qtLdCkZNDj8KeA43oBn7RRQejFGWfiZgu/NeaRUSri8YwYjZqybm7hn3nmMv9OLahlvXBX23o5Q==} + peerDependencies: + babel-plugin-react-compiler: ^19.0.0-beta-e993439-20250405 + peerDependenciesMeta: + babel-plugin-react-compiler: + optional: true + babel-preset-jest@29.6.3: resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4980,6 +5707,10 @@ packages: better-call@1.0.19: resolution: {integrity: sha512-sI3GcA1SCVa3H+CDHl8W8qzhlrckwXOTKhqq3OOPXjgn5aTOMIqGY34zLY/pHA6tRRMjTUC3lz5Mi7EbDA24Kw==} + better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} + better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -4987,6 +5718,10 @@ packages: bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + binary-decision-diagram@3.2.0: resolution: {integrity: sha512-Pu9LnLdNIpUI6nSSTSJW1IlmTmPVMCJHqr/atIigdeJYTDAI/198AvnAbxuSrCxiJLoTCNiPBzdpHEJMjOZiAQ==} engines: {node: '>=16'} @@ -5006,6 +5741,17 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + bplist-creator@0.1.0: + resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} + + bplist-parser@0.3.1: + resolution: {integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==} + engines: {node: '>= 5.10.0'} + + bplist-parser@0.3.2: + resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==} + engines: {node: '>= 5.10.0'} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -5034,6 +5780,9 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -5061,6 +5810,18 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} + caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + + caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + + callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -5080,6 +5841,10 @@ packages: resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} engines: {node: '>=18'} + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -5137,6 +5902,10 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} + cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} @@ -5153,6 +5922,9 @@ packages: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} @@ -5164,17 +5936,34 @@ packages: resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} engines: {node: '>=20'} + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -5196,6 +5985,14 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + comment-parser@1.4.1: resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} @@ -5210,6 +6007,14 @@ packages: compare-versions@6.1.1: resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} + computeds@0.0.1: resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} @@ -5273,10 +6078,17 @@ packages: resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} engines: {node: '>=18'} + core-js-compat@3.47.0: + resolution: {integrity: sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==} + cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} + cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + cross-spawn@6.0.6: resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} engines: {node: '>=4.8'} @@ -5288,6 +6100,10 @@ packages: crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + css-select@5.2.2: resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} @@ -5356,6 +6172,14 @@ packages: supports-color: optional: true + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.3.7: resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} @@ -5377,6 +6201,10 @@ packages: decimal.js@10.6.0: resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dedent-js@1.0.1: resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} @@ -5384,6 +6212,10 @@ packages: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -5391,6 +6223,9 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defekt@9.3.0: resolution: {integrity: sha512-AWfM0vhFmESRZawEJfLhRJMsAR5IOhwyxGxIDOh9RXGKcdV65cWtkFB31MNjUfFvAlfbk3c2ooX0rr1pWIXshw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. @@ -5399,6 +6234,10 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -5478,6 +6317,14 @@ packages: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} + dotenv-expand@11.0.7: + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} + + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + dotenv@16.6.1: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} @@ -5659,6 +6506,10 @@ packages: resolution: {integrity: sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==} engines: {node: '>=0.12'} + env-editor@0.4.2: + resolution: {integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==} + engines: {node: '>=8'} + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -5677,6 +6528,9 @@ packages: err-code@3.0.1: resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} @@ -5747,6 +6601,10 @@ packages: escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} @@ -5940,6 +6798,9 @@ packages: resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} engines: {node: '>=18.0.0'} + exec-async@2.2.0: + resolution: {integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==} + execa@1.0.0: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} engines: {node: '>=6'} @@ -5952,6 +6813,95 @@ packages: resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} + expo-asset@11.1.7: + resolution: {integrity: sha512-b5P8GpjUh08fRCf6m5XPVAh7ra42cQrHBIMgH2UXP+xsj4Wufl6pLy6jRF5w6U7DranUMbsXm8TOyq4EHy7ADg==} + peerDependencies: + expo: '*' + react: '*' + react-native: '*' + + expo-constants@17.1.8: + resolution: {integrity: sha512-sOCeMN/BWLA7hBP6lMwoEQzFNgTopk6YY03sBAmwT216IHyL54TjNseg8CRU1IQQ/+qinJ2fYWCl7blx2TiNcA==} + peerDependencies: + expo: '*' + react-native: '*' + + expo-file-system@18.1.11: + resolution: {integrity: sha512-HJw/m0nVOKeqeRjPjGdvm+zBi5/NxcdPf8M8P3G2JFvH5Z8vBWqVDic2O58jnT1OFEy0XXzoH9UqFu7cHg9DTQ==} + peerDependencies: + expo: '*' + react-native: '*' + + expo-font@13.3.2: + resolution: {integrity: sha512-wUlMdpqURmQ/CNKK/+BIHkDA5nGjMqNlYmW0pJFXY/KE/OG80Qcavdu2sHsL4efAIiNGvYdBS10WztuQYU4X0A==} + peerDependencies: + expo: '*' + react: '*' + + expo-keep-awake@14.1.4: + resolution: {integrity: sha512-wU9qOnosy4+U4z/o4h8W9PjPvcFMfZXrlUoKTMBW7F4pLqhkkP/5G4EviPZixv4XWFMjn1ExQ5rV6BX8GwJsWA==} + peerDependencies: + expo: '*' + react: '*' + + expo-linking@7.1.7: + resolution: {integrity: sha512-ZJaH1RIch2G/M3hx2QJdlrKbYFUTOjVVW4g39hfxrE5bPX9xhZUYXqxqQtzMNl1ylAevw9JkgEfWbBWddbZ3UA==} + peerDependencies: + react: '*' + react-native: '*' + + expo-modules-autolinking@2.1.14: + resolution: {integrity: sha512-nT5ERXwc+0ZT/pozDoJjYZyUQu5RnXMk9jDGm5lg+PiKvsrCTSA/2/eftJGMxLkTjVI2MXp5WjSz3JRjbA7UXA==} + hasBin: true + + expo-modules-core@2.5.0: + resolution: {integrity: sha512-aIbQxZE2vdCKsolQUl6Q9Farlf8tjh/ROR4hfN1qT7QBGPl1XrJGnaOKkcgYaGrlzCPg/7IBe0Np67GzKMZKKQ==} + + expo-router@5.1.10: + resolution: {integrity: sha512-Txi2KX5iF5D+60n8vhgWFlmbxHOjaAO7y/VuQa+WdCh0nuyEJkJEmza2kt+nvH/JCi8sYIGU2ZDNNejObN6sDg==} + peerDependencies: + '@react-navigation/drawer': ^7.3.9 + '@testing-library/jest-native': '*' + expo: '*' + expo-constants: '*' + expo-linking: '*' + react-native-reanimated: '*' + react-native-safe-area-context: '*' + react-native-screens: '*' + react-server-dom-webpack: ~19.0.3 || ~19.1.4 || ~19.2.3 + peerDependenciesMeta: + '@react-navigation/drawer': + optional: true + '@testing-library/jest-native': + optional: true + react-native-reanimated: + optional: true + react-server-dom-webpack: + optional: true + + expo-status-bar@2.2.3: + resolution: {integrity: sha512-+c8R3AESBoduunxTJ8353SqKAKpxL6DvcD8VKBuh81zzJyUUbfB4CVjr1GufSJEKsMzNPXZU+HJwXx7Xh7lx8Q==} + peerDependencies: + react: '*' + react-native: '*' + + expo@53.0.25: + resolution: {integrity: sha512-KMaIMAd0vKl2ooiDB9XMKTuRAhSmrLdPOEON8Ck9mPmSrJB1FHBs6gb63d5IJTQAE1jBZLZj0JBg6rqRBOrTjg==} + hasBin: true + peerDependencies: + '@expo/dom-webview': '*' + '@expo/metro-runtime': '*' + react: '*' + react-native: '*' + react-native-webview: '*' + peerDependenciesMeta: + '@expo/dom-webview': + optional: true + '@expo/metro-runtime': + optional: true + react-native-webview: + optional: true + exponential-backoff@3.1.2: resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} @@ -6039,6 +6989,10 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + finalhandler@1.1.2: resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} engines: {node: '>= 0.8'} @@ -6081,6 +7035,9 @@ packages: debug: optional: true + fontfaceobserver@2.3.0: + resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} + for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} @@ -6102,6 +7059,10 @@ packages: resolution: {integrity: sha512-PcOxmqwYCW7O2ovKRU8OoQQj2yqTfEB/yeTYk4gPid6dN5ODRfU1hXd9tTVZzax/0NkO7AxpHykvZnT1aYp/BQ==} engines: {node: ^14.13.1 || >=16.0.0} + freeport-async@2.0.0: + resolution: {integrity: sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==} + engines: {node: '>=8'} + fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -6201,6 +7162,10 @@ packages: get-tsconfig@4.10.1: resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + getenv@2.0.0: + resolution: {integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==} + engines: {node: '>=6'} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -6281,6 +7246,10 @@ packages: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -6311,12 +7280,28 @@ packages: hermes-compiler@0.14.0: resolution: {integrity: sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==} + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-estree@0.29.1: + resolution: {integrity: sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==} + hermes-estree@0.32.0: resolution: {integrity: sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==} + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + + hermes-parser@0.29.1: + resolution: {integrity: sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==} + hermes-parser@0.32.0: resolution: {integrity: sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==} + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + hosted-git-info@8.1.0: resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==} engines: {node: ^18.17.0 || >=20.5.0} @@ -6325,9 +7310,9 @@ packages: resolution: {integrity: sha512-gEf705MZLrDPkbbhi8PnoO4ZwYgKoNL+ISZ3AjZMht2r3N5tuTwncyDi6Fv2/qDnMmZxgs0yI8WDOyR8q3G+SQ==} engines: {node: ^20.17.0 || >=22.9.0} - html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} html-entities@2.3.3: resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} @@ -6418,6 +7403,10 @@ packages: immutable@5.1.3: resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} + import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -6441,6 +7430,9 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + ini@5.0.0: resolution: {integrity: sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==} engines: {node: ^18.17.0 || >=20.5.0} @@ -6475,6 +7467,12 @@ packages: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.4: + resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} + is-async-function@2.1.1: resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} @@ -6510,6 +7508,10 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} + is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -6577,6 +7579,10 @@ packages: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} @@ -6765,6 +7771,9 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jimp-compact@0.16.1: + resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} + jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true @@ -6812,6 +7821,9 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + json-parse-even-better-errors@4.0.0: resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} engines: {node: ^18.17.0 || >=20.5.0} @@ -6889,6 +7901,10 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -6911,6 +7927,10 @@ packages: resolution: {integrity: sha512-QUOgl5ZrS9IRuhq5FvOKFSsD/3+IA6MLE81/bOOTRA/YQpKDza2sFdN5g6JCB9BOpqMJDGefLCQ9F12hRS13TA==} engines: {node: '>=20.0.0'} + lan-network@0.1.7: + resolution: {integrity: sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==} + hasBin: true + leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -6928,66 +7948,130 @@ packages: cpu: [arm64] os: [android] + lightningcss-darwin-arm64@1.27.0: + resolution: {integrity: sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + lightningcss-darwin-arm64@1.30.2: resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] + lightningcss-darwin-x64@1.27.0: + resolution: {integrity: sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + lightningcss-darwin-x64@1.30.2: resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] + lightningcss-freebsd-x64@1.27.0: + resolution: {integrity: sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + lightningcss-freebsd-x64@1.30.2: resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] + lightningcss-linux-arm-gnueabihf@1.27.0: + resolution: {integrity: sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + lightningcss-linux-arm-gnueabihf@1.30.2: resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] + lightningcss-linux-arm64-gnu@1.27.0: + resolution: {integrity: sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + lightningcss-linux-arm64-gnu@1.30.2: resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + lightningcss-linux-arm64-musl@1.27.0: + resolution: {integrity: sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + lightningcss-linux-arm64-musl@1.30.2: resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + lightningcss-linux-x64-gnu@1.27.0: + resolution: {integrity: sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + lightningcss-linux-x64-gnu@1.30.2: resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + lightningcss-linux-x64-musl@1.27.0: + resolution: {integrity: sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + lightningcss-linux-x64-musl@1.30.2: resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + lightningcss-win32-arm64-msvc@1.27.0: + resolution: {integrity: sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + lightningcss-win32-arm64-msvc@1.30.2: resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] + lightningcss-win32-x64-msvc@1.27.0: + resolution: {integrity: sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + lightningcss-win32-x64-msvc@1.30.2: resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] + lightningcss@1.27.0: + resolution: {integrity: sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==} + engines: {node: '>= 12.0.0'} + lightningcss@1.30.2: resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} engines: {node: '>= 12.0.0'} @@ -6996,6 +8080,9 @@ packages: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} @@ -7034,6 +8121,9 @@ packages: lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. @@ -7054,6 +8144,10 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + log-symbols@2.2.0: + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} + log-symbols@6.0.0: resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} engines: {node: '>=18'} @@ -7174,6 +8268,10 @@ packages: resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} engines: {node: '>=18'} + 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==} @@ -7185,59 +8283,117 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} + metro-babel-transformer@0.82.5: + resolution: {integrity: sha512-W/scFDnwJXSccJYnOFdGiYr9srhbHPdxX9TvvACOFsIXdLilh3XuxQl/wXW6jEJfgIb0jTvoTlwwrqvuwymr6Q==} + engines: {node: '>=18.18'} + metro-babel-transformer@0.83.3: resolution: {integrity: sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==} engines: {node: '>=20.19.4'} + metro-cache-key@0.82.5: + resolution: {integrity: sha512-qpVmPbDJuRLrT4kcGlUouyqLGssJnbTllVtvIgXfR7ZuzMKf0mGS+8WzcqzNK8+kCyakombQWR0uDd8qhWGJcA==} + engines: {node: '>=18.18'} + metro-cache-key@0.83.3: resolution: {integrity: sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==} engines: {node: '>=20.19.4'} + metro-cache@0.82.5: + resolution: {integrity: sha512-AwHV9607xZpedu1NQcjUkua8v7HfOTKfftl6Vc9OGr/jbpiJX6Gpy8E/V9jo/U9UuVYX2PqSUcVNZmu+LTm71Q==} + engines: {node: '>=18.18'} + metro-cache@0.83.3: resolution: {integrity: sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==} engines: {node: '>=20.19.4'} + metro-config@0.82.5: + resolution: {integrity: sha512-/r83VqE55l0WsBf8IhNmc/3z71y2zIPe5kRSuqA5tY/SL/ULzlHUJEMd1szztd0G45JozLwjvrhAzhDPJ/Qo/g==} + engines: {node: '>=18.18'} + metro-config@0.83.3: resolution: {integrity: sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==} engines: {node: '>=20.19.4'} + metro-core@0.82.5: + resolution: {integrity: sha512-OJL18VbSw2RgtBm1f2P3J5kb892LCVJqMvslXxuxjAPex8OH7Eb8RBfgEo7VZSjgb/LOf4jhC4UFk5l5tAOHHA==} + engines: {node: '>=18.18'} + metro-core@0.83.3: resolution: {integrity: sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==} engines: {node: '>=20.19.4'} + metro-file-map@0.82.5: + resolution: {integrity: sha512-vpMDxkGIB+MTN8Af5hvSAanc6zXQipsAUO+XUx3PCQieKUfLwdoa8qaZ1WAQYRpaU+CJ8vhBcxtzzo3d9IsCIQ==} + engines: {node: '>=18.18'} + metro-file-map@0.83.3: resolution: {integrity: sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==} engines: {node: '>=20.19.4'} + metro-minify-terser@0.82.5: + resolution: {integrity: sha512-v6Nx7A4We6PqPu/ta1oGTqJ4Usz0P7c+3XNeBxW9kp8zayS3lHUKR0sY0wsCHInxZlNAEICx791x+uXytFUuwg==} + engines: {node: '>=18.18'} + metro-minify-terser@0.83.3: resolution: {integrity: sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==} engines: {node: '>=20.19.4'} + metro-resolver@0.82.5: + resolution: {integrity: sha512-kFowLnWACt3bEsuVsaRNgwplT8U7kETnaFHaZePlARz4Fg8tZtmRDUmjaD68CGAwc0rwdwNCkWizLYpnyVcs2g==} + engines: {node: '>=18.18'} + metro-resolver@0.83.3: resolution: {integrity: sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==} engines: {node: '>=20.19.4'} + metro-runtime@0.82.5: + resolution: {integrity: sha512-rQZDoCUf7k4Broyw3Ixxlq5ieIPiR1ULONdpcYpbJQ6yQ5GGEyYjtkztGD+OhHlw81LCR2SUAoPvtTus2WDK5g==} + engines: {node: '>=18.18'} + metro-runtime@0.83.3: resolution: {integrity: sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==} engines: {node: '>=20.19.4'} + metro-source-map@0.82.5: + resolution: {integrity: sha512-wH+awTOQJVkbhn2SKyaw+0cd+RVSCZ3sHVgyqJFQXIee/yLs3dZqKjjeKKhhVeudgjXo7aE/vSu/zVfcQEcUfw==} + engines: {node: '>=18.18'} + metro-source-map@0.83.3: resolution: {integrity: sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==} engines: {node: '>=20.19.4'} + metro-symbolicate@0.82.5: + resolution: {integrity: sha512-1u+07gzrvYDJ/oNXuOG1EXSvXZka/0JSW1q2EYBWerVKMOhvv9JzDGyzmuV7hHbF2Hg3T3S2uiM36sLz1qKsiw==} + engines: {node: '>=18.18'} + hasBin: true + metro-symbolicate@0.83.3: resolution: {integrity: sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==} engines: {node: '>=20.19.4'} hasBin: true + metro-transform-plugins@0.82.5: + resolution: {integrity: sha512-57Bqf3rgq9nPqLrT2d9kf/2WVieTFqsQ6qWHpEng5naIUtc/Iiw9+0bfLLWSAw0GH40iJ4yMjFcFJDtNSYynMA==} + engines: {node: '>=18.18'} + metro-transform-plugins@0.83.3: resolution: {integrity: sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==} engines: {node: '>=20.19.4'} + metro-transform-worker@0.82.5: + resolution: {integrity: sha512-mx0grhAX7xe+XUQH6qoHHlWedI8fhSpDGsfga7CpkO9Lk9W+aPitNtJWNGrW8PfjKEWbT9Uz9O50dkI8bJqigw==} + engines: {node: '>=18.18'} + metro-transform-worker@0.83.3: resolution: {integrity: sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==} engines: {node: '>=20.19.4'} + metro@0.82.5: + resolution: {integrity: sha512-8oAXxL7do8QckID/WZEKaIFuQJFUTLzfVcC48ghkHhNK2RGuQq8Xvf4AVd+TUA0SZtX0q8TGNXZ/eba1ckeGCg==} + engines: {node: '>=18.18'} + hasBin: true + metro@0.83.3: resolution: {integrity: sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==} engines: {node: '>=20.19.4'} @@ -7273,6 +8429,10 @@ packages: engines: {node: '>=4.0.0'} hasBin: true + mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -7418,6 +8578,9 @@ packages: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -7443,10 +8606,17 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + negotiator@1.0.0: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} + nested-error-stacks@2.0.1: + resolution: {integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==} + nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} @@ -7472,6 +8642,10 @@ packages: encoding: optional: true + node-forge@1.3.3: + resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==} + engines: {node: '>= 6.13.0'} + node-gyp-build-optional-packages@5.2.2: resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} hasBin: true @@ -7508,6 +8682,10 @@ packages: resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} engines: {node: ^18.17.0 || >=20.5.0} + npm-package-arg@11.0.3: + resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} + engines: {node: ^16.14.0 || >=18.0.0} + npm-package-arg@12.0.2: resolution: {integrity: sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==} engines: {node: ^18.17.0 || >=20.5.0} @@ -7542,6 +8720,10 @@ packages: nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + ob1@0.82.5: + resolution: {integrity: sha512-QyQQ6e66f+Ut/qUVjEce0E/wux5nAGLXYZDn1jr15JWstHsCH3l6VVrg8NKDptW9NEiBXKOJeGF/ydxeSDF3IQ==} + engines: {node: '>=18.18'} + ob1@0.83.3: resolution: {integrity: sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==} engines: {node: '>=20.19.4'} @@ -7590,9 +8772,17 @@ packages: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} + onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -7605,10 +8795,18 @@ packages: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} engines: {node: '>=8'} + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + ora@3.4.0: + resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} + engines: {node: '>=6'} + ora@8.2.0: resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} engines: {node: '>=18'} @@ -7692,6 +8890,14 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-png@2.1.0: + resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} + engines: {node: '>=10'} + parse5-html-rewriting-stream@8.0.0: resolution: {integrity: sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==} @@ -7805,6 +9011,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@3.0.1: + resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} + engines: {node: '>=10'} + picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} @@ -7833,13 +9043,25 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - possible-typed-array-names@1.1.0: - resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + plist@3.1.0: + resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} + engines: {node: '>=10.4.0'} + + pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} postcss-media-query-parser@0.2.3: resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -7882,6 +9104,10 @@ packages: engines: {node: '>=14'} hasBin: true + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -7890,10 +9116,18 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + proc-log@4.2.0: + resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + proc-log@5.0.0: resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} engines: {node: ^18.17.0 || >=20.5.0} + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + promise-retry@2.0.1: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} @@ -7901,6 +9135,10 @@ packages: promise@8.3.0: resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -7945,6 +9183,10 @@ packages: resolution: {integrity: sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==} engines: {node: '>=0.9'} + qrcode-terminal@0.11.0: + resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==} + hasBin: true + qs@6.13.0: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} @@ -7956,6 +9198,10 @@ packages: quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -7977,6 +9223,10 @@ packages: resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==} engines: {node: '>= 0.10'} + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + react-devtools-core@6.1.5: resolution: {integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==} @@ -7985,6 +9235,15 @@ packages: peerDependencies: react: ^19.2.3 + react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + react-freeze@1.0.4: + resolution: {integrity: sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==} + engines: {node: '>=10'} + peerDependencies: + react: '>=17.0.0' + react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -7994,6 +9253,44 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-is@19.2.3: + resolution: {integrity: sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA==} + + react-native-edge-to-edge@1.6.0: + resolution: {integrity: sha512-2WCNdE3Qd6Fwg9+4BpbATUxCLcouF6YRY7K+J36KJ4l3y+tWN6XCqAC4DuoGblAAbb2sLkhEDp4FOlbOIot2Og==} + peerDependencies: + react: '*' + react-native: '*' + + react-native-is-edge-to-edge@1.2.1: + resolution: {integrity: sha512-FLbPWl/MyYQWz+KwqOZsSyj2JmLKglHatd3xLZWskXOpRaio4LfEDEz8E/A6uD8QoTHW6Aobw1jbEwK7KMgR7Q==} + peerDependencies: + react: '*' + react-native: '*' + + react-native-safe-area-context@5.4.0: + resolution: {integrity: sha512-JaEThVyJcLhA+vU0NU8bZ0a1ih6GiF4faZ+ArZLqpYbL6j7R3caRqj+mE3lEtKCuHgwjLg3bCxLL1GPUJZVqUA==} + peerDependencies: + react: '*' + react-native: '*' + + react-native-screens@4.11.1: + resolution: {integrity: sha512-F0zOzRVa3ptZfLpD0J8ROdo+y1fEPw+VBFq1MTY/iyDu08al7qFUO5hLMd+EYMda5VXGaTFCa8q7bOppUszhJw==} + peerDependencies: + react: '*' + react-native: '*' + + react-native@0.79.6: + resolution: {integrity: sha512-kvIWSmf4QPfY41HC25TR285N7Fv0Pyn3DAEK8qRL9dA35usSaxsJkHfw+VqnonqJjXOaoKCEanwudRAJ60TBGA==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@types/react': ^19.0.0 + react: ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + react-native@0.83.1: resolution: {integrity: sha512-mL1q5HPq5cWseVhWRLl+Fwvi5z1UO+3vGOpjr+sHFwcUletPRZ5Kv+d0tUfqHmvi73/53NjlQqX1Pyn4GguUfA==} engines: {node: '>= 20.19.4'} @@ -8013,6 +9310,10 @@ packages: resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} engines: {node: '>=0.10.0'} + react@19.0.0: + resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} + engines: {node: '>=0.10.0'} + react@19.2.3: resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} engines: {node: '>=0.10.0'} @@ -8059,6 +9360,13 @@ packages: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} @@ -8066,6 +9374,17 @@ packages: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.13.0: + resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} + hasBin: true + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -8074,9 +9393,17 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + requireg@0.2.2: + resolution: {integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==} + engines: {node: '>= 4.0.0'} + requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -8088,15 +9415,29 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + 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.10: resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} engines: {node: '>= 0.4'} hasBin: true + resolve@1.7.1: + resolution: {integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==} + resolve@2.0.0-next.5: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true + restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} + restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} @@ -8181,10 +9522,17 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + sax@1.4.4: + resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} + engines: {node: '>=11.0.0'} + saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} + scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} @@ -8201,6 +9549,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + semver@7.7.2: resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} @@ -8251,6 +9604,9 @@ packages: resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} engines: {node: '>= 18'} + server-only@0.0.1: + resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} + set-cookie-parser@2.7.2: resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} @@ -8269,6 +9625,13 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + sf-symbols-typescript@2.2.0: + resolution: {integrity: sha512-TPbeg0b7ylrswdGCji8FRGFAKuqbpQlLbL8SOle3j1iHSs5Ob5mhvMAxWN2UItOjgALAB5Zp3fmMfj8mbWvXKw==} + engines: {node: '>=10'} + + shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -8379,10 +9742,19 @@ packages: simple-peer@9.11.1: resolution: {integrity: sha512-D1SaWpOW8afq1CZGWB8xTfrT3FekjQmPValrqncJMX7QFl8YwhrPTZvMCANLtgBwwdS+7zURyqxDDEmY558tTw==} + simple-plist@1.3.1: + resolution: {integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==} + + simple-swizzle@0.2.4: + resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} + sirv@3.0.2: resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -8395,6 +9767,10 @@ packages: resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} + slugify@1.6.6: + resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} + engines: {node: '>=8.0.0'} + smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} @@ -8470,6 +9846,10 @@ packages: spdx-license-ids@3.0.22: resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} + split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} @@ -8527,10 +9907,18 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} + stream-buffers@2.2.0: + resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} + engines: {node: '>= 0.10.0'} + streamroller@3.1.5: resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} engines: {node: '>=8.0'} + strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -8569,6 +9957,10 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -8593,6 +9985,10 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -8604,13 +10000,25 @@ packages: strip-literal@3.0.0: resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + structured-headers@0.4.1: + resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} + style-to-object@1.0.9: resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==} + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + superjson@2.2.6: resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} engines: {node: '>=16'} + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -8619,6 +10027,10 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -8666,6 +10078,10 @@ packages: resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==} engines: {node: '>=18'} + temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + temporal-polyfill@0.3.0: resolution: {integrity: sha512-qNsTkX9K8hi+FHDfHmf22e/OGuXmfBm9RqNismxBrnSmZVJKegQ+HYYXT+R7Ha8F/YSm2Y34vmzD4cxMu2u95g==} @@ -8676,6 +10092,10 @@ packages: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} + terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + terser@5.44.0: resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} engines: {node: '>=10'} @@ -8693,6 +10113,13 @@ packages: resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} engines: {node: '>=8'} + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + throat@5.0.0: resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} @@ -8790,6 +10217,9 @@ packages: peerDependencies: typescript: '>=4.0.0' + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + tsconfck@3.1.6: resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} engines: {node: ^18 || >=20} @@ -8892,6 +10322,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -8917,10 +10352,30 @@ packages: undici-types@7.14.0: resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} + undici@6.23.0: + resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==} + engines: {node: '>=18.17'} + undici@7.16.0: resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} engines: {node: '>=20.18.1'} + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + engines: {node: '>=4'} + unique-filename@4.0.0: resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -8929,6 +10384,10 @@ packages: resolution: {integrity: sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==} engines: {node: ^18.17.0 || >=20.5.0} + unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -8960,6 +10419,11 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + use-latest-callback@0.2.6: + resolution: {integrity: sha512-FvRG9i1HSo0wagmX63Vrm8SnlUU3LMM3WyZkQ76RnslpBrX694AdG4A0zQBx2B3ZifFA0yv/BaEHGBnEax5rZg==} + peerDependencies: + react: '>=16.8' + use-sync-external-store@1.6.0: resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: @@ -8979,12 +10443,20 @@ packages: resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==} hasBin: true + uuid@7.0.3: + resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==} + hasBin: true + validate-html-nesting@1.2.3: resolution: {integrity: sha512-kdkWdCl6eCeLlRShJKbjVOU2kFKxMF8Ghu50n+crEoyx+VKm3FxAxF9z4DCy6+bbTOqNW0+jcIYRnjoIRzigRw==} validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + validate-npm-package-name@6.0.2: resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -9186,10 +10658,16 @@ packages: walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + warn-once@0.1.1: + resolution: {integrity: sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==} + watchpack@2.4.4: resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} engines: {node: '>=10.13.0'} + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + weak-lru-cache@1.2.2: resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} @@ -9202,6 +10680,10 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -9233,6 +10715,10 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} + whatwg-url-without-unicode@8.0.0-3: + resolution: {integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==} + engines: {node: '>=10'} + whatwg-url@14.2.0: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} @@ -9284,6 +10770,9 @@ packages: engines: {node: '>=8'} hasBin: true + wonka@6.3.5: + resolution: {integrity: sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -9311,6 +10800,17 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + ws@6.2.3: + resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -9347,14 +10847,30 @@ packages: utf-8-validate: optional: true + xcode@3.0.1: + resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==} + engines: {node: '>=10.0.0'} + xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} + xml2js@0.6.0: + resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} + engines: {node: '>=4.0.0'} + xmlbuilder2@4.0.3: resolution: {integrity: sha512-bx8Q1STctnNaaDymWnkfQLKofs0mGNN7rLLapJlGuV3VlvegD7Ls4ggMjE3aUSWItCCzU0PEv45lI87iSigiCA==} engines: {node: '>=20.0'} + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlbuilder@15.1.1: + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} + xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} @@ -9437,6 +10953,10 @@ packages: snapshots: + '@0no-co/graphql.web@1.2.0(graphql@16.12.0)': + optionalDependencies: + graphql: 16.12.0 + '@acemir/cssom@0.9.30': {} '@adobe/css-tools@4.4.4': {} @@ -9725,14 +11245,26 @@ snapshots: '@asamuzakjp/nwsapi@2.3.9': {} + '@babel/code-frame@7.10.4': + dependencies: + '@babel/highlight': 7.25.9 + '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 + '@babel/code-frame@7.28.6': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.28.4': {} + '@babel/compat-data@7.28.6': {} + '@babel/core@7.28.3': dependencies: '@ampproject/remapping': 2.3.0 @@ -9781,6 +11313,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 + '@babel/generator@7.28.6': + dependencies: + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.27.3': dependencies: '@babel/types': 7.28.5 @@ -9793,8 +11333,54 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.0 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.5) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.28.6 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + regexpu-core: 6.4.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.28.6 + debug: 4.4.3 + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + '@babel/helper-globals@7.28.0': {} + '@babel/helper-member-expression-to-functions@7.28.5': + dependencies: + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-imports@7.18.6': dependencies: '@babel/types': 7.28.5 @@ -9806,6 +11392,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.3)': dependencies: '@babel/core': 7.28.3 @@ -9824,10 +11417,48 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.28.6 + '@babel/helper-plugin-utils@7.27.1': {} '@babel/helper-plugin-utils@7.28.6': {} + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-wrap-function': 7.28.6 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 + transitivePeerDependencies: + - supports-color + '@babel/helper-split-export-declaration@7.24.7': dependencies: '@babel/types': 7.28.5 @@ -9838,61 +11469,119 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} + '@babel/helper-wrap-function@7.28.6': + dependencies: + '@babel/template': 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 + transitivePeerDependencies: + - supports-color + '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 '@babel/types': 7.28.5 + '@babel/highlight@7.25.9': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/parser@7.28.5': dependencies: '@babel/types': 7.28.5 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)': + '@babel/parser@7.28.6': + dependencies: + '@babel/types': 7.28.6 + + '@babel/plugin-proposal-decorators@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-proposal-export-default-from@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.28.5)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)': + '@babel/plugin-syntax-export-default-from@7.28.6(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-flow@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.28.6 @@ -9932,6 +11621,193 @@ snapshots: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-async-generator-functions@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/traverse': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-globals': 7.28.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.5) + '@babel/traverse': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/template': 7.28.6 + + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-flow': 7.28.6(@babel/core@7.28.5) + + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) + '@babel/traverse': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -9942,6 +11818,98 @@ snapshots: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.5) + '@babel/types': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-regenerator@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-runtime@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-spread@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/preset-react@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.5) + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color + '@babel/runtime@7.28.4': {} '@babel/template@7.27.2': @@ -9950,6 +11918,12 @@ snapshots: '@babel/parser': 7.28.5 '@babel/types': 7.28.5 + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 + '@babel/traverse@7.28.5': dependencies: '@babel/code-frame': 7.27.1 @@ -9962,11 +11936,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.28.6': + dependencies: + '@babel/code-frame': 7.28.6 + '@babel/generator': 7.28.6 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + '@babel/types@7.28.5': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@babel/types@7.28.6': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@better-auth/core@1.3.26': dependencies: better-call: 1.0.19 @@ -10472,83 +12463,350 @@ snapshots: '@esbuild/win32-arm64@0.27.2': optional: true - '@esbuild/win32-ia32@0.18.20': - optional: true + '@esbuild/win32-ia32@0.18.20': + optional: true + + '@esbuild/win32-ia32@0.25.11': + optional: true + + '@esbuild/win32-ia32@0.25.9': + optional: true + + '@esbuild/win32-ia32@0.27.2': + optional: true + + '@esbuild/win32-x64@0.18.20': + optional: true + + '@esbuild/win32-x64@0.25.11': + optional: true + + '@esbuild/win32-x64@0.25.9': + optional: true + + '@esbuild/win32-x64@0.27.2': + optional: true + + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.6.1))': + dependencies: + eslint: 9.39.2(jiti@2.6.1) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/compat@1.4.1(eslint@9.39.2(jiti@2.6.1))': + dependencies: + '@eslint/core': 0.17.0 + optionalDependencies: + eslint: 9.39.2(jiti@2.6.1) + + '@eslint/config-array@0.21.1': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.39.2': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + + '@exodus/bytes@1.7.0': {} + + '@expo/cli@0.24.23(graphql@16.12.0)': + dependencies: + '@0no-co/graphql.web': 1.2.0(graphql@16.12.0) + '@babel/runtime': 7.28.4 + '@expo/code-signing-certificates': 0.0.5 + '@expo/config': 11.0.13 + '@expo/config-plugins': 10.1.2 + '@expo/devcert': 1.2.1 + '@expo/env': 1.0.7 + '@expo/image-utils': 0.7.6 + '@expo/json-file': 9.1.5 + '@expo/metro-config': 0.20.18 + '@expo/osascript': 2.3.8 + '@expo/package-manager': 1.9.9 + '@expo/plist': 0.3.5 + '@expo/prebuild-config': 9.0.12 + '@expo/schema-utils': 0.1.8 + '@expo/spawn-async': 1.7.2 + '@expo/ws-tunnel': 1.0.6 + '@expo/xcpretty': 4.3.2 + '@react-native/dev-middleware': 0.79.6 + '@urql/core': 5.2.0(graphql@16.12.0) + '@urql/exchange-retry': 1.3.2(@urql/core@5.2.0(graphql@16.12.0)) + accepts: 1.3.8 + arg: 5.0.2 + better-opn: 3.0.2 + bplist-creator: 0.1.0 + bplist-parser: 0.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + compression: 1.8.1 + connect: 3.7.0 + debug: 4.4.3 + env-editor: 0.4.2 + freeport-async: 2.0.0 + getenv: 2.0.0 + glob: 10.4.5 + lan-network: 0.1.7 + minimatch: 9.0.5 + node-forge: 1.3.3 + npm-package-arg: 11.0.3 + ora: 3.4.0 + picomatch: 3.0.1 + pretty-bytes: 5.6.0 + pretty-format: 29.7.0 + progress: 2.0.3 + prompts: 2.4.2 + qrcode-terminal: 0.11.0 + require-from-string: 2.0.2 + requireg: 0.2.2 + resolve: 1.22.10 + resolve-from: 5.0.0 + resolve.exports: 2.0.3 + semver: 7.7.3 + send: 0.19.0 + slugify: 1.6.6 + source-map-support: 0.5.21 + stacktrace-parser: 0.1.11 + structured-headers: 0.4.1 + tar: 7.5.1 + terminal-link: 2.1.1 + undici: 6.23.0 + wrap-ansi: 7.0.0 + ws: 8.18.3 + transitivePeerDependencies: + - bufferutil + - graphql + - supports-color + - utf-8-validate + + '@expo/code-signing-certificates@0.0.5': + dependencies: + node-forge: 1.3.3 + nullthrows: 1.1.1 + + '@expo/config-plugins@10.1.2': + dependencies: + '@expo/config-types': 53.0.5 + '@expo/json-file': 9.1.5 + '@expo/plist': 0.3.5 + '@expo/sdk-runtime-versions': 1.0.0 + chalk: 4.1.2 + debug: 4.4.3 + getenv: 2.0.0 + glob: 10.4.5 + resolve-from: 5.0.0 + semver: 7.7.3 + slash: 3.0.0 + slugify: 1.6.6 + xcode: 3.0.1 + xml2js: 0.6.0 + transitivePeerDependencies: + - supports-color + + '@expo/config-types@53.0.5': {} + + '@expo/config@11.0.13': + dependencies: + '@babel/code-frame': 7.10.4 + '@expo/config-plugins': 10.1.2 + '@expo/config-types': 53.0.5 + '@expo/json-file': 9.1.5 + deepmerge: 4.3.1 + getenv: 2.0.0 + glob: 10.4.5 + require-from-string: 2.0.2 + resolve-from: 5.0.0 + resolve-workspace-root: 2.0.1 + semver: 7.7.3 + slugify: 1.6.6 + sucrase: 3.35.0 + transitivePeerDependencies: + - supports-color + + '@expo/devcert@1.2.1': + dependencies: + '@expo/sudo-prompt': 9.3.2 + debug: 3.2.7 + transitivePeerDependencies: + - supports-color - '@esbuild/win32-ia32@0.25.11': - optional: true + '@expo/env@1.0.7': + dependencies: + chalk: 4.1.2 + debug: 4.4.3 + dotenv: 16.4.7 + dotenv-expand: 11.0.7 + getenv: 2.0.0 + transitivePeerDependencies: + - supports-color - '@esbuild/win32-ia32@0.25.9': - optional: true + '@expo/fingerprint@0.13.4': + dependencies: + '@expo/spawn-async': 1.7.2 + arg: 5.0.2 + chalk: 4.1.2 + debug: 4.4.3 + find-up: 5.0.0 + getenv: 2.0.0 + glob: 10.4.5 + ignore: 5.3.2 + minimatch: 9.0.5 + p-limit: 3.1.0 + resolve-from: 5.0.0 + semver: 7.7.3 + transitivePeerDependencies: + - supports-color - '@esbuild/win32-ia32@0.27.2': - optional: true + '@expo/image-utils@0.7.6': + dependencies: + '@expo/spawn-async': 1.7.2 + chalk: 4.1.2 + getenv: 2.0.0 + jimp-compact: 0.16.1 + parse-png: 2.1.0 + resolve-from: 5.0.0 + semver: 7.7.3 + temp-dir: 2.0.0 + unique-string: 2.0.0 - '@esbuild/win32-x64@0.18.20': - optional: true + '@expo/json-file@10.0.8': + dependencies: + '@babel/code-frame': 7.10.4 + json5: 2.2.3 - '@esbuild/win32-x64@0.25.11': - optional: true + '@expo/json-file@9.1.5': + dependencies: + '@babel/code-frame': 7.10.4 + json5: 2.2.3 - '@esbuild/win32-x64@0.25.9': - optional: true + '@expo/metro-config@0.20.18': + dependencies: + '@babel/core': 7.28.5 + '@babel/generator': 7.28.5 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@expo/config': 11.0.13 + '@expo/env': 1.0.7 + '@expo/json-file': 9.1.5 + '@expo/spawn-async': 1.7.2 + chalk: 4.1.2 + debug: 4.4.3 + dotenv: 16.4.7 + dotenv-expand: 11.0.7 + getenv: 2.0.0 + glob: 10.4.5 + jsc-safe-url: 0.2.4 + lightningcss: 1.27.0 + minimatch: 9.0.5 + postcss: 8.4.49 + resolve-from: 5.0.0 + transitivePeerDependencies: + - supports-color - '@esbuild/win32-x64@0.27.2': - optional: true + '@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))': + dependencies: + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.6.1))': + '@expo/osascript@2.3.8': dependencies: - eslint: 9.39.2(jiti@2.6.1) - eslint-visitor-keys: 3.4.3 + '@expo/spawn-async': 1.7.2 + exec-async: 2.2.0 - '@eslint-community/regexpp@4.12.1': {} + '@expo/package-manager@1.9.9': + dependencies: + '@expo/json-file': 10.0.8 + '@expo/spawn-async': 1.7.2 + chalk: 4.1.2 + npm-package-arg: 11.0.3 + ora: 3.4.0 + resolve-workspace-root: 2.0.1 - '@eslint/compat@1.4.1(eslint@9.39.2(jiti@2.6.1))': + '@expo/plist@0.3.5': dependencies: - '@eslint/core': 0.17.0 - optionalDependencies: - eslint: 9.39.2(jiti@2.6.1) + '@xmldom/xmldom': 0.8.11 + base64-js: 1.5.1 + xmlbuilder: 15.1.1 - '@eslint/config-array@0.21.1': + '@expo/prebuild-config@9.0.12': dependencies: - '@eslint/object-schema': 2.1.7 + '@expo/config': 11.0.13 + '@expo/config-plugins': 10.1.2 + '@expo/config-types': 53.0.5 + '@expo/image-utils': 0.7.6 + '@expo/json-file': 9.1.5 + '@react-native/normalize-colors': 0.79.6 debug: 4.4.3 - minimatch: 3.1.2 + resolve-from: 5.0.0 + semver: 7.7.3 + xml2js: 0.6.0 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.4.2': - dependencies: - '@eslint/core': 0.17.0 + '@expo/schema-utils@0.1.8': {} - '@eslint/core@0.17.0': - dependencies: - '@types/json-schema': 7.0.15 + '@expo/sdk-runtime-versions@1.0.0': {} - '@eslint/eslintrc@3.3.1': + '@expo/server@0.6.3': dependencies: - ajv: 6.12.6 + abort-controller: 3.0.0 debug: 4.4.3 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 + source-map-support: 0.5.21 + undici: 7.16.0 transitivePeerDependencies: - supports-color - '@eslint/js@9.39.2': {} + '@expo/spawn-async@1.7.2': + dependencies: + cross-spawn: 7.0.6 - '@eslint/object-schema@2.1.7': {} + '@expo/sudo-prompt@9.3.2': {} - '@eslint/plugin-kit@0.4.1': + '@expo/vector-icons@14.1.0(expo-font@13.3.2(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)': dependencies: - '@eslint/core': 0.17.0 - levn: 0.4.1 + expo-font: 13.3.2(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) - '@exodus/bytes@1.7.0': {} + '@expo/ws-tunnel@1.0.6': {} + + '@expo/xcpretty@4.3.2': + dependencies: + '@babel/code-frame': 7.10.4 + chalk: 4.1.2 + find-up: 5.0.0 + js-yaml: 4.1.1 '@fast-check/vitest@0.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: @@ -11727,12 +13985,104 @@ snapshots: '@publint/pack@0.1.2': {} + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.0.14)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.14 + + '@radix-ui/react-slot@1.2.0(@types/react@19.0.14)(react@19.0.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.14)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.14 + + '@react-native-async-storage/async-storage@2.1.2(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))': + dependencies: + merge-options: 3.0.4 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + + '@react-native-community/netinfo@11.4.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))': + dependencies: + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + '@react-native-community/netinfo@11.4.1(react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))': dependencies: react-native: 0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) + '@react-native/assets-registry@0.79.6': {} + '@react-native/assets-registry@0.83.1': {} + '@react-native/babel-plugin-codegen@0.79.6(@babel/core@7.28.5)': + dependencies: + '@babel/traverse': 7.28.5 + '@react-native/codegen': 0.79.6(@babel/core@7.28.5) + transitivePeerDependencies: + - '@babel/core' + - supports-color + + '@react-native/babel-preset@0.79.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-export-default-from': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-async-generator-functions': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.5) + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-regenerator': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-runtime': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.5) + '@babel/template': 7.27.2 + '@react-native/babel-plugin-codegen': 0.79.6(@babel/core@7.28.5) + babel-plugin-syntax-hermes-parser: 0.25.1 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.5) + react-refresh: 0.14.2 + transitivePeerDependencies: + - supports-color + + '@react-native/codegen@0.79.6(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/parser': 7.28.6 + glob: 7.2.3 + hermes-parser: 0.25.1 + invariant: 2.2.4 + nullthrows: 1.1.1 + yargs: 17.7.2 + '@react-native/codegen@0.83.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -11743,6 +14093,21 @@ snapshots: nullthrows: 1.1.1 yargs: 17.7.2 + '@react-native/community-cli-plugin@0.79.6': + dependencies: + '@react-native/dev-middleware': 0.79.6 + chalk: 4.1.2 + debug: 2.6.9 + invariant: 2.2.4 + metro: 0.82.5 + metro-config: 0.82.5 + metro-core: 0.82.5 + semver: 7.7.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + '@react-native/community-cli-plugin@0.83.1': dependencies: '@react-native/dev-middleware': 0.83.1 @@ -11757,6 +14122,8 @@ snapshots: - supports-color - utf-8-validate + '@react-native/debugger-frontend@0.79.6': {} + '@react-native/debugger-frontend@0.83.1': {} '@react-native/debugger-shell@0.83.1': @@ -11764,6 +14131,24 @@ snapshots: cross-spawn: 7.0.6 fb-dotslash: 0.5.8 + '@react-native/dev-middleware@0.79.6': + dependencies: + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.79.6 + chrome-launcher: 0.15.2 + chromium-edge-launcher: 0.2.0 + connect: 3.7.0 + debug: 2.6.9 + invariant: 2.2.4 + nullthrows: 1.1.1 + open: 7.4.2 + serve-static: 1.16.2 + ws: 6.2.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + '@react-native/dev-middleware@0.83.1': dependencies: '@isaacs/ttlcache': 1.4.1 @@ -11783,12 +14168,27 @@ snapshots: - supports-color - utf-8-validate + '@react-native/gradle-plugin@0.79.6': {} + '@react-native/gradle-plugin@0.83.1': {} + '@react-native/js-polyfills@0.79.6': {} + '@react-native/js-polyfills@0.83.1': {} + '@react-native/normalize-colors@0.79.6': {} + '@react-native/normalize-colors@0.83.1': {} + '@react-native/virtualized-lists@0.79.6(@types/react@19.0.14)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)': + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react: 19.0.0 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.14 + '@react-native/virtualized-lists@0.83.1(@types/react@19.2.7)(react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3)': dependencies: invariant: 2.2.4 @@ -11798,6 +14198,69 @@ snapshots: optionalDependencies: '@types/react': 19.2.7 + '@react-navigation/bottom-tabs@7.9.1(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)': + dependencies: + '@react-navigation/elements': 2.9.4(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + color: 4.2.3 + react: 19.0.0 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + react-native-safe-area-context: 5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react-native-screens: 4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + sf-symbols-typescript: 2.2.0 + transitivePeerDependencies: + - '@react-native-masked-view/masked-view' + + '@react-navigation/core@7.13.7(react@19.0.0)': + dependencies: + '@react-navigation/routers': 7.5.3 + escape-string-regexp: 4.0.0 + fast-deep-equal: 3.1.3 + nanoid: 3.3.11 + query-string: 7.1.3 + react: 19.0.0 + react-is: 19.2.3 + use-latest-callback: 0.2.6(react@19.0.0) + use-sync-external-store: 1.6.0(react@19.0.0) + + '@react-navigation/elements@2.9.4(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)': + dependencies: + '@react-navigation/native': 7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + color: 4.2.3 + react: 19.0.0 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + react-native-safe-area-context: 5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + use-latest-callback: 0.2.6(react@19.0.0) + use-sync-external-store: 1.6.0(react@19.0.0) + + '@react-navigation/native-stack@7.9.1(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)': + dependencies: + '@react-navigation/elements': 2.9.4(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + color: 4.2.3 + react: 19.0.0 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + react-native-safe-area-context: 5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react-native-screens: 4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + sf-symbols-typescript: 2.2.0 + warn-once: 0.1.1 + transitivePeerDependencies: + - '@react-native-masked-view/masked-view' + + '@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)': + dependencies: + '@react-navigation/core': 7.13.7(react@19.0.0) + escape-string-regexp: 4.0.0 + fast-deep-equal: 3.1.3 + nanoid: 3.3.11 + react: 19.0.0 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + use-latest-callback: 0.2.6(react@19.0.0) + + '@react-navigation/routers@7.5.3': + dependencies: + nanoid: 3.3.11 + '@rolldown/pluginutils@1.0.0-beta.40': {} '@rolldown/pluginutils@1.0.0-beta.53': {} @@ -12426,6 +14889,11 @@ snapshots: transitivePeerDependencies: - typescript + '@tanstack/react-query@5.90.16(react@19.0.0)': + dependencies: + '@tanstack/query-core': 5.90.16 + react: 19.0.0 + '@tanstack/react-query@5.90.16(react@19.2.3)': dependencies: '@tanstack/query-core': 5.90.16 @@ -12564,7 +15032,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.145.4(@tanstack/react-router@1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': + '@tanstack/router-plugin@1.145.4(@tanstack/react-router@1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) @@ -12707,7 +15175,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.40 '@tanstack/router-core': 1.144.0 '@tanstack/router-generator': 1.145.4 - '@tanstack/router-plugin': 1.145.4(@tanstack/react-router@1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + '@tanstack/router-plugin': 1.145.4(@tanstack/react-router@1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@tanstack/router-utils': 1.143.11 '@tanstack/start-client-core': 1.145.0 '@tanstack/start-server-core': 1.145.5 @@ -12738,7 +15206,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.40 '@tanstack/router-core': 1.144.0 '@tanstack/router-generator': 1.145.4 - '@tanstack/router-plugin': 1.145.4(@tanstack/react-router@1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + '@tanstack/router-plugin': 1.145.4(@tanstack/react-router@1.144.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)))(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@tanstack/router-utils': 1.143.11 '@tanstack/start-client-core': 1.145.0 '@tanstack/start-server-core': 1.145.5 @@ -13051,6 +15519,10 @@ snapshots: dependencies: '@types/react': 19.2.7 + '@types/react@19.0.14': + dependencies: + csstype: 3.2.3 + '@types/react@19.2.7': dependencies: csstype: 3.2.3 @@ -13337,6 +15809,18 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true + '@urql/core@5.2.0(graphql@16.12.0)': + dependencies: + '@0no-co/graphql.web': 1.2.0(graphql@16.12.0) + wonka: 6.3.5 + transitivePeerDependencies: + - graphql + + '@urql/exchange-retry@1.3.2(@urql/core@5.2.0(graphql@16.12.0))': + dependencies: + '@urql/core': 5.2.0(graphql@16.12.0) + wonka: 6.3.5 + '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.11(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: vite: 7.1.11(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) @@ -13420,7 +15904,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4(vitest@3.2.4))(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) '@vitest/utils@3.2.4': dependencies: @@ -13512,6 +15996,8 @@ snapshots: '@vue/shared@3.5.26': {} + '@xmldom/xmldom@0.8.11': {} + '@yarnpkg/lockfile@1.1.0': {} JSONStream@1.3.5: @@ -13612,10 +16098,16 @@ snapshots: dependencies: environment: 1.1.0 + ansi-regex@4.1.1: {} + ansi-regex@5.0.1: {} ansi-regex@6.2.2: {} + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -13626,11 +16118,15 @@ snapshots: ansis@4.1.0: {} + any-promise@1.3.0: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 + arg@5.0.2: {} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -13736,6 +16232,8 @@ snapshots: async-function@1.0.0: {} + async-limiter@1.0.1: {} + async-mutex@0.5.0: dependencies: tslib: 2.8.1 @@ -13795,10 +16293,46 @@ snapshots: parse5: 7.3.0 validate-html-nesting: 1.2.3 + babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): + dependencies: + '@babel/compat-data': 7.28.4 + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + core-js-compat: 3.47.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color + + babel-plugin-react-native-web@0.19.13: {} + + babel-plugin-syntax-hermes-parser@0.25.1: + dependencies: + hermes-parser: 0.25.1 + babel-plugin-syntax-hermes-parser@0.32.0: dependencies: hermes-parser: 0.32.0 + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.28.5): + dependencies: + '@babel/plugin-syntax-flow': 7.28.6(@babel/core@7.28.5) + transitivePeerDependencies: + - '@babel/core' + babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.5): dependencies: '@babel/core': 7.28.5 @@ -13818,6 +16352,33 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5) + babel-preset-expo@13.2.4(@babel/core@7.28.5): + dependencies: + '@babel/helper-module-imports': 7.27.1 + '@babel/plugin-proposal-decorators': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-export-default-from': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.28.5) + '@babel/plugin-transform-runtime': 7.28.5(@babel/core@7.28.5) + '@babel/preset-react': 7.28.5(@babel/core@7.28.5) + '@babel/preset-typescript': 7.28.5(@babel/core@7.28.5) + '@react-native/babel-preset': 0.79.6(@babel/core@7.28.5) + babel-plugin-react-native-web: 0.19.13 + babel-plugin-syntax-hermes-parser: 0.25.1 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.5) + debug: 4.4.3 + react-refresh: 0.14.2 + resolve-from: 5.0.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + babel-preset-jest@29.6.3(@babel/core@7.28.5): dependencies: '@babel/core': 7.28.5 @@ -13878,6 +16439,10 @@ snapshots: set-cookie-parser: 2.7.2 uncrypto: 0.1.3 + better-opn@3.0.2: + dependencies: + open: 8.4.2 + better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 @@ -13886,6 +16451,8 @@ snapshots: dependencies: require-from-string: 2.0.2 + big-integer@1.6.52: {} + binary-decision-diagram@3.2.0: {} binary-extensions@2.3.0: {} @@ -13921,7 +16488,19 @@ snapshots: transitivePeerDependencies: - supports-color - boolbase@1.0.0: {} + boolbase@1.0.0: {} + + bplist-creator@0.1.0: + dependencies: + stream-buffers: 2.2.0 + + bplist-parser@0.3.1: + dependencies: + big-integer: 1.6.52 + + bplist-parser@0.3.2: + dependencies: + big-integer: 1.6.52 brace-expansion@1.1.12: dependencies: @@ -13959,6 +16538,11 @@ snapshots: buffer-from@1.1.2: {} + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + buffer@6.0.3: dependencies: base64-js: 1.5.1 @@ -14000,6 +16584,16 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 + caller-callsite@2.0.0: + dependencies: + callsites: 2.0.0 + + caller-path@2.0.0: + dependencies: + caller-callsite: 2.0.0 + + callsites@2.0.0: {} + callsites@3.1.0: {} camelcase@5.3.1: {} @@ -14016,6 +16610,12 @@ snapshots: loupe: 3.2.1 pathval: 2.0.1 + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -14098,6 +16698,10 @@ snapshots: ci-info@3.9.0: {} + cli-cursor@2.1.0: + dependencies: + restore-cursor: 2.0.0 + cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 @@ -14111,6 +16715,8 @@ snapshots: cli-width@4.1.0: {} + client-only@0.0.1: {} + cliui@7.0.4: dependencies: string-width: 4.2.3 @@ -14129,14 +16735,32 @@ snapshots: strip-ansi: 7.1.2 wrap-ansi: 9.0.2 + clone@1.0.4: {} + clsx@2.1.1: {} + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + color-convert@2.0.1: dependencies: color-name: 1.1.4 + color-name@1.1.3: {} + color-name@1.1.4: {} + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.4 + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + colorette@2.0.20: {} comlink@4.4.2: {} @@ -14150,6 +16774,10 @@ snapshots: commander@2.20.3: {} + commander@4.1.1: {} + + commander@7.2.0: {} + comment-parser@1.4.1: {} common-tags@1.8.2: {} @@ -14161,6 +16789,22 @@ snapshots: compare-versions@6.1.1: {} + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.1: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.1.0 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + computeds@0.0.1: {} concat-map@0.0.1: {} @@ -14222,11 +16866,22 @@ snapshots: dependencies: is-what: 5.5.0 + core-js-compat@3.47.0: + dependencies: + browserslist: 4.28.0 + cors@2.8.5: dependencies: object-assign: 4.1.1 vary: 1.1.2 + cosmiconfig@5.2.1: + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.1 + parse-json: 4.0.0 + cross-spawn@6.0.6: dependencies: nice-try: 1.0.5 @@ -14243,6 +16898,8 @@ snapshots: crypto-js@4.2.0: {} + crypto-random-string@2.0.0: {} + css-select@5.2.2: dependencies: boolbase: 1.0.0 @@ -14315,6 +16972,10 @@ snapshots: dependencies: ms: 2.0.0 + debug@3.2.7: + dependencies: + ms: 2.1.3 + debug@4.3.7: dependencies: ms: 2.1.3 @@ -14325,14 +16986,22 @@ snapshots: decimal.js@10.6.0: {} + decode-uri-component@0.2.2: {} + dedent-js@1.0.1: {} deep-eql@5.0.2: {} + deep-extend@0.6.0: {} + deep-is@0.1.4: {} deepmerge@4.3.1: {} + defaults@1.0.4: + dependencies: + clone: 1.0.4 + defekt@9.3.0: {} define-data-property@1.1.4: @@ -14341,6 +17010,8 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + define-lazy-prop@2.0.0: {} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 @@ -14357,8 +17028,7 @@ snapshots: detect-indent@6.1.0: {} - detect-libc@1.0.3: - optional: true + detect-libc@1.0.3: {} detect-libc@2.0.4: {} @@ -14411,6 +17081,12 @@ snapshots: dependencies: is-obj: 2.0.0 + dotenv-expand@11.0.7: + dependencies: + dotenv: 16.6.1 + + dotenv@16.4.7: {} + dotenv@16.6.1: {} dotenv@17.2.3: {} @@ -14515,6 +17191,8 @@ snapshots: entities@7.0.0: {} + env-editor@0.4.2: {} + env-paths@2.2.1: {} env-paths@3.0.0: @@ -14526,6 +17204,10 @@ snapshots: err-code@3.0.1: {} + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + error-stack-parser@2.1.4: dependencies: stackframe: 1.3.4 @@ -14756,6 +17438,8 @@ snapshots: escape-html@1.0.3: {} + escape-string-regexp@1.0.5: {} + escape-string-regexp@2.0.0: {} escape-string-regexp@4.0.0: {} @@ -14985,6 +17669,8 @@ snapshots: dependencies: eventsource-parser: 3.0.6 + exec-async@2.2.0: {} + execa@1.0.0: dependencies: cross-spawn: 6.0.6 @@ -15009,6 +17695,131 @@ snapshots: expect-type@1.2.2: {} + expo-asset@11.1.7(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + dependencies: + '@expo/image-utils': 0.7.6 + expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + expo-constants: 17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + react: 19.0.0 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + transitivePeerDependencies: + - supports-color + + expo-constants@17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)): + dependencies: + '@expo/config': 11.0.13 + '@expo/env': 1.0.7 + expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + transitivePeerDependencies: + - supports-color + + expo-file-system@18.1.11(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)): + dependencies: + expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + + expo-font@13.3.2(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react@19.0.0): + dependencies: + expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + fontfaceobserver: 2.3.0 + react: 19.0.0 + + expo-keep-awake@14.1.4(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react@19.0.0): + dependencies: + expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react: 19.0.0 + + expo-linking@7.1.7(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + dependencies: + expo-constants: 17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + invariant: 2.2.4 + react: 19.0.0 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + transitivePeerDependencies: + - expo + - supports-color + + expo-modules-autolinking@2.1.14: + dependencies: + '@expo/spawn-async': 1.7.2 + chalk: 4.1.2 + commander: 7.2.0 + find-up: 5.0.0 + glob: 10.4.5 + require-from-string: 2.0.2 + resolve-from: 5.0.0 + + expo-modules-core@2.5.0: + dependencies: + invariant: 2.2.4 + + expo-router@5.1.10(uoxodvmysyuykgknmjs5xsiuxa): + dependencies: + '@expo/metro-runtime': 5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + '@expo/schema-utils': 0.1.8 + '@expo/server': 0.6.3 + '@radix-ui/react-slot': 1.2.0(@types/react@19.0.14)(react@19.0.0) + '@react-navigation/bottom-tabs': 7.9.1(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + '@react-navigation/native-stack': 7.9.1(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + client-only: 0.0.1 + expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + expo-constants: 17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + expo-linking: 7.1.7(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + invariant: 2.2.4 + react-fast-compare: 3.2.2 + react-native-is-edge-to-edge: 1.2.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react-native-safe-area-context: 5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react-native-screens: 4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + semver: 7.6.3 + server-only: 0.0.1 + shallowequal: 1.1.0 + transitivePeerDependencies: + - '@react-native-masked-view/masked-view' + - '@types/react' + - react + - react-native + - supports-color + + expo-status-bar@2.2.3(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + dependencies: + react: 19.0.0 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + react-native-edge-to-edge: 1.6.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react-native-is-edge-to-edge: 1.2.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + + expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.28.4 + '@expo/cli': 0.24.23(graphql@16.12.0) + '@expo/config': 11.0.13 + '@expo/config-plugins': 10.1.2 + '@expo/fingerprint': 0.13.4 + '@expo/metro-config': 0.20.18 + '@expo/vector-icons': 14.1.0(expo-font@13.3.2(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + babel-preset-expo: 13.2.4(@babel/core@7.28.5) + expo-asset: 11.1.7(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + expo-constants: 17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + expo-file-system: 18.1.11(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + expo-font: 13.3.2(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react@19.0.0) + expo-keep-awake: 14.1.4(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react@19.0.0) + expo-modules-autolinking: 2.1.14 + expo-modules-core: 2.5.0 + react: 19.0.0 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + react-native-edge-to-edge: 1.6.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + whatwg-url-without-unicode: 8.0.0-3 + optionalDependencies: + '@expo/metro-runtime': 5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-react-compiler + - bufferutil + - graphql + - supports-color + - utf-8-validate + exponential-backoff@3.1.2: {} express-rate-limit@7.5.1(express@5.1.0): @@ -15143,6 +17954,8 @@ snapshots: dependencies: to-regex-range: 5.0.1 + filter-obj@1.1.0: {} + finalhandler@1.1.2: dependencies: debug: 2.6.9 @@ -15232,6 +18045,8 @@ snapshots: follow-redirects@1.15.11: {} + fontfaceobserver@2.3.0: {} + for-each@0.3.5: dependencies: is-callable: 1.2.7 @@ -15249,6 +18064,8 @@ snapshots: fractional-indexing@3.2.0: {} + freeport-async@2.0.0: {} + fresh@0.5.2: {} fresh@2.0.0: {} @@ -15362,6 +18179,8 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + getenv@2.0.0: {} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -15435,6 +18254,8 @@ snapshots: has-bigints@1.1.0: {} + has-flag@3.0.0: {} + has-flag@4.0.0: {} has-property-descriptors@1.0.2: @@ -15459,12 +18280,28 @@ snapshots: hermes-compiler@0.14.0: {} + hermes-estree@0.25.1: {} + + hermes-estree@0.29.1: {} + hermes-estree@0.32.0: {} + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + + hermes-parser@0.29.1: + dependencies: + hermes-estree: 0.29.1 + hermes-parser@0.32.0: dependencies: hermes-estree: 0.32.0 + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + hosted-git-info@8.1.0: dependencies: lru-cache: 10.4.3 @@ -15473,9 +18310,11 @@ snapshots: dependencies: lru-cache: 11.2.4 - html-encoding-sniffer@4.0.0: + html-encoding-sniffer@6.0.0: dependencies: - whatwg-encoding: 3.1.1 + '@exodus/bytes': 1.7.0 + transitivePeerDependencies: + - '@exodus/crypto' html-entities@2.3.3: {} @@ -15564,6 +18403,11 @@ snapshots: immutable@5.1.3: {} + import-fresh@2.0.0: + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -15582,6 +18426,8 @@ snapshots: inherits@2.0.4: {} + ini@1.3.8: {} + ini@5.0.0: {} inline-style-parser@0.2.4: {} @@ -15613,6 +18459,10 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 + is-arrayish@0.2.1: {} + + is-arrayish@0.3.4: {} + is-async-function@2.1.1: dependencies: async-function: 1.0.0 @@ -15655,6 +18505,8 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 + is-directory@0.3.1: {} + is-docker@2.2.1: {} is-extglob@2.1.1: {} @@ -15711,6 +18563,8 @@ snapshots: is-obj@2.0.0: {} + is-plain-obj@2.1.0: {} + is-potential-custom-element-name@1.0.1: {} is-promise@4.0.0: {} @@ -15940,6 +18794,8 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 + jimp-compact@0.16.1: {} + jiti@2.6.1: {} jju@1.4.0: {} @@ -15971,7 +18827,7 @@ snapshots: cssstyle: 5.3.5 data-urls: 6.0.0 decimal.js: 10.6.0 - html-encoding-sniffer: 4.0.0 + html-encoding-sniffer: 6.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 @@ -15995,6 +18851,8 @@ snapshots: json-buffer@3.0.1: {} + json-parse-better-errors@1.0.2: {} + json-parse-even-better-errors@4.0.0: {} json-schema-traverse@0.4.1: {} @@ -16096,6 +18954,8 @@ snapshots: dependencies: json-buffer: 3.0.1 + kleur@3.0.3: {} + kleur@4.1.5: {} knip@5.79.0(@types/node@24.7.0)(typescript@5.9.3): @@ -16121,6 +18981,8 @@ snapshots: kysely@0.28.8: {} + lan-network@0.1.7: {} + leven@3.1.0: {} levn@0.4.1: @@ -16138,36 +19000,81 @@ snapshots: lightningcss-android-arm64@1.30.2: optional: true + lightningcss-darwin-arm64@1.27.0: + optional: true + lightningcss-darwin-arm64@1.30.2: optional: true + lightningcss-darwin-x64@1.27.0: + optional: true + lightningcss-darwin-x64@1.30.2: optional: true + lightningcss-freebsd-x64@1.27.0: + optional: true + lightningcss-freebsd-x64@1.30.2: optional: true + lightningcss-linux-arm-gnueabihf@1.27.0: + optional: true + lightningcss-linux-arm-gnueabihf@1.30.2: optional: true + lightningcss-linux-arm64-gnu@1.27.0: + optional: true + lightningcss-linux-arm64-gnu@1.30.2: optional: true + lightningcss-linux-arm64-musl@1.27.0: + optional: true + lightningcss-linux-arm64-musl@1.30.2: optional: true + lightningcss-linux-x64-gnu@1.27.0: + optional: true + lightningcss-linux-x64-gnu@1.30.2: optional: true + lightningcss-linux-x64-musl@1.27.0: + optional: true + lightningcss-linux-x64-musl@1.30.2: optional: true + lightningcss-win32-arm64-msvc@1.27.0: + optional: true + lightningcss-win32-arm64-msvc@1.30.2: optional: true + lightningcss-win32-x64-msvc@1.27.0: + optional: true + lightningcss-win32-x64-msvc@1.30.2: optional: true + lightningcss@1.27.0: + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.27.0 + lightningcss-darwin-x64: 1.27.0 + lightningcss-freebsd-x64: 1.27.0 + lightningcss-linux-arm-gnueabihf: 1.27.0 + lightningcss-linux-arm64-gnu: 1.27.0 + lightningcss-linux-arm64-musl: 1.27.0 + lightningcss-linux-x64-gnu: 1.27.0 + lightningcss-linux-x64-musl: 1.27.0 + lightningcss-win32-arm64-msvc: 1.27.0 + lightningcss-win32-x64-msvc: 1.27.0 + lightningcss@1.30.2: dependencies: detect-libc: 2.0.4 @@ -16186,6 +19093,8 @@ snapshots: lilconfig@3.1.3: {} + lines-and-columns@1.2.4: {} + linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 @@ -16257,6 +19166,8 @@ snapshots: lodash.camelcase@4.3.0: {} + lodash.debounce@4.0.8: {} + lodash.get@4.4.2: {} lodash.isequal@4.5.0: {} @@ -16269,6 +19180,10 @@ snapshots: lodash@4.17.21: {} + log-symbols@2.2.0: + dependencies: + chalk: 2.4.2 + log-symbols@6.0.0: dependencies: chalk: 5.6.2 @@ -16400,12 +19315,25 @@ snapshots: merge-descriptors@2.0.0: {} + merge-options@3.0.4: + dependencies: + is-plain-obj: 2.1.0 + merge-stream@2.0.0: {} merge2@1.4.1: {} methods@1.1.2: {} + metro-babel-transformer@0.82.5: + dependencies: + '@babel/core': 7.28.5 + flow-enums-runtime: 0.0.6 + hermes-parser: 0.29.1 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + metro-babel-transformer@0.83.3: dependencies: '@babel/core': 7.28.5 @@ -16415,10 +19343,23 @@ snapshots: transitivePeerDependencies: - supports-color + metro-cache-key@0.82.5: + dependencies: + flow-enums-runtime: 0.0.6 + metro-cache-key@0.83.3: dependencies: flow-enums-runtime: 0.0.6 + metro-cache@0.82.5: + dependencies: + exponential-backoff: 3.1.2 + flow-enums-runtime: 0.0.6 + https-proxy-agent: 7.0.6 + metro-core: 0.82.5 + transitivePeerDependencies: + - supports-color + metro-cache@0.83.3: dependencies: exponential-backoff: 3.1.2 @@ -16428,6 +19369,21 @@ snapshots: transitivePeerDependencies: - supports-color + metro-config@0.82.5: + dependencies: + connect: 3.7.0 + cosmiconfig: 5.2.1 + flow-enums-runtime: 0.0.6 + jest-validate: 29.7.0 + metro: 0.82.5 + metro-cache: 0.82.5 + metro-core: 0.82.5 + metro-runtime: 0.82.5 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + metro-config@0.83.3: dependencies: connect: 3.7.0 @@ -16443,12 +19399,32 @@ snapshots: - supports-color - utf-8-validate + metro-core@0.82.5: + dependencies: + flow-enums-runtime: 0.0.6 + lodash.throttle: 4.1.1 + metro-resolver: 0.82.5 + metro-core@0.83.3: dependencies: flow-enums-runtime: 0.0.6 lodash.throttle: 4.1.1 metro-resolver: 0.83.3 + metro-file-map@0.82.5: + dependencies: + debug: 4.4.3 + fb-watchman: 2.0.2 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-worker: 29.7.0 + micromatch: 4.0.8 + nullthrows: 1.1.1 + walker: 1.0.8 + transitivePeerDependencies: + - supports-color + metro-file-map@0.83.3: dependencies: debug: 4.4.3 @@ -16463,24 +19439,53 @@ snapshots: transitivePeerDependencies: - supports-color + metro-minify-terser@0.82.5: + dependencies: + flow-enums-runtime: 0.0.6 + terser: 5.44.0 + metro-minify-terser@0.83.3: dependencies: flow-enums-runtime: 0.0.6 terser: 5.44.0 + metro-resolver@0.82.5: + dependencies: + flow-enums-runtime: 0.0.6 + metro-resolver@0.83.3: dependencies: flow-enums-runtime: 0.0.6 + metro-runtime@0.82.5: + dependencies: + '@babel/runtime': 7.28.4 + flow-enums-runtime: 0.0.6 + metro-runtime@0.83.3: dependencies: '@babel/runtime': 7.28.4 flow-enums-runtime: 0.0.6 + metro-source-map@0.82.5: + dependencies: + '@babel/traverse': 7.28.6 + '@babel/traverse--for-generate-function-map': '@babel/traverse@7.28.6' + '@babel/types': 7.28.6 + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-symbolicate: 0.82.5 + nullthrows: 1.1.1 + ob1: 0.82.5 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + metro-source-map@0.83.3: dependencies: '@babel/traverse': 7.28.5 - '@babel/traverse--for-generate-function-map': '@babel/traverse@7.28.5' + '@babel/traverse--for-generate-function-map': '@babel/traverse@7.28.6' '@babel/types': 7.28.5 flow-enums-runtime: 0.0.6 invariant: 2.2.4 @@ -16492,6 +19497,17 @@ snapshots: transitivePeerDependencies: - supports-color + metro-symbolicate@0.82.5: + dependencies: + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-source-map: 0.82.5 + nullthrows: 1.1.1 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + metro-symbolicate@0.83.3: dependencies: flow-enums-runtime: 0.0.6 @@ -16503,6 +19519,17 @@ snapshots: transitivePeerDependencies: - supports-color + metro-transform-plugins@0.82.5: + dependencies: + '@babel/core': 7.28.5 + '@babel/generator': 7.28.6 + '@babel/template': 7.28.6 + '@babel/traverse': 7.28.6 + flow-enums-runtime: 0.0.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + metro-transform-plugins@0.83.3: dependencies: '@babel/core': 7.28.5 @@ -16514,6 +19541,26 @@ snapshots: transitivePeerDependencies: - supports-color + metro-transform-worker@0.82.5: + dependencies: + '@babel/core': 7.28.5 + '@babel/generator': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 + flow-enums-runtime: 0.0.6 + metro: 0.82.5 + metro-babel-transformer: 0.82.5 + metro-cache: 0.82.5 + metro-cache-key: 0.82.5 + metro-minify-terser: 0.82.5 + metro-source-map: 0.82.5 + metro-transform-plugins: 0.82.5 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + metro-transform-worker@0.83.3: dependencies: '@babel/core': 7.28.5 @@ -16534,6 +19581,53 @@ snapshots: - supports-color - utf-8-validate + metro@0.82.5: + dependencies: + '@babel/code-frame': 7.28.6 + '@babel/core': 7.28.5 + '@babel/generator': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 + accepts: 1.3.8 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 4.4.3 + error-stack-parser: 2.1.4 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + hermes-parser: 0.29.1 + image-size: 1.2.1 + invariant: 2.2.4 + jest-worker: 29.7.0 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.82.5 + metro-cache: 0.82.5 + metro-cache-key: 0.82.5 + metro-config: 0.82.5 + metro-core: 0.82.5 + metro-file-map: 0.82.5 + metro-resolver: 0.82.5 + metro-runtime: 0.82.5 + metro-source-map: 0.82.5 + metro-symbolicate: 0.82.5 + metro-transform-plugins: 0.82.5 + metro-transform-worker: 0.82.5 + mime-types: 2.1.35 + nullthrows: 1.1.1 + serialize-error: 2.1.0 + source-map: 0.5.7 + throat: 5.0.0 + ws: 7.5.10 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + metro@0.83.3: dependencies: '@babel/code-frame': 7.27.1 @@ -16602,6 +19696,8 @@ snapshots: mime@2.6.0: {} + mimic-fn@1.2.0: {} + mimic-fn@4.0.0: {} mimic-function@5.0.1: {} @@ -16726,6 +19822,12 @@ snapshots: mute-stream@2.0.0: {} + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + nanoid@3.3.11: {} nanostores@1.1.0: {} @@ -16740,8 +19842,12 @@ snapshots: negotiator@0.6.3: {} + negotiator@0.6.4: {} + negotiator@1.0.0: {} + nested-error-stacks@2.0.1: {} + nice-try@1.0.5: {} nkeys.js@1.1.0: @@ -16765,6 +19871,8 @@ snapshots: optionalDependencies: encoding: 0.1.13 + node-forge@1.3.3: {} + node-gyp-build-optional-packages@5.2.2: dependencies: detect-libc: 2.0.4 @@ -16805,6 +19913,13 @@ snapshots: npm-normalize-package-bin@4.0.0: {} + npm-package-arg@11.0.3: + dependencies: + hosted-git-info: 7.0.2 + proc-log: 4.2.0 + semver: 7.7.3 + validate-npm-package-name: 5.0.1 + npm-package-arg@12.0.2: dependencies: hosted-git-info: 8.1.0 @@ -16857,6 +19972,10 @@ snapshots: nullthrows@1.1.1: {} + ob1@0.82.5: + dependencies: + flow-enums-runtime: 0.0.6 + ob1@0.83.3: dependencies: flow-enums-runtime: 0.0.6 @@ -16909,10 +20028,16 @@ snapshots: dependencies: ee-first: 1.1.1 + on-headers@1.1.0: {} + once@1.4.0: dependencies: wrappy: 1.0.2 + onetime@2.0.1: + dependencies: + mimic-fn: 1.2.0 + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 @@ -16926,6 +20051,12 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -16935,6 +20066,15 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + ora@3.4.0: + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-spinners: 2.9.2 + log-symbols: 2.2.0 + strip-ansi: 5.2.0 + wcwidth: 1.0.1 + ora@8.2.0: dependencies: chalk: 5.6.2 @@ -17054,6 +20194,15 @@ snapshots: dependencies: callsites: 3.1.0 + parse-json@4.0.0: + dependencies: + error-ex: 1.3.4 + json-parse-better-errors: 1.0.2 + + parse-png@2.1.0: + dependencies: + pngjs: 3.4.0 + parse5-html-rewriting-stream@8.0.0: dependencies: entities: 6.0.1 @@ -17156,6 +20305,8 @@ snapshots: picomatch@2.3.1: {} + picomatch@3.0.1: {} + picomatch@4.0.3: {} pidtree@0.6.0: {} @@ -17176,10 +20327,24 @@ snapshots: mlly: 1.8.0 pathe: 2.0.3 + plist@3.1.0: + dependencies: + '@xmldom/xmldom': 0.8.11 + base64-js: 1.5.1 + xmlbuilder: 15.1.1 + + pngjs@3.4.0: {} + possible-typed-array-names@1.1.0: {} postcss-media-query-parser@0.2.3: {} + postcss@8.4.49: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -17208,6 +20373,8 @@ snapshots: prettier@3.7.4: {} + pretty-bytes@5.6.0: {} + pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 @@ -17220,8 +20387,12 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 + proc-log@4.2.0: {} + proc-log@5.0.0: {} + progress@2.0.3: {} + promise-retry@2.0.1: dependencies: err-code: 2.0.3 @@ -17231,6 +20402,11 @@ snapshots: dependencies: asap: 2.0.6 + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -17285,6 +20461,8 @@ snapshots: qjobs@1.2.0: {} + qrcode-terminal@0.11.0: {} + qs@6.13.0: dependencies: side-channel: 1.1.0 @@ -17295,6 +20473,13 @@ snapshots: quansync@0.2.11: {} + query-string@7.1.3: + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + queue-microtask@1.2.3: {} queue@6.0.2: @@ -17321,6 +20506,13 @@ snapshots: iconv-lite: 0.7.0 unpipe: 1.0.0 + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + react-devtools-core@6.1.5: dependencies: shell-quote: 1.8.3 @@ -17334,12 +20526,91 @@ snapshots: react: 19.2.3 scheduler: 0.27.0 + react-fast-compare@3.2.2: {} + + react-freeze@1.0.4(react@19.0.0): + dependencies: + react: 19.0.0 + react-is@16.13.1: {} react-is@17.0.2: {} react-is@18.3.1: {} + react-is@19.2.3: {} + + react-native-edge-to-edge@1.6.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + dependencies: + react: 19.0.0 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + + react-native-is-edge-to-edge@1.2.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + dependencies: + react: 19.0.0 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + + react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + dependencies: + react: 19.0.0 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + + react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + dependencies: + react: 19.0.0 + react-freeze: 1.0.4(react@19.0.0) + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + react-native-is-edge-to-edge: 1.2.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + warn-once: 0.1.1 + + react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0): + dependencies: + '@jest/create-cache-key-function': 29.7.0 + '@react-native/assets-registry': 0.79.6 + '@react-native/codegen': 0.79.6(@babel/core@7.28.5) + '@react-native/community-cli-plugin': 0.79.6 + '@react-native/gradle-plugin': 0.79.6 + '@react-native/js-polyfills': 0.79.6 + '@react-native/normalize-colors': 0.79.6 + '@react-native/virtualized-lists': 0.79.6(@types/react@19.0.14)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + abort-controller: 3.0.0 + anser: 1.4.10 + ansi-regex: 5.0.1 + babel-jest: 29.7.0(@babel/core@7.28.5) + babel-plugin-syntax-hermes-parser: 0.25.1 + base64-js: 1.5.1 + chalk: 4.1.2 + commander: 12.1.0 + event-target-shim: 5.0.1 + flow-enums-runtime: 0.0.6 + glob: 7.2.3 + invariant: 2.2.4 + jest-environment-node: 29.7.0 + memoize-one: 5.2.1 + metro-runtime: 0.82.5 + metro-source-map: 0.82.5 + nullthrows: 1.1.1 + pretty-format: 29.7.0 + promise: 8.3.0 + react: 19.0.0 + react-devtools-core: 6.1.5 + react-refresh: 0.14.2 + regenerator-runtime: 0.13.11 + scheduler: 0.25.0 + semver: 7.7.3 + stacktrace-parser: 0.1.11 + whatwg-fetch: 3.6.20 + ws: 6.2.3 + yargs: 17.7.2 + optionalDependencies: + '@types/react': 19.0.14 + transitivePeerDependencies: + - '@babel/core' + - '@react-native-community/cli' + - bufferutil + - supports-color + - utf-8-validate + react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3): dependencies: '@jest/create-cache-key-function': 29.7.0 @@ -17392,6 +20663,8 @@ snapshots: react-refresh@0.18.0: {} + react@19.0.0: {} + react@19.2.3: {} read-yaml-file@1.1.0: @@ -17447,6 +20720,12 @@ snapshots: get-proto: 1.0.1 which-builtin-type: 1.2.1 + regenerate-unicode-properties@10.2.2: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + regenerator-runtime@0.13.11: {} regexp.prototype.flags@1.5.4: @@ -17458,30 +20737,66 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 + regexpu-core@6.4.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.2 + regjsgen: 0.8.0 + regjsparser: 0.13.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.1 + + regjsgen@0.8.0: {} + + regjsparser@0.13.0: + dependencies: + jsesc: 3.1.0 + require-directory@2.1.1: {} require-from-string@2.0.2: {} + requireg@0.2.2: + dependencies: + nested-error-stacks: 2.0.1 + rc: 1.2.8 + resolve: 1.7.1 + requires-port@1.0.0: {} + resolve-from@3.0.0: {} + resolve-from@4.0.0: {} resolve-from@5.0.0: {} resolve-pkg-maps@1.0.0: {} + resolve-workspace-root@2.0.1: {} + + resolve.exports@2.0.3: {} + resolve@1.22.10: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + resolve@1.7.1: + dependencies: + path-parse: 1.0.7 + resolve@2.0.0-next.5: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@2.0.0: + dependencies: + onetime: 2.0.1 + signal-exit: 3.0.7 + restore-cursor@5.1.0: dependencies: onetime: 7.0.0 @@ -17664,10 +20979,14 @@ snapshots: optionalDependencies: '@parcel/watcher': 2.5.1 + sax@1.4.4: {} + saxes@6.0.0: dependencies: xmlchars: 2.2.0 + scheduler@0.25.0: {} + scheduler@0.27.0: {} semver@5.7.2: {} @@ -17678,6 +20997,8 @@ snapshots: dependencies: lru-cache: 6.0.0 + semver@7.6.3: {} + semver@7.7.2: {} semver@7.7.3: {} @@ -17748,6 +21069,8 @@ snapshots: transitivePeerDependencies: - supports-color + server-only@0.0.1: {} + set-cookie-parser@2.7.2: {} set-function-length@1.2.2: @@ -17774,6 +21097,10 @@ snapshots: setprototypeof@1.2.0: {} + sf-symbols-typescript@2.2.0: {} + + shallowequal@1.1.0: {} + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -17900,12 +21227,24 @@ snapshots: transitivePeerDependencies: - supports-color + simple-plist@1.3.1: + dependencies: + bplist-creator: 0.1.0 + bplist-parser: 0.3.1 + plist: 3.1.0 + + simple-swizzle@0.2.4: + dependencies: + is-arrayish: 0.3.4 + sirv@3.0.2: dependencies: '@polka/url': 1.0.0-next.29 mrmime: 2.0.1 totalist: 3.0.1 + sisteransi@1.0.5: {} + slash@3.0.0: {} slice-ansi@5.0.0: @@ -17918,6 +21257,8 @@ snapshots: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 + slugify@1.6.6: {} + smart-buffer@4.2.0: {} smol-toml@1.5.2: {} @@ -18018,6 +21359,8 @@ snapshots: spdx-license-ids@3.0.22: {} + split-on-first@1.1.0: {} + split2@4.2.0: {} sprintf-js@1.0.3: {} @@ -18057,6 +21400,8 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 + stream-buffers@2.2.0: {} + streamroller@3.1.5: dependencies: date-format: 4.0.14 @@ -18065,6 +21410,8 @@ snapshots: transitivePeerDependencies: - supports-color + strict-uri-encode@2.0.0: {} + string-argv@0.3.2: {} string-width@4.2.3: @@ -18133,6 +21480,10 @@ snapshots: dependencies: safe-buffer: 5.2.1 + strip-ansi@5.2.0: + dependencies: + ansi-regex: 4.1.1 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -18151,6 +21502,8 @@ snapshots: dependencies: min-indent: 1.0.1 + strip-json-comments@2.0.1: {} + strip-json-comments@3.1.1: {} strip-json-comments@5.0.3: {} @@ -18159,14 +21512,30 @@ snapshots: dependencies: js-tokens: 9.0.1 + structured-headers@0.4.1: {} + style-to-object@1.0.9: dependencies: inline-style-parser: 0.2.4 + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + ts-interface-checker: 0.1.13 + superjson@2.2.6: dependencies: copy-anything: 4.0.5 + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -18175,6 +21544,11 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} svelte-check@4.3.5(picomatch@4.0.3)(svelte@5.46.1)(typescript@5.9.3): @@ -18243,6 +21617,8 @@ snapshots: minizlib: 3.1.0 yallist: 5.0.0 + temp-dir@2.0.0: {} + temporal-polyfill@0.3.0: dependencies: temporal-spec: 0.3.0 @@ -18251,6 +21627,11 @@ snapshots: term-size@2.2.1: {} + terminal-link@2.1.1: + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + terser@5.44.0: dependencies: '@jridgewell/source-map': 0.3.11 @@ -18272,6 +21653,14 @@ snapshots: text-extensions@2.4.0: {} + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + throat@5.0.0: {} through@2.3.8: {} @@ -18349,6 +21738,8 @@ snapshots: picomatch: 4.0.3 typescript: 5.9.3 + ts-interface-checker@0.1.13: {} + tsconfck@3.1.6(typescript@5.9.3): optionalDependencies: typescript: 5.9.3 @@ -18463,6 +21854,8 @@ snapshots: typescript@5.4.2: {} + typescript@5.8.3: {} + typescript@5.9.3: {} ua-parser-js@0.7.41: {} @@ -18482,8 +21875,21 @@ snapshots: undici-types@7.14.0: {} + undici@6.23.0: {} + undici@7.16.0: {} + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.2.0 + + unicode-match-property-value-ecmascript@2.2.1: {} + + unicode-property-aliases-ecmascript@2.2.0: {} + unique-filename@4.0.0: dependencies: unique-slug: 5.0.0 @@ -18492,6 +21898,10 @@ snapshots: dependencies: imurmurhash: 0.1.4 + unique-string@2.0.0: + dependencies: + crypto-random-string: 2.0.0 + universalify@0.1.2: {} universalify@2.0.1: {} @@ -18541,6 +21951,14 @@ snapshots: dependencies: punycode: 2.3.1 + use-latest-callback@0.2.6(react@19.0.0): + dependencies: + react: 19.0.0 + + use-sync-external-store@1.6.0(react@19.0.0): + dependencies: + react: 19.0.0 + use-sync-external-store@1.6.0(react@19.2.3): dependencies: react: 19.2.3 @@ -18559,6 +21977,8 @@ snapshots: uuid@13.0.0: {} + uuid@7.0.3: {} + validate-html-nesting@1.2.3: {} validate-npm-package-license@3.0.4: @@ -18566,6 +21986,8 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 + validate-npm-package-name@5.0.1: {} + validate-npm-package-name@6.0.2: {} validator@13.15.15: {} @@ -18726,50 +22148,6 @@ snapshots: - tsx - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.7.0)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1): - dependencies: - '@types/chai': 5.2.2 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - debug: 4.4.3 - expect-type: 1.2.2 - magic-string: 0.30.21 - pathe: 2.0.3 - picomatch: 4.0.3 - std-env: 3.9.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.15 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: 7.3.1(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.7.0)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/debug': 4.1.12 - '@types/node': 24.7.0 - '@vitest/ui': 3.2.4(vitest@3.2.4) - jsdom: 27.4.0 - transitivePeerDependencies: - - jiti - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - vlq@1.0.1: {} void-elements@2.0.1: {} @@ -18808,11 +22186,17 @@ snapshots: dependencies: makeerror: 1.0.12 + warn-once@0.1.1: {} + watchpack@2.4.4: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + weak-lru-cache@1.2.2: optional: true @@ -18822,6 +22206,8 @@ snapshots: webidl-conversions@3.0.1: {} + webidl-conversions@5.0.0: {} + webidl-conversions@7.0.0: {} webidl-conversions@8.0.0: {} @@ -18844,6 +22230,12 @@ snapshots: whatwg-mimetype@4.0.0: {} + whatwg-url-without-unicode@8.0.0-3: + dependencies: + buffer: 5.7.1 + punycode: 2.3.1 + webidl-conversions: 5.0.0 + whatwg-url@14.2.0: dependencies: tr46: 5.1.1 @@ -18922,6 +22314,8 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + wonka@6.3.5: {} + word-wrap@1.2.5: {} wrap-ansi@6.2.0: @@ -18955,14 +22349,28 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 + ws@6.2.3: + dependencies: + async-limiter: 1.0.1 + ws@7.5.10: {} ws@8.17.1: {} ws@8.18.3: {} + xcode@3.0.1: + dependencies: + simple-plist: 1.3.1 + uuid: 7.0.3 + xml-name-validator@5.0.0: {} + xml2js@0.6.0: + dependencies: + sax: 1.4.4 + xmlbuilder: 11.0.1 + xmlbuilder2@4.0.3: dependencies: '@oozcitak/dom': 2.0.2 @@ -18970,6 +22378,10 @@ snapshots: '@oozcitak/util': 10.0.0 js-yaml: 4.1.1 + xmlbuilder@11.0.1: {} + + xmlbuilder@15.1.1: {} + xmlchars@2.2.0: {} xtend@4.0.2: {} From 7832014ca48f58ca00280745c4d25d4a4485949c Mon Sep 17 00:00:00 2001 From: Kevin De Porre Date: Thu, 15 Jan 2026 15:04:25 +0100 Subject: [PATCH 06/11] Remove .expo folder from tracking --- .../react-native/offline-transactions/.expo/README.md | 8 -------- .../react-native/offline-transactions/.expo/devices.json | 3 --- 2 files changed, 11 deletions(-) delete mode 100644 examples/react-native/offline-transactions/.expo/README.md delete mode 100644 examples/react-native/offline-transactions/.expo/devices.json diff --git a/examples/react-native/offline-transactions/.expo/README.md b/examples/react-native/offline-transactions/.expo/README.md deleted file mode 100644 index f7eb5fe7e..000000000 --- a/examples/react-native/offline-transactions/.expo/README.md +++ /dev/null @@ -1,8 +0,0 @@ -> Why do I have a folder named ".expo" in my project? -The ".expo" folder is created when an Expo project is started using "expo start" command. -> What do the files contain? -- "devices.json": contains information about devices that have recently opened this project. This is used to populate the "Development sessions" list in your development builds. -- "settings.json": contains the server configuration that is used to serve the application manifest. -> Should I commit the ".expo" folder? -No, you should not share the ".expo" folder. It does not contain any information that is relevant for other developers working on the project, it is specific to your machine. -Upon project creation, the ".expo" folder is already added to your ".gitignore" file. diff --git a/examples/react-native/offline-transactions/.expo/devices.json b/examples/react-native/offline-transactions/.expo/devices.json deleted file mode 100644 index 5efff6c8c..000000000 --- a/examples/react-native/offline-transactions/.expo/devices.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "devices": [] -} From 97f6d70c92577320803ec07fa7d3722661eea52d Mon Sep 17 00:00:00 2001 From: Kevin De Porre Date: Thu, 15 Jan 2026 15:04:47 +0100 Subject: [PATCH 07/11] Updated .gitignore to ignore .expo cache --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 22096f2e0..1cbcf6ed2 100644 --- a/.gitignore +++ b/.gitignore @@ -38,6 +38,7 @@ stats.html .pnpm-store .tsup .svelte-kit +.expo vite.config.js.timestamp-* vite.config.ts.timestamp-* From 7d1023a2c23c8e636a09accc8d1915f517d3f6e0 Mon Sep 17 00:00:00 2001 From: Kevin De Porre Date: Mon, 19 Jan 2026 12:06:37 +0100 Subject: [PATCH 08/11] Add screencast to readme --- examples/react-native/offline-transactions/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/examples/react-native/offline-transactions/README.md b/examples/react-native/offline-transactions/README.md index 0f86df7f9..e4176ca03 100644 --- a/examples/react-native/offline-transactions/README.md +++ b/examples/react-native/offline-transactions/README.md @@ -2,6 +2,11 @@ This example demonstrates offline-first transactions using TanStack DB on React Native / Expo. + + ## Features - Offline transaction queuing with AsyncStorage @@ -38,7 +43,7 @@ cd examples/react-native/offline-transactions pnpm install # Start the backend server (in one terminal) -pnpm server +npx tsx server/index.ts # Start the Expo dev server (in another terminal) pnpm start From cff028b4489e3a222ca29dd304b69ba0bd4c9050 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 11:11:39 +0000 Subject: [PATCH 09/11] ci: apply automated fixes --- .../offline-transactions/README.md | 10 +-- .../offline-transactions/metro.config.js | 17 ++-- .../offline-transactions/server/index.ts | 4 +- .../src/components/TodoList.tsx | 86 +++++++++++++++---- .../offline-transactions/src/db/todos.ts | 10 ++- .../offline-transactions/src/polyfills.ts | 31 +++---- .../offline-transactions/src/utils/api.ts | 2 +- .../offline-transactions/tsconfig.json | 9 +- 8 files changed, 112 insertions(+), 57 deletions(-) diff --git a/examples/react-native/offline-transactions/README.md b/examples/react-native/offline-transactions/README.md index e4176ca03..addcf4dcf 100644 --- a/examples/react-native/offline-transactions/README.md +++ b/examples/react-native/offline-transactions/README.md @@ -80,9 +80,9 @@ The backend server runs on port 3001 and is shared by all emulators/devices. Thi ## Key Differences from Web -| Web | React Native | -|-----|-------------| -| IndexedDB / localStorage | AsyncStorage | -| `window.addEventListener('online')` | NetInfo.addEventListener | -| `document.visibilitychange` | AppState.addEventListener | +| Web | React Native | +| -------------------------------------------- | --------------------------------------------------------- | +| IndexedDB / localStorage | AsyncStorage | +| `window.addEventListener('online')` | NetInfo.addEventListener | +| `document.visibilitychange` | AppState.addEventListener | | Import from `@tanstack/offline-transactions` | Import from `@tanstack/offline-transactions/react-native` | diff --git a/examples/react-native/offline-transactions/metro.config.js b/examples/react-native/offline-transactions/metro.config.js index 50a634ac6..7bed46fc6 100644 --- a/examples/react-native/offline-transactions/metro.config.js +++ b/examples/react-native/offline-transactions/metro.config.js @@ -17,10 +17,13 @@ config.resolver.unstable_enableSymlinks = true const localNodeModules = path.resolve(projectRoot, 'node_modules') config.resolver.extraNodeModules = new Proxy( { - 'react': path.resolve(localNodeModules, 'react'), + react: path.resolve(localNodeModules, 'react'), 'react-native': path.resolve(localNodeModules, 'react-native'), 'react/jsx-runtime': path.resolve(localNodeModules, 'react/jsx-runtime'), - 'react/jsx-dev-runtime': path.resolve(localNodeModules, 'react/jsx-dev-runtime'), + 'react/jsx-dev-runtime': path.resolve( + localNodeModules, + 'react/jsx-dev-runtime', + ), }, { get: (target, name) => { @@ -30,13 +33,17 @@ config.resolver.extraNodeModules = new Proxy( // Fall back to normal resolution for other modules return path.resolve(localNodeModules, name) }, - } + }, ) // Block react-native 0.83 from root node_modules config.resolver.blockList = [ - new RegExp(`${monorepoRoot.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}/node_modules/\\.pnpm/react-native@0\\.83.*`), - new RegExp(`${monorepoRoot.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}/node_modules/\\.pnpm/react@(?!19\\.0\\.0).*`), + new RegExp( + `${monorepoRoot.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}/node_modules/\\.pnpm/react-native@0\\.83.*`, + ), + new RegExp( + `${monorepoRoot.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}/node_modules/\\.pnpm/react@(?!19\\.0\\.0).*`, + ), ] // Let Metro know where to resolve packages from (local first, then root) diff --git a/examples/react-native/offline-transactions/server/index.ts b/examples/react-native/offline-transactions/server/index.ts index f0e72c72d..d7990b7a8 100644 --- a/examples/react-native/offline-transactions/server/index.ts +++ b/examples/react-native/offline-transactions/server/index.ts @@ -48,7 +48,7 @@ app.get('/api/todos', async (_req, res) => { console.log('GET /api/todos') await delay(200) const todos = Array.from(todosStore.values()).sort( - (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime() + (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(), ) res.json(todos) }) @@ -57,7 +57,7 @@ app.get('/api/todos', async (_req, res) => { app.post('/api/todos', async (req, res) => { console.log('POST /api/todos', req.body) await delay(200) - + const { text, completed } = req.body if (!text || text.trim() === '') { return res.status(400).json({ error: 'Todo text is required' }) diff --git a/examples/react-native/offline-transactions/src/components/TodoList.tsx b/examples/react-native/offline-transactions/src/components/TodoList.tsx index 62a5c4246..3f9b0ce54 100644 --- a/examples/react-native/offline-transactions/src/components/TodoList.tsx +++ b/examples/react-native/offline-transactions/src/components/TodoList.tsx @@ -21,7 +21,9 @@ export function TodoList() { const [error, setError] = useState(null) const [isOnline, setIsOnline] = useState(true) const [pendingCount, setPendingCount] = useState(0) - const [offline, setOffline] = useState | null>(null) + const [offline, setOffline] = useState | null>(null) const [initError, setInitError] = useState(null) const [isInitialized, setIsInitialized] = useState(false) @@ -51,21 +53,25 @@ export function TodoList() { const queryResult = useLiveQuery((q) => q .from({ todo: todoCollection }) - .orderBy(({ todo }) => todo.createdAt, `desc`) + .orderBy(({ todo }) => todo.createdAt, `desc`), ) const todoList = queryResult.data ?? [] const isLoading = queryResult.isLoading useEffect(() => { - console.log(`[TodoList] Query state:`, { todoCount: todoList.length, isLoading }) + console.log(`[TodoList] Query state:`, { + todoCount: todoList.length, + isLoading, + }) }, [todoList.length, isLoading]) // Monitor network status useEffect(() => { const unsubscribe = NetInfo.addEventListener((state) => { - const connected = state.isConnected === true && state.isInternetReachable !== false + const connected = + state.isConnected === true && state.isInternetReachable !== false setIsOnline(connected) - + if (connected && offline) { offline.notifyOnline() } @@ -151,18 +157,43 @@ export function TodoList() { {/* Debug info */} - Init: {isInitialized ? `yes` : `no`} | Offline: {offline ? `yes` : `no`} | Loading: {isLoading ? `yes` : `no`} | Todos: {todoList.length} + Init: {isInitialized ? `yes` : `no`} | Offline: {offline ? `yes` : `no`}{' '} + | Loading: {isLoading ? `yes` : `no`} | Todos: {todoList.length} {/* Status indicators */} - - - {isOnline ? `Online` : `Offline`} + + + + {isOnline ? `Online` : `Offline`} + - - + + {offline?.isOfflineEnabled ? `Offline Mode` : `Online Only`} @@ -194,7 +225,10 @@ export function TodoList() { editable={!isLoading} /> @@ -211,7 +245,9 @@ export function TodoList() { ) : todoList.length === 0 ? ( No todos yet. Add one above! - Try going offline to test offline mode + + Try going offline to test offline mode + ) : ( ( handleToggleTodo(todo.id)} > {todo.completed && ✓} - + {todo.text} @@ -248,10 +292,16 @@ export function TodoList() { {/* Instructions */} Try this: - 1. Add some todos while online + + 1. Add some todos while online + 2. Enable airplane mode - 3. Add more todos (queued locally) - 4. Disable airplane mode to sync + + 3. Add more todos (queued locally) + + + 4. Disable airplane mode to sync + ) diff --git a/examples/react-native/offline-transactions/src/db/todos.ts b/examples/react-native/offline-transactions/src/db/todos.ts index b95e9fcce..88a690394 100644 --- a/examples/react-native/offline-transactions/src/db/todos.ts +++ b/examples/react-native/offline-transactions/src/db/todos.ts @@ -3,9 +3,9 @@ import { queryCollectionOptions } from '@tanstack/query-db-collection' import { startOfflineExecutor } from '@tanstack/offline-transactions/react-native' import { z } from 'zod' import { queryClient } from '../utils/queryClient' -import { todoApi } from '../utils/api' +import { todoApi } from '../utils/api' import { AsyncStorageAdapter } from './AsyncStorageAdapter' -import type {Todo} from '../utils/api'; +import type { Todo } from '../utils/api' import type { PendingMutation } from '@tanstack/db' // Define schema @@ -31,7 +31,7 @@ export const todoCollection = createCollection( schema: todoSchema, // Poll every 3 seconds to sync changes from other devices refetchInterval: 3000, - }) + }), ) // Sync function to push mutations to the "backend" @@ -109,7 +109,9 @@ export function createOfflineExecutor() { } // Helper functions to create offline actions -export function createTodoActions(offline: ReturnType | null) { +export function createTodoActions( + offline: ReturnType | null, +) { if (!offline) { return { addTodo: null, diff --git a/examples/react-native/offline-transactions/src/polyfills.ts b/examples/react-native/offline-transactions/src/polyfills.ts index 0a629871a..1c00a87f9 100644 --- a/examples/react-native/offline-transactions/src/polyfills.ts +++ b/examples/react-native/offline-transactions/src/polyfills.ts @@ -4,21 +4,22 @@ if (typeof global.crypto === 'undefined') { } if (typeof global.crypto.randomUUID !== 'function') { - global.crypto.randomUUID = function randomUUID(): `${string}-${string}-${string}-${string}-${string}` { - // Simple UUID v4 implementation - const hex = '0123456789abcdef' - let uuid = '' - for (let i = 0; i < 36; i++) { - if (i === 8 || i === 13 || i === 18 || i === 23) { - uuid += '-' - } else if (i === 14) { - uuid += '4' // Version 4 - } else if (i === 19) { - uuid += hex[(Math.random() * 4) | 8] // Variant bits - } else { - uuid += hex[(Math.random() * 16) | 0] + global.crypto.randomUUID = + function randomUUID(): `${string}-${string}-${string}-${string}-${string}` { + // Simple UUID v4 implementation + const hex = '0123456789abcdef' + let uuid = '' + for (let i = 0; i < 36; i++) { + if (i === 8 || i === 13 || i === 18 || i === 23) { + uuid += '-' + } else if (i === 14) { + uuid += '4' // Version 4 + } else if (i === 19) { + uuid += hex[(Math.random() * 4) | 8] // Variant bits + } else { + uuid += hex[(Math.random() * 16) | 0] + } } + return uuid as `${string}-${string}-${string}-${string}-${string}` } - return uuid as `${string}-${string}-${string}-${string}-${string}` - } } diff --git a/examples/react-native/offline-transactions/src/utils/api.ts b/examples/react-native/offline-transactions/src/utils/api.ts index 1a744332a..c8ee50e1b 100644 --- a/examples/react-native/offline-transactions/src/utils/api.ts +++ b/examples/react-native/offline-transactions/src/utils/api.ts @@ -61,7 +61,7 @@ export const todoApi = { async update( id: string, - data: { text?: string; completed?: boolean } + data: { text?: string; completed?: boolean }, ): Promise { const response = await fetch(`${BASE_URL}/api/todos/${id}`, { method: 'PUT', diff --git a/examples/react-native/offline-transactions/tsconfig.json b/examples/react-native/offline-transactions/tsconfig.json index e2a251e04..52f606b02 100644 --- a/examples/react-native/offline-transactions/tsconfig.json +++ b/examples/react-native/offline-transactions/tsconfig.json @@ -3,13 +3,8 @@ "compilerOptions": { "strict": true, "paths": { - "~/*": [ - "./src/*" - ] + "~/*": ["./src/*"] } }, - "include": [ - "**/*.ts", - "**/*.tsx" - ] + "include": ["**/*.ts", "**/*.tsx"] } From e37619f68d603ba3458f7e75a597e2047c889dea Mon Sep 17 00:00:00 2001 From: Kevin De Porre Date: Mon, 19 Jan 2026 12:42:08 +0100 Subject: [PATCH 10/11] Fix versioning problems --- .../offline-transactions/package.json | 17 +- examples/react/todo/package.json | 4 +- examples/solid/todo/package.json | 4 +- package.json | 5 + packages/offline-transactions/package.json | 2 +- pnpm-lock.yaml | 594 +++++------------- 6 files changed, 179 insertions(+), 447 deletions(-) diff --git a/examples/react-native/offline-transactions/package.json b/examples/react-native/offline-transactions/package.json index 7272cdcbe..48a451cfc 100644 --- a/examples/react-native/offline-transactions/package.json +++ b/examples/react-native/offline-transactions/package.json @@ -3,12 +3,6 @@ "version": "1.0.0", "private": true, "main": "expo-router/entry", - "pnpm": { - "overrides": { - "react-native": "0.79.6", - "react": "19.0.0" - } - }, "scripts": { "start": "expo start", "ios": "expo run:ios", @@ -29,7 +23,8 @@ "expo-linking": "~7.1.0", "expo-router": "~5.1.10", "expo-status-bar": "~2.2.0", - "react": "19.0.0", + "metro": "0.82.5", + "react": "^19.2.3", "react-native": "0.79.6", "react-native-safe-area-context": "5.4.0", "react-native-screens": "~4.11.1", @@ -37,12 +32,12 @@ }, "devDependencies": { "@babel/core": "^7.26.0", - "@types/cors": "^2.8.17", + "@types/cors": "^2.8.19", "@types/express": "^5.0.0", - "@types/react": "~19.0.10", + "@types/react": "^19.2.7", "cors": "^2.8.5", "express": "^5.0.1", - "tsx": "^4.19.0", - "typescript": "~5.8.3" + "tsx": "^4.21.0", + "typescript": "^5.9.2" } } diff --git a/examples/react/todo/package.json b/examples/react/todo/package.json index bd77e9b33..4ffbc2ca3 100644 --- a/examples/react/todo/package.json +++ b/examples/react/todo/package.json @@ -13,7 +13,7 @@ "cors": "^2.8.5", "drizzle-orm": "^0.45.1", "drizzle-zod": "^0.8.3", - "express": "^4.22.1", + "express": "^5.0.1", "postgres": "^3.4.7", "react": "^19.2.3", "react-dom": "^19.2.3", @@ -26,7 +26,7 @@ "@eslint/js": "^9.39.2", "@tailwindcss/vite": "^4.1.18", "@types/cors": "^2.8.19", - "@types/express": "^4.17.25", + "@types/express": "^5.0.0", "@types/node": "^24.6.2", "@types/pg": "^8.16.0", "@types/react": "^19.2.7", diff --git a/examples/solid/todo/package.json b/examples/solid/todo/package.json index 77cb6ef7f..b87211582 100644 --- a/examples/solid/todo/package.json +++ b/examples/solid/todo/package.json @@ -13,7 +13,7 @@ "cors": "^2.8.5", "drizzle-orm": "^0.45.1", "drizzle-zod": "^0.8.3", - "express": "^4.22.1", + "express": "^5.0.1", "postgres": "^3.4.7", "solid-js": "^1.9.10", "tailwindcss": "^4.1.18", @@ -24,7 +24,7 @@ "@eslint/js": "^9.39.2", "@tailwindcss/vite": "^4.1.18", "@types/cors": "^2.8.19", - "@types/express": "^4.17.25", + "@types/express": "^5.0.0", "@types/node": "^24.6.2", "@types/pg": "^8.16.0", "@typescript-eslint/eslint-plugin": "^8.51.0", diff --git a/package.json b/package.json index d6750fa0e..cead7ae34 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,11 @@ }, "packageManager": "pnpm@10.27.0", "type": "module", + "pnpm": { + "overrides": { + "metro": "0.82.5" + } + }, "scripts": { "build": "pnpm --filter \"./packages/**\" build", "build:minified": "pnpm --filter \"./packages/**\" build:minified", diff --git a/packages/offline-transactions/package.json b/packages/offline-transactions/package.json index 3d2abf3d8..fd3086c62 100644 --- a/packages/offline-transactions/package.json +++ b/packages/offline-transactions/package.json @@ -73,7 +73,7 @@ } }, "devDependencies": { - "@react-native-community/netinfo": "^11.4.1", + "@react-native-community/netinfo": "11.4.1", "@types/node": "^24.6.2", "eslint": "^9.39.2", "react-native": "^0.83.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0af20f9b9..736f51c60 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + metro: 0.82.5 + importers: .: @@ -194,13 +197,13 @@ importers: dependencies: '@expo/metro-runtime': specifier: ~5.0.5 - version: 5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + version: 5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)) '@react-native-async-storage/async-storage': specifier: 2.1.2 - version: 2.1.2(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + version: 2.1.2(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)) '@react-native-community/netinfo': specifier: 11.4.1 - version: 11.4.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + version: 11.4.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)) '@tanstack/offline-transactions': specifier: workspace:* version: link:../../../packages/offline-transactions @@ -212,34 +215,37 @@ importers: version: link:../../../packages/react-db '@tanstack/react-query': specifier: ^5.90.16 - version: 5.90.16(react@19.0.0) + version: 5.90.16(react@19.2.3) expo: specifier: ~53.0.0 - version: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + version: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) expo-constants: specifier: ~17.1.0 - version: 17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + version: 17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)) expo-linking: specifier: ~7.1.0 - version: 7.1.7(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + version: 7.1.7(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) expo-router: specifier: ~5.1.10 - version: 5.1.10(uoxodvmysyuykgknmjs5xsiuxa) + version: 5.1.10(j5wvl2emqw3bliva7npj4ca4f4) expo-status-bar: specifier: ~2.2.0 - version: 2.2.3(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + version: 2.2.3(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + metro: + specifier: 0.82.5 + version: 0.82.5 react: - specifier: 19.0.0 - version: 19.0.0 + specifier: ^19.2.3 + version: 19.2.3 react-native: specifier: 0.79.6 - version: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + version: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) react-native-safe-area-context: specifier: 5.4.0 - version: 5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + version: 5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) react-native-screens: specifier: ~4.11.1 - version: 4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + version: 4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) zod: specifier: ^3.25.76 version: 3.25.76 @@ -248,14 +254,14 @@ importers: specifier: ^7.26.0 version: 7.28.5 '@types/cors': - specifier: ^2.8.17 + specifier: ^2.8.19 version: 2.8.19 '@types/express': specifier: ^5.0.0 version: 5.0.5 '@types/react': - specifier: ~19.0.10 - version: 19.0.14 + specifier: ^19.2.7 + version: 19.2.7 cors: specifier: ^2.8.5 version: 2.8.5 @@ -263,11 +269,13 @@ importers: specifier: ^5.0.1 version: 5.1.0 tsx: - specifier: ^4.19.0 + specifier: ^4.21.0 version: 4.21.0 typescript: - specifier: ~5.8.3 - version: 5.8.3 + specifier: ^5.9.2 + version: 5.9.3 + + examples/react/linearlarge: {} examples/react/offline-transactions: dependencies: @@ -509,6 +517,8 @@ importers: specifier: ^5.1.0 version: 5.1.0 + examples/react/saas-large: {} + examples/react/todo: dependencies: '@tanstack/electric-db-collection': @@ -542,8 +552,8 @@ importers: specifier: ^0.8.3 version: 0.8.3(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.1.1)(kysely@0.28.8)(pg@8.16.3)(postgres@3.4.7))(zod@4.1.13) express: - specifier: ^4.22.1 - version: 4.22.1 + specifier: ^5.0.1 + version: 5.1.0 postgres: specifier: ^3.4.7 version: 3.4.7 @@ -576,8 +586,8 @@ importers: specifier: ^2.8.19 version: 2.8.19 '@types/express': - specifier: ^4.17.25 - version: 4.17.25 + specifier: ^5.0.0 + version: 5.0.5 '@types/node': specifier: ^24.6.2 version: 24.7.0 @@ -663,8 +673,8 @@ importers: specifier: ^0.8.3 version: 0.8.3(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.1.1)(kysely@0.28.8)(pg@8.16.3)(postgres@3.4.7))(zod@4.1.13) express: - specifier: ^4.22.1 - version: 4.22.1 + specifier: ^5.0.1 + version: 5.1.0 postgres: specifier: ^3.4.7 version: 3.4.7 @@ -691,8 +701,8 @@ importers: specifier: ^2.8.19 version: 2.8.19 '@types/express': - specifier: ^4.17.25 - version: 4.17.25 + specifier: ^5.0.0 + version: 5.0.5 '@types/node': specifier: ^24.6.2 version: 24.7.0 @@ -889,7 +899,7 @@ importers: version: link:../db devDependencies: '@react-native-community/netinfo': - specifier: ^11.4.1 + specifier: 11.4.1 version: 11.4.1(react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)) '@types/node': specifier: ^24.6.2 @@ -4919,15 +4929,9 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/express-serve-static-core@4.19.6': - resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} - '@types/express-serve-static-core@5.0.7': resolution: {integrity: sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==} - '@types/express@4.17.25': - resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} - '@types/express@5.0.5': resolution: {integrity: sha512-LuIQOcb6UmnF7C1PCFmEU1u2hmiHL43fgFQX67sN3H4Z+0Yk0Neo++mFsBjhOAuLzvlQeqAAkeDOZrJs9rzumQ==} @@ -4984,9 +4988,6 @@ packages: peerDependencies: '@types/react': ^19.2.0 - '@types/react@19.0.14': - resolution: {integrity: sha512-ixLZ7zG7j1fM0DijL9hDArwhwcCb4vqmePgwtV0GfnkHRSCUEv4LvzarcTdhoqgyMznUx/EhoTUv31CKZzkQlw==} - '@types/react@19.2.7': resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==} @@ -5507,9 +5508,6 @@ packages: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} @@ -6033,10 +6031,6 @@ packages: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - content-disposition@1.0.0: resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} engines: {node: '>= 0.6'} @@ -6063,9 +6057,6 @@ packages: cookie-es@2.0.0: resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==} - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - cookie-signature@1.2.2: resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} engines: {node: '>=6.6.0'} @@ -6911,10 +6902,6 @@ packages: peerDependencies: express: '>= 4.11' - express@4.22.1: - resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} - engines: {node: '>= 0.10.0'} - express@5.1.0: resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} engines: {node: '>= 18'} @@ -6997,10 +6984,6 @@ packages: resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} engines: {node: '>= 0.8'} - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - finalhandler@2.1.0: resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} engines: {node: '>= 0.8'} @@ -8261,9 +8244,6 @@ packages: resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} engines: {node: '>=12.13'} - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - merge-descriptors@2.0.0: resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} engines: {node: '>=18'} @@ -8279,26 +8259,14 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - metro-babel-transformer@0.82.5: resolution: {integrity: sha512-W/scFDnwJXSccJYnOFdGiYr9srhbHPdxX9TvvACOFsIXdLilh3XuxQl/wXW6jEJfgIb0jTvoTlwwrqvuwymr6Q==} engines: {node: '>=18.18'} - metro-babel-transformer@0.83.3: - resolution: {integrity: sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==} - engines: {node: '>=20.19.4'} - metro-cache-key@0.82.5: resolution: {integrity: sha512-qpVmPbDJuRLrT4kcGlUouyqLGssJnbTllVtvIgXfR7ZuzMKf0mGS+8WzcqzNK8+kCyakombQWR0uDd8qhWGJcA==} engines: {node: '>=18.18'} - metro-cache-key@0.83.3: - resolution: {integrity: sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==} - engines: {node: '>=20.19.4'} - metro-cache@0.82.5: resolution: {integrity: sha512-AwHV9607xZpedu1NQcjUkua8v7HfOTKfftl6Vc9OGr/jbpiJX6Gpy8E/V9jo/U9UuVYX2PqSUcVNZmu+LTm71Q==} engines: {node: '>=18.18'} @@ -8327,18 +8295,10 @@ packages: resolution: {integrity: sha512-vpMDxkGIB+MTN8Af5hvSAanc6zXQipsAUO+XUx3PCQieKUfLwdoa8qaZ1WAQYRpaU+CJ8vhBcxtzzo3d9IsCIQ==} engines: {node: '>=18.18'} - metro-file-map@0.83.3: - resolution: {integrity: sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==} - engines: {node: '>=20.19.4'} - metro-minify-terser@0.82.5: resolution: {integrity: sha512-v6Nx7A4We6PqPu/ta1oGTqJ4Usz0P7c+3XNeBxW9kp8zayS3lHUKR0sY0wsCHInxZlNAEICx791x+uXytFUuwg==} engines: {node: '>=18.18'} - metro-minify-terser@0.83.3: - resolution: {integrity: sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==} - engines: {node: '>=20.19.4'} - metro-resolver@0.82.5: resolution: {integrity: sha512-kFowLnWACt3bEsuVsaRNgwplT8U7kETnaFHaZePlARz4Fg8tZtmRDUmjaD68CGAwc0rwdwNCkWizLYpnyVcs2g==} engines: {node: '>=18.18'} @@ -8377,28 +8337,15 @@ packages: resolution: {integrity: sha512-57Bqf3rgq9nPqLrT2d9kf/2WVieTFqsQ6qWHpEng5naIUtc/Iiw9+0bfLLWSAw0GH40iJ4yMjFcFJDtNSYynMA==} engines: {node: '>=18.18'} - metro-transform-plugins@0.83.3: - resolution: {integrity: sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==} - engines: {node: '>=20.19.4'} - metro-transform-worker@0.82.5: resolution: {integrity: sha512-mx0grhAX7xe+XUQH6qoHHlWedI8fhSpDGsfga7CpkO9Lk9W+aPitNtJWNGrW8PfjKEWbT9Uz9O50dkI8bJqigw==} engines: {node: '>=18.18'} - metro-transform-worker@0.83.3: - resolution: {integrity: sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==} - engines: {node: '>=20.19.4'} - metro@0.82.5: resolution: {integrity: sha512-8oAXxL7do8QckID/WZEKaIFuQJFUTLzfVcC48ghkHhNK2RGuQq8Xvf4AVd+TUA0SZtX0q8TGNXZ/eba1ckeGCg==} engines: {node: '>=18.18'} hasBin: true - metro@0.83.3: - resolution: {integrity: sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==} - engines: {node: '>=20.19.4'} - hasBin: true - micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -8953,9 +8900,6 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - path-to-regexp@8.3.0: resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} @@ -9310,10 +9254,6 @@ packages: resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} engines: {node: '>=0.10.0'} - react@19.0.0: - resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} - engines: {node: '>=0.10.0'} - react@19.2.3: resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} engines: {node: '>=0.10.0'} @@ -10322,11 +10262,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} - engines: {node: '>=14.17'} - hasBin: true - typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -12735,9 +12670,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))': + '@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))': dependencies: - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) '@expo/osascript@2.3.8': dependencies: @@ -12793,11 +12728,11 @@ snapshots: '@expo/sudo-prompt@9.3.2': {} - '@expo/vector-icons@14.1.0(expo-font@13.3.2(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)': + '@expo/vector-icons@14.1.0(expo-font@13.3.2(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3)': dependencies: - expo-font: 13.3.2(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react@19.0.0) - react: 19.0.0 - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + expo-font: 13.3.2(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) '@expo/ws-tunnel@1.0.6': {} @@ -13985,27 +13920,27 @@ snapshots: '@publint/pack@0.1.2': {} - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.0.14)(react@19.0.0)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.7)(react@19.2.3)': dependencies: - react: 19.0.0 + react: 19.2.3 optionalDependencies: - '@types/react': 19.0.14 + '@types/react': 19.2.7 - '@radix-ui/react-slot@1.2.0(@types/react@19.0.14)(react@19.0.0)': + '@radix-ui/react-slot@1.2.0(@types/react@19.2.7)(react@19.2.3)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.14)(react@19.0.0) - react: 19.0.0 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.3) + react: 19.2.3 optionalDependencies: - '@types/react': 19.0.14 + '@types/react': 19.2.7 - '@react-native-async-storage/async-storage@2.1.2(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))': + '@react-native-async-storage/async-storage@2.1.2(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))': dependencies: merge-options: 3.0.4 - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) - '@react-native-community/netinfo@11.4.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))': + '@react-native-community/netinfo@11.4.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))': dependencies: - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) '@react-native-community/netinfo@11.4.1(react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))': dependencies: @@ -14113,7 +14048,7 @@ snapshots: '@react-native/dev-middleware': 0.83.1 debug: 4.4.3 invariant: 2.2.4 - metro: 0.83.3 + metro: 0.82.5 metro-config: 0.83.3 metro-core: 0.83.3 semver: 7.7.3 @@ -14180,14 +14115,14 @@ snapshots: '@react-native/normalize-colors@0.83.1': {} - '@react-native/virtualized-lists@0.79.6(@types/react@19.0.14)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)': + '@react-native/virtualized-lists@0.79.6(@types/react@19.2.7)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react: 19.0.0 - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + react: 19.2.3 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) optionalDependencies: - '@types/react': 19.0.14 + '@types/react': 19.2.7 '@react-native/virtualized-lists@0.83.1(@types/react@19.2.7)(react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3)': dependencies: @@ -14198,64 +14133,64 @@ snapshots: optionalDependencies: '@types/react': 19.2.7 - '@react-navigation/bottom-tabs@7.9.1(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)': + '@react-navigation/bottom-tabs@7.9.1(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3)': dependencies: - '@react-navigation/elements': 2.9.4(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - '@react-navigation/native': 7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + '@react-navigation/elements': 2.9.4(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + '@react-navigation/native': 7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) color: 4.2.3 - react: 19.0.0 - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) - react-native-safe-area-context: 5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - react-native-screens: 4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react: 19.2.3 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) + react-native-safe-area-context: 5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + react-native-screens: 4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) sf-symbols-typescript: 2.2.0 transitivePeerDependencies: - '@react-native-masked-view/masked-view' - '@react-navigation/core@7.13.7(react@19.0.0)': + '@react-navigation/core@7.13.7(react@19.2.3)': dependencies: '@react-navigation/routers': 7.5.3 escape-string-regexp: 4.0.0 fast-deep-equal: 3.1.3 nanoid: 3.3.11 query-string: 7.1.3 - react: 19.0.0 + react: 19.2.3 react-is: 19.2.3 - use-latest-callback: 0.2.6(react@19.0.0) - use-sync-external-store: 1.6.0(react@19.0.0) + use-latest-callback: 0.2.6(react@19.2.3) + use-sync-external-store: 1.6.0(react@19.2.3) - '@react-navigation/elements@2.9.4(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)': + '@react-navigation/elements@2.9.4(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3)': dependencies: - '@react-navigation/native': 7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) color: 4.2.3 - react: 19.0.0 - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) - react-native-safe-area-context: 5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - use-latest-callback: 0.2.6(react@19.0.0) - use-sync-external-store: 1.6.0(react@19.0.0) + react: 19.2.3 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) + react-native-safe-area-context: 5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + use-latest-callback: 0.2.6(react@19.2.3) + use-sync-external-store: 1.6.0(react@19.2.3) - '@react-navigation/native-stack@7.9.1(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)': + '@react-navigation/native-stack@7.9.1(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3)': dependencies: - '@react-navigation/elements': 2.9.4(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - '@react-navigation/native': 7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + '@react-navigation/elements': 2.9.4(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + '@react-navigation/native': 7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) color: 4.2.3 - react: 19.0.0 - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) - react-native-safe-area-context: 5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - react-native-screens: 4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react: 19.2.3 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) + react-native-safe-area-context: 5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + react-native-screens: 4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) sf-symbols-typescript: 2.2.0 warn-once: 0.1.1 transitivePeerDependencies: - '@react-native-masked-view/masked-view' - '@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0)': + '@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3)': dependencies: - '@react-navigation/core': 7.13.7(react@19.0.0) + '@react-navigation/core': 7.13.7(react@19.2.3) escape-string-regexp: 4.0.0 fast-deep-equal: 3.1.3 nanoid: 3.3.11 - react: 19.0.0 - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) - use-latest-callback: 0.2.6(react@19.0.0) + react: 19.2.3 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) + use-latest-callback: 0.2.6(react@19.2.3) '@react-navigation/routers@7.5.3': dependencies: @@ -14889,11 +14824,6 @@ snapshots: transitivePeerDependencies: - typescript - '@tanstack/react-query@5.90.16(react@19.0.0)': - dependencies: - '@tanstack/query-core': 5.90.16 - react: 19.0.0 - '@tanstack/react-query@5.90.16(react@19.2.3)': dependencies: '@tanstack/query-core': 5.90.16 @@ -15442,13 +15372,6 @@ snapshots: '@types/estree@1.0.8': {} - '@types/express-serve-static-core@4.19.6': - dependencies: - '@types/node': 24.7.0 - '@types/qs': 6.14.0 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.5 - '@types/express-serve-static-core@5.0.7': dependencies: '@types/node': 24.7.0 @@ -15456,13 +15379,6 @@ snapshots: '@types/range-parser': 1.2.7 '@types/send': 0.17.5 - '@types/express@4.17.25': - dependencies: - '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 4.19.6 - '@types/qs': 6.14.0 - '@types/serve-static': 1.15.8 - '@types/express@5.0.5': dependencies: '@types/body-parser': 1.19.6 @@ -15519,10 +15435,6 @@ snapshots: dependencies: '@types/react': 19.2.7 - '@types/react@19.0.14': - dependencies: - csstype: 3.2.3 - '@types/react@19.2.7': dependencies: csstype: 3.2.3 @@ -16154,8 +16066,6 @@ snapshots: call-bound: 1.0.4 is-array-buffer: 3.0.5 - array-flatten@1.1.1: {} - array-ify@1.0.0: {} array-includes@3.1.9: @@ -16829,10 +16739,6 @@ snapshots: transitivePeerDependencies: - supports-color - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 - content-disposition@1.0.0: dependencies: safe-buffer: 5.2.1 @@ -16856,8 +16762,6 @@ snapshots: cookie-es@2.0.0: {} - cookie-signature@1.0.6: {} - cookie-signature@1.2.2: {} cookie@0.7.2: {} @@ -17695,47 +17599,47 @@ snapshots: expect-type@1.2.2: {} - expo-asset@11.1.7(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + expo-asset@11.1.7(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3): dependencies: '@expo/image-utils': 0.7.6 - expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - expo-constants: 17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) - react: 19.0.0 - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + expo-constants: 17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)) + react: 19.2.3 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) transitivePeerDependencies: - supports-color - expo-constants@17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)): + expo-constants@17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)): dependencies: '@expo/config': 11.0.13 '@expo/env': 1.0.7 - expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) transitivePeerDependencies: - supports-color - expo-file-system@18.1.11(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)): + expo-file-system@18.1.11(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)): dependencies: - expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) - expo-font@13.3.2(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react@19.0.0): + expo-font@13.3.2(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react@19.2.3): dependencies: - expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) fontfaceobserver: 2.3.0 - react: 19.0.0 + react: 19.2.3 - expo-keep-awake@14.1.4(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react@19.0.0): + expo-keep-awake@14.1.4(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react@19.2.3): dependencies: - expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - react: 19.0.0 + expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + react: 19.2.3 - expo-linking@7.1.7(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + expo-linking@7.1.7(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3): dependencies: - expo-constants: 17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + expo-constants: 17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)) invariant: 2.2.4 - react: 19.0.0 - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + react: 19.2.3 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) transitivePeerDependencies: - expo - supports-color @@ -17754,24 +17658,24 @@ snapshots: dependencies: invariant: 2.2.4 - expo-router@5.1.10(uoxodvmysyuykgknmjs5xsiuxa): + expo-router@5.1.10(j5wvl2emqw3bliva7npj4ca4f4): dependencies: - '@expo/metro-runtime': 5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + '@expo/metro-runtime': 5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)) '@expo/schema-utils': 0.1.8 '@expo/server': 0.6.3 - '@radix-ui/react-slot': 1.2.0(@types/react@19.0.14)(react@19.0.0) - '@react-navigation/bottom-tabs': 7.9.1(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - '@react-navigation/native': 7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - '@react-navigation/native-stack': 7.9.1(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.2.7)(react@19.2.3) + '@react-navigation/bottom-tabs': 7.9.1(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + '@react-navigation/native': 7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + '@react-navigation/native-stack': 7.9.1(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) client-only: 0.0.1 - expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - expo-constants: 17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) - expo-linking: 7.1.7(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + expo: 53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + expo-constants: 17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)) + expo-linking: 7.1.7(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) invariant: 2.2.4 react-fast-compare: 3.2.2 - react-native-is-edge-to-edge: 1.2.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - react-native-safe-area-context: 5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - react-native-screens: 4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react-native-is-edge-to-edge: 1.2.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + react-native-safe-area-context: 5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + react-native-screens: 4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) semver: 7.6.3 server-only: 0.0.1 shallowequal: 1.1.0 @@ -17782,14 +17686,14 @@ snapshots: - react-native - supports-color - expo-status-bar@2.2.3(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + expo-status-bar@2.2.3(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3): dependencies: - react: 19.0.0 - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) - react-native-edge-to-edge: 1.6.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - react-native-is-edge-to-edge: 1.2.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react: 19.2.3 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) + react-native-edge-to-edge: 1.6.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + react-native-is-edge-to-edge: 1.2.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) - expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 '@expo/cli': 0.24.23(graphql@16.12.0) @@ -17797,21 +17701,21 @@ snapshots: '@expo/config-plugins': 10.1.2 '@expo/fingerprint': 0.13.4 '@expo/metro-config': 0.20.18 - '@expo/vector-icons': 14.1.0(expo-font@13.3.2(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + '@expo/vector-icons': 14.1.0(expo-font@13.3.2(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) babel-preset-expo: 13.2.4(@babel/core@7.28.5) - expo-asset: 11.1.7(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) - expo-constants: 17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) - expo-file-system: 18.1.11(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) - expo-font: 13.3.2(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react@19.0.0) - expo-keep-awake: 14.1.4(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0))(react@19.0.0) + expo-asset: 11.1.7(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) + expo-constants: 17.1.8(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)) + expo-file-system: 18.1.11(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)) + expo-font: 13.3.2(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react@19.2.3) + expo-keep-awake: 14.1.4(expo@53.0.25(@babel/core@7.28.5)(@expo/metro-runtime@5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)))(graphql@16.12.0)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react@19.2.3) expo-modules-autolinking: 2.1.14 expo-modules-core: 2.5.0 - react: 19.0.0 - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) - react-native-edge-to-edge: 1.6.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react: 19.2.3 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) + react-native-edge-to-edge: 1.6.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) whatwg-url-without-unicode: 8.0.0-3 optionalDependencies: - '@expo/metro-runtime': 5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0)) + '@expo/metro-runtime': 5.0.5(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)) transitivePeerDependencies: - '@babel/core' - babel-plugin-react-compiler @@ -17826,42 +17730,6 @@ snapshots: dependencies: express: 5.1.0 - express@4.22.1: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.2 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.12 - proxy-addr: 2.0.7 - qs: 6.14.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.2 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - express@5.1.0: dependencies: accepts: 2.0.0 @@ -17968,18 +17836,6 @@ snapshots: transitivePeerDependencies: - supports-color - finalhandler@1.3.1: - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - finalhandler@2.1.0: dependencies: debug: 4.4.3 @@ -19311,8 +19167,6 @@ snapshots: dependencies: is-what: 4.1.16 - merge-descriptors@1.0.3: {} - merge-descriptors@2.0.0: {} merge-options@3.0.4: @@ -19323,8 +19177,6 @@ snapshots: merge2@1.4.1: {} - methods@1.1.2: {} - metro-babel-transformer@0.82.5: dependencies: '@babel/core': 7.28.5 @@ -19334,23 +19186,10 @@ snapshots: transitivePeerDependencies: - supports-color - metro-babel-transformer@0.83.3: - dependencies: - '@babel/core': 7.28.5 - flow-enums-runtime: 0.0.6 - hermes-parser: 0.32.0 - nullthrows: 1.1.1 - transitivePeerDependencies: - - supports-color - metro-cache-key@0.82.5: dependencies: flow-enums-runtime: 0.0.6 - metro-cache-key@0.83.3: - dependencies: - flow-enums-runtime: 0.0.6 - metro-cache@0.82.5: dependencies: exponential-backoff: 3.1.2 @@ -19389,7 +19228,7 @@ snapshots: connect: 3.7.0 flow-enums-runtime: 0.0.6 jest-validate: 29.7.0 - metro: 0.83.3 + metro: 0.82.5 metro-cache: 0.83.3 metro-core: 0.83.3 metro-runtime: 0.83.3 @@ -19425,30 +19264,11 @@ snapshots: transitivePeerDependencies: - supports-color - metro-file-map@0.83.3: - dependencies: - debug: 4.4.3 - fb-watchman: 2.0.2 - flow-enums-runtime: 0.0.6 - graceful-fs: 4.2.11 - invariant: 2.2.4 - jest-worker: 29.7.0 - micromatch: 4.0.8 - nullthrows: 1.1.1 - walker: 1.0.8 - transitivePeerDependencies: - - supports-color - metro-minify-terser@0.82.5: dependencies: flow-enums-runtime: 0.0.6 terser: 5.44.0 - metro-minify-terser@0.83.3: - dependencies: - flow-enums-runtime: 0.0.6 - terser: 5.44.0 - metro-resolver@0.82.5: dependencies: flow-enums-runtime: 0.0.6 @@ -19530,17 +19350,6 @@ snapshots: transitivePeerDependencies: - supports-color - metro-transform-plugins@0.83.3: - dependencies: - '@babel/core': 7.28.5 - '@babel/generator': 7.28.6 - '@babel/template': 7.28.6 - '@babel/traverse': 7.28.6 - flow-enums-runtime: 0.0.6 - nullthrows: 1.1.1 - transitivePeerDependencies: - - supports-color - metro-transform-worker@0.82.5: dependencies: '@babel/core': 7.28.5 @@ -19561,26 +19370,6 @@ snapshots: - supports-color - utf-8-validate - metro-transform-worker@0.83.3: - dependencies: - '@babel/core': 7.28.5 - '@babel/generator': 7.28.6 - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 - flow-enums-runtime: 0.0.6 - metro: 0.83.3 - metro-babel-transformer: 0.83.3 - metro-cache: 0.83.3 - metro-cache-key: 0.83.3 - metro-minify-terser: 0.83.3 - metro-source-map: 0.83.3 - metro-transform-plugins: 0.83.3 - nullthrows: 1.1.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - metro@0.82.5: dependencies: '@babel/code-frame': 7.28.6 @@ -19628,53 +19417,6 @@ snapshots: - supports-color - utf-8-validate - metro@0.83.3: - dependencies: - '@babel/code-frame': 7.28.6 - '@babel/core': 7.28.5 - '@babel/generator': 7.28.6 - '@babel/parser': 7.28.6 - '@babel/template': 7.28.6 - '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 - accepts: 1.3.8 - chalk: 4.1.2 - ci-info: 2.0.0 - connect: 3.7.0 - debug: 4.4.3 - error-stack-parser: 2.1.4 - flow-enums-runtime: 0.0.6 - graceful-fs: 4.2.11 - hermes-parser: 0.32.0 - image-size: 1.2.1 - invariant: 2.2.4 - jest-worker: 29.7.0 - jsc-safe-url: 0.2.4 - lodash.throttle: 4.1.1 - metro-babel-transformer: 0.83.3 - metro-cache: 0.83.3 - metro-cache-key: 0.83.3 - metro-config: 0.83.3 - metro-core: 0.83.3 - metro-file-map: 0.83.3 - metro-resolver: 0.83.3 - metro-runtime: 0.83.3 - metro-source-map: 0.83.3 - metro-symbolicate: 0.83.3 - metro-transform-plugins: 0.83.3 - metro-transform-worker: 0.83.3 - mime-types: 2.1.35 - nullthrows: 1.1.1 - serialize-error: 2.1.0 - source-map: 0.5.7 - throat: 5.0.0 - ws: 7.5.10 - yargs: 17.7.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -20256,8 +19998,6 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-to-regexp@0.1.12: {} - path-to-regexp@8.3.0: {} path-type@4.0.0: {} @@ -20528,9 +20268,9 @@ snapshots: react-fast-compare@3.2.2: {} - react-freeze@1.0.4(react@19.0.0): + react-freeze@1.0.4(react@19.2.3): dependencies: - react: 19.0.0 + react: 19.2.3 react-is@16.13.1: {} @@ -20540,30 +20280,30 @@ snapshots: react-is@19.2.3: {} - react-native-edge-to-edge@1.6.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + react-native-edge-to-edge@1.6.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3): dependencies: - react: 19.0.0 - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + react: 19.2.3 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) - react-native-is-edge-to-edge@1.2.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + react-native-is-edge-to-edge@1.2.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3): dependencies: - react: 19.0.0 - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + react: 19.2.3 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) - react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3): dependencies: - react: 19.0.0 - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) + react: 19.2.3 + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) - react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0): + react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3): dependencies: - react: 19.0.0 - react-freeze: 1.0.4(react@19.0.0) - react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0) - react-native-is-edge-to-edge: 1.2.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + react: 19.2.3 + react-freeze: 1.0.4(react@19.2.3) + react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) + react-native-is-edge-to-edge: 1.2.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) warn-once: 0.1.1 - react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0): + react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3): dependencies: '@jest/create-cache-key-function': 29.7.0 '@react-native/assets-registry': 0.79.6 @@ -20572,7 +20312,7 @@ snapshots: '@react-native/gradle-plugin': 0.79.6 '@react-native/js-polyfills': 0.79.6 '@react-native/normalize-colors': 0.79.6 - '@react-native/virtualized-lists': 0.79.6(@types/react@19.0.14)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.0.14)(react@19.0.0))(react@19.0.0) + '@react-native/virtualized-lists': 0.79.6(@types/react@19.2.7)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -20592,7 +20332,7 @@ snapshots: nullthrows: 1.1.1 pretty-format: 29.7.0 promise: 8.3.0 - react: 19.0.0 + react: 19.2.3 react-devtools-core: 6.1.5 react-refresh: 0.14.2 regenerator-runtime: 0.13.11 @@ -20603,7 +20343,7 @@ snapshots: ws: 6.2.3 yargs: 17.7.2 optionalDependencies: - '@types/react': 19.0.14 + '@types/react': 19.2.7 transitivePeerDependencies: - '@babel/core' - '@react-native-community/cli' @@ -20663,8 +20403,6 @@ snapshots: react-refresh@0.18.0: {} - react@19.0.0: {} - react@19.2.3: {} read-yaml-file@1.1.0: @@ -21854,8 +21592,6 @@ snapshots: typescript@5.4.2: {} - typescript@5.8.3: {} - typescript@5.9.3: {} ua-parser-js@0.7.41: {} @@ -21951,13 +21687,9 @@ snapshots: dependencies: punycode: 2.3.1 - use-latest-callback@0.2.6(react@19.0.0): + use-latest-callback@0.2.6(react@19.2.3): dependencies: - react: 19.0.0 - - use-sync-external-store@1.6.0(react@19.0.0): - dependencies: - react: 19.0.0 + react: 19.2.3 use-sync-external-store@1.6.0(react@19.2.3): dependencies: From f232ff7ec373aa19d021646946d9a0ff8f35411a Mon Sep 17 00:00:00 2001 From: Kevin De Porre Date: Mon, 19 Jan 2026 13:54:26 +0100 Subject: [PATCH 11/11] Sherif fix package versions --- packages/offline-transactions/package.json | 2 +- pnpm-lock.yaml | 325 +-------------------- 2 files changed, 4 insertions(+), 323 deletions(-) diff --git a/packages/offline-transactions/package.json b/packages/offline-transactions/package.json index fd3086c62..5f9e45a74 100644 --- a/packages/offline-transactions/package.json +++ b/packages/offline-transactions/package.json @@ -76,7 +76,7 @@ "@react-native-community/netinfo": "11.4.1", "@types/node": "^24.6.2", "eslint": "^9.39.2", - "react-native": "^0.83.1", + "react-native": "0.79.6", "typescript": "^5.9.2", "vitest": "^3.2.4" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 736f51c60..a7b7a4ae4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -900,7 +900,7 @@ importers: devDependencies: '@react-native-community/netinfo': specifier: 11.4.1 - version: 11.4.1(react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)) + version: 11.4.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3)) '@types/node': specifier: ^24.6.2 version: 24.7.0 @@ -908,8 +908,8 @@ importers: specifier: ^9.39.2 version: 9.39.2(jiti@2.6.1) react-native: - specifier: ^0.83.1 - version: 0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) + specifier: 0.79.6 + version: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) typescript: specifier: ^5.9.2 version: 5.9.3 @@ -3878,10 +3878,6 @@ packages: resolution: {integrity: sha512-UVSP1224PWg0X+mRlZNftV5xQwZGfawhivuW8fGgxNK9MS/U84xZ+16lkqcPh1ank6MOt239lIWHQ1S33CHgqA==} engines: {node: '>=18'} - '@react-native/assets-registry@0.83.1': - resolution: {integrity: sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==} - engines: {node: '>= 20.19.4'} - '@react-native/babel-plugin-codegen@0.79.6': resolution: {integrity: sha512-CS5OrgcMPixOyUJ/Sk/HSsKsKgyKT5P7y3CojimOQzWqRZBmoQfxdST4ugj7n1H+ebM2IKqbgovApFbqXsoX0g==} engines: {node: '>=18'} @@ -3898,12 +3894,6 @@ packages: peerDependencies: '@babel/core': '*' - '@react-native/codegen@0.83.1': - resolution: {integrity: sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==} - engines: {node: '>= 20.19.4'} - peerDependencies: - '@babel/core': '*' - '@react-native/community-cli-plugin@0.79.6': resolution: {integrity: sha512-ZHVst9vByGsegeaddkD2YbZ6NvYb4n3pD9H7Pit94u+NlByq2uBJghoOjT6EKqg+UVl8tLRdi88cU2pDPwdHqA==} engines: {node: '>=18'} @@ -3913,60 +3903,25 @@ packages: '@react-native-community/cli': optional: true - '@react-native/community-cli-plugin@0.83.1': - resolution: {integrity: sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==} - engines: {node: '>= 20.19.4'} - peerDependencies: - '@react-native-community/cli': '*' - '@react-native/metro-config': '*' - peerDependenciesMeta: - '@react-native-community/cli': - optional: true - '@react-native/metro-config': - optional: true - '@react-native/debugger-frontend@0.79.6': resolution: {integrity: sha512-lIK/KkaH7ueM22bLO0YNaQwZbT/oeqhaghOvmZacaNVbJR1Cdh/XAqjT8FgCS+7PUnbxA8B55NYNKGZG3O2pYw==} engines: {node: '>=18'} - '@react-native/debugger-frontend@0.83.1': - resolution: {integrity: sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==} - engines: {node: '>= 20.19.4'} - - '@react-native/debugger-shell@0.83.1': - resolution: {integrity: sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==} - engines: {node: '>= 20.19.4'} - '@react-native/dev-middleware@0.79.6': resolution: {integrity: sha512-BK3GZBa9c7XSNR27EDRtxrgyyA3/mf1j3/y+mPk7Ac0Myu85YNrXnC9g3mL5Ytwo0g58TKrAIgs1fF2Q5Mn6mQ==} engines: {node: '>=18'} - '@react-native/dev-middleware@0.83.1': - resolution: {integrity: sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==} - engines: {node: '>= 20.19.4'} - '@react-native/gradle-plugin@0.79.6': resolution: {integrity: sha512-C5odetI6py3CSELeZEVz+i00M+OJuFZXYnjVD4JyvpLn462GesHRh+Se8mSkU5QSaz9cnpMnyFLJAx05dokWbA==} engines: {node: '>=18'} - '@react-native/gradle-plugin@0.83.1': - resolution: {integrity: sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==} - engines: {node: '>= 20.19.4'} - '@react-native/js-polyfills@0.79.6': resolution: {integrity: sha512-6wOaBh1namYj9JlCNgX2ILeGUIwc6OP6MWe3Y5jge7Xz9fVpRqWQk88Q5Y9VrAtTMTcxoX3CvhrfRr3tGtSfQw==} engines: {node: '>=18'} - '@react-native/js-polyfills@0.83.1': - resolution: {integrity: sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==} - engines: {node: '>= 20.19.4'} - '@react-native/normalize-colors@0.79.6': resolution: {integrity: sha512-0v2/ruY7eeKun4BeKu+GcfO+SHBdl0LJn4ZFzTzjHdWES0Cn+ONqKljYaIv8p9MV2Hx/kcdEvbY4lWI34jC/mQ==} - '@react-native/normalize-colors@0.83.1': - resolution: {integrity: sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==} - '@react-native/virtualized-lists@0.79.6': resolution: {integrity: sha512-khA/Hrbb+rB68YUHrLubfLgMOD9up0glJhw25UE3Kntj32YDyuO0Tqc81ryNTcCekFKJ8XrAaEjcfPg81zBGPw==} engines: {node: '>=18'} @@ -3978,17 +3933,6 @@ packages: '@types/react': optional: true - '@react-native/virtualized-lists@0.83.1': - resolution: {integrity: sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==} - engines: {node: '>= 20.19.4'} - peerDependencies: - '@types/react': ^19.2.0 - react: '*' - react-native: '*' - peerDependenciesMeta: - '@types/react': - optional: true - '@react-navigation/bottom-tabs@7.9.1': resolution: {integrity: sha512-1MHn1b5tWFa8t8LXUvaNtlg5WGVXcNTsiV00ygQDBFDusMcu0ZPOU1exqELZwHf6kDntmTQE96/NRM+Cd2QR+A==} peerDependencies: @@ -5621,9 +5565,6 @@ packages: babel-plugin-syntax-hermes-parser@0.25.1: resolution: {integrity: sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==} - babel-plugin-syntax-hermes-parser@0.32.0: - resolution: {integrity: sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==} - babel-plugin-transform-flow-enums@0.0.2: resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} @@ -6945,11 +6886,6 @@ packages: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} - fb-dotslash@0.5.8: - resolution: {integrity: sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==} - engines: {node: '>=20'} - hasBin: true - fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} @@ -7260,27 +7196,18 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - hermes-compiler@0.14.0: - resolution: {integrity: sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==} - hermes-estree@0.25.1: resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} hermes-estree@0.29.1: resolution: {integrity: sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==} - hermes-estree@0.32.0: - resolution: {integrity: sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==} - hermes-parser@0.25.1: resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} hermes-parser@0.29.1: resolution: {integrity: sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==} - hermes-parser@0.32.0: - resolution: {integrity: sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==} - hosted-git-info@7.0.2: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} @@ -8271,26 +8198,14 @@ packages: resolution: {integrity: sha512-AwHV9607xZpedu1NQcjUkua8v7HfOTKfftl6Vc9OGr/jbpiJX6Gpy8E/V9jo/U9UuVYX2PqSUcVNZmu+LTm71Q==} engines: {node: '>=18.18'} - metro-cache@0.83.3: - resolution: {integrity: sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==} - engines: {node: '>=20.19.4'} - metro-config@0.82.5: resolution: {integrity: sha512-/r83VqE55l0WsBf8IhNmc/3z71y2zIPe5kRSuqA5tY/SL/ULzlHUJEMd1szztd0G45JozLwjvrhAzhDPJ/Qo/g==} engines: {node: '>=18.18'} - metro-config@0.83.3: - resolution: {integrity: sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==} - engines: {node: '>=20.19.4'} - metro-core@0.82.5: resolution: {integrity: sha512-OJL18VbSw2RgtBm1f2P3J5kb892LCVJqMvslXxuxjAPex8OH7Eb8RBfgEo7VZSjgb/LOf4jhC4UFk5l5tAOHHA==} engines: {node: '>=18.18'} - metro-core@0.83.3: - resolution: {integrity: sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==} - engines: {node: '>=20.19.4'} - metro-file-map@0.82.5: resolution: {integrity: sha512-vpMDxkGIB+MTN8Af5hvSAanc6zXQipsAUO+XUx3PCQieKUfLwdoa8qaZ1WAQYRpaU+CJ8vhBcxtzzo3d9IsCIQ==} engines: {node: '>=18.18'} @@ -8303,36 +8218,19 @@ packages: resolution: {integrity: sha512-kFowLnWACt3bEsuVsaRNgwplT8U7kETnaFHaZePlARz4Fg8tZtmRDUmjaD68CGAwc0rwdwNCkWizLYpnyVcs2g==} engines: {node: '>=18.18'} - metro-resolver@0.83.3: - resolution: {integrity: sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==} - engines: {node: '>=20.19.4'} - metro-runtime@0.82.5: resolution: {integrity: sha512-rQZDoCUf7k4Broyw3Ixxlq5ieIPiR1ULONdpcYpbJQ6yQ5GGEyYjtkztGD+OhHlw81LCR2SUAoPvtTus2WDK5g==} engines: {node: '>=18.18'} - metro-runtime@0.83.3: - resolution: {integrity: sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==} - engines: {node: '>=20.19.4'} - metro-source-map@0.82.5: resolution: {integrity: sha512-wH+awTOQJVkbhn2SKyaw+0cd+RVSCZ3sHVgyqJFQXIee/yLs3dZqKjjeKKhhVeudgjXo7aE/vSu/zVfcQEcUfw==} engines: {node: '>=18.18'} - metro-source-map@0.83.3: - resolution: {integrity: sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==} - engines: {node: '>=20.19.4'} - metro-symbolicate@0.82.5: resolution: {integrity: sha512-1u+07gzrvYDJ/oNXuOG1EXSvXZka/0JSW1q2EYBWerVKMOhvv9JzDGyzmuV7hHbF2Hg3T3S2uiM36sLz1qKsiw==} engines: {node: '>=18.18'} hasBin: true - metro-symbolicate@0.83.3: - resolution: {integrity: sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==} - engines: {node: '>=20.19.4'} - hasBin: true - metro-transform-plugins@0.82.5: resolution: {integrity: sha512-57Bqf3rgq9nPqLrT2d9kf/2WVieTFqsQ6qWHpEng5naIUtc/Iiw9+0bfLLWSAw0GH40iJ4yMjFcFJDtNSYynMA==} engines: {node: '>=18.18'} @@ -8671,10 +8569,6 @@ packages: resolution: {integrity: sha512-QyQQ6e66f+Ut/qUVjEce0E/wux5nAGLXYZDn1jr15JWstHsCH3l6VVrg8NKDptW9NEiBXKOJeGF/ydxeSDF3IQ==} engines: {node: '>=18.18'} - ob1@0.83.3: - resolution: {integrity: sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==} - engines: {node: '>=20.19.4'} - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -9235,17 +9129,6 @@ packages: '@types/react': optional: true - react-native@0.83.1: - resolution: {integrity: sha512-mL1q5HPq5cWseVhWRLl+Fwvi5z1UO+3vGOpjr+sHFwcUletPRZ5Kv+d0tUfqHmvi73/53NjlQqX1Pyn4GguUfA==} - engines: {node: '>= 20.19.4'} - hasBin: true - peerDependencies: - '@types/react': ^19.1.1 - react: ^19.2.0 - peerDependenciesMeta: - '@types/react': - optional: true - react-refresh@0.14.2: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} @@ -13942,14 +13825,8 @@ snapshots: dependencies: react-native: 0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) - '@react-native-community/netinfo@11.4.1(react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))': - dependencies: - react-native: 0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) - '@react-native/assets-registry@0.79.6': {} - '@react-native/assets-registry@0.83.1': {} - '@react-native/babel-plugin-codegen@0.79.6(@babel/core@7.28.5)': dependencies: '@babel/traverse': 7.28.5 @@ -14018,16 +13895,6 @@ snapshots: nullthrows: 1.1.1 yargs: 17.7.2 - '@react-native/codegen@0.83.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/parser': 7.28.6 - glob: 7.2.3 - hermes-parser: 0.32.0 - invariant: 2.2.4 - nullthrows: 1.1.1 - yargs: 17.7.2 - '@react-native/community-cli-plugin@0.79.6': dependencies: '@react-native/dev-middleware': 0.79.6 @@ -14043,29 +13910,8 @@ snapshots: - supports-color - utf-8-validate - '@react-native/community-cli-plugin@0.83.1': - dependencies: - '@react-native/dev-middleware': 0.83.1 - debug: 4.4.3 - invariant: 2.2.4 - metro: 0.82.5 - metro-config: 0.83.3 - metro-core: 0.83.3 - semver: 7.7.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - '@react-native/debugger-frontend@0.79.6': {} - '@react-native/debugger-frontend@0.83.1': {} - - '@react-native/debugger-shell@0.83.1': - dependencies: - cross-spawn: 7.0.6 - fb-dotslash: 0.5.8 - '@react-native/dev-middleware@0.79.6': dependencies: '@isaacs/ttlcache': 1.4.1 @@ -14084,37 +13930,12 @@ snapshots: - supports-color - utf-8-validate - '@react-native/dev-middleware@0.83.1': - dependencies: - '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.83.1 - '@react-native/debugger-shell': 0.83.1 - chrome-launcher: 0.15.2 - chromium-edge-launcher: 0.2.0 - connect: 3.7.0 - debug: 4.4.3 - invariant: 2.2.4 - nullthrows: 1.1.1 - open: 7.4.2 - serve-static: 1.16.2 - ws: 7.5.10 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - '@react-native/gradle-plugin@0.79.6': {} - '@react-native/gradle-plugin@0.83.1': {} - '@react-native/js-polyfills@0.79.6': {} - '@react-native/js-polyfills@0.83.1': {} - '@react-native/normalize-colors@0.79.6': {} - '@react-native/normalize-colors@0.83.1': {} - '@react-native/virtualized-lists@0.79.6(@types/react@19.2.7)(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3)': dependencies: invariant: 2.2.4 @@ -14124,15 +13945,6 @@ snapshots: optionalDependencies: '@types/react': 19.2.7 - '@react-native/virtualized-lists@0.83.1(@types/react@19.2.7)(react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3)': - dependencies: - invariant: 2.2.4 - nullthrows: 1.1.1 - react: 19.2.3 - react-native: 0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3) - optionalDependencies: - '@types/react': 19.2.7 - '@react-navigation/bottom-tabs@7.9.1(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native-screens@4.11.1(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3)': dependencies: '@react-navigation/elements': 2.9.4(@react-navigation/native@7.1.27(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native-safe-area-context@5.4.0(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3))(react-native@0.79.6(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) @@ -16233,10 +16045,6 @@ snapshots: dependencies: hermes-parser: 0.25.1 - babel-plugin-syntax-hermes-parser@0.32.0: - dependencies: - hermes-parser: 0.32.0 - babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.28.5): dependencies: '@babel/plugin-syntax-flow': 7.28.6(@babel/core@7.28.5) @@ -17798,8 +17606,6 @@ snapshots: dependencies: websocket-driver: 0.7.4 - fb-dotslash@0.5.8: {} - fb-watchman@2.0.2: dependencies: bser: 2.1.1 @@ -18134,14 +17940,10 @@ snapshots: he@1.2.0: {} - hermes-compiler@0.14.0: {} - hermes-estree@0.25.1: {} hermes-estree@0.29.1: {} - hermes-estree@0.32.0: {} - hermes-parser@0.25.1: dependencies: hermes-estree: 0.25.1 @@ -18150,10 +17952,6 @@ snapshots: dependencies: hermes-estree: 0.29.1 - hermes-parser@0.32.0: - dependencies: - hermes-estree: 0.32.0 - hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 @@ -19199,15 +18997,6 @@ snapshots: transitivePeerDependencies: - supports-color - metro-cache@0.83.3: - dependencies: - exponential-backoff: 3.1.2 - flow-enums-runtime: 0.0.6 - https-proxy-agent: 7.0.6 - metro-core: 0.83.3 - transitivePeerDependencies: - - supports-color - metro-config@0.82.5: dependencies: connect: 3.7.0 @@ -19223,33 +19012,12 @@ snapshots: - supports-color - utf-8-validate - metro-config@0.83.3: - dependencies: - connect: 3.7.0 - flow-enums-runtime: 0.0.6 - jest-validate: 29.7.0 - metro: 0.82.5 - metro-cache: 0.83.3 - metro-core: 0.83.3 - metro-runtime: 0.83.3 - yaml: 2.8.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - metro-core@0.82.5: dependencies: flow-enums-runtime: 0.0.6 lodash.throttle: 4.1.1 metro-resolver: 0.82.5 - metro-core@0.83.3: - dependencies: - flow-enums-runtime: 0.0.6 - lodash.throttle: 4.1.1 - metro-resolver: 0.83.3 - metro-file-map@0.82.5: dependencies: debug: 4.4.3 @@ -19273,20 +19041,11 @@ snapshots: dependencies: flow-enums-runtime: 0.0.6 - metro-resolver@0.83.3: - dependencies: - flow-enums-runtime: 0.0.6 - metro-runtime@0.82.5: dependencies: '@babel/runtime': 7.28.4 flow-enums-runtime: 0.0.6 - metro-runtime@0.83.3: - dependencies: - '@babel/runtime': 7.28.4 - flow-enums-runtime: 0.0.6 - metro-source-map@0.82.5: dependencies: '@babel/traverse': 7.28.6 @@ -19302,21 +19061,6 @@ snapshots: transitivePeerDependencies: - supports-color - metro-source-map@0.83.3: - dependencies: - '@babel/traverse': 7.28.6 - '@babel/traverse--for-generate-function-map': '@babel/traverse@7.28.6' - '@babel/types': 7.28.6 - flow-enums-runtime: 0.0.6 - invariant: 2.2.4 - metro-symbolicate: 0.83.3 - nullthrows: 1.1.1 - ob1: 0.83.3 - source-map: 0.5.7 - vlq: 1.0.1 - transitivePeerDependencies: - - supports-color - metro-symbolicate@0.82.5: dependencies: flow-enums-runtime: 0.0.6 @@ -19328,17 +19072,6 @@ snapshots: transitivePeerDependencies: - supports-color - metro-symbolicate@0.83.3: - dependencies: - flow-enums-runtime: 0.0.6 - invariant: 2.2.4 - metro-source-map: 0.83.3 - nullthrows: 1.1.1 - source-map: 0.5.7 - vlq: 1.0.1 - transitivePeerDependencies: - - supports-color - metro-transform-plugins@0.82.5: dependencies: '@babel/core': 7.28.5 @@ -19718,10 +19451,6 @@ snapshots: dependencies: flow-enums-runtime: 0.0.6 - ob1@0.83.3: - dependencies: - flow-enums-runtime: 0.0.6 - object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -20351,54 +20080,6 @@ snapshots: - supports-color - utf-8-validate - react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3): - dependencies: - '@jest/create-cache-key-function': 29.7.0 - '@react-native/assets-registry': 0.83.1 - '@react-native/codegen': 0.83.1(@babel/core@7.28.5) - '@react-native/community-cli-plugin': 0.83.1 - '@react-native/gradle-plugin': 0.83.1 - '@react-native/js-polyfills': 0.83.1 - '@react-native/normalize-colors': 0.83.1 - '@react-native/virtualized-lists': 0.83.1(@types/react@19.2.7)(react-native@0.83.1(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.2.3))(react@19.2.3) - abort-controller: 3.0.0 - anser: 1.4.10 - ansi-regex: 5.0.1 - babel-jest: 29.7.0(@babel/core@7.28.5) - babel-plugin-syntax-hermes-parser: 0.32.0 - base64-js: 1.5.1 - commander: 12.1.0 - flow-enums-runtime: 0.0.6 - glob: 7.2.3 - hermes-compiler: 0.14.0 - invariant: 2.2.4 - jest-environment-node: 29.7.0 - memoize-one: 5.2.1 - metro-runtime: 0.83.3 - metro-source-map: 0.83.3 - nullthrows: 1.1.1 - pretty-format: 29.7.0 - promise: 8.3.0 - react: 19.2.3 - react-devtools-core: 6.1.5 - react-refresh: 0.14.2 - regenerator-runtime: 0.13.11 - scheduler: 0.27.0 - semver: 7.7.3 - stacktrace-parser: 0.1.11 - whatwg-fetch: 3.6.20 - ws: 7.5.10 - yargs: 17.7.2 - optionalDependencies: - '@types/react': 19.2.7 - transitivePeerDependencies: - - '@babel/core' - - '@react-native-community/cli' - - '@react-native/metro-config' - - bufferutil - - supports-color - - utf-8-validate - react-refresh@0.14.2: {} react-refresh@0.18.0: {}