From 065aba686de948212f732fdb672412728281e68c Mon Sep 17 00:00:00 2001 From: stevensJourney <51082125+stevensJourney@users.noreply.github.com> Date: Mon, 27 Jan 2025 18:56:03 +0200 Subject: [PATCH] feat: Configurable Web VFS (added OPFS) (#418) Co-authored-by: Christiaan Landman Co-authored-by: Mughees Khan --- .changeset/kind-suns-float.md | 5 + .../src/app/powersync.service.ts | 6 +- demos/react-supabase-todolist/src/index.html | 1 + demos/react-supabase-todolist/vite.config.mts | 2 +- packages/web/README.md | 33 + packages/web/package.json | 2 +- packages/web/src/db/PowerSyncDatabase.ts | 43 +- .../db/adapters/AbstractWebSQLOpenFactory.ts | 3 + .../db/adapters/AsyncDatabaseConnection.ts | 31 + .../db/adapters/LockedAsyncDatabaseAdapter.ts | 297 +++ packages/web/src/db/adapters/WebDBAdapter.ts | 20 + .../WorkerWrappedAsyncDatabaseConnection.ts | 77 + .../adapters/wa-sqlite/WASQLiteConnection.ts | 419 +++ .../adapters/wa-sqlite/WASQLiteDBAdapter.ts | 306 +-- .../adapters/wa-sqlite/WASQLiteOpenFactory.ts | 110 +- packages/web/src/db/adapters/web-sql-flags.ts | 19 + .../SharedWebStreamingSyncImplementation.ts | 46 +- .../db/sync/WebStreamingSyncImplementation.ts | 8 +- packages/web/src/index.ts | 15 +- packages/web/src/shared/open-db.ts | 231 -- packages/web/src/shared/types.ts | 28 - .../web/src/worker/db/WASQLiteDB.worker.ts | 68 +- .../web/src/worker/db/open-worker-database.ts | 18 +- .../sync/AbstractSharedSyncClientProvider.ts | 1 + .../worker/sync/SharedSyncImplementation.ts | 73 +- packages/web/tests/multiple_instances.test.ts | 22 +- packages/web/tsconfig.json | 3 +- packages/web/vitest.config.ts | 10 +- pnpm-lock.yaml | 2320 +++++++++++++---- 29 files changed, 3038 insertions(+), 1179 deletions(-) create mode 100644 .changeset/kind-suns-float.md create mode 100644 packages/web/src/db/adapters/AsyncDatabaseConnection.ts create mode 100644 packages/web/src/db/adapters/LockedAsyncDatabaseAdapter.ts create mode 100644 packages/web/src/db/adapters/WebDBAdapter.ts create mode 100644 packages/web/src/db/adapters/WorkerWrappedAsyncDatabaseConnection.ts create mode 100644 packages/web/src/db/adapters/wa-sqlite/WASQLiteConnection.ts delete mode 100644 packages/web/src/shared/open-db.ts delete mode 100644 packages/web/src/shared/types.ts diff --git a/.changeset/kind-suns-float.md b/.changeset/kind-suns-float.md new file mode 100644 index 000000000..18ef47d9a --- /dev/null +++ b/.changeset/kind-suns-float.md @@ -0,0 +1,5 @@ +--- +'@powersync/web': minor +--- + +Added support for OPFS virtual filesystem. diff --git a/demos/angular-supabase-todolist/src/app/powersync.service.ts b/demos/angular-supabase-todolist/src/app/powersync.service.ts index f5fb2bc08..018579f72 100644 --- a/demos/angular-supabase-todolist/src/app/powersync.service.ts +++ b/demos/angular-supabase-todolist/src/app/powersync.service.ts @@ -9,7 +9,8 @@ import { PowerSyncDatabase, Schema, Table, - WASQLiteOpenFactory + WASQLiteOpenFactory, + WASQLiteVFS } from '@powersync/web'; export interface ListRecord { @@ -66,7 +67,7 @@ export class PowerSyncService { constructor() { const factory = new WASQLiteOpenFactory({ dbFilename: 'test.db', - + vfs: WASQLiteVFS.OPFSCoopSyncVFS, // Specify the path to the worker script worker: 'assets/@powersync/worker/WASQLiteDB.umd.js' }); @@ -74,6 +75,7 @@ export class PowerSyncService { this.db = new PowerSyncDatabase({ schema: AppSchema, database: factory, + sync: { // Specify the path to the worker script worker: 'assets/@powersync/worker/SharedSyncImplementation.umd.js' diff --git a/demos/react-supabase-todolist/src/index.html b/demos/react-supabase-todolist/src/index.html index de7a97c29..d719dfd50 100644 --- a/demos/react-supabase-todolist/src/index.html +++ b/demos/react-supabase-todolist/src/index.html @@ -1,6 +1,7 @@ + diff --git a/demos/react-supabase-todolist/vite.config.mts b/demos/react-supabase-todolist/vite.config.mts index 543956b6e..797616c11 100644 --- a/demos/react-supabase-todolist/vite.config.mts +++ b/demos/react-supabase-todolist/vite.config.mts @@ -25,7 +25,7 @@ export default defineConfig({ // Don't optimize these packages as they contain web workers and WASM files. // https://github.com/vitejs/vite/issues/11672#issuecomment-1415820673 exclude: ['@journeyapps/wa-sqlite', '@powersync/web'], - include: [], + include: [] // include: ['@powersync/web > js-logger'], // <-- Include `js-logger` when it isn't installed and imported. }, plugins: [ diff --git a/packages/web/README.md b/packages/web/README.md index 4d89f64db..4c638c4df 100644 --- a/packages/web/README.md +++ b/packages/web/README.md @@ -28,6 +28,39 @@ Install it in your app with: npm install @journeyapps/wa-sqlite ``` +### Encryption with Multiple Ciphers + +To enable encryption you need to specify an encryption key when instantiating the PowerSync database. + +> The PowerSync Web SDK uses the ChaCha20 cipher algorithm by [default](https://utelle.github.io/SQLite3MultipleCiphers/docs/ciphers/cipher_chacha20/). + +```typescript +export const db = new PowerSyncDatabase({ + // The schema you defined + schema: AppSchema, + database: { + // Filename for the SQLite database — it's important to only instantiate one instance per file. + dbFilename: 'example.db' + // Optional. Directory where the database file is located.' + // dbLocation: 'path/to/directory' + }, + // Encryption key for the database. + encryptionKey: 'your-encryption-key' +}); + +// If you are using a custom WASQLiteOpenFactory or WASQLiteDBAdapter, you need specify the encryption key inside the construtor +export const db = new PowerSyncDatabase({ + schema: AppSchema, + database: new WASQLiteOpenFactory({ + //new WASQLiteDBAdapter + dbFilename: 'example.db', + vfs: WASQLiteVFS.OPFSCoopSyncVFS, + // Encryption key for the database. + encryptionKey: 'your-encryption-key' + }) +}); +``` + ## Webpack See the [example Webpack config](https://github.com/powersync-ja/powersync-js/blob/main/demos/example-webpack/webpack.config.js) for details on polyfills and requirements. diff --git a/packages/web/package.json b/packages/web/package.json index cfc69bcf3..215836517 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -67,7 +67,7 @@ "@powersync/common": "workspace:*", "async-mutex": "^0.4.0", "bson": "^6.6.0", - "comlink": "^4.4.1", + "comlink": "^4.4.2", "commander": "^12.1.0", "js-logger": "^1.6.1" }, diff --git a/packages/web/src/db/PowerSyncDatabase.ts b/packages/web/src/db/PowerSyncDatabase.ts index 56a3c6dd0..ddc2a76a8 100644 --- a/packages/web/src/db/PowerSyncDatabase.ts +++ b/packages/web/src/db/PowerSyncDatabase.ts @@ -6,6 +6,8 @@ import { AbstractPowerSyncDatabase, DBAdapter, DEFAULT_POWERSYNC_CLOSE_OPTIONS, + isDBAdapter, + isSQLOpenFactory, PowerSyncDatabaseOptions, PowerSyncDatabaseOptionsWithDBAdapter, PowerSyncDatabaseOptionsWithOpenFactory, @@ -14,6 +16,7 @@ import { StreamingSyncImplementation } from '@powersync/common'; import { Mutex } from 'async-mutex'; +import { getNavigatorLocks } from '../shared/navigator'; import { WASQLiteOpenFactory } from './adapters/wa-sqlite/WASQLiteOpenFactory'; import { DEFAULT_WEB_SQL_FLAGS, @@ -21,6 +24,7 @@ import { resolveWebSQLFlags, WebSQLFlags } from './adapters/web-sql-flags'; +import { WebDBAdapter } from './adapters/WebDBAdapter'; import { SharedWebStreamingSyncImplementation } from './sync/SharedWebStreamingSyncImplementation'; import { SSRStreamingSyncImplementation } from './sync/SSRWebStreamingSyncImplementation'; import { WebRemote } from './sync/WebRemote'; @@ -28,7 +32,6 @@ import { WebStreamingSyncImplementation, WebStreamingSyncImplementationOptions } from './sync/WebStreamingSyncImplementation'; -import { getNavigatorLocks } from '../shared/navigator'; export interface WebPowerSyncFlags extends WebSQLFlags { /** @@ -55,6 +58,16 @@ type WithWebSyncOptions = Base & { sync?: WebSyncOptions; }; +export interface WebEncryptionOptions { + /** + * Encryption key for the database. + * If set, the database will be encrypted using Multiple Ciphers. + */ + encryptionKey?: string; +} + +type WithWebEncryptionOptions = Base & WebEncryptionOptions; + export type WebPowerSyncDatabaseOptionsWithAdapter = WithWebSyncOptions< WithWebFlags >; @@ -62,7 +75,7 @@ export type WebPowerSyncDatabaseOptionsWithOpenFactory = WithWebSyncOptions< WithWebFlags >; export type WebPowerSyncDatabaseOptionsWithSettings = WithWebSyncOptions< - WithWebFlags + WithWebFlags> >; export type WebPowerSyncDatabaseOptions = WithWebSyncOptions>; @@ -72,7 +85,7 @@ export const DEFAULT_POWERSYNC_FLAGS: Required = { externallyUnload: false }; -export const resolveWebPowerSyncFlags = (flags?: WebPowerSyncFlags): WebPowerSyncFlags => { +export const resolveWebPowerSyncFlags = (flags?: WebPowerSyncFlags): Required => { return { ...DEFAULT_POWERSYNC_FLAGS, ...flags, @@ -80,6 +93,20 @@ export const resolveWebPowerSyncFlags = (flags?: WebPowerSyncFlags): WebPowerSyn }; }; +/** + * Asserts that the database options are valid for custom database constructors. + */ +function assertValidDatabaseOptions(options: WebPowerSyncDatabaseOptions): void { + if ('database' in options && 'encryptionKey' in options) { + const { database } = options; + if (isSQLOpenFactory(database) || isDBAdapter(database)) { + throw new Error( + `Invalid configuration: 'encryptionKey' should only be included inside the database object when using a custom ${isSQLOpenFactory(database) ? 'WASQLiteOpenFactory' : 'WASQLiteDBAdapter'} constructor.` + ); + } + } +} + /** * A PowerSync database which provides SQLite functionality * which is automatically synced. @@ -107,6 +134,8 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase { constructor(protected options: WebPowerSyncDatabaseOptions) { super(options); + assertValidDatabaseOptions(options); + this.resolvedFlags = resolveWebPowerSyncFlags(options.flags); if (this.resolvedFlags.enableMultiTabs && !this.resolvedFlags.externallyUnload) { @@ -120,7 +149,8 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase { protected openDBAdapter(options: WebPowerSyncDatabaseOptionsWithSettings): DBAdapter { const defaultFactory = new WASQLiteOpenFactory({ ...options.database, - flags: resolveWebPowerSyncFlags(options.flags) + flags: resolveWebPowerSyncFlags(options.flags), + encryptionKey: options.encryptionKey }); return defaultFactory.openDB(); } @@ -191,7 +221,10 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase { const logger = this.options.logger; logger ? logger.warn(warning) : console.warn(warning); } - return new SharedWebStreamingSyncImplementation(syncOptions); + return new SharedWebStreamingSyncImplementation({ + ...syncOptions, + db: this.database as WebDBAdapter // This should always be the case + }); default: return new WebStreamingSyncImplementation(syncOptions); } diff --git a/packages/web/src/db/adapters/AbstractWebSQLOpenFactory.ts b/packages/web/src/db/adapters/AbstractWebSQLOpenFactory.ts index 810000f7d..2e1755e3f 100644 --- a/packages/web/src/db/adapters/AbstractWebSQLOpenFactory.ts +++ b/packages/web/src/db/adapters/AbstractWebSQLOpenFactory.ts @@ -1,12 +1,15 @@ import { DBAdapter, SQLOpenFactory } from '@powersync/common'; +import Logger, { ILogger } from 'js-logger'; import { SSRDBAdapter } from './SSRDBAdapter'; import { ResolvedWebSQLFlags, WebSQLOpenFactoryOptions, isServerSide, resolveWebSQLFlags } from './web-sql-flags'; export abstract class AbstractWebSQLOpenFactory implements SQLOpenFactory { protected resolvedFlags: ResolvedWebSQLFlags; + protected logger: ILogger; constructor(protected options: WebSQLOpenFactoryOptions) { this.resolvedFlags = resolveWebSQLFlags(options.flags); + this.logger = options.logger ?? Logger.get(`AbstractWebSQLOpenFactory - ${this.options.dbFilename}`); } /** diff --git a/packages/web/src/db/adapters/AsyncDatabaseConnection.ts b/packages/web/src/db/adapters/AsyncDatabaseConnection.ts new file mode 100644 index 000000000..e581e984d --- /dev/null +++ b/packages/web/src/db/adapters/AsyncDatabaseConnection.ts @@ -0,0 +1,31 @@ +import { BatchedUpdateNotification, QueryResult } from '@powersync/common'; +import { ResolvedWebSQLOpenOptions } from './web-sql-flags'; + +/** + * Proxied query result does not contain a function for accessing row values + */ +export type ProxiedQueryResult = Omit & { + rows: { + _array: any[]; + length: number; + }; +}; +export type OnTableChangeCallback = (event: BatchedUpdateNotification) => void; + +/** + * @internal + * An async Database connection which provides basic async SQL methods. + * This is usually a proxied through a web worker. + */ +export interface AsyncDatabaseConnection { + init(): Promise; + close(): Promise; + execute(sql: string, params?: any[]): Promise; + executeBatch(sql: string, params?: any[]): Promise; + registerOnTableChange(callback: OnTableChangeCallback): Promise<() => void>; + getConfig(): Promise; +} + +export type OpenAsyncDatabaseConnection = ( + config: Config +) => AsyncDatabaseConnection; diff --git a/packages/web/src/db/adapters/LockedAsyncDatabaseAdapter.ts b/packages/web/src/db/adapters/LockedAsyncDatabaseAdapter.ts new file mode 100644 index 000000000..fe68b44eb --- /dev/null +++ b/packages/web/src/db/adapters/LockedAsyncDatabaseAdapter.ts @@ -0,0 +1,297 @@ +import { + BaseObserver, + DBAdapter, + DBAdapterListener, + DBGetUtils, + DBLockOptions, + LockContext, + QueryResult, + Transaction +} from '@powersync/common'; +import Logger, { ILogger } from 'js-logger'; +import { getNavigatorLocks } from '../..//shared/navigator'; +import { AsyncDatabaseConnection } from './AsyncDatabaseConnection'; +import { SharedConnectionWorker, WebDBAdapter } from './WebDBAdapter'; +import { WorkerWrappedAsyncDatabaseConnection } from './WorkerWrappedAsyncDatabaseConnection'; +import { ResolvedWebSQLOpenOptions } from './web-sql-flags'; + +/** + * @internal + */ +export interface LockedAsyncDatabaseAdapterOptions { + name: string; + openConnection: () => Promise; + debugMode?: boolean; + logger?: ILogger; +} + +export type LockedAsyncDatabaseAdapterListener = DBAdapterListener & { + initialized?: () => void; +}; + +/** + * @internal + * Wraps a {@link AsyncDatabaseConnection} and provides exclusive locking functions in + * order to implement {@link DBAdapter}. + */ +export class LockedAsyncDatabaseAdapter + extends BaseObserver + implements WebDBAdapter +{ + private logger: ILogger; + private dbGetHelpers: DBGetUtils | null; + private debugMode: boolean; + private _dbIdentifier: string; + protected initPromise: Promise; + private _db: AsyncDatabaseConnection | null = null; + protected _disposeTableChangeListener: (() => void) | null = null; + private _config: ResolvedWebSQLOpenOptions | null = null; + + constructor(protected options: LockedAsyncDatabaseAdapterOptions) { + super(); + this._dbIdentifier = options.name; + this.logger = options.logger ?? Logger.get(`LockedAsyncDatabaseAdapter - ${this._dbIdentifier}`); + // Set the name if provided. We can query for the name if not available yet + this.debugMode = options.debugMode ?? false; + if (this.debugMode) { + const originalExecute = this._execute.bind(this); + this._execute = async (sql, bindings) => { + const start = performance.now(); + try { + const r = await originalExecute(sql, bindings); + performance.measure(`[SQL] ${sql}`, { start }); + return r; + } catch (e: any) { + performance.measure(`[SQL] [ERROR: ${e.message}] ${sql}`, { start }); + throw e; + } + }; + } + + this.dbGetHelpers = this.generateDBHelpers({ + execute: (query, params) => this.acquireLock(() => this._execute(query, params)) + }); + this.initPromise = this._init(); + } + + protected get baseDB() { + if (!this._db) { + throw new Error(`Initialization has not completed yet. Cannot access base db`); + } + return this._db; + } + + get name() { + return this._dbIdentifier; + } + + /** + * Init is automatic, this helps catch errors or explicitly await initialization + */ + async init() { + return this.initPromise; + } + + protected async _init() { + this._db = await this.options.openConnection(); + await this._db.init(); + this._config = await this._db.getConfig(); + await this.registerOnChangeListener(this._db); + this.iterateListeners((cb) => cb.initialized?.()); + } + + getConfiguration(): ResolvedWebSQLOpenOptions { + if (!this._config) { + throw new Error(`Cannot get config before initialization is completed`); + } + return this._config; + } + + protected async waitForInitialized() { + // Awaiting this will expose errors on function calls like .execute etc + await this.initPromise; + } + + async shareConnection(): Promise { + if (false == this._db instanceof WorkerWrappedAsyncDatabaseConnection) { + throw new Error(`Only worker connections can be shared`); + } + return this._db.shareConnection(); + } + + /** + * Registers a table change notification callback with the base database. + * This can be extended by custom implementations in order to handle proxy events. + */ + protected async registerOnChangeListener(db: AsyncDatabaseConnection) { + this._disposeTableChangeListener = await db.registerOnTableChange((event) => { + this.iterateListeners((cb) => cb.tablesUpdated?.(event)); + }); + } + + /** + * This is currently a no-op on web + */ + async refreshSchema(): Promise {} + + async execute(query: string, params?: any[] | undefined): Promise { + return this.writeLock((ctx) => ctx.execute(query, params)); + } + + async executeBatch(query: string, params?: any[][]): Promise { + return this.writeLock((ctx) => this._executeBatch(query, params)); + } + + /** + * Attempts to close the connection. + * Shared workers might not actually close the connection if other + * tabs are still using it. + */ + close() { + this._disposeTableChangeListener?.(); + this.baseDB?.close?.(); + } + + async getAll(sql: string, parameters?: any[] | undefined): Promise { + await this.waitForInitialized(); + return this.dbGetHelpers!.getAll(sql, parameters); + } + + async getOptional(sql: string, parameters?: any[] | undefined): Promise { + await this.waitForInitialized(); + return this.dbGetHelpers!.getOptional(sql, parameters); + } + + async get(sql: string, parameters?: any[] | undefined): Promise { + await this.waitForInitialized(); + return this.dbGetHelpers!.get(sql, parameters); + } + + async readLock(fn: (tx: LockContext) => Promise, options?: DBLockOptions | undefined): Promise { + await this.waitForInitialized(); + return this.acquireLock(async () => fn(this.generateDBHelpers({ execute: this._execute }))); + } + + async writeLock(fn: (tx: LockContext) => Promise, options?: DBLockOptions | undefined): Promise { + await this.waitForInitialized(); + return this.acquireLock(async () => fn(this.generateDBHelpers({ execute: this._execute }))); + } + + protected acquireLock(callback: () => Promise): Promise { + return getNavigatorLocks().request(`db-lock-${this._dbIdentifier}`, callback); + } + + async readTransaction(fn: (tx: Transaction) => Promise, options?: DBLockOptions | undefined): Promise { + return this.readLock(this.wrapTransaction(fn)); + } + + writeTransaction(fn: (tx: Transaction) => Promise, options?: DBLockOptions | undefined): Promise { + return this.writeLock(this.wrapTransaction(fn)); + } + + private generateDBHelpers Promise }>( + tx: T + ): T & DBGetUtils { + return { + ...tx, + /** + * Execute a read-only query and return results + */ + async getAll(sql: string, parameters?: any[]): Promise { + const res = await tx.execute(sql, parameters); + return res.rows?._array ?? []; + }, + + /** + * Execute a read-only query and return the first result, or null if the ResultSet is empty. + */ + async getOptional(sql: string, parameters?: any[]): Promise { + const res = await tx.execute(sql, parameters); + return res.rows?.item(0) ?? null; + }, + + /** + * Execute a read-only query and return the first result, error if the ResultSet is empty. + */ + async get(sql: string, parameters?: any[]): Promise { + const res = await tx.execute(sql, parameters); + const first = res.rows?.item(0); + if (!first) { + throw new Error('Result set is empty'); + } + return first; + } + }; + } + + /** + * Wraps a lock context into a transaction context + */ + private wrapTransaction(cb: (tx: Transaction) => Promise) { + return async (tx: LockContext): Promise => { + await this._execute('BEGIN TRANSACTION'); + let finalized = false; + const commit = async (): Promise => { + if (finalized) { + return { rowsAffected: 0 }; + } + finalized = true; + return this._execute('COMMIT'); + }; + + const rollback = () => { + finalized = true; + return this._execute('ROLLBACK'); + }; + + try { + const result = await cb({ + ...tx, + commit, + rollback + }); + + if (!finalized) { + await commit(); + } + return result; + } catch (ex) { + this.logger.debug('Caught ex in transaction', ex); + try { + await rollback(); + } catch (ex2) { + // In rare cases, a rollback may fail. + // Safe to ignore. + } + throw ex; + } + }; + } + + /** + * Wraps the worker execute function, awaiting for it to be available + */ + private _execute = async (sql: string, bindings?: any[]): Promise => { + await this.waitForInitialized(); + const result = await this.baseDB.execute(sql, bindings); + return { + ...result, + rows: { + ...result.rows, + item: (idx: number) => result.rows._array[idx] + } + }; + }; + + /** + * Wraps the worker executeBatch function, awaiting for it to be available + */ + private _executeBatch = async (query: string, params?: any[]): Promise => { + await this.waitForInitialized(); + const result = await this.baseDB.executeBatch(query, params); + return { + ...result, + rows: undefined + }; + }; +} diff --git a/packages/web/src/db/adapters/WebDBAdapter.ts b/packages/web/src/db/adapters/WebDBAdapter.ts new file mode 100644 index 000000000..2a78ca4aa --- /dev/null +++ b/packages/web/src/db/adapters/WebDBAdapter.ts @@ -0,0 +1,20 @@ +import { DBAdapter } from '@powersync/common'; +import { ResolvedWebSQLOpenOptions } from './web-sql-flags'; + +export type SharedConnectionWorker = { + identifier: string; + port: MessagePort; +}; + +export interface WebDBAdapter extends DBAdapter { + /** + * Get a MessagePort which can be used to share the internals of this connection. + */ + shareConnection(): Promise; + + /** + * Get the config options used to open this connection. + * This is useful for sharing connections. + */ + getConfiguration(): ResolvedWebSQLOpenOptions; +} diff --git a/packages/web/src/db/adapters/WorkerWrappedAsyncDatabaseConnection.ts b/packages/web/src/db/adapters/WorkerWrappedAsyncDatabaseConnection.ts new file mode 100644 index 000000000..bb26c59da --- /dev/null +++ b/packages/web/src/db/adapters/WorkerWrappedAsyncDatabaseConnection.ts @@ -0,0 +1,77 @@ +import * as Comlink from 'comlink'; +import { + AsyncDatabaseConnection, + OnTableChangeCallback, + OpenAsyncDatabaseConnection, + ProxiedQueryResult +} from './AsyncDatabaseConnection'; +import { ResolvedWebSQLOpenOptions } from './web-sql-flags'; + +export type SharedConnectionWorker = { + identifier: string; + port: MessagePort; +}; + +export type WrappedWorkerConnectionOptions = { + baseConnection: AsyncDatabaseConnection; + identifier: string; + /** + * Need a remote in order to keep a reference to the Proxied worker + */ + remote: Comlink.Remote>; + onClose?: () => void; +}; + +/** + * Wraps a provided instance of {@link AsyncDatabaseConnection}, providing necessary proxy + * functions for worker listeners. + */ +export class WorkerWrappedAsyncDatabaseConnection + implements AsyncDatabaseConnection +{ + constructor(protected options: WrappedWorkerConnectionOptions) {} + + protected get baseConnection() { + return this.options.baseConnection; + } + + init(): Promise { + return this.baseConnection.init(); + } + + /** + * Get a MessagePort which can be used to share the internals of this connection. + */ + async shareConnection(): Promise { + const { identifier, remote } = this.options; + + const newPort = await remote[Comlink.createEndpoint](); + return { port: newPort, identifier }; + } + + /** + * Registers a table change notification callback with the base database. + * This can be extended by custom implementations in order to handle proxy events. + */ + async registerOnTableChange(callback: OnTableChangeCallback) { + return this.baseConnection.registerOnTableChange(Comlink.proxy(callback)); + } + + async close(): Promise { + await this.baseConnection.close(); + this.options.remote[Comlink.releaseProxy](); + this.options.onClose?.(); + } + + execute(sql: string, params?: any[]): Promise { + return this.baseConnection.execute(sql, params); + } + + executeBatch(sql: string, params?: any[]): Promise { + return this.baseConnection.executeBatch(sql, params); + } + + getConfig(): Promise { + return this.baseConnection.getConfig(); + } +} diff --git a/packages/web/src/db/adapters/wa-sqlite/WASQLiteConnection.ts b/packages/web/src/db/adapters/wa-sqlite/WASQLiteConnection.ts new file mode 100644 index 000000000..d73800d96 --- /dev/null +++ b/packages/web/src/db/adapters/wa-sqlite/WASQLiteConnection.ts @@ -0,0 +1,419 @@ +import * as SQLite from '@journeyapps/wa-sqlite'; +import { BaseObserver, BatchedUpdateNotification } from '@powersync/common'; +import { Mutex } from 'async-mutex'; +import { AsyncDatabaseConnection, OnTableChangeCallback, ProxiedQueryResult } from '../AsyncDatabaseConnection'; +import { ResolvedWASQLiteOpenFactoryOptions } from './WASQLiteOpenFactory'; + +/** + * List of currently tested virtual filesystems + */ +export enum WASQLiteVFS { + IDBBatchAtomicVFS = 'IDBBatchAtomicVFS', + OPFSCoopSyncVFS = 'OPFSCoopSyncVFS', + AccessHandlePoolVFS = 'AccessHandlePoolVFS' +} + +/** + * @internal + */ +export type WASQLiteBroadCastTableUpdateEvent = { + changedTables: Set; + connectionId: number; +}; + +/** + * @internal + */ +export type WASQLiteConnectionListener = { + tablesUpdated: (event: BatchedUpdateNotification) => void; +}; + +/** + * @internal + */ +export type SQLiteModule = Parameters[0]; + +/** + * @internal + */ +export type WASQLiteModuleFactoryOptions = { dbFileName: string; encryptionKey?: string }; + +/** + * @internal + */ +export type WASQLiteModuleFactory = ( + options: WASQLiteModuleFactoryOptions +) => Promise<{ module: SQLiteModule; vfs: SQLiteVFS }>; + +/** + * @internal + */ +export const AsyncWASQLiteModuleFactory = async () => { + const { default: factory } = await import('@journeyapps/wa-sqlite/dist/wa-sqlite-async.mjs'); + return factory(); +}; + +/** + * @internal + */ +export const MultiCipherAsyncWASQLiteModuleFactory = async () => { + const { default: factory } = await import('@journeyapps/wa-sqlite/dist/mc-wa-sqlite-async.mjs'); + return factory(); +}; + +/** + * @internal + */ +export const SyncWASQLiteModuleFactory = async () => { + const { default: factory } = await import('@journeyapps/wa-sqlite/dist/wa-sqlite.mjs'); + return factory(); +}; + +/** + * @internal + */ +export const MultiCipherSyncWASQLiteModuleFactory = async () => { + const { default: factory } = await import('@journeyapps/wa-sqlite/dist/mc-wa-sqlite.mjs'); + return factory(); +}; + +/** + * @internal + */ +export const DEFAULT_MODULE_FACTORIES = { + [WASQLiteVFS.IDBBatchAtomicVFS]: async (options: WASQLiteModuleFactoryOptions) => { + let module; + if (options.encryptionKey) { + module = await MultiCipherAsyncWASQLiteModuleFactory(); + } else { + module = await AsyncWASQLiteModuleFactory(); + } + const { IDBBatchAtomicVFS } = await import('@journeyapps/wa-sqlite/src/examples/IDBBatchAtomicVFS.js'); + return { + module, + // @ts-expect-error The types for this static method are missing upstream + vfs: await IDBBatchAtomicVFS.create(options.dbFileName, module, { lockPolicy: 'exclusive' }) + }; + }, + [WASQLiteVFS.AccessHandlePoolVFS]: async (options: WASQLiteModuleFactoryOptions) => { + let module; + if (options.encryptionKey) { + module = await MultiCipherSyncWASQLiteModuleFactory(); + } else { + module = await SyncWASQLiteModuleFactory(); + } + // @ts-expect-error The types for this static method are missing upstream + const { AccessHandlePoolVFS } = await import('@journeyapps/wa-sqlite/src/examples/AccessHandlePoolVFS.js'); + return { + module, + vfs: await AccessHandlePoolVFS.create(options.dbFileName, module) + }; + }, + [WASQLiteVFS.OPFSCoopSyncVFS]: async (options: WASQLiteModuleFactoryOptions) => { + let module; + if (options.encryptionKey) { + module = await MultiCipherSyncWASQLiteModuleFactory(); + } else { + module = await SyncWASQLiteModuleFactory(); + } + // @ts-expect-error The types for this static method are missing upstream + const { OPFSCoopSyncVFS } = await import('@journeyapps/wa-sqlite/src/examples/OPFSCoopSyncVFS.js'); + return { + module, + vfs: await OPFSCoopSyncVFS.create(options.dbFileName, module) + }; + } +}; + +/** + * @internal + * WA-SQLite connection which directly interfaces with WA-SQLite. + * This is usually instantiated inside a worker. + */ +export class WASqliteConnection + extends BaseObserver + implements AsyncDatabaseConnection +{ + private _sqliteAPI: SQLiteAPI | null = null; + private _dbP: number | null = null; + private _moduleFactory: WASQLiteModuleFactory; + + protected updatedTables: Set; + protected updateTimer: ReturnType | null; + protected statementMutex: Mutex; + protected broadcastChannel: BroadcastChannel | null; + /** + * Unique id for this specific connection. This is used to prevent broadcast table change + * notification loops. + */ + protected connectionId: number; + + constructor(protected options: ResolvedWASQLiteOpenFactoryOptions) { + super(); + this.updatedTables = new Set(); + this.updateTimer = null; + this.broadcastChannel = null; + this.connectionId = new Date().valueOf() + Math.random(); + this.statementMutex = new Mutex(); + this._moduleFactory = DEFAULT_MODULE_FACTORIES[this.options.vfs]; + } + + protected get sqliteAPI() { + if (!this._sqliteAPI) { + throw new Error(`Initialization has not completed`); + } + return this._sqliteAPI; + } + + protected get dbP() { + if (!this._dbP) { + throw new Error(`Initialization has not completed`); + } + return this._dbP; + } + + protected async openDB() { + this._dbP = await this.sqliteAPI.open_v2(this.options.dbFilename); + return this._dbP; + } + + protected async executeEncryptionPragma(): Promise { + if (this.options.encryptionKey) { + await this.executeSingleStatement(`PRAGMA key = "${this.options.encryptionKey}"`); + } + return; + } + + protected async openSQLiteAPI(): Promise { + const { module, vfs } = await this._moduleFactory({ + dbFileName: this.options.dbFilename, + encryptionKey: this.options.encryptionKey + }); + const sqlite3 = SQLite.Factory(module); + sqlite3.vfs_register(vfs, true); + /** + * Register the PowerSync core SQLite extension + */ + module.ccall('powersync_init_static', 'int', []); + + /** + * Create the multiple cipher vfs if an encryption key is provided + */ + if (this.options.encryptionKey) { + const createResult = module.ccall('sqlite3mc_vfs_create', 'int', ['string', 'int'], [this.options.dbFilename, 1]); + if (createResult !== 0) { + throw new Error('Failed to create multiple cipher vfs, Database encryption will not work'); + } + } + + return sqlite3; + } + + protected registerBroadcastListeners() { + this.broadcastChannel = new BroadcastChannel(`${this.options.dbFilename}-table-updates`); + this.broadcastChannel.addEventListener('message', (event) => { + const data: WASQLiteBroadCastTableUpdateEvent = event.data; + if (this.connectionId == data.connectionId) { + // Ignore messages from the same connection + return; + } + + // Ensuring that we don't rebroadcast the same message + this.queueTableUpdate(data.changedTables, false); + }); + } + + protected queueTableUpdate(tableNames: Set, shouldBroadcast = true) { + tableNames.forEach((tableName) => this.updatedTables.add(tableName)); + if (this.updateTimer == null) { + this.updateTimer = setTimeout(() => this.fireUpdates(shouldBroadcast), 0); + } + } + + async init() { + this._sqliteAPI = await this.openSQLiteAPI(); + await this.openDB(); + this.registerBroadcastListeners(); + await this.executeSingleStatement(`PRAGMA temp_store = ${this.options.temporaryStorage};`); + await this.executeEncryptionPragma(); + + this.sqliteAPI.update_hook(this.dbP, (updateType: number, dbName: string | null, tableName: string | null) => { + if (!tableName) { + return; + } + const changedTables = new Set([tableName]); + this.queueTableUpdate(changedTables); + }); + } + + async getConfig(): Promise { + return this.options; + } + + fireUpdates(shouldBroadcast = true) { + this.updateTimer = null; + const event: BatchedUpdateNotification = { tables: [...this.updatedTables], groupedUpdates: {}, rawUpdates: [] }; + // Share to other connections + if (shouldBroadcast) { + this.broadcastChannel!.postMessage({ + changedTables: this.updatedTables, + connectionId: this.connectionId + } satisfies WASQLiteBroadCastTableUpdateEvent); + } + this.updatedTables.clear(); + this.iterateListeners((cb) => cb.tablesUpdated?.(event)); + } + + /** + * This executes SQL statements in a batch. + */ + async executeBatch(sql: string, bindings?: any[][]): Promise { + return this.acquireExecuteLock(async (): Promise => { + let affectedRows = 0; + + try { + await this.executeSingleStatement('BEGIN TRANSACTION'); + + const wrappedBindings = bindings ? bindings : []; + for await (const stmt of this.sqliteAPI.statements(this.dbP, sql)) { + if (stmt === null) { + return { + rowsAffected: 0, + rows: { _array: [], length: 0 } + }; + } + + //Prepare statement once + for (const binding of wrappedBindings) { + // TODO not sure why this is needed currently, but booleans break + for (let i = 0; i < binding.length; i++) { + const b = binding[i]; + if (typeof b == 'boolean') { + binding[i] = b ? 1 : 0; + } + } + + if (bindings) { + this.sqliteAPI.bind_collection(stmt, binding); + } + const result = await this.sqliteAPI.step(stmt); + if (result === SQLite.SQLITE_DONE) { + //The value returned by sqlite3_changes() immediately after an INSERT, UPDATE or DELETE statement run on a view is always zero. + affectedRows += this.sqliteAPI.changes(this.dbP); + } + + this.sqliteAPI.reset(stmt); + } + } + + await this.executeSingleStatement('COMMIT'); + } catch (err) { + await this.executeSingleStatement('ROLLBACK'); + return { + rowsAffected: 0, + rows: { _array: [], length: 0 } + }; + } + const result = { + rowsAffected: affectedRows, + rows: { _array: [], length: 0 } + }; + + return result; + }); + } + + /** + * This executes single SQL statements inside a requested lock. + */ + async execute(sql: string | TemplateStringsArray, bindings?: any[]): Promise { + // Running multiple statements on the same connection concurrently should not be allowed + return this.acquireExecuteLock(async () => { + return this.executeSingleStatement(sql, bindings); + }); + } + + async close() { + this.broadcastChannel?.close(); + await this.sqliteAPI.close(this.dbP); + } + + async registerOnTableChange(callback: OnTableChangeCallback) { + return this.registerListener({ + tablesUpdated: (event) => callback(event) + }); + } + + /** + * This requests a lock for executing statements. + * Should only be used internally. + */ + protected acquireExecuteLock = (callback: () => Promise): Promise => { + return this.statementMutex.runExclusive(callback); + }; + + /** + * This executes a single statement using SQLite3. + */ + protected async executeSingleStatement( + sql: string | TemplateStringsArray, + bindings?: any[] + ): Promise { + const results = []; + for await (const stmt of this.sqliteAPI.statements(this.dbP, sql as string)) { + let columns; + const wrappedBindings = bindings ? [bindings] : [[]]; + for (const binding of wrappedBindings) { + // TODO not sure why this is needed currently, but booleans break + binding.forEach((b, index, arr) => { + if (typeof b == 'boolean') { + arr[index] = b ? 1 : 0; + } + }); + + this.sqliteAPI.reset(stmt); + if (bindings) { + this.sqliteAPI.bind_collection(stmt, binding); + } + + const rows = []; + while ((await this.sqliteAPI.step(stmt)) === SQLite.SQLITE_ROW) { + const row = this.sqliteAPI.row(stmt); + rows.push(row); + } + + columns = columns ?? this.sqliteAPI.column_names(stmt); + if (columns.length) { + results.push({ columns, rows }); + } + } + + // When binding parameters, only a single statement is executed. + if (bindings) { + break; + } + } + + const rows: Record[] = []; + for (const resultSet of results) { + for (const row of resultSet.rows) { + const outRow: Record = {}; + resultSet.columns.forEach((key, index) => { + outRow[key] = row[index]; + }); + rows.push(outRow); + } + } + + const result = { + insertId: this.sqliteAPI.last_insert_id(this.dbP), + rowsAffected: this.sqliteAPI.changes(this.dbP), + rows: { + _array: rows, + length: rows.length + } + }; + + return result; + } +} diff --git a/packages/web/src/db/adapters/wa-sqlite/WASQLiteDBAdapter.ts b/packages/web/src/db/adapters/wa-sqlite/WASQLiteDBAdapter.ts index 3818cbbc9..2c96a00f6 100644 --- a/packages/web/src/db/adapters/wa-sqlite/WASQLiteDBAdapter.ts +++ b/packages/web/src/db/adapters/wa-sqlite/WASQLiteDBAdapter.ts @@ -1,21 +1,12 @@ -import { - type DBAdapter, - type DBAdapterListener, - type DBGetUtils, - type DBLockOptions, - type LockContext, - type PowerSyncOpenFactoryOptions, - type QueryResult, - type Transaction, - BaseObserver -} from '@powersync/common'; +import { type PowerSyncOpenFactoryOptions } from '@powersync/common'; import * as Comlink from 'comlink'; -import Logger, { type ILogger } from 'js-logger'; -import type { DBFunctionsInterface, OpenDB } from '../../../shared/types'; -import { _openDB } from '../../../shared/open-db'; -import { getWorkerDatabaseOpener, resolveWorkerDatabasePortFactory } from '../../../worker/db/open-worker-database'; -import { ResolvedWebSQLOpenOptions, resolveWebSQLFlags, TemporaryStorageOption, WebSQLFlags } from '../web-sql-flags'; -import { getNavigatorLocks } from '../../../shared/navigator'; +import { resolveWebPowerSyncFlags } from '../../PowerSyncDatabase'; +import { OpenAsyncDatabaseConnection } from '../AsyncDatabaseConnection'; +import { LockedAsyncDatabaseAdapter } from '../LockedAsyncDatabaseAdapter'; +import { ResolvedWebSQLOpenOptions, TemporaryStorageOption, WebSQLFlags } from '../web-sql-flags'; +import { WorkerWrappedAsyncDatabaseConnection } from '../WorkerWrappedAsyncDatabaseConnection'; +import { WASQLiteVFS } from './WASQLiteConnection'; +import { WASQLiteOpenFactory } from './WASQLiteOpenFactory'; /** * These flags are the same as {@link WebSQLFlags}. @@ -25,6 +16,7 @@ export type WASQLiteFlags = WebSQLFlags; export interface WASQLiteDBAdapterOptions extends Omit { flags?: WASQLiteFlags; + /** * Use an existing port to an initialized worker. * A worker will be initialized if none is provided @@ -33,255 +25,53 @@ export interface WASQLiteDBAdapterOptions extends Omit Worker | SharedWorker); + vfs?: WASQLiteVFS; temporaryStorage?: TemporaryStorageOption; + + /** + * Encryption key for the database. + * If set, the database will be encrypted using multiple-ciphers. + */ + encryptionKey?: string; } /** * Adapter for WA-SQLite SQLite connections. */ -export class WASQLiteDBAdapter extends BaseObserver implements DBAdapter { - private initialized: Promise; - private logger: ILogger; - private dbGetHelpers: DBGetUtils | null; - private methods: DBFunctionsInterface | null; - private debugMode: boolean; - - constructor(protected options: WASQLiteDBAdapterOptions) { - super(); - this.logger = Logger.get('WASQLite'); - this.dbGetHelpers = null; - this.methods = null; - this.debugMode = options.debugMode ?? false; - if (this.debugMode) { - const originalExecute = this._execute.bind(this); - this._execute = async (sql, bindings) => { - const start = performance.now(); - try { - const r = await originalExecute(sql, bindings); - performance.measure(`[SQL] ${sql}`, { start }); - return r; - } catch (e: any) { - performance.measure(`[SQL] [ERROR: ${e.message}] ${sql}`, { start }); - throw e; +export class WASQLiteDBAdapter extends LockedAsyncDatabaseAdapter { + constructor(options: WASQLiteDBAdapterOptions) { + super({ + name: options.dbFilename, + openConnection: async () => { + const { workerPort, temporaryStorage } = options; + if (workerPort) { + const remote = Comlink.wrap(workerPort); + return new WorkerWrappedAsyncDatabaseConnection({ + remote, + identifier: options.dbFilename, + baseConnection: await remote({ + ...options, + temporaryStorage: temporaryStorage ?? TemporaryStorageOption.MEMORY, + flags: resolveWebPowerSyncFlags(options.flags), + encryptionKey: options.encryptionKey + }) + }); } - }; - } - this.initialized = this.init(); - this.dbGetHelpers = this.generateDBHelpers({ - execute: (query, params) => this.acquireLock(() => this._execute(query, params)) - }); - } - - get name() { - return this.options.dbFilename; - } - - protected get flags(): Required { - return resolveWebSQLFlags(this.options.flags ?? {}); - } - - getWorker() {} - - protected async init() { - const { enableMultiTabs, useWebWorker } = this.flags; - if (!enableMultiTabs) { - this.logger.warn('Multiple tabs are not enabled in this browser'); - } - - const tempStoreQuery = `PRAGMA temp_store = ${this.options.temporaryStorage ?? TemporaryStorageOption.MEMORY};`; - - if (useWebWorker) { - const optionsDbWorker = this.options.worker; - - const dbOpener = this.options.workerPort - ? Comlink.wrap(this.options.workerPort) - : typeof optionsDbWorker === 'function' - ? Comlink.wrap( - resolveWorkerDatabasePortFactory(() => - optionsDbWorker({ - ...this.options, - flags: this.flags - }) - ) - ) - : getWorkerDatabaseOpener(this.options.dbFilename, enableMultiTabs, optionsDbWorker); - - this.methods = await dbOpener(this.options.dbFilename); - await this.methods!.execute(tempStoreQuery); - this.methods.registerOnTableChange( - Comlink.proxy((event) => { - this.iterateListeners((cb) => cb.tablesUpdated?.(event)); - }) - ); - - return; - } - this.methods = await _openDB(this.options.dbFilename, { useWebWorker: false }); - await this.methods!.execute(tempStoreQuery); - this.methods.registerOnTableChange((event) => { - this.iterateListeners((cb) => cb.tablesUpdated?.(event)); - }); - } - - async execute(query: string, params?: any[] | undefined): Promise { - return this.writeLock((ctx) => ctx.execute(query, params)); - } - - async executeBatch(query: string, params?: any[][]): Promise { - return this.writeLock((ctx) => this._executeBatch(query, params)); - } - - /** - * Wraps the worker execute function, awaiting for it to be available - */ - private _execute = async (sql: string, bindings?: any[]): Promise => { - await this.initialized; - const result = await this.methods!.execute!(sql, bindings); - return { - ...result, - rows: { - ...result.rows, - item: (idx: number) => result.rows._array[idx] - } - }; - }; - - /** - * Wraps the worker executeBatch function, awaiting for it to be available - */ - private _executeBatch = async (query: string, params?: any[]): Promise => { - await this.initialized; - const result = await this.methods!.executeBatch!(query, params); - return { - ...result, - rows: undefined - }; - }; - - /** - * Attempts to close the connection. - * Shared workers might not actually close the connection if other - * tabs are still using it. - */ - close() { - this.methods?.close?.(); - } - - async getAll(sql: string, parameters?: any[] | undefined): Promise { - await this.initialized; - return this.dbGetHelpers!.getAll(sql, parameters); - } - - async getOptional(sql: string, parameters?: any[] | undefined): Promise { - await this.initialized; - return this.dbGetHelpers!.getOptional(sql, parameters); - } - - async get(sql: string, parameters?: any[] | undefined): Promise { - await this.initialized; - return this.dbGetHelpers!.get(sql, parameters); - } - - async readLock(fn: (tx: LockContext) => Promise, options?: DBLockOptions | undefined): Promise { - await this.initialized; - return this.acquireLock(async () => fn(this.generateDBHelpers({ execute: this._execute }))); - } - - async writeLock(fn: (tx: LockContext) => Promise, options?: DBLockOptions | undefined): Promise { - await this.initialized; - return this.acquireLock(async () => fn(this.generateDBHelpers({ execute: this._execute }))); - } - - protected acquireLock(callback: () => Promise): Promise { - return getNavigatorLocks().request(`db-lock-${this.options.dbFilename}`, callback); - } - - async readTransaction(fn: (tx: Transaction) => Promise, options?: DBLockOptions | undefined): Promise { - return this.readLock(this.wrapTransaction(fn)); - } - - writeTransaction(fn: (tx: Transaction) => Promise, options?: DBLockOptions | undefined): Promise { - return this.writeLock(this.wrapTransaction(fn)); - } - - /** - * Wraps a lock context into a transaction context - */ - private wrapTransaction(cb: (tx: Transaction) => Promise) { - return async (tx: LockContext): Promise => { - await this._execute('BEGIN TRANSACTION'); - let finalized = false; - const commit = async (): Promise => { - if (finalized) { - return { rowsAffected: 0 }; - } - finalized = true; - return this._execute('COMMIT'); - }; - - const rollback = () => { - finalized = true; - return this._execute('ROLLBACK'); - }; - - try { - const result = await cb({ - ...tx, - commit, - rollback + const openFactory = new WASQLiteOpenFactory({ + dbFilename: options.dbFilename, + dbLocation: options.dbLocation, + debugMode: options.debugMode, + flags: options.flags, + temporaryStorage, + logger: options.logger, + vfs: options.vfs, + encryptionKey: options.encryptionKey, + worker: options.worker }); - - if (!finalized) { - await commit(); - } - return result; - } catch (ex) { - this.logger.debug('Caught ex in transaction', ex); - try { - await rollback(); - } catch (ex2) { - // In rare cases, a rollback may fail. - // Safe to ignore. - } - throw ex; - } - }; - } - - private generateDBHelpers Promise }>( - tx: T - ): T & DBGetUtils { - return { - ...tx, - /** - * Execute a read-only query and return results - */ - async getAll(sql: string, parameters?: any[]): Promise { - const res = await tx.execute(sql, parameters); - return res.rows?._array ?? []; - }, - - /** - * Execute a read-only query and return the first result, or null if the ResultSet is empty. - */ - async getOptional(sql: string, parameters?: any[]): Promise { - const res = await tx.execute(sql, parameters); - return res.rows?.item(0) ?? null; + return openFactory.openConnection(); }, - - /** - * Execute a read-only query and return the first result, error if the ResultSet is empty. - */ - async get(sql: string, parameters?: any[]): Promise { - const res = await tx.execute(sql, parameters); - const first = res.rows?.item(0); - if (!first) { - throw new Error('Result set is empty'); - } - return first; - } - }; + debugMode: options.debugMode, + logger: options.logger + }); } - - async refreshSchema(): Promise {} } diff --git a/packages/web/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts b/packages/web/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts index 039e0f834..816039b63 100644 --- a/packages/web/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts +++ b/packages/web/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts @@ -1,15 +1,117 @@ import { DBAdapter } from '@powersync/common'; -import { WASQLiteDBAdapter } from './WASQLiteDBAdapter'; +import * as Comlink from 'comlink'; +import { openWorkerDatabasePort, resolveWorkerDatabasePortFactory } from '../../../worker/db/open-worker-database'; import { AbstractWebSQLOpenFactory } from '../AbstractWebSQLOpenFactory'; +import { AsyncDatabaseConnection, OpenAsyncDatabaseConnection } from '../AsyncDatabaseConnection'; +import { LockedAsyncDatabaseAdapter } from '../LockedAsyncDatabaseAdapter'; +import { ResolvedWebSQLOpenOptions, TemporaryStorageOption, WebSQLOpenFactoryOptions } from '../web-sql-flags'; +import { WorkerWrappedAsyncDatabaseConnection } from '../WorkerWrappedAsyncDatabaseConnection'; +import { WASqliteConnection, WASQLiteVFS } from './WASQLiteConnection'; +export interface WASQLiteOpenFactoryOptions extends WebSQLOpenFactoryOptions { + vfs?: WASQLiteVFS; +} + +export interface ResolvedWASQLiteOpenFactoryOptions extends ResolvedWebSQLOpenOptions { + vfs: WASQLiteVFS; +} /** * Opens a SQLite connection using WA-SQLite. */ export class WASQLiteOpenFactory extends AbstractWebSQLOpenFactory { + constructor(options: WASQLiteOpenFactoryOptions) { + super(options); + + assertValidWASQLiteOpenFactoryOptions(options); + } + + get waOptions(): WASQLiteOpenFactoryOptions { + // Cast to extended type + return this.options; + } + protected openAdapter(): DBAdapter { - return new WASQLiteDBAdapter({ - ...this.options, - flags: this.resolvedFlags + return new LockedAsyncDatabaseAdapter({ + name: this.options.dbFilename, + openConnection: () => this.openConnection(), + debugMode: this.options.debugMode, + logger: this.logger }); } + + async openConnection(): Promise { + const { enableMultiTabs, useWebWorker } = this.resolvedFlags; + const { + vfs = WASQLiteVFS.IDBBatchAtomicVFS, + temporaryStorage = TemporaryStorageOption.MEMORY, + encryptionKey + } = this.waOptions; + + if (!enableMultiTabs) { + this.logger.warn('Multiple tabs are not enabled in this browser'); + } + + if (useWebWorker) { + const optionsDbWorker = this.options.worker; + + const workerPort = + typeof optionsDbWorker == 'function' + ? resolveWorkerDatabasePortFactory(() => + optionsDbWorker({ + ...this.options, + temporaryStorage, + flags: this.resolvedFlags, + encryptionKey + }) + ) + : openWorkerDatabasePort(this.options.dbFilename, enableMultiTabs, optionsDbWorker, this.waOptions.vfs); + + const workerDBOpener = Comlink.wrap>(workerPort); + + return new WorkerWrappedAsyncDatabaseConnection({ + remote: workerDBOpener, + baseConnection: await workerDBOpener({ + dbFilename: this.options.dbFilename, + vfs, + temporaryStorage, + flags: this.resolvedFlags, + encryptionKey: encryptionKey + }), + identifier: this.options.dbFilename, + onClose: () => { + if (workerPort instanceof Worker) { + workerPort.terminate(); + } else { + workerPort.close(); + } + } + }); + } else { + // Don't use a web worker + return new WASqliteConnection({ + dbFilename: this.options.dbFilename, + dbLocation: this.options.dbLocation, + debugMode: this.options.debugMode, + vfs, + temporaryStorage, + flags: this.resolvedFlags, + encryptionKey: encryptionKey + }); + } + } +} + +/** + * Asserts that the factory options are valid. + */ +function assertValidWASQLiteOpenFactoryOptions(options: WASQLiteOpenFactoryOptions): void { + // The OPFS VFS only works in dedicated web workers. + if ('vfs' in options && 'flags' in options) { + const { vfs, flags = {} } = options; + if (vfs !== WASQLiteVFS.IDBBatchAtomicVFS && 'useWebWorker' in flags && !flags.useWebWorker) { + throw new Error( + `Invalid configuration: The 'useWebWorker' flag must be true when using an OPFS-based VFS (${vfs}).` + ); + } + } } diff --git a/packages/web/src/db/adapters/web-sql-flags.ts b/packages/web/src/db/adapters/web-sql-flags.ts index 730ef343d..f2036f0eb 100644 --- a/packages/web/src/db/adapters/web-sql-flags.ts +++ b/packages/web/src/db/adapters/web-sql-flags.ts @@ -1,4 +1,5 @@ import { SQLOpenOptions } from '@powersync/common'; +import { ILogger } from 'js-logger'; /** * Common settings used when creating SQL connections on web. @@ -40,6 +41,17 @@ export type ResolvedWebSQLFlags = Required; export interface ResolvedWebSQLOpenOptions extends SQLOpenOptions { flags: ResolvedWebSQLFlags; + /** + * Where to store SQLite temporary files. Defaults to 'MEMORY'. + * Setting this to `FILESYSTEM` can cause issues with larger queries or datasets. + */ + temporaryStorage: TemporaryStorageOption; + + /** + * Encryption key for the database. + * If set, the database will be encrypted using ChaCha20. + */ + encryptionKey?: string; } export enum TemporaryStorageOption { @@ -61,11 +73,18 @@ export interface WebSQLOpenFactoryOptions extends SQLOpenOptions { */ worker?: string | URL | ((options: ResolvedWebSQLOpenOptions) => Worker | SharedWorker); + logger?: ILogger; /** * Where to store SQLite temporary files. Defaults to 'MEMORY'. * Setting this to `FILESYSTEM` can cause issues with larger queries or datasets. */ temporaryStorage?: TemporaryStorageOption; + + /** + * Encryption key for the database. + * If set, the database will be encrypted using ChaCha20. + */ + encryptionKey?: string; } export function isServerSide() { diff --git a/packages/web/src/db/sync/SharedWebStreamingSyncImplementation.ts b/packages/web/src/db/sync/SharedWebStreamingSyncImplementation.ts index 43d22a794..b184fed53 100644 --- a/packages/web/src/db/sync/SharedWebStreamingSyncImplementation.ts +++ b/packages/web/src/db/sync/SharedWebStreamingSyncImplementation.ts @@ -1,17 +1,17 @@ import { PowerSyncConnectionOptions, PowerSyncCredentials, SyncStatus, SyncStatusOptions } from '@powersync/common'; import * as Comlink from 'comlink'; -import { openWorkerDatabasePort, resolveWorkerDatabasePortFactory } from '../../worker/db/open-worker-database'; import { AbstractSharedSyncClientProvider } from '../../worker/sync/AbstractSharedSyncClientProvider'; import { ManualSharedSyncPayload, SharedSyncClientEvent, SharedSyncImplementation } from '../../worker/sync/SharedSyncImplementation'; +import { resolveWebSQLFlags, TemporaryStorageOption } from '../adapters/web-sql-flags'; +import { WebDBAdapter } from '../adapters/WebDBAdapter'; import { WebStreamingSyncImplementation, WebStreamingSyncImplementationOptions } from './WebStreamingSyncImplementation'; -import { resolveWebSQLFlags } from '../adapters/web-sql-flags'; /** * The shared worker will trigger methods on this side of the message port @@ -20,11 +20,17 @@ import { resolveWebSQLFlags } from '../adapters/web-sql-flags'; class SharedSyncClientProvider extends AbstractSharedSyncClientProvider { constructor( protected options: WebStreamingSyncImplementationOptions, - public statusChanged: (status: SyncStatusOptions) => void + public statusChanged: (status: SyncStatusOptions) => void, + protected webDB: WebDBAdapter ) { super(); } + async getDBWorkerPort(): Promise { + const { port } = await this.webDB.shareConnection(); + return Comlink.transfer(port, [port]); + } + async fetchCredentials(): Promise { const credentials = await this.options.remote.getCredentials(); if (credentials == null) { @@ -80,16 +86,21 @@ class SharedSyncClientProvider extends AbstractSharedSyncClientProvider { } } +export interface SharedWebStreamingSyncImplementationOptions extends WebStreamingSyncImplementationOptions { + db: WebDBAdapter; +} + export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplementation { protected syncManager: Comlink.Remote; protected clientProvider: SharedSyncClientProvider; protected messagePort: MessagePort; protected isInitialized: Promise; + protected dbAdapter: WebDBAdapter; - constructor(options: WebStreamingSyncImplementationOptions) { + constructor(options: SharedWebStreamingSyncImplementationOptions) { super(options); - + this.dbAdapter = options.db; /** * Configure or connect to the shared sync worker. * This worker will manage all syncing operations remotely. @@ -97,6 +108,8 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem const resolvedWorkerOptions = { ...options, dbFilename: this.options.identifier!, + // TODO + temporaryStorage: TemporaryStorageOption.MEMORY, flags: resolveWebSQLFlags(options.flags) }; @@ -131,18 +144,10 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem * sync worker. */ const { crudUploadThrottleMs, identifier, retryDelayMs } = this.options; - - const dbWorker = options.database?.options?.worker; - - const dbOpenerPort = - typeof dbWorker === 'function' - ? (resolveWorkerDatabasePortFactory(() => dbWorker(resolvedWorkerOptions)) as MessagePort) - : (openWorkerDatabasePort(this.options.identifier!, true, dbWorker) as MessagePort); - const flags = { ...this.webOptions.flags, workers: undefined }; - this.isInitialized = this.syncManager.init(Comlink.transfer(dbOpenerPort, [dbOpenerPort]), { - dbName: this.options.identifier!, + this.isInitialized = this.syncManager.setParams({ + dbParams: this.dbAdapter.getConfiguration(), streamOptions: { crudUploadThrottleMs, identifier, @@ -154,9 +159,13 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem /** * Pass along any sync status updates to this listener */ - this.clientProvider = new SharedSyncClientProvider(this.webOptions, (status) => { - this.iterateListeners((l) => this.updateSyncStatus(status)); - }); + this.clientProvider = new SharedSyncClientProvider( + this.webOptions, + (status) => { + this.iterateListeners((l) => this.updateSyncStatus(status)); + }, + options.db + ); /** * The sync worker will call this client provider when it needs @@ -214,6 +223,7 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem * Used in tests to force a connection states */ private async _testUpdateStatus(status: SyncStatus) { + await this.isInitialized; return (this.syncManager as any)['_testUpdateAllStatuses'](status.toJSON()); } } diff --git a/packages/web/src/db/sync/WebStreamingSyncImplementation.ts b/packages/web/src/db/sync/WebStreamingSyncImplementation.ts index c28958cfe..05d60f0a2 100644 --- a/packages/web/src/db/sync/WebStreamingSyncImplementation.ts +++ b/packages/web/src/db/sync/WebStreamingSyncImplementation.ts @@ -4,17 +4,11 @@ import { LockOptions, LockType } from '@powersync/common'; -import { ResolvedWebSQLOpenOptions, WebSQLFlags } from '../adapters/web-sql-flags'; import { getNavigatorLocks } from '../../shared/navigator'; +import { ResolvedWebSQLOpenOptions, WebSQLFlags } from '../adapters/web-sql-flags'; export interface WebStreamingSyncImplementationOptions extends AbstractStreamingSyncImplementationOptions { flags?: WebSQLFlags; - - database?: { - options: { - worker?: string | URL | ((options: ResolvedWebSQLOpenOptions) => Worker | SharedWorker); - }; - }; sync?: { worker?: string | URL | ((options: ResolvedWebSQLOpenOptions) => SharedWorker); }; diff --git a/packages/web/src/index.ts b/packages/web/src/index.ts index e319731c4..07531f687 100644 --- a/packages/web/src/index.ts +++ b/packages/web/src/index.ts @@ -1,11 +1,12 @@ export * from '@powersync/common'; -export * from './db/PowerSyncDatabase'; -export * from './db/sync/WebRemote'; -export * from './db/sync/WebStreamingSyncImplementation'; -export * from './db/sync/SharedWebStreamingSyncImplementation'; -export * from './db/adapters/wa-sqlite/WASQLiteDBAdapter'; -export * from './db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory'; export * from './db/adapters/AbstractWebPowerSyncDatabaseOpenFactory'; -export * from './db/adapters/web-sql-flags'; export * from './db/adapters/AbstractWebSQLOpenFactory'; +export * from './db/adapters/wa-sqlite/WASQLiteConnection'; +export * from './db/adapters/wa-sqlite/WASQLiteDBAdapter'; export * from './db/adapters/wa-sqlite/WASQLiteOpenFactory'; +export * from './db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory'; +export * from './db/adapters/web-sql-flags'; +export * from './db/PowerSyncDatabase'; +export * from './db/sync/SharedWebStreamingSyncImplementation'; +export * from './db/sync/WebRemote'; +export * from './db/sync/WebStreamingSyncImplementation'; diff --git a/packages/web/src/shared/open-db.ts b/packages/web/src/shared/open-db.ts deleted file mode 100644 index 474a76b1e..000000000 --- a/packages/web/src/shared/open-db.ts +++ /dev/null @@ -1,231 +0,0 @@ -import '@journeyapps/wa-sqlite'; -import * as SQLite from '@journeyapps/wa-sqlite'; -import { BatchedUpdateNotification } from '@powersync/common'; -import { Mutex } from 'async-mutex'; -import * as Comlink from 'comlink'; -import type { DBFunctionsInterface, OnTableChangeCallback, WASQLExecuteResult } from './types'; - -let nextId = 1; - -export async function _openDB( - dbFileName: string, - options: { useWebWorker: boolean } = { useWebWorker: true } -): Promise { - const { default: moduleFactory } = await import('@journeyapps/wa-sqlite/dist/wa-sqlite-async.mjs'); - const module = await moduleFactory(); - const sqlite3 = SQLite.Factory(module); - - /** - * Register the PowerSync core SQLite extension - */ - module.ccall('powersync_init_static', 'int', []); - - const { IDBBatchAtomicVFS } = await import('@journeyapps/wa-sqlite/src/examples/IDBBatchAtomicVFS.js'); - // @ts-expect-error The types for this static method are missing upstream - const vfs = await IDBBatchAtomicVFS.create(dbFileName, module, { lockPolicy: 'exclusive' }); - sqlite3.vfs_register(vfs, true); - - const db = await sqlite3.open_v2(dbFileName); - const statementMutex = new Mutex(); - - /** - * Listeners are exclusive to the DB connection. - */ - const listeners = new Map(); - - let updatedTables = new Set(); - let updateTimer: any = null; - - function fireUpdates() { - updateTimer = null; - const event: BatchedUpdateNotification = { tables: [...updatedTables], groupedUpdates: {}, rawUpdates: [] }; - updatedTables.clear(); - Array.from(listeners.values()).forEach((l) => l(event)); - } - - sqlite3.update_hook(db, (updateType: number, dbName: string | null, tableName: string | null) => { - if (!tableName) { - return; - } - updatedTables.add(tableName); - if (updateTimer == null) { - updateTimer = setTimeout(fireUpdates, 0); - } - }); - - /** - * This executes single SQL statements inside a requested lock. - */ - const execute = async (sql: string | TemplateStringsArray, bindings?: any[]): Promise => { - // Running multiple statements on the same connection concurrently should not be allowed - return _acquireExecuteLock(async () => { - return executeSingleStatement(sql, bindings); - }); - }; - - /** - * This requests a lock for executing statements. - * Should only be used internally. - */ - const _acquireExecuteLock = (callback: () => Promise): Promise => { - return statementMutex.runExclusive(callback); - }; - - /** - * This executes a single statement using SQLite3. - */ - const executeSingleStatement = async ( - sql: string | TemplateStringsArray, - bindings?: any[] - ): Promise => { - const results = []; - for await (const stmt of sqlite3.statements(db, sql as string)) { - let columns; - const wrappedBindings = bindings ? [bindings] : [[]]; - for (const binding of wrappedBindings) { - // TODO not sure why this is needed currently, but booleans break - binding.forEach((b, index, arr) => { - if (typeof b == 'boolean') { - arr[index] = b ? 1 : 0; - } - }); - - sqlite3.reset(stmt); - if (bindings) { - sqlite3.bind_collection(stmt, binding); - } - - const rows = []; - while ((await sqlite3.step(stmt)) === SQLite.SQLITE_ROW) { - const row = sqlite3.row(stmt); - rows.push(row); - } - - columns = columns ?? sqlite3.column_names(stmt); - if (columns.length) { - results.push({ columns, rows }); - } - } - - // When binding parameters, only a single statement is executed. - if (bindings) { - break; - } - } - - const rows: Record[] = []; - for (const resultset of results) { - for (const row of resultset.rows) { - const outRow: Record = {}; - resultset.columns.forEach((key, index) => { - outRow[key] = row[index]; - }); - rows.push(outRow); - } - } - - const result = { - insertId: sqlite3.last_insert_id(db), - rowsAffected: sqlite3.changes(db), - rows: { - _array: rows, - length: rows.length - } - }; - - return result; - }; - - /** - * This executes SQL statements in a batch. - */ - const executeBatch = async (sql: string, bindings?: any[][]): Promise => { - return _acquireExecuteLock(async (): Promise => { - let affectedRows = 0; - - try { - await executeSingleStatement('BEGIN TRANSACTION'); - - const wrappedBindings = bindings ? bindings : []; - for await (const stmt of sqlite3.statements(db, sql)) { - if (stmt === null) { - return { - rowsAffected: 0, - rows: { _array: [], length: 0 } - }; - } - - //Prepare statement once - for (const binding of wrappedBindings) { - // TODO not sure why this is needed currently, but booleans break - for (let i = 0; i < binding.length; i++) { - const b = binding[i]; - if (typeof b == 'boolean') { - binding[i] = b ? 1 : 0; - } - } - - if (bindings) { - sqlite3.bind_collection(stmt, binding); - } - const result = await sqlite3.step(stmt); - if (result === SQLite.SQLITE_DONE) { - //The value returned by sqlite3_changes() immediately after an INSERT, UPDATE or DELETE statement run on a view is always zero. - affectedRows += sqlite3.changes(db); - } - - sqlite3.reset(stmt); - } - } - - await executeSingleStatement('COMMIT'); - } catch (err) { - await executeSingleStatement('ROLLBACK'); - return { - rowsAffected: 0, - rows: { _array: [], length: 0 } - }; - } - const result = { - rowsAffected: affectedRows, - rows: { _array: [], length: 0 } - }; - - return result; - }); - }; - - if (options.useWebWorker) { - const registerOnTableChange = (callback: OnTableChangeCallback) => { - const id = nextId++; - listeners.set(id, callback); - return Comlink.proxy(() => { - listeners.delete(id); - }); - }; - - return { - execute: Comlink.proxy(execute), - executeBatch: Comlink.proxy(executeBatch), - registerOnTableChange: Comlink.proxy(registerOnTableChange), - close: Comlink.proxy(() => { - sqlite3.close(db); - }) - }; - } - - const registerOnTableChange = (callback: OnTableChangeCallback) => { - const id = nextId++; - listeners.set(id, callback); - return () => { - listeners.delete(id); - }; - }; - - return { - execute: execute, - executeBatch: executeBatch, - registerOnTableChange: registerOnTableChange, - close: () => sqlite3.close(db) - }; -} diff --git a/packages/web/src/shared/types.ts b/packages/web/src/shared/types.ts deleted file mode 100644 index 15a7ba1e1..000000000 --- a/packages/web/src/shared/types.ts +++ /dev/null @@ -1,28 +0,0 @@ -import type { BatchedUpdateNotification, QueryResult } from '@powersync/common'; - -export type WASQLExecuteResult = Omit & { - rows: { - _array: any[]; - length: number; - }; -}; - -export type DBFunctionsInterface = { - // Close is only exposed when used in a single non shared webworker - close?: () => void; - execute: WASQLiteExecuteMethod; - executeBatch: WASQLiteExecuteBatchMethod; - registerOnTableChange: (callback: OnTableChangeCallback) => void; -}; - -/** - * @deprecated use [DBFunctionsInterface instead] - */ -export type DBWorkerInterface = DBFunctionsInterface; - -export type WASQLiteExecuteMethod = (sql: string, params?: any[]) => Promise; -export type WASQLiteExecuteBatchMethod = (sql: string, params?: any[]) => Promise; -export type OnTableChangeCallback = (event: BatchedUpdateNotification) => void; -export type OpenDB = (dbFileName: string) => DBWorkerInterface; - -export type SQLBatchTuple = [string] | [string, Array | Array>]; diff --git a/packages/web/src/worker/db/WASQLiteDB.worker.ts b/packages/web/src/worker/db/WASQLiteDB.worker.ts index e018fd283..5e2e169a8 100644 --- a/packages/web/src/worker/db/WASQLiteDB.worker.ts +++ b/packages/web/src/worker/db/WASQLiteDB.worker.ts @@ -4,8 +4,9 @@ import '@journeyapps/wa-sqlite'; import * as Comlink from 'comlink'; -import { _openDB } from '../../shared/open-db'; -import type { DBFunctionsInterface } from '../../shared/types'; +import { AsyncDatabaseConnection } from '../../db/adapters/AsyncDatabaseConnection'; +import { WASqliteConnection } from '../../db/adapters/wa-sqlite/WASQLiteConnection'; +import { ResolvedWASQLiteOpenFactoryOptions } from '../../db/adapters/wa-sqlite/WASQLiteOpenFactory'; import { getNavigatorLocks } from '../../shared/navigator'; /** @@ -14,7 +15,7 @@ import { getNavigatorLocks } from '../../shared/navigator'; */ type SharedDBWorkerConnection = { clientIds: Set; - db: DBFunctionsInterface; + db: AsyncDatabaseConnection; }; const DBMap = new Map(); @@ -22,35 +23,56 @@ const OPEN_DB_LOCK = 'open-wasqlite-db'; let nextClientId = 1; -const openDBShared = async (dbFileName: string): Promise => { +const openWorkerConnection = async (options: ResolvedWASQLiteOpenFactoryOptions): Promise => { + const connection = new WASqliteConnection(options); + return { + init: Comlink.proxy(() => connection.init()), + getConfig: Comlink.proxy(() => connection.getConfig()), + close: Comlink.proxy(() => connection.close()), + execute: Comlink.proxy(async (sql: string, params?: any[]) => connection.execute(sql, params)), + executeBatch: Comlink.proxy(async (sql: string, params?: any[]) => connection.executeBatch(sql, params)), + registerOnTableChange: Comlink.proxy(async (callback) => { + // Proxy the callback remove function + return Comlink.proxy(await connection.registerOnTableChange(callback)); + }) + }; +}; + +const openDBShared = async (options: ResolvedWASQLiteOpenFactoryOptions): Promise => { // Prevent multiple simultaneous opens from causing race conditions return getNavigatorLocks().request(OPEN_DB_LOCK, async () => { const clientId = nextClientId++; - - if (!DBMap.has(dbFileName)) { + const { dbFilename } = options; + if (!DBMap.has(dbFilename)) { const clientIds = new Set(); - const connection = await _openDB(dbFileName); - DBMap.set(dbFileName, { + const connection = await openWorkerConnection(options); + await connection.init(); + DBMap.set(dbFilename, { clientIds, db: connection }); } - const dbEntry = DBMap.get(dbFileName)!; + const dbEntry = DBMap.get(dbFilename)!; dbEntry.clientIds.add(clientId); const { db } = dbEntry; const wrappedConnection = { ...db, + init: Comlink.proxy(() => { + // the init has been done automatically + }), close: Comlink.proxy(() => { const { clientIds } = dbEntry; + console.debug(`Close requested from client ${clientId} of ${[...clientIds]}`); clientIds.delete(clientId); if (clientIds.size == 0) { - console.debug(`Closing connection to ${dbFileName}.`); - DBMap.delete(dbFileName); + console.debug(`Closing connection to ${dbFilename}.`); + DBMap.delete(dbFilename); return db.close?.(); } - console.debug(`Connection to ${dbFileName} not closed yet due to active clients.`); + console.debug(`Connection to ${dbFilename} not closed yet due to active clients.`); + return; }) }; @@ -58,11 +80,6 @@ const openDBShared = async (dbFileName: string): Promise = }); }; -const openDBDedicated = async (dbFileName: string): Promise => { - const connection = await _openDB(dbFileName); - return Comlink.proxy(connection); -}; - // Check if we're in a SharedWorker context if (typeof SharedWorkerGlobalScope !== 'undefined') { const _self: SharedWorkerGlobalScope = self as any; @@ -71,13 +88,14 @@ if (typeof SharedWorkerGlobalScope !== 'undefined') { console.debug('Exposing shared db on port', port); Comlink.expose(openDBShared, port); }; - - addEventListener('unload', () => { - Array.from(DBMap.values()).forEach(async (dbConnection) => { - const db = await dbConnection.db; - db.close?.(); - }); - }); } else { - Comlink.expose(openDBDedicated); + // A dedicated worker can be shared externally + Comlink.expose(openDBShared); } + +addEventListener('unload', () => { + Array.from(DBMap.values()).forEach(async (dbConnection) => { + const { db } = dbConnection; + db.close?.(); + }); +}); diff --git a/packages/web/src/worker/db/open-worker-database.ts b/packages/web/src/worker/db/open-worker-database.ts index f16927ea4..3acc3713d 100644 --- a/packages/web/src/worker/db/open-worker-database.ts +++ b/packages/web/src/worker/db/open-worker-database.ts @@ -1,12 +1,20 @@ import * as Comlink from 'comlink'; -import type { OpenDB } from '../../shared/types'; +import { OpenAsyncDatabaseConnection } from '../..//db/adapters/AsyncDatabaseConnection'; +import { WASQLiteVFS } from '../../db/adapters/wa-sqlite/WASQLiteConnection'; /** * Opens a shared or dedicated worker which exposes opening of database connections */ -export function openWorkerDatabasePort(workerIdentifier: string, multipleTabs = true, worker: string | URL = '') { +export function openWorkerDatabasePort( + workerIdentifier: string, + multipleTabs = true, + worker: string | URL = '', + vfs?: WASQLiteVFS +) { + const needsDedicated = vfs == WASQLiteVFS.AccessHandlePoolVFS || vfs == WASQLiteVFS.OPFSCoopSyncVFS; + if (worker) { - return multipleTabs + return !needsDedicated && multipleTabs ? new SharedWorker(`${worker}`, { /* @vite-ignore */ name: `shared-DB-worker-${workerIdentifier}` @@ -22,7 +30,7 @@ export function openWorkerDatabasePort(workerIdentifier: string, multipleTabs = * This enables multi tab support by default, but falls back if SharedWorker is not available * (in the case of Android) */ - return multipleTabs + return !needsDedicated && multipleTabs ? new SharedWorker(new URL('./WASQLiteDB.worker.js', import.meta.url), { /* @vite-ignore */ name: `shared-DB-worker-${workerIdentifier}`, @@ -41,7 +49,7 @@ export function openWorkerDatabasePort(workerIdentifier: string, multipleTabs = * a worker. */ export function getWorkerDatabaseOpener(workerIdentifier: string, multipleTabs = true, worker: string | URL = '') { - return Comlink.wrap(openWorkerDatabasePort(workerIdentifier, multipleTabs, worker)); + return Comlink.wrap(openWorkerDatabasePort(workerIdentifier, multipleTabs, worker)); } export function resolveWorkerDatabasePortFactory(worker: () => Worker | SharedWorker) { diff --git a/packages/web/src/worker/sync/AbstractSharedSyncClientProvider.ts b/packages/web/src/worker/sync/AbstractSharedSyncClientProvider.ts index d909119c0..2713f13f8 100644 --- a/packages/web/src/worker/sync/AbstractSharedSyncClientProvider.ts +++ b/packages/web/src/worker/sync/AbstractSharedSyncClientProvider.ts @@ -7,6 +7,7 @@ export abstract class AbstractSharedSyncClientProvider { abstract fetchCredentials(): Promise; abstract uploadCrud(): Promise; abstract statusChanged(status: SyncStatusOptions): void; + abstract getDBWorkerPort(): Promise; abstract trace(...x: any[]): void; abstract debug(...x: any[]): void; diff --git a/packages/web/src/worker/sync/SharedSyncImplementation.ts b/packages/web/src/worker/sync/SharedSyncImplementation.ts index effbe4778..2cce5f9cc 100644 --- a/packages/web/src/worker/sync/SharedSyncImplementation.ts +++ b/packages/web/src/worker/sync/SharedSyncImplementation.ts @@ -20,10 +20,13 @@ import { WebStreamingSyncImplementationOptions } from '../../db/sync/WebStreamingSyncImplementation'; -import { WASQLiteDBAdapter } from '../../db/adapters/wa-sqlite/WASQLiteDBAdapter'; +import { OpenAsyncDatabaseConnection } from '../../db/adapters/AsyncDatabaseConnection'; +import { LockedAsyncDatabaseAdapter } from '../../db/adapters/LockedAsyncDatabaseAdapter'; +import { ResolvedWebSQLOpenOptions } from '../../db/adapters/web-sql-flags'; +import { WorkerWrappedAsyncDatabaseConnection } from '../../db/adapters/WorkerWrappedAsyncDatabaseConnection'; +import { getNavigatorLocks } from '../../shared/navigator'; import { AbstractSharedSyncClientProvider } from './AbstractSharedSyncClientProvider'; import { BroadcastLogger } from './BroadcastLogger'; -import { getNavigatorLocks } from '../../shared/navigator'; /** * Manual message events for shared sync clients @@ -41,26 +44,40 @@ export type ManualSharedSyncPayload = { data: any; // TODO update in future }; +/** + * @internal + */ export type SharedSyncInitOptions = { - dbName: string; streamOptions: Omit; + dbParams: ResolvedWebSQLOpenOptions; }; +/** + * @internal + */ export interface SharedSyncImplementationListener extends StreamingSyncImplementationListener { initialized: () => void; } +/** + * @internal + */ export type WrappedSyncPort = { port: MessagePort; clientProvider: Comlink.Remote; + db?: DBAdapter; }; +/** + * @internal + */ export type RemoteOperationAbortController = { controller: AbortController; activePort: WrappedSyncPort; }; /** + * @internal * Shared sync implementation which runs inside a shared webworker */ export class SharedSyncImplementation @@ -79,6 +96,7 @@ export class SharedSyncImplementation protected dbAdapter: DBAdapter | null; protected syncParams: SharedSyncInitOptions | null; protected logger: ILogger; + protected lastConnectOptions: PowerSyncConnectionOptions | undefined; syncStatus: SyncStatus; broadCastLogger: ILogger; @@ -90,6 +108,7 @@ export class SharedSyncImplementation this.syncParams = null; this.syncStreamClient = null; this.logger = Logger.get('shared-sync'); + this.lastConnectOptions = undefined; this.isInitialized = new Promise((resolve) => { const callback = this.registerListener({ @@ -124,19 +143,12 @@ export class SharedSyncImplementation /** * Configures the DBAdapter connection and a streaming sync client. */ - async init(dbWorkerPort: MessagePort, params: SharedSyncInitOptions) { - if (this.dbAdapter) { + async setParams(params: SharedSyncInitOptions) { + if (this.syncParams) { // Cannot modify already existing sync implementation return; } - this.dbAdapter = new WASQLiteDBAdapter({ - dbFilename: params.dbName, - workerPort: dbWorkerPort, - flags: { enableMultiTabs: true, useWebWorker: true }, - logger: this.logger - }); - this.syncParams = params; if (params.streamOptions?.flags?.broadcastLogs) { @@ -148,6 +160,7 @@ export class SharedSyncImplementation this.logger.error('Uncaught exception in PowerSync shared sync worker', event); }; + await this.openInternalDB(); this.iterateListeners((l) => l.initialized?.()); } @@ -168,7 +181,7 @@ export class SharedSyncImplementation // This effectively queues connect and disconnect calls. Ensuring multiple tabs' requests are synchronized return getNavigatorLocks().request('shared-sync-connect', async () => { this.syncStreamClient = this.generateStreamingImplementation(); - + this.lastConnectOptions = options; this.syncStreamClient.registerListener({ statusChanged: (status) => { this.updateAllStatuses(status.toJSON()); @@ -210,7 +223,7 @@ export class SharedSyncImplementation * Removes a message port client from this manager's managed * clients. */ - removePort(port: MessagePort) { + async removePort(port: MessagePort) { const index = this.ports.findIndex((p) => p.port == port); if (index < 0) { console.warn(`Could not remove port ${port} since it is not present in active ports.`); @@ -218,6 +231,10 @@ export class SharedSyncImplementation } const trackedPort = this.ports[index]; + if (trackedPort.db) { + trackedPort.db.close(); + } + // Release proxy trackedPort.clientProvider[Comlink.releaseProxy](); this.ports.splice(index, 1); @@ -231,6 +248,13 @@ export class SharedSyncImplementation abortController!.controller.abort(new AbortOperation('Closing pending requests after client port is removed')); } }); + + if (this.dbAdapter == trackedPort.db && this.syncStreamClient) { + await this.disconnect(); + // Ask for a new DB worker port handler + await this.openInternalDB(); + await this.connect(this.lastConnectOptions); + } } triggerCrudUpload() { @@ -308,6 +332,27 @@ export class SharedSyncImplementation }); } + protected async openInternalDB() { + const lastClient = this.ports[this.ports.length - 1]; + const workerPort = await lastClient.clientProvider.getDBWorkerPort(); + const remote = Comlink.wrap(workerPort); + const identifier = this.syncParams!.dbParams.dbFilename; + const db = await remote(this.syncParams!.dbParams); + const locked = new LockedAsyncDatabaseAdapter({ + name: identifier, + openConnection: async () => { + return new WorkerWrappedAsyncDatabaseConnection({ + remote, + baseConnection: db, + identifier + }); + }, + logger: this.logger + }); + await locked.init(); + this.dbAdapter = lastClient.db = locked; + } + /** * A method to update the all shared statuses for each * client. diff --git a/packages/web/tests/multiple_instances.test.ts b/packages/web/tests/multiple_instances.test.ts index c0501ed4b..466a8f679 100644 --- a/packages/web/tests/multiple_instances.test.ts +++ b/packages/web/tests/multiple_instances.test.ts @@ -2,12 +2,13 @@ import { AbstractPowerSyncDatabase, SqliteBucketStorage, SyncStatus } from '@pow import { PowerSyncDatabase, SharedWebStreamingSyncImplementation, - WebRemote, - WebStreamingSyncImplementationOptions + SharedWebStreamingSyncImplementationOptions, + WebRemote } from '@powersync/web'; import { Mutex } from 'async-mutex'; import Logger from 'js-logger'; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'; +import { WebDBAdapter } from '../src/db/adapters/WebDBAdapter'; import { TestConnector } from './utils/MockStreamOpenFactory'; import { testSchema } from './utils/testDb'; @@ -25,8 +26,9 @@ describe('Multiple Instances', () => { beforeAll(() => Logger.useDefaults()); - beforeEach(() => { + beforeEach(async () => { db = openDatabase(); + await db.init(); }); afterEach(async () => { @@ -126,26 +128,28 @@ describe('Multiple Instances', () => { // They need to use the same identifier to use the same shared worker. const identifier = 'streaming-sync-shared'; - const syncOptions1: WebStreamingSyncImplementationOptions = { + const syncOptions1: SharedWebStreamingSyncImplementationOptions = { adapter: new SqliteBucketStorage(db.database, new Mutex()), remote: new WebRemote(connector1), uploadCrud: async () => { await connector1.uploadData(db); }, - identifier + identifier, + db: db.database as WebDBAdapter }; const stream1 = new SharedWebStreamingSyncImplementation(syncOptions1); // Generate the second streaming sync implementation const connector2 = new TestConnector(); - const syncOptions2: WebStreamingSyncImplementationOptions = { + const syncOptions2: SharedWebStreamingSyncImplementationOptions = { adapter: new SqliteBucketStorage(db.database, new Mutex()), remote: new WebRemote(connector1), uploadCrud: async () => { await connector2.uploadData(db); }, - identifier + identifier, + db: db.database as WebDBAdapter }; const stream2 = new SharedWebStreamingSyncImplementation(syncOptions2); @@ -193,6 +197,7 @@ describe('Multiple Instances', () => { triggerUpload1(); connector1.uploadData(db); }, + db: db.database as WebDBAdapter, identifier, retryDelayMs: 100, flags: { @@ -222,7 +227,8 @@ describe('Multiple Instances', () => { retryDelayMs: 100, flags: { broadcastLogs: true - } + }, + db: db.database as WebDBAdapter }); // Waits for the stream to be marked as connected diff --git a/packages/web/tsconfig.json b/packages/web/tsconfig.json index 32cf3822c..20dccf288 100644 --- a/packages/web/tsconfig.json +++ b/packages/web/tsconfig.json @@ -3,9 +3,8 @@ "compilerOptions": { "types": ["vite/client"], "paths": { - "@powersync/web": ["src/index.ts"] + "@powersync/web": ["./src/index.ts"] }, - "baseUrl": "./", "declaration": true /* Generates corresponding '.d.ts' file. */, "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */, "lib": ["DOM", "ESNext", "WebWorker"] /* Specify library files to be included in the compilation. */, diff --git a/packages/web/vitest.config.ts b/packages/web/vitest.config.ts index 57a947fd0..909f16f48 100644 --- a/packages/web/vitest.config.ts +++ b/packages/web/vitest.config.ts @@ -1,9 +1,15 @@ -import wasm from 'vite-plugin-wasm'; -import topLevelAwait from 'vite-plugin-top-level-await'; import path from 'path'; +import topLevelAwait from 'vite-plugin-top-level-await'; +import wasm from 'vite-plugin-wasm'; import { defineConfig, UserConfigExport } from 'vitest/config'; const config: UserConfigExport = { + server: { + headers: { + 'Cross-Origin-Opener-Policy': 'same-origin', + 'Cross-Origin-Embedder-Policy': 'require-corp' + } + }, // This is only needed for local tests to resolve the package name correctly resolve: { alias: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a851a724f..dd33e46f1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -234,16 +234,16 @@ importers: dependencies: '@capacitor/android': specifier: ^6.0.0 - version: 6.1.2(@capacitor/core@7.0.0) + version: 6.1.2(@capacitor/core@7.0.1) '@capacitor/core': specifier: latest - version: 7.0.0 + version: 7.0.1 '@capacitor/ios': specifier: ^6.0.0 - version: 6.1.2(@capacitor/core@7.0.0) + version: 6.1.2(@capacitor/core@7.0.1) '@capacitor/splash-screen': specifier: latest - version: 7.0.0(@capacitor/core@7.0.0) + version: 7.0.0(@capacitor/core@7.0.1) '@journeyapps/wa-sqlite': specifier: ^1.2.0 version: 1.2.0 @@ -527,10 +527,10 @@ importers: devDependencies: '@types/webpack': specifier: ^5.28.5 - version: 5.28.5(webpack-cli@5.1.4(webpack@5.95.0)) + version: 5.28.5(webpack-cli@5.1.4) html-webpack-plugin: specifier: ^5.6.0 - version: 5.6.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(webpack@5.95.0(webpack-cli@5.1.4)) + version: 5.6.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(webpack@5.95.0) serve: specifier: ^14.2.1 version: 14.2.3 @@ -1729,16 +1729,16 @@ importers: devDependencies: '@op-engineering/op-sqlite': specifier: ^11.2.13 - version: 11.2.13(react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.7.2))(react@18.3.1) + version: 11.2.13(react-native@0.75.3(@babel/core@7.25.7)(@babel/preset-env@7.26.0(@babel/core@7.25.7))(@types/react@18.3.11)(encoding@0.1.13)(react@18.3.1)(typescript@5.5.4))(react@18.3.1) '@react-native/eslint-config': specifier: ^0.73.1 - version: 0.73.2(eslint@8.57.1)(prettier@3.3.3)(typescript@5.7.2) + version: 0.73.2(eslint@8.57.1)(prettier@3.3.3)(typescript@5.5.4) '@types/async-lock': specifier: ^1.4.0 version: 1.4.2 '@types/react': specifier: ^18.2.44 - version: 18.3.12 + version: 18.3.11 del-cli: specifier: ^5.1.0 version: 5.1.0 @@ -1759,16 +1759,16 @@ importers: version: 18.3.1 react-native: specifier: 0.75.3 - version: 0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.7.2) + version: 0.75.3(@babel/core@7.25.7)(@babel/preset-env@7.26.0(@babel/core@7.25.7))(@types/react@18.3.11)(encoding@0.1.13)(react@18.3.1)(typescript@5.5.4) react-native-builder-bob: specifier: ^0.30.2 - version: 0.30.3(typescript@5.7.2) + version: 0.30.2(typescript@5.5.4) turbo: specifier: ^1.10.7 version: 1.13.4 typescript: specifier: ^5.2.2 - version: 5.7.2 + version: 5.5.4 packages/react: dependencies: @@ -1924,8 +1924,8 @@ importers: specifier: ^6.6.0 version: 6.8.0 comlink: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^4.4.2 + version: 4.4.2 commander: specifier: ^12.1.0 version: 12.1.0 @@ -1950,13 +1950,13 @@ importers: version: 4.0.1 source-map-loader: specifier: ^5.0.0 - version: 5.0.0(webpack@5.95.0(webpack-cli@5.1.4)) + version: 5.0.0(webpack@5.95.0) stream-browserify: specifier: ^3.0.0 version: 3.0.0 terser-webpack-plugin: specifier: ^5.3.9 - version: 5.3.10(webpack@5.95.0(webpack-cli@5.1.4)) + version: 5.3.10(webpack@5.95.0) typescript: specifier: ^5.5.3 version: 5.5.4 @@ -3535,8 +3535,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-strict-mode@7.25.9': - resolution: {integrity: sha512-DplEwkN9xt6XCz/4oC9l8FJGn7LnOGPU7v08plq+OclMT55zAR9lkX7QIbQ9XscvvJNYpLUfYO4IYz/7JGkbXQ==} + '@babel/plugin-transform-strict-mode@7.25.7': + resolution: {integrity: sha512-3MuPLIHelihgurVrmoZGr0BDMAx2vCdfnRdKs7E3+eZ/aB856yEUpUPo7oOSiPqzQfOlzznYZh7oq1cG4hNh1Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -3743,8 +3743,8 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - '@capacitor/core@7.0.0': - resolution: {integrity: sha512-JMJxPi/tHeOR/I87/P0kc1DUKrj+XfXlYTnNZ8sCp4LA/MPLkTOzpZm3cga7fTY0nWaSqLll2xalrC0psQBfuA==} + '@capacitor/core@7.0.1': + resolution: {integrity: sha512-1Ob9bvA/p8g8aNwK6VesxEekGXowLVf6APjkW4LRnr05H+7z/bke+Q5pn9zqh/GgTbIxAQ/rwZrAZvvxkdm1UA==} '@capacitor/ios@6.1.2': resolution: {integrity: sha512-HaeW68KisBd/7TmavzPDlL2bpoDK5AjR2ZYrqU4TlGwM88GtQfvduBCAlSCj20X0w/4+rWMkseD9dAAkacjiyQ==} @@ -7448,12 +7448,6 @@ packages: cpu: [arm64] os: [darwin] - '@swc/core-darwin-arm64@1.7.26': - resolution: {integrity: sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - '@swc/core-darwin-x64@1.10.1': resolution: {integrity: sha512-L4BNt1fdQ5ZZhAk5qoDfUnXRabDOXKnXBxMDJ+PWLSxOGBbWE6aJTnu4zbGjJvtot0KM46m2LPAPY8ttknqaZA==} engines: {node: '>=10'} @@ -7466,12 +7460,6 @@ packages: cpu: [x64] os: [darwin] - '@swc/core-darwin-x64@1.7.26': - resolution: {integrity: sha512-az3cibZdsay2HNKmc4bjf62QVukuiMRh5sfM5kHR/JMTrLyS6vSw7Ihs3UTkZjUxkLTT8ro54LI6sV6sUQUbLQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.10.1': resolution: {integrity: sha512-Y1u9OqCHgvVp2tYQAJ7hcU9qO5brDMIrA5R31rwWQIAKDkJKtv3IlTHF0hrbWk1wPR0ZdngkQSJZple7G+Grvw==} engines: {node: '>=10'} @@ -7484,12 +7472,6 @@ packages: cpu: [arm] os: [linux] - '@swc/core-linux-arm-gnueabihf@1.7.26': - resolution: {integrity: sha512-VYPFVJDO5zT5U3RpCdHE5v1gz4mmR8BfHecUZTmD2v1JeFY6fv9KArJUpjrHEEsjK/ucXkQFmJ0jaiWXmpOV9Q==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - '@swc/core-linux-arm64-gnu@1.10.1': resolution: {integrity: sha512-tNQHO/UKdtnqjc7o04iRXng1wTUXPgVd8Y6LI4qIbHVoVPwksZydISjMcilKNLKIwOoUQAkxyJ16SlOAeADzhQ==} engines: {node: '>=10'} @@ -7502,12 +7484,6 @@ packages: cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-gnu@1.7.26': - resolution: {integrity: sha512-YKevOV7abpjcAzXrhsl+W48Z9mZvgoVs2eP5nY+uoMAdP2b3GxC0Df1Co0I90o2lkzO4jYBpTMcZlmUXLdXn+Q==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - '@swc/core-linux-arm64-musl@1.10.1': resolution: {integrity: sha512-x0L2Pd9weQ6n8dI1z1Isq00VHFvpBClwQJvrt3NHzmR+1wCT/gcYl1tp9P5xHh3ldM8Cn4UjWCw+7PaUgg8FcQ==} engines: {node: '>=10'} @@ -7520,12 +7496,6 @@ packages: cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.7.26': - resolution: {integrity: sha512-3w8iZICMkQQON0uIcvz7+Q1MPOW6hJ4O5ETjA0LSP/tuKqx30hIniCGOgPDnv3UTMruLUnQbtBwVCZTBKR3Rkg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - '@swc/core-linux-x64-gnu@1.10.1': resolution: {integrity: sha512-yyYEwQcObV3AUsC79rSzN9z6kiWxKAVJ6Ntwq2N9YoZqSPYph+4/Am5fM1xEQYf/kb99csj0FgOelomJSobxQA==} engines: {node: '>=10'} @@ -7538,12 +7508,6 @@ packages: cpu: [x64] os: [linux] - '@swc/core-linux-x64-gnu@1.7.26': - resolution: {integrity: sha512-c+pp9Zkk2lqb06bNGkR2Looxrs7FtGDMA4/aHjZcCqATgp348hOKH5WPvNLBl+yPrISuWjbKDVn3NgAvfvpH4w==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - '@swc/core-linux-x64-musl@1.10.1': resolution: {integrity: sha512-tcaS43Ydd7Fk7sW5ROpaf2Kq1zR+sI5K0RM+0qYLYYurvsJruj3GhBCaiN3gkzd8m/8wkqNqtVklWaQYSDsyqA==} engines: {node: '>=10'} @@ -7556,12 +7520,6 @@ packages: cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.7.26': - resolution: {integrity: sha512-PgtyfHBF6xG87dUSSdTJHwZ3/8vWZfNIXQV2GlwEpslrOkGqy+WaiiyE7Of7z9AvDILfBBBcJvJ/r8u980wAfQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - '@swc/core-win32-arm64-msvc@1.10.1': resolution: {integrity: sha512-D3Qo1voA7AkbOzQ2UGuKNHfYGKL6eejN8VWOoQYtGHHQi1p5KK/Q7V1ku55oxXBsj79Ny5FRMqiRJpVGad7bjQ==} engines: {node: '>=10'} @@ -7574,12 +7532,6 @@ packages: cpu: [arm64] os: [win32] - '@swc/core-win32-arm64-msvc@1.7.26': - resolution: {integrity: sha512-9TNXPIJqFynlAOrRD6tUQjMq7KApSklK3R/tXgIxc7Qx+lWu8hlDQ/kVPLpU7PWvMMwC/3hKBW+p5f+Tms1hmA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - '@swc/core-win32-ia32-msvc@1.10.1': resolution: {integrity: sha512-WalYdFoU3454Og+sDKHM1MrjvxUGwA2oralknXkXL8S0I/8RkWZOB++p3pLaGbTvOO++T+6znFbQdR8KRaa7DA==} engines: {node: '>=10'} @@ -7592,12 +7544,6 @@ packages: cpu: [ia32] os: [win32] - '@swc/core-win32-ia32-msvc@1.7.26': - resolution: {integrity: sha512-9YngxNcG3177GYdsTum4V98Re+TlCeJEP4kEwEg9EagT5s3YejYdKwVAkAsJszzkXuyRDdnHUpYbTrPG6FiXrQ==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - '@swc/core-win32-x64-msvc@1.10.1': resolution: {integrity: sha512-JWobfQDbTnoqaIwPKQ3DVSywihVXlQMbDuwik/dDWlj33A8oEHcjPOGs4OqcA3RHv24i+lfCQpM3Mn4FAMfacA==} engines: {node: '>=10'} @@ -7610,12 +7556,6 @@ packages: cpu: [x64] os: [win32] - '@swc/core-win32-x64-msvc@1.7.26': - resolution: {integrity: sha512-VR+hzg9XqucgLjXxA13MtV5O3C0bK0ywtLIBw/+a+O+Oc6mxFWHtdUeXDbIi5AiPbn0fjgVJMqYnyjGyyX8u0w==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - '@swc/core@1.10.1': resolution: {integrity: sha512-rQ4dS6GAdmtzKiCRt3LFVxl37FaY1cgL9kSUTnhQ2xc3fmHOd7jdJK/V4pSZMG1ruGTd0bsi34O2R0Olg9Zo/w==} engines: {node: '>=10'} @@ -7634,15 +7574,6 @@ packages: '@swc/helpers': optional: true - '@swc/core@1.7.26': - resolution: {integrity: sha512-f5uYFf+TmMQyYIoxkn/evWhNGuUzC730dFwAKGwBVHHVoPyak1/GvJUm6i1SKl+2Hrj9oN0i3WSoWWZ4pgI8lw==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': '*' - peerDependenciesMeta: - '@swc/helpers': - optional: true - '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} @@ -10387,8 +10318,8 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} - comlink@4.4.1: - resolution: {integrity: sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==} + comlink@4.4.2: + resolution: {integrity: sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==} comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -16672,8 +16603,8 @@ packages: react-loadable: '*' webpack: '>=4.41.1 || 5.x' - react-native-builder-bob@0.30.3: - resolution: {integrity: sha512-7w+oNNNkY+cR7Z3GgKaDWg7CeSxpv1ZUox42Ji/rViAxygMmtSPBe5I3K723OjGJXhvJCyUK5RRvzefNPw7Amg==} + react-native-builder-bob@0.30.2: + resolution: {integrity: sha512-tkBlzQw+h96YVQbU7GVbSReYNj00IJzIsStrdXCyq3Z2kjpNcG8V0w8HhvOSDsX0SRVvqorzqpbUFeqg57XXDA==} engines: {node: '>= 18.0.0'} hasBin: true @@ -20237,7 +20168,7 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1802.7(chokidar@3.6.0) - '@angular-devkit/build-webpack': 0.1802.7(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) + '@angular-devkit/build-webpack': 0.1802.7(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) '@angular-devkit/core': 18.2.7(chokidar@3.6.0) '@angular/build': 18.2.7(@angular/compiler-cli@18.2.7(@angular/compiler@18.2.7(@angular/core@18.2.7(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.5.4))(@angular/service-worker@18.2.7(@angular/common@18.2.7(@angular/core@18.2.7(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.7(rxjs@7.8.1)(zone.js@0.14.10)))(@types/node@22.7.4)(chokidar@3.6.0)(less@4.2.0)(lightningcss@1.28.2)(postcss@8.4.41)(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.5))(@types/node@22.7.4)(typescript@5.5.4)))(terser@5.31.6)(typescript@5.5.4) '@angular/compiler-cli': 18.2.7(@angular/compiler@18.2.7(@angular/core@18.2.7(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.5.4) @@ -20251,15 +20182,15 @@ snapshots: '@babel/preset-env': 7.25.3(@babel/core@7.25.2) '@babel/runtime': 7.25.0 '@discoveryjs/json-ext': 0.6.1 - '@ngtools/webpack': 18.2.7(@angular/compiler-cli@18.2.7(@angular/compiler@18.2.7(@angular/core@18.2.7(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.5.4))(typescript@5.5.4)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) + '@ngtools/webpack': 18.2.7(@angular/compiler-cli@18.2.7(@angular/compiler@18.2.7(@angular/core@18.2.7(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.5.4))(typescript@5.5.4)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.4.6(@types/node@22.7.4)(less@4.2.0)(lightningcss@1.28.2)(sass@1.77.6)(terser@5.31.6)) ansi-colors: 4.1.3 autoprefixer: 10.4.20(postcss@8.4.41) - babel-loader: 9.1.3(@babel/core@7.25.2)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) + babel-loader: 9.1.3(@babel/core@7.25.2)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) browserslist: 4.24.0 - copy-webpack-plugin: 12.0.2(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) + copy-webpack-plugin: 12.0.2(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) critters: 0.0.24 - css-loader: 7.1.2(@rspack/core@1.1.8(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) + css-loader: 7.1.2(@rspack/core@1.1.8(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) esbuild-wasm: 0.23.0 fast-glob: 3.3.2 http-proxy-middleware: 3.0.0 @@ -20268,11 +20199,11 @@ snapshots: jsonc-parser: 3.3.1 karma-source-map-support: 1.4.0 less: 4.2.0 - less-loader: 12.2.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(less@4.2.0)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) - license-webpack-plugin: 4.0.2(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) + less-loader: 12.2.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(less@4.2.0)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) + license-webpack-plugin: 4.0.2(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) loader-utils: 3.3.1 magic-string: 0.30.11 - mini-css-extract-plugin: 2.9.0(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) + mini-css-extract-plugin: 2.9.0(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) mrmime: 2.0.0 open: 10.1.0 ora: 5.4.1 @@ -20280,13 +20211,13 @@ snapshots: picomatch: 4.0.2 piscina: 4.6.1 postcss: 8.4.41 - postcss-loader: 8.1.1(@rspack/core@1.1.8(@swc/helpers@0.5.5))(postcss@8.4.41)(typescript@5.5.4)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) + postcss-loader: 8.1.1(@rspack/core@1.1.8(@swc/helpers@0.5.5))(postcss@8.4.41)(typescript@5.5.4)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) resolve-url-loader: 5.0.0 rxjs: 7.8.1 sass: 1.77.6 - sass-loader: 16.0.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(sass@1.77.6)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) + sass-loader: 16.0.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(sass@1.77.6)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) semver: 7.6.3 - source-map-loader: 5.0.0(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) + source-map-loader: 5.0.0(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) source-map-support: 0.5.21 terser: 5.31.6 tree-kill: 1.2.2 @@ -20295,10 +20226,10 @@ snapshots: vite: 5.4.6(@types/node@22.7.4)(less@4.2.0)(lightningcss@1.28.2)(sass@1.77.6)(terser@5.31.6) watchpack: 2.4.1 webpack: 5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0) - webpack-dev-middleware: 7.4.2(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) - webpack-dev-server: 5.0.4(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) + webpack-dev-middleware: 7.4.2(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) + webpack-dev-server: 5.0.4(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) webpack-merge: 6.0.1 - webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) + webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) optionalDependencies: '@angular/service-worker': 18.2.7(@angular/common@18.2.7(@angular/core@18.2.7(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.7(rxjs@7.8.1)(zone.js@0.14.10)) esbuild: 0.23.0 @@ -20321,12 +20252,12 @@ snapshots: - utf-8-validate - webpack-cli - '@angular-devkit/build-webpack@0.1802.7(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0))': + '@angular-devkit/build-webpack@0.1802.7(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5)))': dependencies: '@angular-devkit/architect': 0.1802.7(chokidar@3.6.0) rxjs: 7.8.1 webpack: 5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0) - webpack-dev-server: 5.0.4(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) + webpack-dev-server: 5.0.4(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) transitivePeerDependencies: - chokidar @@ -20610,9 +20541,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.25.8(@babel/core@7.24.5)(eslint@8.57.1)': + '@babel/eslint-parser@7.25.8(@babel/core@7.25.7)(eslint@8.57.1)': dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.25.7 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 8.57.1 eslint-visitor-keys: 2.1.0 @@ -20709,6 +20640,19 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-create-class-features-plugin@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-member-expression-to-functions': 7.25.7 + '@babel/helper-optimise-call-expression': 7.25.7 + '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/traverse': 7.25.7 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/helper-create-class-features-plugin@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -20735,6 +20679,19 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.25.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.26.4 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -20762,6 +20719,13 @@ snapshots: regexpu-core: 6.1.1 semver: 6.3.1 + '@babel/helper-create-regexp-features-plugin@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-annotate-as-pure': 7.25.7 + regexpu-core: 6.1.1 + semver: 6.3.1 + '@babel/helper-create-regexp-features-plugin@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -20776,6 +20740,13 @@ snapshots: regexpu-core: 6.2.0 semver: 6.3.1 + '@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.2.0 + semver: 6.3.1 + '@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -20805,6 +20776,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + debug: 4.3.7(supports-color@8.1.1) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -20818,12 +20800,12 @@ snapshots: '@babel/helper-environment-visitor@7.24.7': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.25.7 '@babel/helper-member-expression-to-functions@7.25.7': dependencies: '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/types': 7.25.7 transitivePeerDependencies: - supports-color @@ -20897,6 +20879,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.26.0(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -20908,7 +20899,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.25.7': dependencies: - '@babel/types': 7.26.3 + '@babel/types': 7.25.7 '@babel/helper-optimise-call-expression@7.25.9': dependencies: @@ -20936,6 +20927,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-remap-async-to-generator@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-wrap-function': 7.25.7 + '@babel/traverse': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-remap-async-to-generator@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -20954,6 +20954,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -20981,6 +20990,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-replace-supers@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-member-expression-to-functions': 7.25.7 + '@babel/helper-optimise-call-expression': 7.25.7 + '@babel/traverse': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-replace-supers@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -20999,6 +21017,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-replace-supers@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21102,6 +21129,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/traverse': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21118,6 +21153,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21136,6 +21179,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21146,6 +21194,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21161,6 +21214,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21171,6 +21229,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21194,6 +21257,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/plugin-transform-optional-chaining': 7.25.7(@babel/core@7.25.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21212,6 +21284,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.25.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21237,6 +21318,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/traverse': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21253,6 +21342,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21289,6 +21386,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21321,6 +21426,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-syntax-export-default-from': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-proposal-export-default-from@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-export-default-from': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-proposal-export-default-from@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21345,6 +21456,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21372,6 +21489,15 @@ snapshots: '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.7)': + dependencies: + '@babel/compat-data': 7.25.7 + '@babel/core': 7.25.7 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.26.0)': dependencies: '@babel/compat-data': 7.25.7 @@ -21402,6 +21528,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21419,6 +21554,10 @@ snapshots: dependencies: '@babel/core': 7.25.2 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21433,6 +21572,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21448,6 +21592,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21463,6 +21612,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21488,6 +21642,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21498,6 +21657,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-export-default-from@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-export-default-from@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21513,6 +21677,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21523,6 +21692,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-flow@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-flow@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21538,6 +21712,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-import-assertions@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-import-assertions@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21548,6 +21727,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21568,6 +21752,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-import-attributes@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-import-attributes@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21578,6 +21767,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21593,6 +21787,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21608,6 +21807,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21633,6 +21837,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21648,6 +21857,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21663,6 +21877,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21678,6 +21897,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21693,6 +21917,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21708,6 +21937,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21723,6 +21957,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21738,6 +21977,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21753,6 +21997,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21761,12 +22010,17 @@ snapshots: '@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.25.7 + + '@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.24.5)': dependencies: @@ -21790,6 +22044,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21806,6 +22066,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-arrow-functions@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-arrow-functions@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21816,6 +22081,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21841,6 +22111,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-generator-functions@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.7) + '@babel/traverse': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-async-generator-functions@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21860,6 +22140,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.25.7) + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21887,6 +22176,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-to-generator@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-module-imports': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.25.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-async-to-generator@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21905,6 +22203,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.25.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21924,6 +22231,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-block-scoped-functions@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-block-scoped-functions@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21934,6 +22246,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21949,6 +22266,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-block-scoping@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-block-scoping@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21959,6 +22281,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21980,6 +22307,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-class-properties@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-class-properties@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -21996,6 +22331,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22022,6 +22365,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-class-static-block@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-class-static-block@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22039,6 +22391,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22071,6 +22431,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-classes@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.7) + '@babel/traverse': 7.25.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-classes@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22095,6 +22467,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.25.7) + '@babel/traverse': 7.26.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22119,6 +22503,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 '@babel/template': 7.25.7 + '@babel/plugin-transform-computed-properties@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/template': 7.25.7 + '@babel/plugin-transform-computed-properties@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22131,6 +22521,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.9 '@babel/template': 7.25.9 + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.25.9 + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22147,6 +22543,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-destructuring@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-destructuring@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22157,6 +22558,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22174,6 +22580,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-dotall-regex@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-dotall-regex@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22186,6 +22598,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.24.5) '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22202,6 +22620,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-duplicate-keys@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-duplicate-keys@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22212,6 +22635,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22229,6 +22657,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22241,6 +22675,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.24.5) '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22259,6 +22699,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-dynamic-import@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-transform-dynamic-import@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22270,6 +22716,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22291,6 +22742,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-exponentiation-operator@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-exponentiation-operator@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22304,6 +22763,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22321,6 +22785,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-export-namespace-from@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-transform-export-namespace-from@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22332,6 +22802,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22343,6 +22818,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-flow-strip-types@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-flow-strip-types@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22365,6 +22846,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-for-of@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-for-of@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22381,6 +22870,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22407,6 +22904,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-function-name@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/traverse': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-function-name@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22425,6 +22931,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22446,6 +22961,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-json-strings@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-transform-json-strings@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22457,6 +22978,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22472,6 +22998,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-literals@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-literals@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22482,6 +23013,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22499,6 +23035,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-transform-logical-assignment-operators@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.7) + '@babel/plugin-transform-logical-assignment-operators@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22510,6 +23052,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22525,6 +23072,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-member-expression-literals@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-member-expression-literals@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22535,6 +23087,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22556,6 +23113,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-amd@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-modules-amd@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22572,6 +23137,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22598,6 +23171,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-simple-access': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22615,6 +23197,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22643,6 +23233,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-systemjs@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 + '@babel/traverse': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-modules-systemjs@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22663,6 +23263,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22689,6 +23299,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-umd@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-modules-umd@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22705,6 +23323,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22725,6 +23351,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-named-capturing-groups-regex@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-named-capturing-groups-regex@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22737,6 +23369,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.24.5) '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22753,6 +23391,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-new-target@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-new-target@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22763,6 +23406,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22780,6 +23428,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-nullish-coalescing-operator@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-transform-nullish-coalescing-operator@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22791,6 +23445,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22808,6 +23467,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-transform-numeric-separator@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.7) + '@babel/plugin-transform-numeric-separator@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22819,6 +23484,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22840,6 +23510,14 @@ snapshots: '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.2) + '@babel/plugin-transform-object-rest-spread@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-object-rest-spread@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22855,6 +23533,13 @@ snapshots: '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.24.5) + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22878,6 +23563,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-object-super@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-object-super@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22894,6 +23587,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.25.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22914,6 +23615,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-optional-catch-binding@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-transform-optional-catch-binding@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22925,6 +23632,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22948,6 +23660,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-optional-chaining@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-optional-chaining@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22965,6 +23686,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22983,6 +23712,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-parameters@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-parameters@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -22993,6 +23727,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23014,6 +23753,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-private-methods@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-private-methods@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23030,6 +23777,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23058,6 +23813,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-private-property-in-object@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-private-property-in-object@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23077,6 +23842,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23096,6 +23870,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-property-literals@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-property-literals@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23106,6 +23885,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23121,6 +23905,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-react-display-name@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-react-display-name@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23131,6 +23920,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23143,6 +23937,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-react-jsx-development@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-react-jsx-development@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23238,6 +24039,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.25.7) + '@babel/types': 7.26.3 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23255,6 +24067,12 @@ snapshots: '@babel/helper-annotate-as-pure': 7.25.7 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-react-pure-annotations@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-react-pure-annotations@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23285,6 +24103,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.7 regenerator-transform: 0.15.2 + '@babel/plugin-transform-regenerator@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + regenerator-transform: 0.15.2 + '@babel/plugin-transform-regenerator@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23297,6 +24121,12 @@ snapshots: '@babel/helper-plugin-utils': 7.25.9 regenerator-transform: 0.15.2 + '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + regenerator-transform: 0.15.2 + '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23309,6 +24139,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.24.5) '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23325,6 +24161,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-reserved-words@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-reserved-words@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23335,6 +24176,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23388,6 +24234,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-runtime@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.7) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.7) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.7) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-runtime@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23410,6 +24268,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-shorthand-properties@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-shorthand-properties@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23420,6 +24283,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23441,6 +24309,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-spread@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-spread@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23457,6 +24333,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23475,6 +24359,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-sticky-regex@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-sticky-regex@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23485,16 +24374,21 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.25.7)': dependencies: - '@babel/core': 7.26.0 + '@babel/core': 7.25.7 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-strict-mode@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-strict-mode@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-template-literals@7.25.7(@babel/core@7.24.5)': dependencies: '@babel/core': 7.24.5 @@ -23505,6 +24399,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-template-literals@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-template-literals@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23515,6 +24414,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23530,6 +24434,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-typeof-symbol@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-typeof-symbol@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23540,6 +24449,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23556,6 +24470,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-typescript@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.25.7) + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-typescript@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23599,6 +24524,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-unicode-escapes@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-unicode-escapes@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23609,6 +24539,11 @@ snapshots: '@babel/core': 7.24.5 '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23626,6 +24561,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-unicode-property-regex@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-unicode-property-regex@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23638,6 +24579,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.24.5) '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23656,6 +24603,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-unicode-regex@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-unicode-regex@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23668,6 +24621,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.24.5) '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23686,6 +24645,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-unicode-sets-regex@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-transform-unicode-sets-regex@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23698,6 +24663,12 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.24.5) '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.25.7) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -23882,6 +24853,95 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/preset-env@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/compat-data': 7.25.7 + '@babel/core': 7.25.7 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-validator-option': 7.25.7 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.7) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.7) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-syntax-import-assertions': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-syntax-import-attributes': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.7) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.7) + '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-async-generator-functions': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-block-scoped-functions': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-class-properties': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-class-static-block': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-dotall-regex': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-duplicate-keys': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-dynamic-import': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-exponentiation-operator': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-export-namespace-from': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-for-of': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-json-strings': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-literals': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-logical-assignment-operators': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-member-expression-literals': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-modules-amd': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-modules-systemjs': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-modules-umd': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-new-target': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-numeric-separator': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-object-rest-spread': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-object-super': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-optional-catch-binding': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-optional-chaining': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-private-property-in-object': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-property-literals': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-regenerator': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-reserved-words': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-template-literals': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-typeof-symbol': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-unicode-escapes': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-unicode-property-regex': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-unicode-sets-regex': 7.25.7(@babel/core@7.25.7) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.7) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.7) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.7) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.7) + core-js-compat: 3.38.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/preset-env@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/compat-data': 7.25.7 @@ -24046,6 +25106,81 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/preset-env@7.26.0(@babel/core@7.25.7)': + dependencies: + '@babel/compat-data': 7.26.3 + '@babel/core': 7.25.7 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.7) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.25.7) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.25.7) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.7) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.25.7) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.25.7) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.25.7) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.25.7) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.25.7) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.7) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.7) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.7) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.7) + core-js-compat: 3.38.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/preset-env@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/compat-data': 7.26.3 @@ -24121,19 +25256,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-flow@7.25.7(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-transform-flow-strip-types': 7.25.7(@babel/core@7.24.5) - - '@babel/preset-flow@7.25.7(@babel/core@7.26.0)': + '@babel/preset-flow@7.25.7(@babel/core@7.25.7)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-transform-flow-strip-types': 7.25.7(@babel/core@7.26.0) + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-validator-option': 7.25.7 + '@babel/plugin-transform-flow-strip-types': 7.25.7(@babel/core@7.25.7) '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.5)': dependencies: @@ -24149,6 +25277,13 @@ snapshots: '@babel/types': 7.25.7 esutils: 2.0.3 + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/types': 7.25.7 + esutils: 2.0.3 + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -24168,6 +25303,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/preset-react@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-validator-option': 7.25.7 + '@babel/plugin-transform-react-display-name': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-react-jsx-development': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-react-pure-annotations': 7.25.7(@babel/core@7.25.7) + transitivePeerDependencies: + - supports-color + '@babel/preset-react@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -24215,6 +25362,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/preset-typescript@7.25.7(@babel/core@7.25.7)': + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-validator-option': 7.25.7 + '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-typescript': 7.25.7(@babel/core@7.25.7) + transitivePeerDependencies: + - supports-color + '@babel/preset-typescript@7.25.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -24248,9 +25406,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/register@7.25.7(@babel/core@7.24.5)': + '@babel/register@7.25.7(@babel/core@7.25.7)': dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.25.7 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -24334,9 +25492,9 @@ snapshots: '@types/tough-cookie': 4.0.5 tough-cookie: 4.1.4 - '@capacitor/android@6.1.2(@capacitor/core@7.0.0)': + '@capacitor/android@6.1.2(@capacitor/core@7.0.1)': dependencies: - '@capacitor/core': 7.0.0 + '@capacitor/core': 7.0.1 '@capacitor/cli@6.1.2': dependencies: @@ -24361,17 +25519,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@capacitor/core@7.0.0': + '@capacitor/core@7.0.1': dependencies: tslib: 2.7.0 - '@capacitor/ios@6.1.2(@capacitor/core@7.0.0)': + '@capacitor/ios@6.1.2(@capacitor/core@7.0.1)': dependencies: - '@capacitor/core': 7.0.0 + '@capacitor/core': 7.0.1 - '@capacitor/splash-screen@7.0.0(@capacitor/core@7.0.0)': + '@capacitor/splash-screen@7.0.0(@capacitor/core@7.0.1)': dependencies: - '@capacitor/core': 7.0.0 + '@capacitor/core': 7.0.1 '@changesets/apply-release-plan@7.0.5': dependencies: @@ -26322,7 +27480,7 @@ snapshots: '@expo/cli@0.18.28(encoding@0.1.13)(expo-modules-autolinking@1.11.1)': dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@expo/code-signing-certificates': 0.0.5 '@expo/config': 9.0.4 '@expo/config-plugins': 8.0.10 @@ -26678,7 +27836,7 @@ snapshots: fs-extra: 9.0.0 getenv: 1.0.0 jimp-compact: 0.16.1 - node-fetch: 2.6.7(encoding@0.1.13) + node-fetch: 2.7.0(encoding@0.1.13) parse-png: 2.1.0 resolve-from: 5.0.0 semver: 7.3.2 @@ -26850,7 +28008,7 @@ snapshots: '@expo/config-plugins': 7.8.4 '@expo/config-types': 50.0.0 '@expo/image-utils': 0.4.2(encoding@0.1.13) - '@expo/json-file': 8.2.37 + '@expo/json-file': 8.3.3 debug: 4.3.7(supports-color@8.1.1) expo-modules-autolinking: 1.11.1 fs-extra: 9.1.0 @@ -28071,7 +29229,7 @@ snapshots: '@mui/private-theming@5.16.6(@types/react@18.3.11)(react@18.2.0)': dependencies: - '@babel/runtime': 7.26.0 + '@babel/runtime': 7.25.7 '@mui/utils': 5.16.6(@types/react@18.3.11)(react@18.2.0) prop-types: 15.8.1 react: 18.2.0 @@ -28080,7 +29238,7 @@ snapshots: '@mui/styled-engine@5.16.6(@emotion/react@11.11.4(@types/react@18.3.11)(react@18.2.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.11)(react@18.2.0))(@types/react@18.3.11)(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.26.0 + '@babel/runtime': 7.25.7 '@emotion/cache': 11.13.1 csstype: 3.1.3 prop-types: 15.8.1 @@ -28091,7 +29249,7 @@ snapshots: '@mui/styled-engine@5.16.6(@emotion/react@11.13.3(@types/react@18.3.11)(react@18.2.0))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.11)(react@18.2.0))(@types/react@18.3.11)(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.26.0 + '@babel/runtime': 7.25.7 '@emotion/cache': 11.13.1 csstype: 3.1.3 prop-types: 15.8.1 @@ -28209,7 +29367,7 @@ snapshots: '@next/swc-win32-x64-msvc@14.2.3': optional: true - '@ngtools/webpack@18.2.7(@angular/compiler-cli@18.2.7(@angular/compiler@18.2.7(@angular/core@18.2.7(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.5.4))(typescript@5.5.4)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0))': + '@ngtools/webpack@18.2.7(@angular/compiler-cli@18.2.7(@angular/compiler@18.2.7(@angular/core@18.2.7(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.5.4))(typescript@5.5.4)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5)))': dependencies: '@angular/compiler-cli': 18.2.7(@angular/compiler@18.2.7(@angular/core@18.2.7(rxjs@7.8.1)(zone.js@0.14.10)))(typescript@5.5.4) typescript: 5.5.4 @@ -28391,16 +29549,16 @@ snapshots: '@oclif/screen@3.0.8': {} - '@op-engineering/op-sqlite@11.2.13(react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.6.3))(react@18.3.1)': + '@op-engineering/op-sqlite@11.2.13(react-native@0.75.3(@babel/core@7.25.7)(@babel/preset-env@7.26.0(@babel/core@7.25.7))(@types/react@18.3.11)(encoding@0.1.13)(react@18.3.1)(typescript@5.5.4))(react@18.3.1)': dependencies: react: 18.3.1 - react-native: 0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.6.3) - optional: true + react-native: 0.75.3(@babel/core@7.25.7)(@babel/preset-env@7.26.0(@babel/core@7.25.7))(@types/react@18.3.11)(encoding@0.1.13)(react@18.3.1)(typescript@5.5.4) - '@op-engineering/op-sqlite@11.2.13(react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.7.2))(react@18.3.1)': + '@op-engineering/op-sqlite@11.2.13(react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.6.3))(react@18.3.1)': dependencies: react: 18.3.1 - react-native: 0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.7.2) + react-native: 0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.6.3) + optional: true '@open-draft/deferred-promise@2.2.0': {} @@ -28850,17 +30008,6 @@ snapshots: - typescript optional: true - '@react-native-community/cli-config@14.1.0(typescript@5.7.2)': - dependencies: - '@react-native-community/cli-tools': 14.1.0 - chalk: 4.1.2 - cosmiconfig: 9.0.0(typescript@5.7.2) - deepmerge: 4.3.1 - fast-glob: 3.3.2 - joi: 17.13.3 - transitivePeerDependencies: - - typescript - '@react-native-community/cli-debugger-ui@11.3.6': dependencies: serve-static: 1.16.2 @@ -28995,27 +30142,6 @@ snapshots: - typescript optional: true - '@react-native-community/cli-doctor@14.1.0(typescript@5.7.2)': - dependencies: - '@react-native-community/cli-config': 14.1.0(typescript@5.7.2) - '@react-native-community/cli-platform-android': 14.1.0 - '@react-native-community/cli-platform-apple': 14.1.0 - '@react-native-community/cli-platform-ios': 14.1.0 - '@react-native-community/cli-tools': 14.1.0 - chalk: 4.1.2 - command-exists: 1.2.9 - deepmerge: 4.3.1 - envinfo: 7.14.0 - execa: 5.1.1 - node-stream-zip: 1.15.0 - ora: 5.4.1 - semver: 7.6.3 - strip-ansi: 5.2.0 - wcwidth: 1.0.1 - yaml: 2.6.1 - transitivePeerDependencies: - - typescript - '@react-native-community/cli-hermes@11.3.6(encoding@0.1.13)': dependencies: '@react-native-community/cli-platform-android': 11.3.6(encoding@0.1.13) @@ -29430,30 +30556,6 @@ snapshots: - utf-8-validate optional: true - '@react-native-community/cli@14.1.0(typescript@5.7.2)': - dependencies: - '@react-native-community/cli-clean': 14.1.0 - '@react-native-community/cli-config': 14.1.0(typescript@5.7.2) - '@react-native-community/cli-debugger-ui': 14.1.0 - '@react-native-community/cli-doctor': 14.1.0(typescript@5.7.2) - '@react-native-community/cli-server-api': 14.1.0 - '@react-native-community/cli-tools': 14.1.0 - '@react-native-community/cli-types': 14.1.0 - chalk: 4.1.2 - commander: 9.5.0 - deepmerge: 4.3.1 - execa: 5.1.1 - find-up: 5.0.0 - fs-extra: 8.1.0 - graceful-fs: 4.2.11 - prompts: 2.4.2 - semver: 7.6.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - typescript - - utf-8-validate - '@react-native-community/masked-view@0.1.11(react-native@0.74.5(@babel/core@7.24.5)(@babel/preset-env@7.25.7(@babel/core@7.24.5))(@types/react@18.2.79)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)': dependencies: react: 18.2.0 @@ -29507,12 +30609,20 @@ snapshots: - '@babel/preset-env' - supports-color + '@react-native/babel-plugin-codegen@0.75.3(@babel/preset-env@7.26.0(@babel/core@7.25.7))': + dependencies: + '@react-native/codegen': 0.75.3(@babel/preset-env@7.26.0(@babel/core@7.25.7)) + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + '@react-native/babel-plugin-codegen@0.75.3(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: '@react-native/codegen': 0.75.3(@babel/preset-env@7.26.0(@babel/core@7.26.0)) transitivePeerDependencies: - '@babel/preset-env' - supports-color + optional: true '@react-native/babel-preset@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.26.0(@babel/core@7.24.5))': dependencies: @@ -29531,31 +30641,31 @@ snapshots: '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.24.5) '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.24.5) + '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.24.5) '@babel/plugin-transform-flow-strip-types': 7.25.7(@babel/core@7.24.5) - '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.24.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.24.5) + '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-literals': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-private-property-in-object': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-react-display-name': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.24.5) '@babel/plugin-transform-react-jsx-self': 7.25.7(@babel/core@7.24.5) '@babel/plugin-transform-react-jsx-source': 7.25.7(@babel/core@7.24.5) '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.24.5) - '@babel/plugin-transform-typescript': 7.26.3(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.24.5) - '@babel/template': 7.25.9 + '@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-typescript': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.24.5) + '@babel/template': 7.25.7 '@react-native/babel-plugin-codegen': 0.74.83(@babel/preset-env@7.26.0(@babel/core@7.24.5)) babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.5) react-refresh: 0.14.2 @@ -29710,6 +30820,57 @@ snapshots: - '@babel/preset-env' - supports-color + '@react-native/babel-preset@0.75.3(@babel/core@7.25.7)(@babel/preset-env@7.26.0(@babel/core@7.25.7))': + dependencies: + '@babel/core': 7.25.7 + '@babel/plugin-proposal-export-default-from': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-syntax-export-default-from': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-async-generator-functions': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-class-properties': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-flow-strip-types': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-for-of': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-literals': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-logical-assignment-operators': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-numeric-separator': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-object-rest-spread': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-optional-catch-binding': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-optional-chaining': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-private-property-in-object': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-react-display-name': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-react-jsx-self': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-react-jsx-source': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-regenerator': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-typescript': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.25.7) + '@babel/template': 7.25.7 + '@react-native/babel-plugin-codegen': 0.75.3(@babel/preset-env@7.26.0(@babel/core@7.25.7)) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.25.7) + react-refresh: 0.14.2 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + '@react-native/babel-preset@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.25.7(@babel/core@7.26.0))': dependencies: '@babel/core': 7.26.0 @@ -29719,41 +30880,41 @@ snapshots: '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.26.0) '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.26.0) '@babel/plugin-transform-flow-strip-types': 7.25.7(@babel/core@7.26.0) - '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-react-display-name': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-self': 7.25.7(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.7(@babel/core@7.26.0) - '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.25.7(@babel/core@7.26.0) '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-typescript': 7.26.3(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) - '@babel/template': 7.25.9 + '@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.26.0) + '@babel/template': 7.25.7 '@react-native/babel-plugin-codegen': 0.75.3(@babel/preset-env@7.25.7(@babel/core@7.26.0)) babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.0) react-refresh: 0.14.2 @@ -29770,47 +30931,48 @@ snapshots: '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.26.0) '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.26.0) '@babel/plugin-transform-flow-strip-types': 7.25.7(@babel/core@7.26.0) - '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-react-display-name': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-self': 7.25.7(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.7(@babel/core@7.26.0) - '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.25.7(@babel/core@7.26.0) '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-typescript': 7.26.3(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) - '@babel/template': 7.25.9 + '@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.25.7(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.26.0) + '@babel/template': 7.25.7 '@react-native/babel-plugin-codegen': 0.75.3(@babel/preset-env@7.26.0(@babel/core@7.26.0)) babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.0) react-refresh: 0.14.2 transitivePeerDependencies: - '@babel/preset-env' - supports-color + optional: true '@react-native/codegen@0.72.8(@babel/preset-env@7.26.0(@babel/core@7.24.5))': dependencies: @@ -29879,7 +31041,7 @@ snapshots: '@react-native/codegen@0.75.3(@babel/preset-env@7.25.7(@babel/core@7.26.0))': dependencies: - '@babel/parser': 7.26.3 + '@babel/parser': 7.25.7 '@babel/preset-env': 7.25.7(@babel/core@7.26.0) glob: 7.2.3 hermes-parser: 0.22.0 @@ -29891,9 +31053,23 @@ snapshots: transitivePeerDependencies: - supports-color + '@react-native/codegen@0.75.3(@babel/preset-env@7.26.0(@babel/core@7.25.7))': + dependencies: + '@babel/parser': 7.25.7 + '@babel/preset-env': 7.26.0(@babel/core@7.25.7) + glob: 7.2.3 + hermes-parser: 0.22.0 + invariant: 2.2.4 + jscodeshift: 0.14.0(@babel/preset-env@7.26.0(@babel/core@7.25.7)) + mkdirp: 0.5.6 + nullthrows: 1.1.1 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + '@react-native/codegen@0.75.3(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: - '@babel/parser': 7.26.3 + '@babel/parser': 7.25.7 '@babel/preset-env': 7.26.0(@babel/core@7.26.0) glob: 7.2.3 hermes-parser: 0.22.0 @@ -29904,6 +31080,7 @@ snapshots: yargs: 17.7.2 transitivePeerDependencies: - supports-color + optional: true '@react-native/community-cli-plugin@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.26.0(@babel/core@7.24.5))(encoding@0.1.13)': dependencies: @@ -29971,6 +31148,27 @@ snapshots: - supports-color - utf-8-validate + '@react-native/community-cli-plugin@0.75.3(@babel/core@7.25.7)(@babel/preset-env@7.26.0(@babel/core@7.25.7))(encoding@0.1.13)': + dependencies: + '@react-native-community/cli-server-api': 14.1.0 + '@react-native-community/cli-tools': 14.1.0 + '@react-native/dev-middleware': 0.75.3(encoding@0.1.13) + '@react-native/metro-babel-transformer': 0.75.3(@babel/core@7.25.7)(@babel/preset-env@7.26.0(@babel/core@7.25.7)) + chalk: 4.1.2 + execa: 5.1.1 + metro: 0.80.12 + metro-config: 0.80.12 + metro-core: 0.80.12 + node-fetch: 2.7.0(encoding@0.1.13) + readline: 1.3.0 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - encoding + - supports-color + - utf-8-validate + '@react-native/community-cli-plugin@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.25.7(@babel/core@7.26.0))(encoding@0.1.13)': dependencies: '@react-native-community/cli-server-api': 14.1.0 @@ -30012,6 +31210,7 @@ snapshots: - encoding - supports-color - utf-8-validate + optional: true '@react-native/debugger-frontend@0.74.83': {} @@ -30104,18 +31303,18 @@ snapshots: - supports-color - utf-8-validate - '@react-native/eslint-config@0.73.2(eslint@8.57.1)(prettier@3.3.3)(typescript@5.7.2)': + '@react-native/eslint-config@0.73.2(eslint@8.57.1)(prettier@3.3.3)(typescript@5.5.4)': dependencies: '@babel/core': 7.24.5 - '@babel/eslint-parser': 7.25.8(@babel/core@7.24.5)(eslint@8.57.1) + '@babel/eslint-parser': 7.25.8(@babel/core@7.25.7)(eslint@8.57.1) '@react-native/eslint-plugin': 0.73.1 - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.5.4) eslint: 8.57.1 eslint-config-prettier: 8.10.0(eslint@8.57.1) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1) eslint-plugin-ft-flow: 2.0.3(@babel/eslint-parser@7.25.8(@babel/core@7.24.5)(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-jest: 26.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) + eslint-plugin-jest: 26.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.3.3) eslint-plugin-react: 7.37.1(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) @@ -30174,6 +31373,16 @@ snapshots: - '@babel/preset-env' - supports-color + '@react-native/metro-babel-transformer@0.75.3(@babel/core@7.25.7)(@babel/preset-env@7.26.0(@babel/core@7.25.7))': + dependencies: + '@babel/core': 7.25.7 + '@react-native/babel-preset': 0.75.3(@babel/core@7.25.7)(@babel/preset-env@7.26.0(@babel/core@7.25.7)) + hermes-parser: 0.22.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + '@react-native/metro-babel-transformer@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.25.7(@babel/core@7.26.0))': dependencies: '@babel/core': 7.26.0 @@ -30193,6 +31402,7 @@ snapshots: transitivePeerDependencies: - '@babel/preset-env' - supports-color + optional: true '@react-native/normalize-color@2.1.0': {} @@ -30243,6 +31453,15 @@ snapshots: optionalDependencies: '@types/react': 18.2.79 + '@react-native/virtualized-lists@0.75.3(@types/react@18.3.11)(react-native@0.75.3(@babel/core@7.25.7)(@babel/preset-env@7.26.0(@babel/core@7.25.7))(@types/react@18.3.11)(encoding@0.1.13)(react@18.3.1)(typescript@5.5.4))(react@18.3.1)': + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react: 18.3.1 + react-native: 0.75.3(@babel/core@7.25.7)(@babel/preset-env@7.26.0(@babel/core@7.25.7))(@types/react@18.3.11)(encoding@0.1.13)(react@18.3.1)(typescript@5.5.4) + optionalDependencies: + '@types/react': 18.3.11 + '@react-native/virtualized-lists@0.75.3(@types/react@18.3.12)(react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.25.7(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.2.0)(typescript@5.5.4))(react@18.2.0)': dependencies: invariant: 2.2.4 @@ -30262,15 +31481,6 @@ snapshots: '@types/react': 18.3.12 optional: true - '@react-native/virtualized-lists@0.75.3(@types/react@18.3.12)(react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.7.2))(react@18.3.1)': - dependencies: - invariant: 2.2.4 - nullthrows: 1.1.1 - react: 18.3.1 - react-native: 0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.7.2) - optionalDependencies: - '@types/react': 18.3.12 - '@react-navigation/bottom-tabs@6.5.20(@react-navigation/native@6.1.18(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.26.0(@babel/core@7.24.5))(@types/react@18.3.11)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.10.1(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.26.0(@babel/core@7.24.5))(@types/react@18.3.11)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native-screens@3.31.1(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.26.0(@babel/core@7.24.5))(@types/react@18.3.11)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.26.0(@babel/core@7.24.5))(@types/react@18.3.11)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)': dependencies: '@react-navigation/elements': 1.3.31(@react-navigation/native@6.1.18(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.26.0(@babel/core@7.24.5))(@types/react@18.3.11)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.10.1(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.26.0(@babel/core@7.24.5))(@types/react@18.3.11)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.26.0(@babel/core@7.24.5))(@types/react@18.3.11)(encoding@0.1.13)(react@18.2.0))(react@18.2.0) @@ -31254,90 +32464,60 @@ snapshots: '@swc/core-darwin-arm64@1.6.13': optional: true - '@swc/core-darwin-arm64@1.7.26': - optional: true - '@swc/core-darwin-x64@1.10.1': optional: true '@swc/core-darwin-x64@1.6.13': optional: true - '@swc/core-darwin-x64@1.7.26': - optional: true - '@swc/core-linux-arm-gnueabihf@1.10.1': optional: true '@swc/core-linux-arm-gnueabihf@1.6.13': optional: true - '@swc/core-linux-arm-gnueabihf@1.7.26': - optional: true - '@swc/core-linux-arm64-gnu@1.10.1': optional: true '@swc/core-linux-arm64-gnu@1.6.13': optional: true - '@swc/core-linux-arm64-gnu@1.7.26': - optional: true - '@swc/core-linux-arm64-musl@1.10.1': optional: true '@swc/core-linux-arm64-musl@1.6.13': optional: true - '@swc/core-linux-arm64-musl@1.7.26': - optional: true - '@swc/core-linux-x64-gnu@1.10.1': optional: true '@swc/core-linux-x64-gnu@1.6.13': optional: true - '@swc/core-linux-x64-gnu@1.7.26': - optional: true - '@swc/core-linux-x64-musl@1.10.1': optional: true '@swc/core-linux-x64-musl@1.6.13': optional: true - '@swc/core-linux-x64-musl@1.7.26': - optional: true - '@swc/core-win32-arm64-msvc@1.10.1': optional: true '@swc/core-win32-arm64-msvc@1.6.13': optional: true - '@swc/core-win32-arm64-msvc@1.7.26': - optional: true - '@swc/core-win32-ia32-msvc@1.10.1': optional: true '@swc/core-win32-ia32-msvc@1.6.13': optional: true - '@swc/core-win32-ia32-msvc@1.7.26': - optional: true - '@swc/core-win32-x64-msvc@1.10.1': optional: true '@swc/core-win32-x64-msvc@1.6.13': optional: true - '@swc/core-win32-x64-msvc@1.7.26': - optional: true - '@swc/core@1.10.1(@swc/helpers@0.5.5)': dependencies: '@swc/counter': 0.1.3 @@ -31372,23 +32552,6 @@ snapshots: '@swc/core-win32-x64-msvc': 1.6.13 '@swc/helpers': 0.5.5 - '@swc/core@1.7.26(@swc/helpers@0.5.5)': - dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.12 - optionalDependencies: - '@swc/core-darwin-arm64': 1.7.26 - '@swc/core-darwin-x64': 1.7.26 - '@swc/core-linux-arm-gnueabihf': 1.7.26 - '@swc/core-linux-arm64-gnu': 1.7.26 - '@swc/core-linux-arm64-musl': 1.7.26 - '@swc/core-linux-x64-gnu': 1.7.26 - '@swc/core-linux-x64-musl': 1.7.26 - '@swc/core-win32-arm64-msvc': 1.7.26 - '@swc/core-win32-ia32-msvc': 1.7.26 - '@swc/core-win32-x64-msvc': 1.7.26 - '@swc/helpers': 0.5.5 - '@swc/counter@0.1.3': {} '@swc/helpers@0.5.5': @@ -31573,7 +32736,7 @@ snapshots: fs-extra: 11.2.0 get-tsconfig: 4.8.1 lodash.debounce: 4.0.8 - typescript: 5.7.2 + typescript: 5.6.3 '@tamagui/button@1.79.6(react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.26.0(@babel/core@7.24.5))(@types/react@18.3.11)(encoding@0.1.13)(react@18.2.0))(react@18.2.0)': dependencies: @@ -32616,7 +33779,7 @@ snapshots: '@types/bunyan@1.8.11': dependencies: - '@types/node': 20.17.12 + '@types/node': 20.17.6 '@types/cacheable-request@6.0.3': dependencies: @@ -32627,7 +33790,7 @@ snapshots: '@types/cli-progress@3.11.6': dependencies: - '@types/node': 20.17.12 + '@types/node': 20.17.6 '@types/connect-history-api-fallback@1.5.4': dependencies: @@ -32681,7 +33844,7 @@ snapshots: '@types/fs-extra@8.1.5': dependencies: - '@types/node': 20.17.12 + '@types/node': 20.17.6 '@types/fs-extra@9.0.13': dependencies: @@ -32742,7 +33905,7 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 20.17.12 + '@types/node': 20.17.6 '@types/linkify-it@5.0.0': {} @@ -32887,7 +34050,7 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 20.17.12 + '@types/node': 20.17.6 '@types/retry@0.12.0': {} @@ -32895,7 +34058,7 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 20.17.12 + '@types/node': 20.17.6 '@types/semver@7.5.8': {} @@ -32944,7 +34107,7 @@ snapshots: dependencies: vue: 2.7.16 - '@types/webpack@5.28.5(webpack-cli@5.1.4(webpack@5.95.0))': + '@types/webpack@5.28.5(webpack-cli@5.1.4)': dependencies: '@types/node': 20.16.10 tapable: 2.2.1 @@ -32983,25 +34146,25 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 20.17.12 + '@types/node': 20.17.6 optional: true - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.5.4) '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.5.4) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.5.4) debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare-lite: 1.4.0 semver: 7.6.3 - tsutils: 3.21.0(typescript@5.7.2) + tsutils: 3.21.0(typescript@5.5.4) optionalDependencies: - typescript: 5.7.2 + typescript: 5.5.4 transitivePeerDependencies: - supports-color @@ -33025,15 +34188,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2)': + '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.4) debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.1 optionalDependencies: - typescript: 5.7.2 + typescript: 5.5.4 transitivePeerDependencies: - supports-color @@ -33073,15 +34236,15 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@5.7.2)': + '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@5.5.4)': dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.7.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.4) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.5.4) debug: 4.3.7(supports-color@8.1.1) eslint: 8.57.1 - tsutils: 3.21.0(typescript@5.7.2) + tsutils: 3.21.0(typescript@5.5.4) optionalDependencies: - typescript: 5.7.2 + typescript: 5.5.4 transitivePeerDependencies: - supports-color @@ -33101,7 +34264,7 @@ snapshots: '@typescript-eslint/types@6.21.0': {} - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.4)': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 @@ -33109,9 +34272,9 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.3 - tsutils: 3.21.0(typescript@5.7.2) + tsutils: 3.21.0(typescript@5.5.4) optionalDependencies: - typescript: 5.7.2 + typescript: 5.5.4 transitivePeerDependencies: - supports-color @@ -33145,14 +34308,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.7.2)': + '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.4) eslint: 8.57.1 eslint-scope: 5.1.1 semver: 7.6.3 @@ -33593,7 +34756,7 @@ snapshots: vue: 3.4.21(typescript@5.5.4) vue-demi: 0.13.11(vue@3.4.21(typescript@5.5.4)) - '@vuetify/loader-shared@2.0.3(vue@3.4.21(typescript@5.5.4))(vuetify@3.6.8(typescript@5.5.4)(vite-plugin-vuetify@2.0.4)(vue@3.4.21(typescript@5.5.4)))': + '@vuetify/loader-shared@2.0.3(vue@3.4.21(typescript@5.5.4))(vuetify@3.6.8)': dependencies: upath: 2.0.1 vue: 3.4.21(typescript@5.5.4) @@ -33667,7 +34830,7 @@ snapshots: '@wdio/repl@9.0.8': dependencies: - '@types/node': 20.17.12 + '@types/node': 20.17.6 '@wdio/repl@9.4.4': dependencies: @@ -33679,7 +34842,7 @@ snapshots: '@wdio/types@9.2.2': dependencies: - '@types/node': 20.17.12 + '@types/node': 20.17.6 '@wdio/types@9.4.4': dependencies: @@ -33821,17 +34984,17 @@ snapshots: dependencies: commander: 10.0.1 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4))': + '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.95.0)': dependencies: webpack: 5.95.0(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.95.0) - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4))': + '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.95.0)': dependencies: webpack: 5.95.0(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.95.0) - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4))': + '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.95.0)': dependencies: webpack: 5.95.0(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.95.0) @@ -34295,9 +35458,9 @@ snapshots: b4a@1.6.7: {} - babel-core@7.0.0-bridge.0(@babel/core@7.24.5): + babel-core@7.0.0-bridge.0(@babel/core@7.25.7): dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.25.7 babel-literal-to-ast@2.1.0(@babel/core@7.25.7): dependencies: @@ -34308,7 +35471,7 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.1.3(@babel/core@7.25.2)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)): + babel-loader@9.1.3(@babel/core@7.25.2)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): dependencies: '@babel/core': 7.25.2 find-cache-dir: 4.0.0 @@ -34342,7 +35505,7 @@ snapshots: babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.26.0 + '@babel/runtime': 7.25.7 cosmiconfig: 7.1.0 resolve: 1.22.8 @@ -34372,6 +35535,15 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.7): + dependencies: + '@babel/compat-data': 7.25.7 + '@babel/core': 7.25.7 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.7) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0): dependencies: '@babel/compat-data': 7.25.7 @@ -34397,6 +35569,14 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.25.7): + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.7) + core-js-compat: 3.38.1 + transitivePeerDependencies: + - supports-color + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 @@ -34419,6 +35599,13 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.7): + dependencies: + '@babel/core': 7.25.7 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.7) + transitivePeerDependencies: + - supports-color + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 @@ -34456,6 +35643,12 @@ snapshots: transitivePeerDependencies: - '@babel/core' + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.25.7): + dependencies: + '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.25.7) + transitivePeerDependencies: + - '@babel/core' + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.26.0): dependencies: '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.26.0) @@ -34563,6 +35756,39 @@ snapshots: transitivePeerDependencies: - supports-color + babel-preset-fbjs@3.4.0(@babel/core@7.25.7): + dependencies: + '@babel/core': 7.25.7 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.7) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.25.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.7) + '@babel/plugin-syntax-flow': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.7) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-flow-strip-types': 7.25.7(@babel/core@7.25.7) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.25.7) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.25.7) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.25.7) + babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 + transitivePeerDependencies: + - supports-color + bail@2.0.2: {} balanced-match@1.0.2: {} @@ -35303,7 +36529,7 @@ snapshots: dependencies: delayed-stream: 1.0.0 - comlink@4.4.1: {} + comlink@4.4.2: {} comma-separated-tokens@2.0.3: {} @@ -35431,7 +36657,7 @@ snapshots: serialize-javascript: 6.0.2 webpack: 5.95.0(@swc/core@1.10.1(@swc/helpers@0.5.5)) - copy-webpack-plugin@12.0.2(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)): + copy-webpack-plugin@12.0.2(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): dependencies: fast-glob: 3.3.2 glob-parent: 6.0.2 @@ -35504,15 +36730,6 @@ snapshots: typescript: 5.6.3 optional: true - cosmiconfig@9.0.0(typescript@5.7.2): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.7.2 - crc-32@1.2.2: {} crc32-stream@6.0.0: @@ -35650,7 +36867,7 @@ snapshots: '@rspack/core': 1.1.8(@swc/helpers@0.5.5) webpack: 5.95.0(@swc/core@1.10.1(@swc/helpers@0.5.5)) - css-loader@7.1.2(@rspack/core@1.1.8(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)): + css-loader@7.1.2(@rspack/core@1.1.8(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): dependencies: icss-utils: 5.1.0(postcss@8.4.47) postcss: 8.4.47 @@ -36171,7 +37388,7 @@ snapshots: deprecated-react-native-prop-types@4.1.0: dependencies: - '@react-native/normalize-colors': 0.75.3 + '@react-native/normalize-colors': 0.72.0 invariant: 2.2.4 prop-types: 15.8.1 @@ -36267,7 +37484,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.26.0 + '@babel/runtime': 7.25.7 csstype: 3.1.3 dom-serializer@1.4.1: @@ -36317,7 +37534,7 @@ snapshots: dotenv-expand@11.0.6: dependencies: - dotenv: 16.4.7 + dotenv: 16.4.5 dotenv@16.3.1: {} @@ -36915,7 +38132,7 @@ snapshots: debug: 4.3.7(supports-color@8.1.1) enhanced-resolve: 5.17.1 eslint: 8.57.1 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) fast-glob: 3.3.2 get-tsconfig: 4.8.1 is-bun-module: 1.2.1 @@ -36938,7 +38155,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: @@ -36963,7 +38180,7 @@ snapshots: eslint-plugin-ft-flow@2.0.3(@babel/eslint-parser@7.25.8(@babel/core@7.24.5)(eslint@8.57.1))(eslint@8.57.1): dependencies: - '@babel/eslint-parser': 7.25.8(@babel/core@7.24.5)(eslint@8.57.1) + '@babel/eslint-parser': 7.25.8(@babel/core@7.25.7)(eslint@8.57.1) eslint: 8.57.1 lodash: 4.17.21 string-natural-compare: 3.0.1 @@ -37008,7 +38225,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -37026,12 +38243,12 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest@26.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2): + eslint-plugin-jest@26.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4): dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.5.4) eslint: 8.57.1 optionalDependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) transitivePeerDependencies: - supports-color - typescript @@ -39034,7 +40251,7 @@ snapshots: tapable: 2.2.1 optionalDependencies: '@rspack/core': 1.1.8(@swc/helpers@0.5.5) - webpack: 5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5)) + webpack: 5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0) optional: true html-webpack-plugin@5.6.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(webpack@5.95.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): @@ -39048,7 +40265,7 @@ snapshots: '@rspack/core': 1.1.8(@swc/helpers@0.5.5) webpack: 5.95.0(@swc/core@1.10.1(@swc/helpers@0.5.5)) - html-webpack-plugin@5.6.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(webpack@5.95.0(webpack-cli@5.1.4)): + html-webpack-plugin@5.6.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(webpack@5.95.0): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -39793,17 +41010,17 @@ snapshots: jscodeshift@0.14.0(@babel/preset-env@7.25.7(@babel/core@7.24.5)): dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.25.7 '@babel/parser': 7.25.7 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.7) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.7) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.7) + '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.7) '@babel/preset-env': 7.25.7(@babel/core@7.24.5) - '@babel/preset-flow': 7.25.7(@babel/core@7.24.5) - '@babel/preset-typescript': 7.26.0(@babel/core@7.24.5) - '@babel/register': 7.25.7(@babel/core@7.24.5) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.5) + '@babel/preset-flow': 7.25.7(@babel/core@7.25.7) + '@babel/preset-typescript': 7.25.7(@babel/core@7.25.7) + '@babel/register': 7.25.7(@babel/core@7.25.7) + babel-core: 7.0.0-bridge.0(@babel/core@7.25.7) chalk: 4.1.2 flow-parser: 0.247.1 graceful-fs: 4.2.11 @@ -39818,17 +41035,17 @@ snapshots: jscodeshift@0.14.0(@babel/preset-env@7.25.7(@babel/core@7.26.0)): dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.25.7 '@babel/parser': 7.25.7 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.7) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.7) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.7) + '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.7) '@babel/preset-env': 7.25.7(@babel/core@7.26.0) - '@babel/preset-flow': 7.25.7(@babel/core@7.24.5) - '@babel/preset-typescript': 7.26.0(@babel/core@7.24.5) - '@babel/register': 7.25.7(@babel/core@7.24.5) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.5) + '@babel/preset-flow': 7.25.7(@babel/core@7.25.7) + '@babel/preset-typescript': 7.25.7(@babel/core@7.25.7) + '@babel/register': 7.25.7(@babel/core@7.25.7) + babel-core: 7.0.0-bridge.0(@babel/core@7.25.7) chalk: 4.1.2 flow-parser: 0.247.1 graceful-fs: 4.2.11 @@ -39843,17 +41060,42 @@ snapshots: jscodeshift@0.14.0(@babel/preset-env@7.26.0(@babel/core@7.24.5)): dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.25.7 '@babel/parser': 7.25.7 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.7) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.7) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.7) + '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.7) '@babel/preset-env': 7.26.0(@babel/core@7.24.5) - '@babel/preset-flow': 7.25.7(@babel/core@7.24.5) - '@babel/preset-typescript': 7.26.0(@babel/core@7.24.5) - '@babel/register': 7.25.7(@babel/core@7.24.5) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.5) + '@babel/preset-flow': 7.25.7(@babel/core@7.25.7) + '@babel/preset-typescript': 7.25.7(@babel/core@7.25.7) + '@babel/register': 7.25.7(@babel/core@7.25.7) + babel-core: 7.0.0-bridge.0(@babel/core@7.25.7) + chalk: 4.1.2 + flow-parser: 0.247.1 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + neo-async: 2.6.2 + node-dir: 0.1.17 + recast: 0.21.5 + temp: 0.8.4 + write-file-atomic: 2.4.3 + transitivePeerDependencies: + - supports-color + + jscodeshift@0.14.0(@babel/preset-env@7.26.0(@babel/core@7.25.7)): + dependencies: + '@babel/core': 7.25.7 + '@babel/parser': 7.25.7 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.7) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.7) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.7) + '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.7) + '@babel/preset-env': 7.26.0(@babel/core@7.25.7) + '@babel/preset-flow': 7.25.7(@babel/core@7.25.7) + '@babel/preset-typescript': 7.25.7(@babel/core@7.25.7) + '@babel/register': 7.25.7(@babel/core@7.25.7) + babel-core: 7.0.0-bridge.0(@babel/core@7.25.7) chalk: 4.1.2 flow-parser: 0.247.1 graceful-fs: 4.2.11 @@ -39868,17 +41110,17 @@ snapshots: jscodeshift@0.14.0(@babel/preset-env@7.26.0(@babel/core@7.26.0)): dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.25.7 '@babel/parser': 7.25.7 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.24.5) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.7) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.7) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.7) + '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.7) '@babel/preset-env': 7.26.0(@babel/core@7.26.0) - '@babel/preset-flow': 7.25.7(@babel/core@7.24.5) - '@babel/preset-typescript': 7.26.0(@babel/core@7.24.5) - '@babel/register': 7.25.7(@babel/core@7.24.5) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.5) + '@babel/preset-flow': 7.25.7(@babel/core@7.25.7) + '@babel/preset-typescript': 7.25.7(@babel/core@7.25.7) + '@babel/register': 7.25.7(@babel/core@7.25.7) + babel-core: 7.0.0-bridge.0(@babel/core@7.25.7) chalk: 4.1.2 flow-parser: 0.247.1 graceful-fs: 4.2.11 @@ -39890,6 +41132,7 @@ snapshots: write-file-atomic: 2.4.3 transitivePeerDependencies: - supports-color + optional: true jsdom@24.1.3: dependencies: @@ -40051,7 +41294,7 @@ snapshots: dependencies: readable-stream: 2.3.8 - less-loader@12.2.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(less@4.2.0)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)): + less-loader@12.2.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(less@4.2.0)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): dependencies: less: 4.2.0 optionalDependencies: @@ -40087,7 +41330,7 @@ snapshots: dependencies: isomorphic.js: 0.2.5 - license-webpack-plugin@4.0.2(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)): + license-webpack-plugin@4.0.2(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): dependencies: webpack-sources: 3.2.3 optionalDependencies: @@ -41128,11 +42371,11 @@ snapshots: metro-transform-worker@0.76.7(encoding@0.1.13): dependencies: - '@babel/core': 7.24.5 - '@babel/generator': 7.26.3 - '@babel/parser': 7.26.3 - '@babel/types': 7.26.3 - babel-preset-fbjs: 3.4.0(@babel/core@7.24.5) + '@babel/core': 7.25.7 + '@babel/generator': 7.25.7 + '@babel/parser': 7.25.7 + '@babel/types': 7.25.7 + babel-preset-fbjs: 3.4.0(@babel/core@7.25.7) metro: 0.76.7(encoding@0.1.13) metro-babel-transformer: 0.76.7 metro-cache: 0.76.7 @@ -41171,10 +42414,10 @@ snapshots: '@babel/code-frame': 7.26.2 '@babel/core': 7.24.5 '@babel/generator': 7.26.3 - '@babel/parser': 7.26.3 - '@babel/template': 7.25.9 + '@babel/parser': 7.25.7 + '@babel/template': 7.25.7 '@babel/traverse': 7.26.4 - '@babel/types': 7.26.3 + '@babel/types': 7.25.7 accepts: 1.3.8 async: 3.2.6 chalk: 4.1.2 @@ -41616,7 +42859,7 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.0(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)): + mini-css-extract-plugin@2.9.0(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): dependencies: schema-utils: 4.2.0 tapable: 2.2.1 @@ -42570,7 +43813,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.25.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -42923,7 +44166,7 @@ snapshots: postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.5))(@types/node@20.16.10)(typescript@5.7.2)): dependencies: lilconfig: 3.1.2 - yaml: 2.5.1 + yaml: 2.6.1 optionalDependencies: postcss: 8.4.47 ts-node: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.5))(@types/node@20.16.10)(typescript@5.7.2) @@ -42931,7 +44174,7 @@ snapshots: postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.5))(@types/node@22.7.4)(typescript@5.5.4)): dependencies: lilconfig: 3.1.2 - yaml: 2.5.1 + yaml: 2.6.1 optionalDependencies: postcss: 8.4.47 ts-node: 10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.5))(@types/node@22.7.4)(typescript@5.5.4) @@ -42947,7 +44190,7 @@ snapshots: transitivePeerDependencies: - typescript - postcss-loader@8.1.1(@rspack/core@1.1.8(@swc/helpers@0.5.5))(postcss@8.4.41)(typescript@5.5.4)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)): + postcss-loader@8.1.1(@rspack/core@1.1.8(@swc/helpers@0.5.5))(postcss@8.4.41)(typescript@5.5.4)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): dependencies: cosmiconfig: 9.0.0(typescript@5.5.4) jiti: 1.21.6 @@ -43717,17 +44960,17 @@ snapshots: react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.2.0)' webpack: 5.95.0(@swc/core@1.10.1(@swc/helpers@0.5.5)) - react-native-builder-bob@0.30.3(typescript@5.7.2): + react-native-builder-bob@0.30.2(typescript@5.5.4): dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-transform-strict-mode': 7.25.9(@babel/core@7.26.0) - '@babel/preset-env': 7.26.0(@babel/core@7.26.0) - '@babel/preset-flow': 7.25.7(@babel/core@7.26.0) - '@babel/preset-react': 7.26.3(@babel/core@7.26.0) - '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) + '@babel/core': 7.25.7 + '@babel/plugin-transform-strict-mode': 7.25.7(@babel/core@7.25.7) + '@babel/preset-env': 7.25.7(@babel/core@7.25.7) + '@babel/preset-flow': 7.25.7(@babel/core@7.25.7) + '@babel/preset-react': 7.25.7(@babel/core@7.25.7) + '@babel/preset-typescript': 7.25.7(@babel/core@7.25.7) babel-plugin-module-resolver: 5.0.2 - browserslist: 4.24.3 - cosmiconfig: 9.0.0(typescript@5.7.2) + browserslist: 4.24.0 + cosmiconfig: 9.0.0(typescript@5.5.4) cross-spawn: 7.0.3 dedent: 0.7.0 del: 6.1.1 @@ -43742,10 +44985,8 @@ snapshots: which: 2.0.2 yargs: 17.7.2 transitivePeerDependencies: - - bufferutil - supports-color - typescript - - utf-8-validate react-native-elements@3.4.3(react-native-safe-area-context@4.10.5(react-native@0.74.5(@babel/core@7.24.5)(@babel/preset-env@7.25.7(@babel/core@7.24.5))(@types/react@18.2.79)(encoding@0.1.13)(react@18.2.0))(react@18.2.0))(react-native-vector-icons@10.2.0)(react-native@0.74.5(@babel/core@7.24.5)(@babel/preset-env@7.25.7(@babel/core@7.24.5))(@types/react@18.2.79)(encoding@0.1.13)(react@18.2.0))(react@18.2.0): dependencies: @@ -44045,7 +45286,7 @@ snapshots: react-native-web@0.19.13(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - '@babel/runtime': 7.26.0 + '@babel/runtime': 7.25.7 '@react-native/normalize-colors': 0.74.88 fbjs: 3.0.5(encoding@0.1.13) inline-style-prefixer: 6.0.4 @@ -44255,19 +45496,19 @@ snapshots: - supports-color - utf-8-validate - react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.25.7(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.2.0)(typescript@5.5.4): + react-native@0.75.3(@babel/core@7.25.7)(@babel/preset-env@7.26.0(@babel/core@7.25.7))(@types/react@18.3.11)(encoding@0.1.13)(react@18.3.1)(typescript@5.5.4): dependencies: '@jest/create-cache-key-function': 29.7.0 '@react-native-community/cli': 14.1.0(typescript@5.5.4) '@react-native-community/cli-platform-android': 14.1.0 '@react-native-community/cli-platform-ios': 14.1.0 '@react-native/assets-registry': 0.75.3 - '@react-native/codegen': 0.75.3(@babel/preset-env@7.25.7(@babel/core@7.26.0)) - '@react-native/community-cli-plugin': 0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.25.7(@babel/core@7.26.0))(encoding@0.1.13) + '@react-native/codegen': 0.75.3(@babel/preset-env@7.26.0(@babel/core@7.25.7)) + '@react-native/community-cli-plugin': 0.75.3(@babel/core@7.25.7)(@babel/preset-env@7.26.0(@babel/core@7.25.7))(encoding@0.1.13) '@react-native/gradle-plugin': 0.75.3 '@react-native/js-polyfills': 0.75.3 '@react-native/normalize-colors': 0.75.3 - '@react-native/virtualized-lists': 0.75.3(@types/react@18.3.12)(react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.25.7(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.2.0)(typescript@5.5.4))(react@18.2.0) + '@react-native/virtualized-lists': 0.75.3(@types/react@18.3.11)(react-native@0.75.3(@babel/core@7.25.7)(@babel/preset-env@7.26.0(@babel/core@7.25.7))(@types/react@18.3.11)(encoding@0.1.13)(react@18.3.1)(typescript@5.5.4))(react@18.3.1) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -44287,7 +45528,7 @@ snapshots: nullthrows: 1.1.1 pretty-format: 26.6.2 promise: 8.3.0 - react: 18.2.0 + react: 18.3.1 react-devtools-core: 5.3.1 react-refresh: 0.14.2 regenerator-runtime: 0.13.11 @@ -44298,7 +45539,7 @@ snapshots: ws: 6.2.3 yargs: 17.7.2 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 18.3.11 transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' @@ -44308,19 +45549,19 @@ snapshots: - typescript - utf-8-validate - react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.6.3): + react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.25.7(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.2.0)(typescript@5.5.4): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 14.1.0(typescript@5.6.3) + '@react-native-community/cli': 14.1.0(typescript@5.5.4) '@react-native-community/cli-platform-android': 14.1.0 '@react-native-community/cli-platform-ios': 14.1.0 '@react-native/assets-registry': 0.75.3 - '@react-native/codegen': 0.75.3(@babel/preset-env@7.26.0(@babel/core@7.26.0)) - '@react-native/community-cli-plugin': 0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(encoding@0.1.13) + '@react-native/codegen': 0.75.3(@babel/preset-env@7.25.7(@babel/core@7.26.0)) + '@react-native/community-cli-plugin': 0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.25.7(@babel/core@7.26.0))(encoding@0.1.13) '@react-native/gradle-plugin': 0.75.3 '@react-native/js-polyfills': 0.75.3 '@react-native/normalize-colors': 0.75.3 - '@react-native/virtualized-lists': 0.75.3(@types/react@18.3.12)(react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.6.3))(react@18.3.1) + '@react-native/virtualized-lists': 0.75.3(@types/react@18.3.12)(react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.25.7(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.2.0)(typescript@5.5.4))(react@18.2.0) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -44340,7 +45581,7 @@ snapshots: nullthrows: 1.1.1 pretty-format: 26.6.2 promise: 8.3.0 - react: 18.3.1 + react: 18.2.0 react-devtools-core: 5.3.1 react-refresh: 0.14.2 regenerator-runtime: 0.13.11 @@ -44360,12 +45601,11 @@ snapshots: - supports-color - typescript - utf-8-validate - optional: true - react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.7.2): + react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.6.3): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 14.1.0(typescript@5.7.2) + '@react-native-community/cli': 14.1.0(typescript@5.6.3) '@react-native-community/cli-platform-android': 14.1.0 '@react-native-community/cli-platform-ios': 14.1.0 '@react-native/assets-registry': 0.75.3 @@ -44374,7 +45614,7 @@ snapshots: '@react-native/gradle-plugin': 0.75.3 '@react-native/js-polyfills': 0.75.3 '@react-native/normalize-colors': 0.75.3 - '@react-native/virtualized-lists': 0.75.3(@types/react@18.3.12)(react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.7.2))(react@18.3.1) + '@react-native/virtualized-lists': 0.75.3(@types/react@18.3.12)(react-native@0.75.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(encoding@0.1.13)(react@18.3.1)(typescript@5.6.3))(react@18.3.1) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -44414,6 +45654,7 @@ snapshots: - supports-color - typescript - utf-8-validate + optional: true react-navigation-stack@2.10.4(b23yjknfeew5kcy4o5zrlfz5ae): dependencies: @@ -44730,7 +45971,7 @@ snapshots: regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 regex-parser@2.3.0: {} @@ -45170,7 +46411,7 @@ snapshots: optionalDependencies: sass: 1.79.4 - sass-loader@16.0.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(sass@1.77.6)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)): + sass-loader@16.0.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(sass@1.77.6)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): dependencies: neo-async: 2.6.2 optionalDependencies: @@ -45590,13 +46831,13 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)): + source-map-loader@5.0.0(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 webpack: 5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0) - source-map-loader@5.0.0(webpack@5.95.0(webpack-cli@5.1.4)): + source-map-loader@5.0.0(webpack@5.95.0): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 @@ -46232,7 +47473,7 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.3.10(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)): + terser-webpack-plugin@5.3.10(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 @@ -46244,18 +47485,6 @@ snapshots: '@swc/core': 1.10.1(@swc/helpers@0.5.5) esbuild: 0.23.0 - terser-webpack-plugin@5.3.10(@swc/core@1.10.1(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.34.1 - webpack: 5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5)) - optionalDependencies: - '@swc/core': 1.10.1(@swc/helpers@0.5.5) - optional: true - terser-webpack-plugin@5.3.10(@swc/core@1.10.1(@swc/helpers@0.5.5))(webpack@5.95.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -46278,7 +47507,7 @@ snapshots: optionalDependencies: '@swc/core': 1.6.13(@swc/helpers@0.5.5) - terser-webpack-plugin@5.3.10(webpack@5.95.0(webpack-cli@5.1.4)): + terser-webpack-plugin@5.3.10(webpack@5.95.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 @@ -46610,10 +47839,10 @@ snapshots: tslib@2.7.0: {} - tsutils@3.21.0(typescript@5.7.2): + tsutils@3.21.0(typescript@5.5.4): dependencies: tslib: 1.14.1 - typescript: 5.7.2 + typescript: 5.5.4 tty-table@4.2.3: dependencies: @@ -47235,7 +48464,7 @@ snapshots: vite-plugin-top-level-await@1.4.4(@swc/helpers@0.5.5)(rollup@2.79.2)(vite@5.4.8(@types/node@20.16.10)(less@4.2.0)(lightningcss@1.28.2)(sass@1.79.4)(terser@5.34.1)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@2.79.2) - '@swc/core': 1.7.26(@swc/helpers@0.5.5) + '@swc/core': 1.10.1(@swc/helpers@0.5.5) uuid: 10.0.0 vite: 5.4.8(@types/node@20.16.10)(less@4.2.0)(lightningcss@1.28.2)(sass@1.79.4)(terser@5.34.1) transitivePeerDependencies: @@ -47245,7 +48474,7 @@ snapshots: vite-plugin-top-level-await@1.4.4(@swc/helpers@0.5.5)(rollup@4.24.0)(vite@5.4.11(@types/node@20.17.6)(less@4.2.0)(lightningcss@1.28.2)(sass@1.79.4)(terser@5.34.1)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@4.24.0) - '@swc/core': 1.7.26(@swc/helpers@0.5.5) + '@swc/core': 1.10.1(@swc/helpers@0.5.5) uuid: 10.0.0 vite: 5.4.11(@types/node@20.17.6)(less@4.2.0)(lightningcss@1.28.2)(sass@1.79.4)(terser@5.34.1) transitivePeerDependencies: @@ -47255,7 +48484,7 @@ snapshots: vite-plugin-top-level-await@1.4.4(@swc/helpers@0.5.5)(rollup@4.24.0)(vite@5.4.11(@types/node@22.7.4)(less@4.2.0)(lightningcss@1.28.2)(sass@1.79.4)(terser@5.34.1)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@4.24.0) - '@swc/core': 1.7.26(@swc/helpers@0.5.5) + '@swc/core': 1.10.1(@swc/helpers@0.5.5) uuid: 10.0.0 vite: 5.4.11(@types/node@22.7.4)(less@4.2.0)(lightningcss@1.28.2)(sass@1.79.4)(terser@5.34.1) transitivePeerDependencies: @@ -47265,7 +48494,7 @@ snapshots: vite-plugin-top-level-await@1.4.4(@swc/helpers@0.5.5)(rollup@4.24.0)(vite@5.4.8(@types/node@20.16.10)(less@4.2.0)(lightningcss@1.28.2)(sass@1.79.4)(terser@5.34.1)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@4.24.0) - '@swc/core': 1.7.26(@swc/helpers@0.5.5) + '@swc/core': 1.10.1(@swc/helpers@0.5.5) uuid: 10.0.0 vite: 5.4.8(@types/node@20.16.10)(less@4.2.0)(lightningcss@1.28.2)(sass@1.79.4)(terser@5.34.1) transitivePeerDependencies: @@ -47275,7 +48504,7 @@ snapshots: vite-plugin-top-level-await@1.4.4(@swc/helpers@0.5.5)(rollup@4.24.0)(vite@5.4.8(@types/node@22.7.4)(less@4.2.0)(lightningcss@1.28.2)(sass@1.79.4)(terser@5.34.1)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@4.24.0) - '@swc/core': 1.7.26(@swc/helpers@0.5.5) + '@swc/core': 1.10.1(@swc/helpers@0.5.5) uuid: 10.0.0 vite: 5.4.8(@types/node@22.7.4)(less@4.2.0)(lightningcss@1.28.2)(sass@1.79.4)(terser@5.34.1) transitivePeerDependencies: @@ -47284,7 +48513,7 @@ snapshots: vite-plugin-vuetify@2.0.4(vite@5.4.8(@types/node@22.7.4)(less@4.2.0)(lightningcss@1.28.2)(sass@1.79.4)(terser@5.34.1))(vue@3.4.21(typescript@5.5.4))(vuetify@3.6.8): dependencies: - '@vuetify/loader-shared': 2.0.3(vue@3.4.21(typescript@5.5.4))(vuetify@3.6.8(typescript@5.5.4)(vite-plugin-vuetify@2.0.4)(vue@3.4.21(typescript@5.5.4))) + '@vuetify/loader-shared': 2.0.3(vue@3.4.21(typescript@5.5.4))(vuetify@3.6.8) debug: 4.3.7(supports-color@8.1.1) upath: 2.0.1 vite: 5.4.8(@types/node@22.7.4)(less@4.2.0)(lightningcss@1.28.2)(sass@1.79.4)(terser@5.34.1) @@ -47859,9 +49088,9 @@ snapshots: webpack-cli@5.1.4(webpack@5.95.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4)) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4)) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4(webpack@5.95.0))(webpack@5.95.0(webpack-cli@5.1.4)) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.95.0) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.95.0) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.95.0) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.3 @@ -47882,7 +49111,7 @@ snapshots: schema-utils: 4.2.0 webpack: 5.95.0(@swc/core@1.10.1(@swc/helpers@0.5.5)) - webpack-dev-middleware@7.4.2(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)): + webpack-dev-middleware@7.4.2(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): dependencies: colorette: 2.0.20 memfs: 4.12.0 @@ -47933,7 +49162,7 @@ snapshots: - supports-color - utf-8-validate - webpack-dev-server@5.0.4(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)): + webpack-dev-server@5.0.4(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -47963,7 +49192,7 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) + webpack-dev-middleware: 7.4.2(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) ws: 8.18.0 optionalDependencies: webpack: 5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0) @@ -47989,7 +49218,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)): + webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.0(@rspack/core@1.1.8(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))): dependencies: typed-assert: 1.0.9 webpack: 5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0) @@ -47998,37 +49227,6 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5)): - dependencies: - '@types/estree': 1.0.6 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) - browserslist: 4.24.0 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.4 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.10.1(@swc/helpers@0.5.5))(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) - watchpack: 2.4.1 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - optional: true - webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0): dependencies: '@types/estree': 1.0.6 @@ -48051,7 +49249,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)) + terser-webpack-plugin: 5.3.10(@swc/core@1.10.1(@swc/helpers@0.5.5))(esbuild@0.23.0)(webpack@5.94.0(@swc/core@1.10.1(@swc/helpers@0.5.5))) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -48141,7 +49339,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.95.0(webpack-cli@5.1.4)) + terser-webpack-plugin: 5.3.10(webpack@5.95.0) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: