From c0ebb662bf0152be042e0a8ea184111c970fe1cd Mon Sep 17 00:00:00 2001 From: SHASHANK SHEKHAR Date: Sun, 13 Sep 2026 14:55:32 +0530 Subject: [PATCH 1/3] feat: add ledger and exchange domain --- apps/api/package.json | 1 + .../exchange-account-repository.test.ts | 145 ++++++ .../exchange-asset-account-repository.test.ts | 452 ++++++++++++++++++ .../exchange-deposit-repository.test.ts | 367 ++++++++++++++ .../__tests__/exchange-fee-repository.test.ts | 420 ++++++++++++++++ .../exchange-subaccount-repository.test.ts | 206 ++++++++ .../exchange-trade-repository.test.ts | 382 +++++++++++++++ .../exchange-withdrawal-repository.test.ts | 420 ++++++++++++++++ .../reconciliation-repository.test.ts | 212 ++++++++ .../__tests__/reconciliation-service.test.ts | 95 ++++ .../exchange/exchange-account-repository.ts | 154 ++++++ .../exchange-asset-account-repository.ts | 156 ++++++ .../exchange/exchange-deposit-repository.ts | 198 ++++++++ .../src/exchange/exchange-fee-repository.ts | 173 +++++++ .../exchange-subaccount-repository.ts | 112 +++++ .../src/exchange/exchange-trade-repository.ts | 226 +++++++++ .../exchange-withdrawal-repository.ts | 186 +++++++ apps/api/src/reconciliation/index.ts | 2 + .../reconciliation-repository.ts | 188 ++++++++ .../reconciliation/reconciliation-service.ts | 39 ++ packages/ledger-core/package.json | 26 + .../src/__tests__/account-registry.test.ts | 67 +++ .../exchange-account-registry.test.ts | 108 +++++ .../exchange-asset-account-registry.test.ts | 140 ++++++ .../exchange-deposit-registry.test.ts | 155 ++++++ .../__tests__/exchange-fee-registry.test.ts | 180 +++++++ .../exchange-posting-builders.test.ts | 185 +++++++ .../exchange-posting-validator.test.ts | 194 ++++++++ .../exchange-subaccount-registry.test.ts | 118 +++++ .../__tests__/exchange-trade-registry.test.ts | 185 +++++++ .../exchange-withdrawal-registry.test.ts | 153 ++++++ .../src/__tests__/ledger-engine.test.ts | 228 +++++++++ .../src/__tests__/ledger-types.test.ts | 47 ++ .../__tests__/reconciliation-engine.test.ts | 95 ++++ .../reconciliation-repository.test.ts | 83 ++++ .../__tests__/reconciliation-types.test.ts | 110 +++++ .../src/__tests__/subaccount-registry.test.ts | 83 ++++ packages/ledger-core/src/account-registry.ts | 46 ++ .../src/exchange-account-registry.ts | 71 +++ .../ledger-core/src/exchange-account-types.ts | 33 ++ .../src/exchange-asset-account-registry.ts | 78 +++ .../src/exchange-deposit-registry.ts | 65 +++ .../ledger-core/src/exchange-deposit-types.ts | 16 + .../ledger-core/src/exchange-fee-registry.ts | 76 +++ .../ledger-core/src/exchange-fee-types.ts | 13 + .../src/exchange-posting-builders.ts | 171 +++++++ .../ledger-core/src/exchange-posting-types.ts | 18 + .../src/exchange-posting-validator.ts | 68 +++ .../src/exchange-subaccount-registry.ts | 70 +++ .../src/exchange-trade-registry.ts | 111 +++++ .../ledger-core/src/exchange-trade-types.ts | 16 + .../src/exchange-withdrawal-registry.ts | 82 ++++ .../src/exchange-withdrawal-types.ts | 18 + packages/ledger-core/src/index.ts | 22 + packages/ledger-core/src/ledger-engine.ts | 99 ++++ packages/ledger-core/src/ledger-types.ts | 63 +++ .../ledger-core/src/reconciliation-engine.ts | 68 +++ .../src/reconciliation-repository.ts | 11 + .../ledger-core/src/reconciliation-types.ts | 44 ++ .../ledger-core/src/subaccount-registry.ts | 46 ++ packages/ledger-core/tsconfig.json | 14 + .../migrations/007_exchange_domain.sql | 367 ++++++++++++++ .../008_exchange_trade_accounts.sql | 76 +++ .../storage/migrations/009_reconciliation.sql | 53 ++ .../010_reconciliation_availability.sql | 59 +++ ...011_reconciliation_difference_nullable.sql | 2 + .../012_withdrawal_segregation_of_duties.sql | 48 ++ 67 files changed, 8215 insertions(+) create mode 100644 apps/api/src/__tests__/exchange-account-repository.test.ts create mode 100644 apps/api/src/__tests__/exchange-asset-account-repository.test.ts create mode 100644 apps/api/src/__tests__/exchange-deposit-repository.test.ts create mode 100644 apps/api/src/__tests__/exchange-fee-repository.test.ts create mode 100644 apps/api/src/__tests__/exchange-subaccount-repository.test.ts create mode 100644 apps/api/src/__tests__/exchange-trade-repository.test.ts create mode 100644 apps/api/src/__tests__/exchange-withdrawal-repository.test.ts create mode 100644 apps/api/src/__tests__/reconciliation-repository.test.ts create mode 100644 apps/api/src/__tests__/reconciliation-service.test.ts create mode 100644 apps/api/src/exchange/exchange-account-repository.ts create mode 100644 apps/api/src/exchange/exchange-asset-account-repository.ts create mode 100644 apps/api/src/exchange/exchange-deposit-repository.ts create mode 100644 apps/api/src/exchange/exchange-fee-repository.ts create mode 100644 apps/api/src/exchange/exchange-subaccount-repository.ts create mode 100644 apps/api/src/exchange/exchange-trade-repository.ts create mode 100644 apps/api/src/exchange/exchange-withdrawal-repository.ts create mode 100644 apps/api/src/reconciliation/index.ts create mode 100644 apps/api/src/reconciliation/reconciliation-repository.ts create mode 100644 apps/api/src/reconciliation/reconciliation-service.ts create mode 100644 packages/ledger-core/package.json create mode 100644 packages/ledger-core/src/__tests__/account-registry.test.ts create mode 100644 packages/ledger-core/src/__tests__/exchange-account-registry.test.ts create mode 100644 packages/ledger-core/src/__tests__/exchange-asset-account-registry.test.ts create mode 100644 packages/ledger-core/src/__tests__/exchange-deposit-registry.test.ts create mode 100644 packages/ledger-core/src/__tests__/exchange-fee-registry.test.ts create mode 100644 packages/ledger-core/src/__tests__/exchange-posting-builders.test.ts create mode 100644 packages/ledger-core/src/__tests__/exchange-posting-validator.test.ts create mode 100644 packages/ledger-core/src/__tests__/exchange-subaccount-registry.test.ts create mode 100644 packages/ledger-core/src/__tests__/exchange-trade-registry.test.ts create mode 100644 packages/ledger-core/src/__tests__/exchange-withdrawal-registry.test.ts create mode 100644 packages/ledger-core/src/__tests__/ledger-engine.test.ts create mode 100644 packages/ledger-core/src/__tests__/ledger-types.test.ts create mode 100644 packages/ledger-core/src/__tests__/reconciliation-engine.test.ts create mode 100644 packages/ledger-core/src/__tests__/reconciliation-repository.test.ts create mode 100644 packages/ledger-core/src/__tests__/reconciliation-types.test.ts create mode 100644 packages/ledger-core/src/__tests__/subaccount-registry.test.ts create mode 100644 packages/ledger-core/src/account-registry.ts create mode 100644 packages/ledger-core/src/exchange-account-registry.ts create mode 100644 packages/ledger-core/src/exchange-account-types.ts create mode 100644 packages/ledger-core/src/exchange-asset-account-registry.ts create mode 100644 packages/ledger-core/src/exchange-deposit-registry.ts create mode 100644 packages/ledger-core/src/exchange-deposit-types.ts create mode 100644 packages/ledger-core/src/exchange-fee-registry.ts create mode 100644 packages/ledger-core/src/exchange-fee-types.ts create mode 100644 packages/ledger-core/src/exchange-posting-builders.ts create mode 100644 packages/ledger-core/src/exchange-posting-types.ts create mode 100644 packages/ledger-core/src/exchange-posting-validator.ts create mode 100644 packages/ledger-core/src/exchange-subaccount-registry.ts create mode 100644 packages/ledger-core/src/exchange-trade-registry.ts create mode 100644 packages/ledger-core/src/exchange-trade-types.ts create mode 100644 packages/ledger-core/src/exchange-withdrawal-registry.ts create mode 100644 packages/ledger-core/src/exchange-withdrawal-types.ts create mode 100644 packages/ledger-core/src/index.ts create mode 100644 packages/ledger-core/src/ledger-engine.ts create mode 100644 packages/ledger-core/src/ledger-types.ts create mode 100644 packages/ledger-core/src/reconciliation-engine.ts create mode 100644 packages/ledger-core/src/reconciliation-repository.ts create mode 100644 packages/ledger-core/src/reconciliation-types.ts create mode 100644 packages/ledger-core/src/subaccount-registry.ts create mode 100644 packages/ledger-core/tsconfig.json create mode 100644 packages/storage/migrations/007_exchange_domain.sql create mode 100644 packages/storage/migrations/008_exchange_trade_accounts.sql create mode 100644 packages/storage/migrations/009_reconciliation.sql create mode 100644 packages/storage/migrations/010_reconciliation_availability.sql create mode 100644 packages/storage/migrations/011_reconciliation_difference_nullable.sql create mode 100644 packages/storage/migrations/012_withdrawal_segregation_of_duties.sql diff --git a/apps/api/package.json b/apps/api/package.json index 2042e8a..c63c324 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -15,6 +15,7 @@ "dependencies": { "@crypto-wallet/cache": "workspace:*", "@crypto-wallet/config": "workspace:*", + "@crypto-wallet/ledger-core": "workspace:*", "@crypto-wallet/shared-types": "workspace:*", "@crypto-wallet/storage": "workspace:*", "@opentelemetry/api": "^1.9.1", diff --git a/apps/api/src/__tests__/exchange-account-repository.test.ts b/apps/api/src/__tests__/exchange-account-repository.test.ts new file mode 100644 index 0000000..2d605be --- /dev/null +++ b/apps/api/src/__tests__/exchange-account-repository.test.ts @@ -0,0 +1,145 @@ +import { randomUUID } from "node:crypto"; + +import { describe, expect, it } from "vitest"; + +import { PostgresStorage } from "@crypto-wallet/storage"; + +import { + ExchangeAccountRepository, +} from "../exchange/exchange-account-repository.js"; + +const databaseUrl = process.env.DATABASE_URL; + +if (!databaseUrl) { + throw new Error( + "DATABASE_URL is required for exchange account repository tests", + ); +} + +describe("ExchangeAccountRepository", () => { + it("creates and finds a customer exchange account", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeAccountRepository(storage); + + const ownerId = randomUUID(); + + try { + await storage.connect(); + + const created = await repository.create({ + ownerType: "customer", + ownerId, + kind: "customer", + }); + + expect(created).toMatchObject({ + ownerType: "customer", + ownerId, + kind: "customer", + status: "active", + }); + + expect(created.id).toBeTruthy(); + expect(created.createdAt).toBeInstanceOf(Date); + + const found = await repository.findById(created.id); + + expect(found).toEqual(created); + } finally { + await storage.query( + ` + DELETE FROM exchange_accounts + WHERE owner_id = $1 + `, + [ownerId], + ); + + await storage.disconnect(); + } + }); + + it("finds an account by owner and kind", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeAccountRepository(storage); + + const ownerId = randomUUID(); + + try { + await storage.connect(); + + const created = await repository.create({ + ownerType: "platform", + ownerId, + kind: "treasury", + }); + + const found = await repository.findByOwnerAndKind( + "platform", + ownerId, + "treasury", + ); + + expect(found).toEqual(created); + } finally { + await storage.query( + ` + DELETE FROM exchange_accounts + WHERE owner_id = $1 + `, + [ownerId], + ); + + await storage.disconnect(); + } + }); + + it("returns null for an unknown account", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeAccountRepository(storage); + + try { + await storage.connect(); + + const found = await repository.findById(randomUUID()); + + expect(found).toBeNull(); + } finally { + await storage.disconnect(); + } + }); + + it("enforces the database uniqueness boundary", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeAccountRepository(storage); + + const ownerId = randomUUID(); + + try { + await storage.connect(); + + await repository.create({ + ownerType: "customer", + ownerId, + kind: "customer", + }); + + await expect( + repository.create({ + ownerType: "customer", + ownerId, + kind: "customer", + }), + ).rejects.toThrow(); + } finally { + await storage.query( + ` + DELETE FROM exchange_accounts + WHERE owner_id = $1 + `, + [ownerId], + ); + + await storage.disconnect(); + } + }); +}); \ No newline at end of file diff --git a/apps/api/src/__tests__/exchange-asset-account-repository.test.ts b/apps/api/src/__tests__/exchange-asset-account-repository.test.ts new file mode 100644 index 0000000..4ca0c94 --- /dev/null +++ b/apps/api/src/__tests__/exchange-asset-account-repository.test.ts @@ -0,0 +1,452 @@ +import { randomUUID } from "node:crypto"; + +import { describe, expect, it } from "vitest"; + +import { PostgresStorage } from "@crypto-wallet/storage"; + +import { + ExchangeAssetAccountRepository, +} from "../exchange/exchange-asset-account-repository.js"; + +const databaseUrl = process.env.DATABASE_URL; + +if (!databaseUrl) { + throw new Error( + "DATABASE_URL is required for exchange asset account repository tests", + ); +} + +describe("ExchangeAssetAccountRepository", () => { + async function createFixtures(storage: PostgresStorage) { + const exchangeAccountId = randomUUID(); + const networkId = randomUUID(); + const assetId = randomUUID(); + + await storage.query( + ` + INSERT INTO exchange_accounts ( + id, + owner_type, + owner_id, + kind + ) + VALUES ($1, 'customer', $2, 'customer') + `, + [exchangeAccountId, randomUUID()], + ); + + await storage.query( + ` + INSERT INTO networks ( + id, + key, + name, + chain, + environment + ) + VALUES ($1, $2, $3, $4, $5) + `, + [ + networkId, + `test-${networkId}`, + "Test Network", + "test-chain", + "test", + ], + ); + + await storage.query( + ` + INSERT INTO assets ( + id, + network_id, + symbol, + name, + decimals, + asset_type + ) + VALUES ($1, $2, $3, $4, $5, $6) + `, + [ + assetId, + networkId, + `T${assetId.slice(0, 6)}`, + "Test Asset", + 18, + "native", + ], + ); + + return { + exchangeAccountId, + networkId, + assetId, + }; + } + + async function cleanupFixtures( + storage: PostgresStorage, + exchangeAccountId: string, + networkId: string, + assetId: string, + ) { + await storage.query( + ` + DELETE FROM exchange_asset_accounts + WHERE exchange_account_id = $1 + `, + [exchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM exchange_accounts + WHERE id = $1 + `, + [exchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM assets + WHERE id = $1 + `, + [assetId], + ); + + await storage.query( + ` + DELETE FROM networks + WHERE id = $1 + `, + [networkId], + ); + } + + it("creates and finds an exchange asset account", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeAssetAccountRepository(storage); + + let fixtures: + | { + exchangeAccountId: string; + networkId: string; + assetId: string; + } + | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const created = await repository.create({ + exchangeAccountId: fixtures.exchangeAccountId, + assetId: fixtures.assetId, + networkId: fixtures.networkId, + }); + + expect(created).toMatchObject({ + exchangeAccountId: fixtures.exchangeAccountId, + assetId: fixtures.assetId, + networkId: fixtures.networkId, + }); + + expect(created.createdAt).toBeInstanceOf(Date); + + const found = await repository.findById(created.id); + + expect(found).toEqual(created); + } finally { + if (fixtures) { + await cleanupFixtures( + storage, + fixtures.exchangeAccountId, + fixtures.networkId, + fixtures.assetId, + ); + } + + await storage.disconnect(); + } + }); + + it("finds an asset account by exchange account and asset", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeAssetAccountRepository(storage); + + let fixtures: + | { + exchangeAccountId: string; + networkId: string; + assetId: string; + } + | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const created = await repository.create({ + exchangeAccountId: fixtures.exchangeAccountId, + assetId: fixtures.assetId, + networkId: fixtures.networkId, + }); + + const found = await repository.findByAccountAndAsset( + fixtures.exchangeAccountId, + fixtures.assetId, + ); + + expect(found).toEqual(created); + } finally { + if (fixtures) { + await cleanupFixtures( + storage, + fixtures.exchangeAccountId, + fixtures.networkId, + fixtures.assetId, + ); + } + + await storage.disconnect(); + } + }); + + it("lists asset accounts for an exchange account", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeAssetAccountRepository(storage); + + let exchangeAccountId: string | undefined; + let networkId: string | undefined; + let assetId: string | undefined; + let secondAssetId: string | undefined; + + try { + await storage.connect(); + + const fixtures = await createFixtures(storage); + + exchangeAccountId = fixtures.exchangeAccountId; + networkId = fixtures.networkId; + assetId = fixtures.assetId; + secondAssetId = randomUUID(); + + await storage.query( + ` + INSERT INTO assets ( + id, + network_id, + symbol, + name, + decimals, + asset_type + ) + VALUES ($1, $2, $3, $4, $5, $6) + `, + [ + secondAssetId, + networkId, + `U${secondAssetId.slice(0, 6)}`, + "Second Test Asset", + 18, + "native", + ], + ); + + const first = await repository.create({ + exchangeAccountId, + assetId, + networkId, + }); + + const second = await repository.create({ + exchangeAccountId, + assetId: secondAssetId, + networkId, + }); + + const listed = await repository.listByExchangeAccount( + exchangeAccountId, + ); + + expect(listed).toEqual([first, second]); + } finally { + if (exchangeAccountId) { + await storage.query( + ` + DELETE FROM exchange_asset_accounts + WHERE exchange_account_id = $1 + `, + [exchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM exchange_accounts + WHERE id = $1 + `, + [exchangeAccountId], + ); + } + + if (assetId) { + await storage.query( + `DELETE FROM assets WHERE id = $1`, + [assetId], + ); + } + + if (secondAssetId) { + await storage.query( + `DELETE FROM assets WHERE id = $1`, + [secondAssetId], + ); + } + + if (networkId) { + await storage.query( + `DELETE FROM networks WHERE id = $1`, + [networkId], + ); + } + + await storage.disconnect(); + } + }); + + it("rejects an asset paired with the wrong network", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeAssetAccountRepository(storage); + + let exchangeAccountId: string | undefined; + let networkId: string | undefined; + let assetId: string | undefined; + let wrongNetworkId: string | undefined; + + try { + await storage.connect(); + + const fixtures = await createFixtures(storage); + + exchangeAccountId = fixtures.exchangeAccountId; + networkId = fixtures.networkId; + assetId = fixtures.assetId; + wrongNetworkId = randomUUID(); + + await storage.query( + ` + INSERT INTO networks ( + id, + key, + name, + chain, + environment + ) + VALUES ($1, $2, $3, $4, $5) + `, + [ + wrongNetworkId, + `wrong-${wrongNetworkId}`, + "Wrong Network", + "wrong-chain", + "test", + ], + ); + + await expect( + repository.create({ + exchangeAccountId, + assetId, + networkId: wrongNetworkId, + }), + ).rejects.toThrow(); + } finally { + if (exchangeAccountId) { + await storage.query( + ` + DELETE FROM exchange_asset_accounts + WHERE exchange_account_id = $1 + `, + [exchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM exchange_accounts + WHERE id = $1 + `, + [exchangeAccountId], + ); + } + + if (assetId) { + await storage.query( + `DELETE FROM assets WHERE id = $1`, + [assetId], + ); + } + + if (wrongNetworkId) { + await storage.query( + `DELETE FROM networks WHERE id = $1`, + [wrongNetworkId], + ); + } + + if (networkId) { + await storage.query( + `DELETE FROM networks WHERE id = $1`, + [networkId], + ); + } + + await storage.disconnect(); + } + }); + + it("enforces one asset account per exchange account and asset", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeAssetAccountRepository(storage); + + let fixtures: + | { + exchangeAccountId: string; + networkId: string; + assetId: string; + } + | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + await repository.create({ + exchangeAccountId: fixtures.exchangeAccountId, + assetId: fixtures.assetId, + networkId: fixtures.networkId, + }); + + await expect( + repository.create({ + exchangeAccountId: fixtures.exchangeAccountId, + assetId: fixtures.assetId, + networkId: fixtures.networkId, + }), + ).rejects.toThrow(); + } finally { + if (fixtures) { + await cleanupFixtures( + storage, + fixtures.exchangeAccountId, + fixtures.networkId, + fixtures.assetId, + ); + } + + await storage.disconnect(); + } + }); +}); \ No newline at end of file diff --git a/apps/api/src/__tests__/exchange-deposit-repository.test.ts b/apps/api/src/__tests__/exchange-deposit-repository.test.ts new file mode 100644 index 0000000..eeb3b28 --- /dev/null +++ b/apps/api/src/__tests__/exchange-deposit-repository.test.ts @@ -0,0 +1,367 @@ +import { randomUUID } from "node:crypto"; + +import { describe, expect, it } from "vitest"; + +import { PostgresStorage } from "@crypto-wallet/storage"; + +import { + ExchangeDepositRepository, +} from "../exchange/exchange-deposit-repository.js"; + +const databaseUrl = process.env.DATABASE_URL; + +if (!databaseUrl) { + throw new Error( + "DATABASE_URL is required for exchange deposit repository tests", + ); +} + +describe("ExchangeDepositRepository", () => { + async function createFixtures(storage: PostgresStorage) { + const exchangeAccountId = randomUUID(); + const networkId = randomUUID(); + const assetId = randomUUID(); + const exchangeAssetAccountId = randomUUID(); + + await storage.query( + ` + INSERT INTO exchange_accounts ( + id, + owner_type, + owner_id, + kind + ) + VALUES ($1, 'customer', $2, 'customer') + `, + [exchangeAccountId, randomUUID()], + ); + + await storage.query( + ` + INSERT INTO networks ( + id, + key, + name, + chain, + environment + ) + VALUES ($1, $2, $3, $4, $5) + `, + [ + networkId, + `deposit-test-${networkId}`, + "Deposit Test Network", + "deposit-test-chain", + "test", + ], + ); + + await storage.query( + ` + INSERT INTO assets ( + id, + network_id, + symbol, + name, + decimals, + asset_type + ) + VALUES ($1, $2, $3, $4, $5, $6) + `, + [ + assetId, + networkId, + `D${assetId.slice(0, 6)}`, + "Deposit Test Asset", + 18, + "native", + ], + ); + + await storage.query( + ` + INSERT INTO exchange_asset_accounts ( + id, + exchange_account_id, + asset_id, + network_id + ) + VALUES ($1, $2, $3, $4) + `, + [ + exchangeAssetAccountId, + exchangeAccountId, + assetId, + networkId, + ], + ); + + return { + exchangeAccountId, + networkId, + assetId, + exchangeAssetAccountId, + }; + } + + async function cleanupFixtures( + storage: PostgresStorage, + exchangeAccountId: string, + networkId: string, + assetId: string, + ) { + await storage.query( + ` + DELETE FROM exchange_deposits + WHERE exchange_asset_account_id IN ( + SELECT id + FROM exchange_asset_accounts + WHERE exchange_account_id = $1 + ) + `, + [exchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM exchange_asset_accounts + WHERE exchange_account_id = $1 + `, + [exchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM exchange_accounts + WHERE id = $1 + `, + [exchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM assets + WHERE id = $1 + `, + [assetId], + ); + + await storage.query( + ` + DELETE FROM networks + WHERE id = $1 + `, + [networkId], + ); + } + + it("creates and finds a deposit", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeDepositRepository(storage); + + let fixtures: + | { + exchangeAccountId: string; + networkId: string; + assetId: string; + exchangeAssetAccountId: string; + } + | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const created = await repository.create({ + exchangeAssetAccountId: fixtures.exchangeAssetAccountId, + networkId: fixtures.networkId, + transactionHash: `tx-${randomUUID()}`, + amount: "1250000", + reference: `deposit-${randomUUID()}`, + }); + + expect(created).toMatchObject({ + exchangeAssetAccountId: fixtures.exchangeAssetAccountId, + networkId: fixtures.networkId, + amount: "1250000", + status: "detected", + }); + + expect(created.createdAt).toBeInstanceOf(Date); + + const found = await repository.findById(created.id); + + expect(found).toEqual(created); + } finally { + if (fixtures) { + await cleanupFixtures( + storage, + fixtures.exchangeAccountId, + fixtures.networkId, + fixtures.assetId, + ); + } + + await storage.disconnect(); + } + }); + + it("finds a deposit by reference", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeDepositRepository(storage); + + let fixtures: + | { + exchangeAccountId: string; + networkId: string; + assetId: string; + exchangeAssetAccountId: string; + } + | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const reference = `deposit-${randomUUID()}`; + + const created = await repository.create({ + exchangeAssetAccountId: fixtures.exchangeAssetAccountId, + networkId: fixtures.networkId, + transactionHash: `tx-${randomUUID()}`, + amount: "2500000", + reference, + }); + + const found = await repository.findByReference(reference); + + expect(found).toEqual(created); + } finally { + if (fixtures) { + await cleanupFixtures( + storage, + fixtures.exchangeAccountId, + fixtures.networkId, + fixtures.assetId, + ); + } + + await storage.disconnect(); + } + }); + + it("finds a deposit by network and transaction hash", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeDepositRepository(storage); + + let fixtures: + | { + exchangeAccountId: string; + networkId: string; + assetId: string; + exchangeAssetAccountId: string; + } + | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const transactionHash = `tx-${randomUUID()}`; + + const created = await repository.create({ + exchangeAssetAccountId: fixtures.exchangeAssetAccountId, + networkId: fixtures.networkId, + transactionHash, + amount: "5000000", + reference: `deposit-${randomUUID()}`, + }); + + const found = await repository.findByTransaction( + fixtures.networkId, + transactionHash, + ); + + expect(found).toEqual(created); + } finally { + if (fixtures) { + await cleanupFixtures( + storage, + fixtures.exchangeAccountId, + fixtures.networkId, + fixtures.assetId, + ); + } + + await storage.disconnect(); + } + }); + + it("returns null for an unknown deposit", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeDepositRepository(storage); + + try { + await storage.connect(); + + const found = await repository.findById(randomUUID()); + + expect(found).toBeNull(); + } finally { + await storage.disconnect(); + } + }); + + it("enforces unique deposit references", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeDepositRepository(storage); + + let fixtures: + | { + exchangeAccountId: string; + networkId: string; + assetId: string; + exchangeAssetAccountId: string; + } + | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const reference = `duplicate-deposit-${randomUUID()}`; + + const input = { + exchangeAssetAccountId: fixtures.exchangeAssetAccountId, + networkId: fixtures.networkId, + transactionHash: `tx-${randomUUID()}`, + amount: "1000000", + reference, + }; + + await repository.create(input); + + await expect( + repository.create({ + ...input, + transactionHash: `tx-${randomUUID()}`, + }), + ).rejects.toThrow(); + } finally { + if (fixtures) { + await cleanupFixtures( + storage, + fixtures.exchangeAccountId, + fixtures.networkId, + fixtures.assetId, + ); + } + + await storage.disconnect(); + } + }); +}); \ No newline at end of file diff --git a/apps/api/src/__tests__/exchange-fee-repository.test.ts b/apps/api/src/__tests__/exchange-fee-repository.test.ts new file mode 100644 index 0000000..21832d4 --- /dev/null +++ b/apps/api/src/__tests__/exchange-fee-repository.test.ts @@ -0,0 +1,420 @@ +import { randomUUID } from "node:crypto"; + +import { describe, expect, it } from "vitest"; + +import { PostgresStorage } from "@crypto-wallet/storage"; + +import { ExchangeFeeRepository } from "../exchange/exchange-fee-repository.js"; + +const databaseUrl = process.env.DATABASE_URL; + +if (!databaseUrl) { + throw new Error("DATABASE_URL is required for exchange fee repository tests"); +} + +describe("ExchangeFeeRepository", () => { + async function createFixtures(storage: PostgresStorage) { + const buyerExchangeAccountId = randomUUID(); + const sellerExchangeAccountId = randomUUID(); + const feeExchangeAccountId = randomUUID(); + + const networkId = randomUUID(); + const baseAssetId = randomUUID(); + const quoteAssetId = randomUUID(); + + const buyerBaseExchangeAssetAccountId = randomUUID(); + const buyerQuoteExchangeAssetAccountId = randomUUID(); + const sellerBaseExchangeAssetAccountId = randomUUID(); + const sellerQuoteExchangeAssetAccountId = randomUUID(); + const feeExchangeAssetAccountId = randomUUID(); + + const tradeId = randomUUID(); + + await storage.query( + ` + INSERT INTO exchange_accounts ( + id, + owner_type, + owner_id, + kind + ) + VALUES + ($1, 'customer', $4, 'customer'), + ($2, 'customer', $5, 'customer'), + ($3, 'platform', $6, 'fee') + `, + [ + buyerExchangeAccountId, + sellerExchangeAccountId, + feeExchangeAccountId, + randomUUID(), + randomUUID(), + randomUUID(), + ], + ); + + await storage.query( + ` + INSERT INTO networks ( + id, + key, + name, + chain, + environment + ) + VALUES ($1, $2, $3, $4, $5) + `, + [networkId, `fee-test-${networkId}`, "Fee Test Network", "fee-test-chain", "test"], + ); + + await storage.query( + ` + INSERT INTO assets ( + id, + network_id, + symbol, + name, + decimals, + asset_type + ) + VALUES + ($1, $3, $5, 'Fee Base Asset', 18, 'native'), + ($2, $4, $6, 'Fee Quote Asset', 6, 'native') + `, + [ + baseAssetId, + quoteAssetId, + networkId, + networkId, + `B${baseAssetId.slice(0, 6)}`, + `Q${quoteAssetId.slice(0, 6)}`, + ], + ); + + await storage.query( + ` + INSERT INTO exchange_asset_accounts ( + id, + exchange_account_id, + asset_id, + network_id + ) + VALUES + ($1, $5, $9, $13), + ($2, $6, $10, $13), + ($3, $7, $11, $13), + ($4, $8, $12, $13), + ($14, $15, $9, $13) + `, + [ + buyerBaseExchangeAssetAccountId, + buyerQuoteExchangeAssetAccountId, + sellerBaseExchangeAssetAccountId, + sellerQuoteExchangeAssetAccountId, + buyerExchangeAccountId, + buyerExchangeAccountId, + sellerExchangeAccountId, + sellerExchangeAccountId, + baseAssetId, + quoteAssetId, + baseAssetId, + quoteAssetId, + networkId, + feeExchangeAssetAccountId, + feeExchangeAccountId, + ], + ); + + await storage.query( + ` + INSERT INTO exchange_trades ( + id, + buyer_base_exchange_asset_account_id, + buyer_quote_exchange_asset_account_id, + seller_base_exchange_asset_account_id, + seller_quote_exchange_asset_account_id, + base_asset_id, + quote_asset_id, + base_amount, + quote_amount, + price_numerator, + price_denominator, + status, + reference, + executed_at + ) + VALUES ( + $1, + $2, + $3, + $4, + $5, + $6, + $7, + 1000000, + 2000000, + 2, + 1, + 'executed', + $8, + NOW() + ) + `, + [ + tradeId, + buyerBaseExchangeAssetAccountId, + buyerQuoteExchangeAssetAccountId, + sellerBaseExchangeAssetAccountId, + sellerQuoteExchangeAssetAccountId, + baseAssetId, + quoteAssetId, + `trade-${randomUUID()}`, + ], + ); + + return { + buyerExchangeAccountId, + sellerExchangeAccountId, + feeExchangeAccountId, + networkId, + baseAssetId, + quoteAssetId, + buyerBaseExchangeAssetAccountId, + buyerQuoteExchangeAssetAccountId, + sellerBaseExchangeAssetAccountId, + sellerQuoteExchangeAssetAccountId, + feeExchangeAssetAccountId, + tradeId, + }; + } + + async function cleanupFixtures( + storage: PostgresStorage, + fixtures: { + buyerExchangeAccountId: string; + sellerExchangeAccountId: string; + feeExchangeAccountId: string; + networkId: string; + baseAssetId: string; + quoteAssetId: string; + tradeId: string; + }, + ) { + await storage.query( + ` + DELETE FROM exchange_fees + WHERE trade_id = $1 + `, + [fixtures.tradeId], + ); + + await storage.query( + ` + DELETE FROM exchange_trades + WHERE id = $1 + `, + [fixtures.tradeId], + ); + + await storage.query( + ` + DELETE FROM exchange_asset_accounts + WHERE exchange_account_id IN ($1, $2, $3) + `, + [ + fixtures.buyerExchangeAccountId, + fixtures.sellerExchangeAccountId, + fixtures.feeExchangeAccountId, + ], + ); + + await storage.query( + ` + DELETE FROM exchange_accounts + WHERE id IN ($1, $2, $3) + `, + [ + fixtures.buyerExchangeAccountId, + fixtures.sellerExchangeAccountId, + fixtures.feeExchangeAccountId, + ], + ); + + await storage.query( + ` + DELETE FROM assets + WHERE id IN ($1, $2) + `, + [fixtures.baseAssetId, fixtures.quoteAssetId], + ); + + await storage.query( + ` + DELETE FROM networks + WHERE id = $1 + `, + [fixtures.networkId], + ); + } + + it("creates and finds a fee", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeFeeRepository(storage); + + let fixtures: Awaited> | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const created = await repository.create({ + tradeId: fixtures.tradeId, + sourceExchangeAssetAccountId: fixtures.buyerBaseExchangeAssetAccountId, + feeExchangeAssetAccountId: fixtures.feeExchangeAssetAccountId, + assetId: fixtures.baseAssetId, + amount: "2500", + reference: `fee-${randomUUID()}`, + }); + + expect(created).toMatchObject({ + tradeId: fixtures.tradeId, + sourceExchangeAssetAccountId: fixtures.buyerBaseExchangeAssetAccountId, + feeExchangeAssetAccountId: fixtures.feeExchangeAssetAccountId, + assetId: fixtures.baseAssetId, + amount: "2500", + status: "charged", + }); + + expect(created.createdAt).toBeInstanceOf(Date); + + const found = await repository.findById(created.id); + + expect(found).toEqual(created); + } finally { + if (fixtures) { + await cleanupFixtures(storage, fixtures); + } + + await storage.disconnect(); + } + }); + + it("finds a fee by reference", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeFeeRepository(storage); + + let fixtures: Awaited> | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const reference = `fee-${randomUUID()}`; + + const created = await repository.create({ + tradeId: fixtures.tradeId, + sourceExchangeAssetAccountId: fixtures.buyerBaseExchangeAssetAccountId, + feeExchangeAssetAccountId: fixtures.feeExchangeAssetAccountId, + assetId: fixtures.baseAssetId, + amount: "5000", + reference, + }); + + const found = await repository.findByReference(reference); + + expect(found).toEqual(created); + } finally { + if (fixtures) { + await cleanupFixtures(storage, fixtures); + } + + await storage.disconnect(); + } + }); + + it("preserves an explicitly supplied reversed status", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeFeeRepository(storage); + + let fixtures: Awaited> | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const created = await repository.create({ + tradeId: fixtures.tradeId, + sourceExchangeAssetAccountId: fixtures.buyerBaseExchangeAssetAccountId, + feeExchangeAssetAccountId: fixtures.feeExchangeAssetAccountId, + assetId: fixtures.baseAssetId, + amount: "1000", + status: "reversed", + reference: `fee-${randomUUID()}`, + }); + + expect(created.status).toBe("reversed"); + } finally { + if (fixtures) { + await cleanupFixtures(storage, fixtures); + } + + await storage.disconnect(); + } + }); + + it("returns null for an unknown fee", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeFeeRepository(storage); + + try { + await storage.connect(); + + const found = await repository.findById(randomUUID()); + + expect(found).toBeNull(); + } finally { + await storage.disconnect(); + } + }); + + it("enforces unique fee references", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeFeeRepository(storage); + + let fixtures: Awaited> | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const reference = `duplicate-fee-${randomUUID()}`; + + const input = { + tradeId: fixtures.tradeId, + sourceExchangeAssetAccountId: fixtures.buyerBaseExchangeAssetAccountId, + feeExchangeAssetAccountId: fixtures.feeExchangeAssetAccountId, + assetId: fixtures.baseAssetId, + amount: "1000", + reference, + }; + + await repository.create(input); + + await expect( + repository.create({ + ...input, + }), + ).rejects.toThrow(); + } finally { + if (fixtures) { + await cleanupFixtures(storage, fixtures); + } + + await storage.disconnect(); + } + }); +}); diff --git a/apps/api/src/__tests__/exchange-subaccount-repository.test.ts b/apps/api/src/__tests__/exchange-subaccount-repository.test.ts new file mode 100644 index 0000000..0f319f7 --- /dev/null +++ b/apps/api/src/__tests__/exchange-subaccount-repository.test.ts @@ -0,0 +1,206 @@ +import { randomUUID } from "node:crypto"; + +import { describe, expect, it } from "vitest"; + +import { PostgresStorage } from "@crypto-wallet/storage"; + +import { + ExchangeSubaccountRepository, +} from "../exchange/exchange-subaccount-repository.js"; + +const databaseUrl = process.env.DATABASE_URL; + +if (!databaseUrl) { + throw new Error( + "DATABASE_URL is required for exchange subaccount repository tests", + ); +} + +describe("ExchangeSubaccountRepository", () => { + it("creates and finds a subaccount", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeSubaccountRepository(storage); + + const exchangeAccountId = randomUUID(); + + try { + await storage.connect(); + + await storage.query( + ` + INSERT INTO exchange_accounts ( + id, + owner_type, + owner_id, + kind + ) + VALUES ($1, 'customer', $2, 'customer') + `, + [exchangeAccountId, randomUUID()], + ); + + const created = await repository.create({ + exchangeAccountId, + name: "spot", + }); + + expect(created).toMatchObject({ + exchangeAccountId, + name: "spot", + }); + + expect(created.id).toBeTruthy(); + expect(created.createdAt).toBeInstanceOf(Date); + + const found = await repository.findById(created.id); + + expect(found).toEqual(created); + + } finally { + await storage.query( + ` + DELETE FROM exchange_subaccounts + WHERE exchange_account_id = $1 + `, + [exchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM exchange_accounts + WHERE id = $1 + `, + [exchangeAccountId], + ); + + await storage.disconnect(); + } + }); + + it("lists subaccounts for an exchange account", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeSubaccountRepository(storage); + + const exchangeAccountId = randomUUID(); + + try { + await storage.connect(); + + await storage.query( + ` + INSERT INTO exchange_accounts ( + id, + owner_type, + owner_id, + kind + ) + VALUES ($1, 'customer', $2, 'customer') + `, + [exchangeAccountId, randomUUID()], + ); + + const first = await repository.create({ + exchangeAccountId, + name: "spot", + }); + + const second = await repository.create({ + exchangeAccountId, + name: "margin", + }); + + const listed = await repository.listByExchangeAccount( + exchangeAccountId, + ); + + expect(listed).toEqual([first, second]); + } finally { + await storage.query( + ` + DELETE FROM exchange_subaccounts + WHERE exchange_account_id = $1 + `, + [exchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM exchange_accounts + WHERE id = $1 + `, + [exchangeAccountId], + ); + + await storage.disconnect(); + } + }); + + it("returns null for an unknown subaccount", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeSubaccountRepository(storage); + + try { + await storage.connect(); + + const found = await repository.findById(randomUUID()); + + expect(found).toBeNull(); + } finally { + await storage.disconnect(); + } + }); + + it("enforces unique subaccount names per exchange account", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeSubaccountRepository(storage); + + const exchangeAccountId = randomUUID(); + + try { + await storage.connect(); + + await storage.query( + ` + INSERT INTO exchange_accounts ( + id, + owner_type, + owner_id, + kind + ) + VALUES ($1, 'customer', $2, 'customer') + `, + [exchangeAccountId, randomUUID()], + ); + + await repository.create({ + exchangeAccountId, + name: "spot", + }); + + await expect( + repository.create({ + exchangeAccountId, + name: "spot", + }), + ).rejects.toThrow(); + } finally { + await storage.query( + ` + DELETE FROM exchange_subaccounts + WHERE exchange_account_id = $1 + `, + [exchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM exchange_accounts + WHERE id = $1 + `, + [exchangeAccountId], + ); + + await storage.disconnect(); + } + }); +}); \ No newline at end of file diff --git a/apps/api/src/__tests__/exchange-trade-repository.test.ts b/apps/api/src/__tests__/exchange-trade-repository.test.ts new file mode 100644 index 0000000..342ad5f --- /dev/null +++ b/apps/api/src/__tests__/exchange-trade-repository.test.ts @@ -0,0 +1,382 @@ +import { randomUUID } from "node:crypto"; + +import { describe, expect, it } from "vitest"; + +import { PostgresStorage } from "@crypto-wallet/storage"; + +import { ExchangeTradeRepository } from "../exchange/exchange-trade-repository.js"; + +const databaseUrl = process.env.DATABASE_URL; + +if (!databaseUrl) { + throw new Error("DATABASE_URL is required for exchange trade repository tests"); +} + +describe("ExchangeTradeRepository", () => { + async function createFixtures(storage: PostgresStorage) { + const buyerExchangeAccountId = randomUUID(); + const sellerExchangeAccountId = randomUUID(); + + const networkId = randomUUID(); + const baseAssetId = randomUUID(); + const quoteAssetId = randomUUID(); + + const buyerBaseAccountId = randomUUID(); + const buyerQuoteAccountId = randomUUID(); + const sellerBaseAccountId = randomUUID(); + const sellerQuoteAccountId = randomUUID(); + + await storage.query( + ` + INSERT INTO exchange_accounts ( + id, + owner_type, + owner_id, + kind + ) + VALUES + ($1, 'customer', $3, 'customer'), + ($2, 'customer', $4, 'customer') + `, + [buyerExchangeAccountId, sellerExchangeAccountId, randomUUID(), randomUUID()], + ); + + await storage.query( + ` + INSERT INTO networks ( + id, + key, + name, + chain, + environment + ) + VALUES ($1, $2, $3, $4, $5) + `, + [networkId, `trade-test-${networkId}`, "Trade Test Network", "trade-test-chain", "test"], + ); + + await storage.query( + ` + INSERT INTO assets ( + id, + network_id, + symbol, + name, + decimals, + asset_type + ) + VALUES + ($1, $3, $5, 'Trade Base Asset', 18, 'native'), + ($2, $4, $6, 'Trade Quote Asset', 6, 'native') + `, + [ + baseAssetId, + quoteAssetId, + networkId, + networkId, + `B${baseAssetId.slice(0, 6)}`, + `Q${quoteAssetId.slice(0, 6)}`, + ], + ); + + await storage.query( + ` + INSERT INTO exchange_asset_accounts ( + id, + exchange_account_id, + asset_id, + network_id + ) + VALUES + ($1, $5, $9, $13), + ($2, $6, $10, $13), + ($3, $7, $11, $13), + ($4, $8, $12, $13) + `, + [ + buyerBaseAccountId, + buyerQuoteAccountId, + sellerBaseAccountId, + sellerQuoteAccountId, + buyerExchangeAccountId, + buyerExchangeAccountId, + sellerExchangeAccountId, + sellerExchangeAccountId, + baseAssetId, + quoteAssetId, + baseAssetId, + quoteAssetId, + networkId, + ], + ); + + return { + buyerExchangeAccountId, + sellerExchangeAccountId, + networkId, + baseAssetId, + quoteAssetId, + buyerBaseAccountId, + buyerQuoteAccountId, + sellerBaseAccountId, + sellerQuoteAccountId, + }; + } + + async function cleanupFixtures( + storage: PostgresStorage, + fixtures: { + buyerExchangeAccountId: string; + sellerExchangeAccountId: string; + networkId: string; + baseAssetId: string; + quoteAssetId: string; + }, + ) { + await storage.query( + ` + DELETE FROM exchange_trades + WHERE buyer_base_exchange_asset_account_id IN ( + SELECT id + FROM exchange_asset_accounts + WHERE exchange_account_id IN ($1, $2) + ) + OR buyer_quote_exchange_asset_account_id IN ( + SELECT id + FROM exchange_asset_accounts + WHERE exchange_account_id IN ($1, $2) + ) + OR seller_base_exchange_asset_account_id IN ( + SELECT id + FROM exchange_asset_accounts + WHERE exchange_account_id IN ($1, $2) + ) + OR seller_quote_exchange_asset_account_id IN ( + SELECT id + FROM exchange_asset_accounts + WHERE exchange_account_id IN ($1, $2) + ) + `, + [fixtures.buyerExchangeAccountId, fixtures.sellerExchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM exchange_asset_accounts + WHERE exchange_account_id IN ($1, $2) + `, + [fixtures.buyerExchangeAccountId, fixtures.sellerExchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM exchange_accounts + WHERE id IN ($1, $2) + `, + [fixtures.buyerExchangeAccountId, fixtures.sellerExchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM assets + WHERE id IN ($1, $2) + `, + [fixtures.baseAssetId, fixtures.quoteAssetId], + ); + + await storage.query( + ` + DELETE FROM networks + WHERE id = $1 + `, + [fixtures.networkId], + ); + } + + it("creates and finds a trade", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeTradeRepository(storage); + + let fixtures: Awaited> | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const created = await repository.create({ + buyerBaseExchangeAssetAccountId: fixtures.buyerBaseAccountId, + buyerQuoteExchangeAssetAccountId: fixtures.buyerQuoteAccountId, + sellerBaseExchangeAssetAccountId: fixtures.sellerBaseAccountId, + sellerQuoteExchangeAssetAccountId: fixtures.sellerQuoteAccountId, + baseAssetId: fixtures.baseAssetId, + quoteAssetId: fixtures.quoteAssetId, + baseAmount: "1250000", + quoteAmount: "2500000", + priceNumerator: "2", + priceDenominator: "1", + reference: `trade-${randomUUID()}`, + }); + + expect(created).toMatchObject({ + buyerBaseExchangeAssetAccountId: fixtures.buyerBaseAccountId, + buyerQuoteExchangeAssetAccountId: fixtures.buyerQuoteAccountId, + sellerBaseExchangeAssetAccountId: fixtures.sellerBaseAccountId, + sellerQuoteExchangeAssetAccountId: fixtures.sellerQuoteAccountId, + baseAssetId: fixtures.baseAssetId, + quoteAssetId: fixtures.quoteAssetId, + baseAmount: "1250000", + quoteAmount: "2500000", + priceNumerator: "2", + priceDenominator: "1", + status: "executed", + }); + + expect(created.executedAt).toBeInstanceOf(Date); + + const found = await repository.findById(created.id); + + expect(found).toEqual(created); + } finally { + if (fixtures) { + await cleanupFixtures(storage, fixtures); + } + + await storage.disconnect(); + } + }); + + it("finds a trade by reference", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeTradeRepository(storage); + + let fixtures: Awaited> | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const reference = `trade-${randomUUID()}`; + + const created = await repository.create({ + buyerBaseExchangeAssetAccountId: fixtures.buyerBaseAccountId, + buyerQuoteExchangeAssetAccountId: fixtures.buyerQuoteAccountId, + sellerBaseExchangeAssetAccountId: fixtures.sellerBaseAccountId, + sellerQuoteExchangeAssetAccountId: fixtures.sellerQuoteAccountId, + baseAssetId: fixtures.baseAssetId, + quoteAssetId: fixtures.quoteAssetId, + baseAmount: "1000000", + quoteAmount: "3000000", + priceNumerator: "3", + priceDenominator: "1", + reference, + }); + + const found = await repository.findByReference(reference); + + expect(found).toEqual(created); + } finally { + if (fixtures) { + await cleanupFixtures(storage, fixtures); + } + + await storage.disconnect(); + } + }); + + it("preserves an explicitly supplied reversed status", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeTradeRepository(storage); + + let fixtures: Awaited> | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const created = await repository.create({ + buyerBaseExchangeAssetAccountId: fixtures.buyerBaseAccountId, + buyerQuoteExchangeAssetAccountId: fixtures.buyerQuoteAccountId, + sellerBaseExchangeAssetAccountId: fixtures.sellerBaseAccountId, + sellerQuoteExchangeAssetAccountId: fixtures.sellerQuoteAccountId, + baseAssetId: fixtures.baseAssetId, + quoteAssetId: fixtures.quoteAssetId, + baseAmount: "1000000", + quoteAmount: "2000000", + priceNumerator: "2", + priceDenominator: "1", + status: "reversed", + reference: `trade-${randomUUID()}`, + }); + + expect(created.status).toBe("reversed"); + } finally { + if (fixtures) { + await cleanupFixtures(storage, fixtures); + } + + await storage.disconnect(); + } + }); + + it("returns null for an unknown trade", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeTradeRepository(storage); + + try { + await storage.connect(); + + const found = await repository.findById(randomUUID()); + + expect(found).toBeNull(); + } finally { + await storage.disconnect(); + } + }); + + it("enforces unique trade references", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeTradeRepository(storage); + + let fixtures: Awaited> | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const reference = `duplicate-trade-${randomUUID()}`; + + const input = { + buyerBaseExchangeAssetAccountId: fixtures.buyerBaseAccountId, + buyerQuoteExchangeAssetAccountId: fixtures.buyerQuoteAccountId, + sellerBaseExchangeAssetAccountId: fixtures.sellerBaseAccountId, + sellerQuoteExchangeAssetAccountId: fixtures.sellerQuoteAccountId, + baseAssetId: fixtures.baseAssetId, + quoteAssetId: fixtures.quoteAssetId, + baseAmount: "1000000", + quoteAmount: "2000000", + priceNumerator: "2", + priceDenominator: "1", + reference, + }; + + await repository.create(input); + + await expect( + repository.create({ + ...input, + reference, + }), + ).rejects.toThrow(); + } finally { + if (fixtures) { + await cleanupFixtures(storage, fixtures); + } + + await storage.disconnect(); + } + }); +}); diff --git a/apps/api/src/__tests__/exchange-withdrawal-repository.test.ts b/apps/api/src/__tests__/exchange-withdrawal-repository.test.ts new file mode 100644 index 0000000..b5c3769 --- /dev/null +++ b/apps/api/src/__tests__/exchange-withdrawal-repository.test.ts @@ -0,0 +1,420 @@ +import { randomUUID } from "node:crypto"; + +import { describe, expect, it } from "vitest"; + +import { PostgresStorage } from "@crypto-wallet/storage"; + +import { + ExchangeWithdrawalRepository, +} from "../exchange/exchange-withdrawal-repository.js"; + +const databaseUrl = process.env.DATABASE_URL; + +if (!databaseUrl) { + throw new Error( + "DATABASE_URL is required for exchange withdrawal repository tests", + ); +} + +describe("ExchangeWithdrawalRepository", () => { + async function createFixtures(storage: PostgresStorage) { + const exchangeAccountId = randomUUID(); + const networkId = randomUUID(); + const assetId = randomUUID(); + const exchangeAssetAccountId = randomUUID(); + + await storage.query( + ` + INSERT INTO exchange_accounts ( + id, + owner_type, + owner_id, + kind + ) + VALUES ($1, 'customer', $2, 'customer') + `, + [exchangeAccountId, randomUUID()], + ); + + await storage.query( + ` + INSERT INTO networks ( + id, + key, + name, + chain, + environment + ) + VALUES ($1, $2, $3, $4, $5) + `, + [ + networkId, + `withdrawal-test-${networkId}`, + "Withdrawal Test Network", + "withdrawal-test-chain", + "test", + ], + ); + + await storage.query( + ` + INSERT INTO assets ( + id, + network_id, + symbol, + name, + decimals, + asset_type + ) + VALUES ($1, $2, $3, $4, $5, $6) + `, + [ + assetId, + networkId, + `W${assetId.slice(0, 6)}`, + "Withdrawal Test Asset", + 18, + "native", + ], + ); + + await storage.query( + ` + INSERT INTO exchange_asset_accounts ( + id, + exchange_account_id, + asset_id, + network_id + ) + VALUES ($1, $2, $3, $4) + `, + [ + exchangeAssetAccountId, + exchangeAccountId, + assetId, + networkId, + ], + ); + + return { + exchangeAccountId, + networkId, + assetId, + exchangeAssetAccountId, + }; + } + + async function cleanupFixtures( + storage: PostgresStorage, + exchangeAccountId: string, + networkId: string, + assetId: string, + ) { + await storage.query( + ` + DELETE FROM exchange_withdrawals + WHERE exchange_asset_account_id IN ( + SELECT id + FROM exchange_asset_accounts + WHERE exchange_account_id = $1 + ) + `, + [exchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM exchange_asset_accounts + WHERE exchange_account_id = $1 + `, + [exchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM exchange_accounts + WHERE id = $1 + `, + [exchangeAccountId], + ); + + await storage.query( + ` + DELETE FROM assets + WHERE id = $1 + `, + [assetId], + ); + + await storage.query( + ` + DELETE FROM networks + WHERE id = $1 + `, + [networkId], + ); + } + + it("creates and finds a withdrawal", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeWithdrawalRepository(storage); + + let fixtures: + | { + exchangeAccountId: string; + networkId: string; + assetId: string; + exchangeAssetAccountId: string; + } + | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const created = await repository.create({ + requestedBy: randomUUID(), + exchangeAssetAccountId: fixtures.exchangeAssetAccountId, + networkId: fixtures.networkId, + destination: `destination-${randomUUID()}`, + amount: "1250000", + reference: `withdrawal-${randomUUID()}`, + }); + + expect(created).toMatchObject({ + exchangeAssetAccountId: fixtures.exchangeAssetAccountId, + networkId: fixtures.networkId, + amount: "1250000", + status: "requested", + }); + + expect(created.createdAt).toBeInstanceOf(Date); + + const found = await repository.findById(created.id); + + expect(found).toEqual(created); + } finally { + if (fixtures) { + await cleanupFixtures( + storage, + fixtures.exchangeAccountId, + fixtures.networkId, + fixtures.assetId, + ); + } + + await storage.disconnect(); + } + }); + + it("finds a withdrawal by reference", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeWithdrawalRepository(storage); + + let fixtures: + | { + exchangeAccountId: string; + networkId: string; + assetId: string; + exchangeAssetAccountId: string; + } + | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const reference = `withdrawal-${randomUUID()}`; + + const created = await repository.create({ + requestedBy: randomUUID(), + exchangeAssetAccountId: fixtures.exchangeAssetAccountId, + networkId: fixtures.networkId, + destination: `destination-${randomUUID()}`, + amount: "2500000", + reference, + }); + + const found = await repository.findByReference(reference); + + expect(found).toEqual(created); + } finally { + if (fixtures) { + await cleanupFixtures( + storage, + fixtures.exchangeAccountId, + fixtures.networkId, + fixtures.assetId, + ); + } + + await storage.disconnect(); + } + }); + + it("preserves an explicitly supplied withdrawal status", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeWithdrawalRepository(storage); + + let fixtures: + | { + exchangeAccountId: string; + networkId: string; + assetId: string; + exchangeAssetAccountId: string; + } + | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const requestedBy = randomUUID(); + const approvedBy = randomUUID(); + + const created = await repository.create({ + requestedBy, + approvedBy, + exchangeAssetAccountId: fixtures.exchangeAssetAccountId, + networkId: fixtures.networkId, + destination: `destination-${randomUUID()}`, + amount: "3000000", + status: "approved", + reference: `withdrawal-${randomUUID()}`, + }); + + expect(created.requestedBy).toBe(requestedBy); + expect(created.approvedBy).toBe(approvedBy); + expect(created.status).toBe("approved"); + + const found = await repository.findById(created.id); + + expect(found?.status).toBe("approved"); + } finally { + if (fixtures) { + await cleanupFixtures( + storage, + fixtures.exchangeAccountId, + fixtures.networkId, + fixtures.assetId, + ); + } + + await storage.disconnect(); + } + }); + + it("returns null for an unknown withdrawal", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeWithdrawalRepository(storage); + + try { + await storage.connect(); + + const found = await repository.findById(randomUUID()); + + expect(found).toBeNull(); + } finally { + await storage.disconnect(); + } + }); + + it("enforces unique withdrawal references", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeWithdrawalRepository(storage); + + let fixtures: + | { + exchangeAccountId: string; + networkId: string; + assetId: string; + exchangeAssetAccountId: string; + } + | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const reference = `duplicate-withdrawal-${randomUUID()}`; + + const input = { + requestedBy: randomUUID(), + exchangeAssetAccountId: fixtures.exchangeAssetAccountId, + networkId: fixtures.networkId, + destination: `destination-${randomUUID()}`, + amount: "1000000", + reference, + }; + + await repository.create(input); + + await expect( + repository.create({ + ...input, + destination: `destination-${randomUUID()}`, + }), + ).rejects.toThrow(); + } finally { + if (fixtures) { + await cleanupFixtures( + storage, + fixtures.exchangeAccountId, + fixtures.networkId, + fixtures.assetId, + ); + } + + await storage.disconnect(); + } + }); + it("rejects an approved withdrawal when requester and approver are the same actor", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new ExchangeWithdrawalRepository(storage); + + let fixtures: + | { + exchangeAccountId: string; + networkId: string; + assetId: string; + exchangeAssetAccountId: string; + } + | undefined; + + try { + await storage.connect(); + + fixtures = await createFixtures(storage); + + const actorId = randomUUID(); + + await expect( + repository.create({ + requestedBy: actorId, + approvedBy: actorId, + exchangeAssetAccountId: fixtures.exchangeAssetAccountId, + networkId: fixtures.networkId, + destination: `destination-${randomUUID()}`, + amount: "4000000", + status: "approved", + reference: `withdrawal-${randomUUID()}`, + }), + ).rejects.toThrow(); + } finally { + if (fixtures) { + await cleanupFixtures( + storage, + fixtures.exchangeAccountId, + fixtures.networkId, + fixtures.assetId, + ); + } + + await storage.disconnect(); + } + }); +}); \ No newline at end of file diff --git a/apps/api/src/__tests__/reconciliation-repository.test.ts b/apps/api/src/__tests__/reconciliation-repository.test.ts new file mode 100644 index 0000000..c3f731f --- /dev/null +++ b/apps/api/src/__tests__/reconciliation-repository.test.ts @@ -0,0 +1,212 @@ +import { randomUUID } from "node:crypto"; + +import { describe, expect, it } from "vitest"; + +import { PostgresStorage } from "@crypto-wallet/storage"; + +import { PostgresReconciliationRepository } from "../reconciliation/reconciliation-repository.js"; + +const databaseUrl = process.env.DATABASE_URL; + +if (!databaseUrl) { + throw new Error("DATABASE_URL is required for reconciliation repository tests"); +} + +describe("PostgresReconciliationRepository", () => { + async function createFixtures(storage: PostgresStorage) { + const assetId = randomUUID(); + const networkId = randomUUID(); + const accountId = randomUUID(); + + await storage.query( + ` + INSERT INTO networks ( + id, + key, + name, + chain, + environment + ) + VALUES ($1, $2, $3, $4, $5) + `, + [ + networkId, + `reconciliation-test-${networkId.slice(0, 6)}`, + "Reconciliation Test Network", + "test", + "test", + ], + ); + + await storage.query( + ` + INSERT INTO assets ( + id, + network_id, + symbol, + name, + decimals, + asset_type + ) + VALUES ($1, $2, $3, $4, $5, $6) + `, + [assetId, networkId, `REC${assetId.slice(0, 4)}`, "Reconciliation Test Asset", 18, "native"], + ); + + return { + assetId, + networkId, + accountId, + }; + } + + async function cleanupFixtures(storage: PostgresStorage, assetId: string, networkId: string) { + await storage.query( + ` + DELETE FROM reconciliation_comparisons + WHERE asset_id = $1 + `, + [assetId], + ); + + await storage.query( + ` + DELETE FROM assets + WHERE id = $1 + `, + [assetId], + ); + + await storage.query( + ` + DELETE FROM networks + WHERE id = $1 + `, + [networkId], + ); + } + + it("saves and retrieves the latest reconciliation comparison", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new PostgresReconciliationRepository(storage); + + await storage.connect(); + + const { assetId, networkId, accountId } = await createFixtures(storage); + + const comparison = { + scope: { + assetId, + networkId, + accountId, + }, + expected: { + source: "ledger" as const, + scope: { + assetId, + networkId, + accountId, + }, + status: "available" as const, + amount: "1000000", + observedAt: "2026-09-12T00:00:00.000Z", + reference: "ledger-test-reference", + }, + actual: { + source: "custody" as const, + scope: { + assetId, + networkId, + accountId, + }, + status: "available" as const, + amount: "999500", + observedAt: "2026-09-12T00:00:01.000Z", + reference: "custody-test-reference", + }, + difference: "-500", + status: "mismatched" as const, + }; + + try { + await repository.save(comparison); + + const result = await repository.findLatest(assetId, networkId, accountId); + + expect(result).not.toBeNull(); + expect(result).toEqual(comparison); + } finally { + await cleanupFixtures(storage, assetId, networkId); + await storage.disconnect(); + } + }); + + it("returns null for an unknown reconciliation scope", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new PostgresReconciliationRepository(storage); + + await storage.connect(); + + try { + const result = await repository.findLatest(randomUUID(), randomUUID(), randomUUID()); + + expect(result).toBeNull(); + } finally { + await storage.disconnect(); + } + }); + it("persists an unavailable observation without inventing a zero amount", async () => { + const storage = new PostgresStorage(databaseUrl); + const repository = new PostgresReconciliationRepository(storage); + + await storage.connect(); + + const { assetId, networkId, accountId } = await createFixtures(storage); + + const comparison = { + scope: { + assetId, + networkId, + accountId, + }, + expected: { + source: "ledger" as const, + scope: { + assetId, + networkId, + accountId, + }, + status: "available" as const, + amount: "1000000", + observedAt: "2026-09-12T00:00:00.000Z", + }, + actual: { + source: "custody" as const, + scope: { + assetId, + networkId, + accountId, + }, + status: "unavailable" as const, + amount: null, + observedAt: "2026-09-12T00:00:01.000Z", + }, + difference: null, + status: "unavailable" as const, + }; + + try { + await repository.save(comparison); + + const result = await repository.findLatest(assetId, networkId, accountId); + + expect(result).toEqual(comparison); + expect(result?.actual.status).toBe("unavailable"); + expect(result?.actual.amount).toBeNull(); + expect(result?.difference).toBeNull(); + } finally { + await cleanupFixtures(storage, assetId, networkId); + await storage.disconnect(); + } + }); +}); diff --git a/apps/api/src/__tests__/reconciliation-service.test.ts b/apps/api/src/__tests__/reconciliation-service.test.ts new file mode 100644 index 0000000..e8ef4e1 --- /dev/null +++ b/apps/api/src/__tests__/reconciliation-service.test.ts @@ -0,0 +1,95 @@ +import { describe, expect, it } from "vitest"; + +import type { + ReconciliationComparison, + ReconciliationRepository, +} from "@crypto-wallet/ledger-core"; + +import { ReconciliationService } from "../reconciliation/reconciliation-service.js"; + +class InMemoryReconciliationRepository + implements ReconciliationRepository +{ + private latest: ReconciliationComparison | null = null; + + async save(comparison: ReconciliationComparison): Promise { + this.latest = comparison; + } + + async findLatest( + assetId: string, + networkId?: string, + accountId?: string, + ): Promise { + if (this.latest === null) { + return null; + } + + const scope = this.latest.scope; + + if ( + scope.assetId !== assetId || + scope.networkId !== networkId || + scope.accountId !== accountId + ) { + return null; + } + + return this.latest; + } +} + +describe("ReconciliationService", () => { + it("compares observations and persists the result", async () => { + const repository = new InMemoryReconciliationRepository(); + const service = new ReconciliationService(repository); + + const scope = { + assetId: "usdc", + networkId: "ethereum", + accountId: "exchange-asset-account-1", + }; + + const expected = { + source: "ledger" as const, + scope, + status: "available" as const, + amount: "1000000", + observedAt: "2026-09-12T00:00:00.000Z", + }; + + const actual = { + source: "custody" as const, + scope, + status: "available" as const, + amount: "999500", + observedAt: "2026-09-12T00:00:01.000Z", + }; + + const result = await service.reconcile(expected, actual); + + expect(result.status).toBe("mismatched"); + expect(result.difference).toBe("-500"); + + await expect( + service.findLatest( + scope.assetId, + scope.networkId, + scope.accountId, + ), + ).resolves.toEqual(result); + }); + + it("returns null when no reconciliation exists", async () => { + const repository = new InMemoryReconciliationRepository(); + const service = new ReconciliationService(repository); + + await expect( + service.findLatest( + "missing-asset", + "missing-network", + "missing-account", + ), + ).resolves.toBeNull(); + }); +}); \ No newline at end of file diff --git a/apps/api/src/exchange/exchange-account-repository.ts b/apps/api/src/exchange/exchange-account-repository.ts new file mode 100644 index 0000000..1e65b7f --- /dev/null +++ b/apps/api/src/exchange/exchange-account-repository.ts @@ -0,0 +1,154 @@ +import { randomUUID } from "node:crypto"; + +import type { Storage } from "@crypto-wallet/storage"; + +export type ExchangeAccountOwnerType = "customer" | "platform"; + +export type ExchangeAccountKind = + | "customer" + | "treasury" + | "fee" + | "operational"; + +export type ExchangeAccountStatus = "active" | "blocked"; + +export interface ExchangeAccountRecord { + id: string; + ownerType: ExchangeAccountOwnerType; + ownerId: string; + kind: ExchangeAccountKind; + status: ExchangeAccountStatus; + createdAt: Date; +} + +export interface CreateExchangeAccountInput { + ownerType: ExchangeAccountOwnerType; + ownerId: string; + kind: ExchangeAccountKind; + status?: ExchangeAccountStatus; +} + +interface ExchangeAccountRow { + id: string; + owner_type: ExchangeAccountOwnerType; + owner_id: string; + kind: ExchangeAccountKind; + status: ExchangeAccountStatus; + created_at: Date; +} + +export class ExchangeAccountRepository { + constructor(private readonly storage: Storage) {} + + async create( + input: CreateExchangeAccountInput, + ): Promise { + const id = randomUUID(); + + const result = await this.storage.query( + ` + INSERT INTO exchange_accounts ( + id, + owner_type, + owner_id, + kind, + status + ) + VALUES ($1, $2, $3, $4, COALESCE($5, 'active')) + RETURNING + id, + owner_type, + owner_id, + kind, + status, + created_at + `, + [ + id, + input.ownerType, + input.ownerId, + input.kind, + input.status ?? null, + ], + ); + + const row = result.rows[0]; + + if (!row) { + throw new Error("Failed to create exchange account"); + } + + return mapExchangeAccount(row); + } + + async findById(id: string): Promise { + const result = await this.storage.query( + ` + SELECT + id, + owner_type, + owner_id, + kind, + status, + created_at + FROM exchange_accounts + WHERE id = $1 + LIMIT 1 + `, + [id], + ); + + const row = result.rows[0]; + + if (!row) { + return null; + } + + return mapExchangeAccount(row); + } + + async findByOwnerAndKind( + ownerType: ExchangeAccountOwnerType, + ownerId: string, + kind: ExchangeAccountKind, + ): Promise { + const result = await this.storage.query( + ` + SELECT + id, + owner_type, + owner_id, + kind, + status, + created_at + FROM exchange_accounts + WHERE owner_type = $1 + AND owner_id = $2 + AND kind = $3 + LIMIT 1 + `, + [ownerType, ownerId, kind], + ); + + const row = result.rows[0]; + + if (!row) { + return null; + } + + return mapExchangeAccount(row); + } +} + +function mapExchangeAccount( + row: ExchangeAccountRow, +): ExchangeAccountRecord { + return { + id: row.id, + ownerType: row.owner_type, + ownerId: row.owner_id, + kind: row.kind, + status: row.status, + createdAt: row.created_at, + }; +} \ No newline at end of file diff --git a/apps/api/src/exchange/exchange-asset-account-repository.ts b/apps/api/src/exchange/exchange-asset-account-repository.ts new file mode 100644 index 0000000..fdfc1ce --- /dev/null +++ b/apps/api/src/exchange/exchange-asset-account-repository.ts @@ -0,0 +1,156 @@ +import { randomUUID } from "node:crypto"; + +import type { Storage } from "@crypto-wallet/storage"; + +export interface ExchangeAssetAccountRecord { + id: string; + exchangeAccountId: string; + assetId: string; + networkId: string; + createdAt: Date; +} + +export interface CreateExchangeAssetAccountInput { + exchangeAccountId: string; + assetId: string; + networkId: string; +} + +interface ExchangeAssetAccountRow { + id: string; + exchange_account_id: string; + asset_id: string; + network_id: string; + created_at: Date; +} + +export class ExchangeAssetAccountRepository { + constructor(private readonly storage: Storage) {} + + async create( + input: CreateExchangeAssetAccountInput, + ): Promise { + const id = randomUUID(); + + const result = await this.storage.query( + ` + INSERT INTO exchange_asset_accounts ( + id, + exchange_account_id, + asset_id, + network_id + ) + VALUES ($1, $2, $3, $4) + RETURNING + id, + exchange_account_id, + asset_id, + network_id, + created_at + `, + [ + id, + input.exchangeAccountId, + input.assetId, + input.networkId, + ], + ); + + const row = result.rows[0]; + + if (!row) { + throw new Error("Failed to create exchange asset account"); + } + + return mapExchangeAssetAccount(row); + } + + async findById( + id: string, + ): Promise { + const result = await this.storage.query( + ` + SELECT + id, + exchange_account_id, + asset_id, + network_id, + created_at + FROM exchange_asset_accounts + WHERE id = $1 + LIMIT 1 + `, + [id], + ); + + const row = result.rows[0]; + + if (!row) { + return null; + } + + return mapExchangeAssetAccount(row); + } + + async findByAccountAndAsset( + exchangeAccountId: string, + assetId: string, + ): Promise { + const result = await this.storage.query( + ` + SELECT + id, + exchange_account_id, + asset_id, + network_id, + created_at + FROM exchange_asset_accounts + WHERE exchange_account_id = $1 + AND asset_id = $2 + LIMIT 1 + `, + [exchangeAccountId, assetId], + ); + + const row = result.rows[0]; + + if (!row) { + return null; + } + + return mapExchangeAssetAccount(row); + } + + async listByExchangeAccount( + exchangeAccountId: string, + ): Promise { + const result = await this.storage.query( + ` + SELECT + id, + exchange_account_id, + asset_id, + network_id, + created_at + FROM exchange_asset_accounts + WHERE exchange_account_id = $1 + ORDER BY created_at ASC, id ASC + `, + [exchangeAccountId], + ); + + return result.rows.map(mapExchangeAssetAccount); + } +} + +function mapExchangeAssetAccount( + row: ExchangeAssetAccountRow, +): ExchangeAssetAccountRecord { + return { + id: row.id, + exchangeAccountId: row.exchange_account_id, + assetId: row.asset_id, + networkId: row.network_id, + createdAt: row.created_at, + }; +} \ No newline at end of file diff --git a/apps/api/src/exchange/exchange-deposit-repository.ts b/apps/api/src/exchange/exchange-deposit-repository.ts new file mode 100644 index 0000000..53f27aa --- /dev/null +++ b/apps/api/src/exchange/exchange-deposit-repository.ts @@ -0,0 +1,198 @@ +import { randomUUID } from "node:crypto"; + +import type { Storage } from "@crypto-wallet/storage"; + +export type ExchangeDepositStatus = + | "detected" + | "confirmed" + | "credited" + | "reversed"; + +export interface ExchangeDepositRecord { + id: string; + exchangeAssetAccountId: string; + networkId: string; + transactionHash: string; + amount: string; + status: ExchangeDepositStatus; + reference: string; + createdAt: Date; +} + +export interface CreateExchangeDepositInput { + exchangeAssetAccountId: string; + networkId: string; + transactionHash: string; + amount: string; + status?: ExchangeDepositStatus; + reference: string; +} + +interface ExchangeDepositRow { + id: string; + exchange_asset_account_id: string; + network_id: string; + transaction_hash: string; + amount: string; + status: ExchangeDepositStatus; + reference: string; + created_at: Date; +} + +export class ExchangeDepositRepository { + constructor(private readonly storage: Storage) {} + + async create( + input: CreateExchangeDepositInput, + ): Promise { + const id = randomUUID(); + + const result = await this.storage.query( + ` + INSERT INTO exchange_deposits ( + id, + exchange_asset_account_id, + network_id, + transaction_hash, + amount, + status, + reference + ) + VALUES ($1, $2, $3, $4, $5, $6, $7) + RETURNING + id, + exchange_asset_account_id, + network_id, + transaction_hash, + amount, + status, + reference, + created_at + `, + [ + id, + input.exchangeAssetAccountId, + input.networkId, + input.transactionHash, + input.amount, + input.status ?? "detected", + input.reference, + ], + ); + + const row = result.rows[0]; + + if (!row) { + throw new Error("Failed to create exchange deposit"); + } + + return mapExchangeDeposit(row); + } + + async findById( + id: string, + ): Promise { + const result = await this.storage.query( + ` + SELECT + id, + exchange_asset_account_id, + network_id, + transaction_hash, + amount, + status, + reference, + created_at + FROM exchange_deposits + WHERE id = $1 + LIMIT 1 + `, + [id], + ); + + const row = result.rows[0]; + + if (!row) { + return null; + } + + return mapExchangeDeposit(row); + } + + async findByReference( + reference: string, + ): Promise { + const result = await this.storage.query( + ` + SELECT + id, + exchange_asset_account_id, + network_id, + transaction_hash, + amount, + status, + reference, + created_at + FROM exchange_deposits + WHERE reference = $1 + LIMIT 1 + `, + [reference], + ); + + const row = result.rows[0]; + + if (!row) { + return null; + } + + return mapExchangeDeposit(row); + } + + async findByTransaction( + networkId: string, + transactionHash: string, + ): Promise { + const result = await this.storage.query( + ` + SELECT + id, + exchange_asset_account_id, + network_id, + transaction_hash, + amount, + status, + reference, + created_at + FROM exchange_deposits + WHERE network_id = $1 + AND transaction_hash = $2 + LIMIT 1 + `, + [networkId, transactionHash], + ); + + const row = result.rows[0]; + + if (!row) { + return null; + } + + return mapExchangeDeposit(row); + } +} + +function mapExchangeDeposit( + row: ExchangeDepositRow, +): ExchangeDepositRecord { + return { + id: row.id, + exchangeAssetAccountId: row.exchange_asset_account_id, + networkId: row.network_id, + transactionHash: row.transaction_hash, + amount: row.amount, + status: row.status, + reference: row.reference, + createdAt: row.created_at, + }; +} \ No newline at end of file diff --git a/apps/api/src/exchange/exchange-fee-repository.ts b/apps/api/src/exchange/exchange-fee-repository.ts new file mode 100644 index 0000000..f76ea4f --- /dev/null +++ b/apps/api/src/exchange/exchange-fee-repository.ts @@ -0,0 +1,173 @@ +import { randomUUID } from "node:crypto"; + +import type { Storage } from "@crypto-wallet/storage"; + +export type ExchangeFeeStatus = "charged" | "reversed"; + +export interface ExchangeFeeRecord { + id: string; + tradeId: string; + sourceExchangeAssetAccountId: string; + feeExchangeAssetAccountId: string; + assetId: string; + amount: string; + status: ExchangeFeeStatus; + reference: string; + createdAt: Date; +} + +export interface CreateExchangeFeeInput { + tradeId: string; + sourceExchangeAssetAccountId: string; + feeExchangeAssetAccountId: string; + assetId: string; + amount: string; + status?: ExchangeFeeStatus; + reference: string; +} + +interface ExchangeFeeRow { + id: string; + trade_id: string; + source_exchange_asset_account_id: string; + fee_exchange_asset_account_id: string; + asset_id: string; + amount: string; + status: ExchangeFeeStatus; + reference: string; + created_at: Date; +} + +export class ExchangeFeeRepository { + constructor(private readonly storage: Storage) {} + + async create( + input: CreateExchangeFeeInput, + ): Promise { + const id = randomUUID(); + + const result = await this.storage.query( + ` + INSERT INTO exchange_fees ( + id, + trade_id, + source_exchange_asset_account_id, + fee_exchange_asset_account_id, + asset_id, + amount, + status, + reference + ) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8) + RETURNING + id, + trade_id, + source_exchange_asset_account_id, + fee_exchange_asset_account_id, + asset_id, + amount, + status, + reference, + created_at + `, + [ + id, + input.tradeId, + input.sourceExchangeAssetAccountId, + input.feeExchangeAssetAccountId, + input.assetId, + input.amount, + input.status ?? "charged", + input.reference, + ], + ); + + const row = result.rows[0]; + + if (!row) { + throw new Error("Failed to create exchange fee"); + } + + return mapExchangeFee(row); + } + + async findById( + id: string, + ): Promise { + const result = await this.storage.query( + ` + SELECT + id, + trade_id, + source_exchange_asset_account_id, + fee_exchange_asset_account_id, + asset_id, + amount, + status, + reference, + created_at + FROM exchange_fees + WHERE id = $1 + LIMIT 1 + `, + [id], + ); + + const row = result.rows[0]; + + if (!row) { + return null; + } + + return mapExchangeFee(row); + } + + async findByReference( + reference: string, + ): Promise { + const result = await this.storage.query( + ` + SELECT + id, + trade_id, + source_exchange_asset_account_id, + fee_exchange_asset_account_id, + asset_id, + amount, + status, + reference, + created_at + FROM exchange_fees + WHERE reference = $1 + LIMIT 1 + `, + [reference], + ); + + const row = result.rows[0]; + + if (!row) { + return null; + } + + return mapExchangeFee(row); + } +} + +function mapExchangeFee( + row: ExchangeFeeRow, +): ExchangeFeeRecord { + return { + id: row.id, + tradeId: row.trade_id, + sourceExchangeAssetAccountId: + row.source_exchange_asset_account_id, + feeExchangeAssetAccountId: + row.fee_exchange_asset_account_id, + assetId: row.asset_id, + amount: row.amount, + status: row.status, + reference: row.reference, + createdAt: row.created_at, + }; +} \ No newline at end of file diff --git a/apps/api/src/exchange/exchange-subaccount-repository.ts b/apps/api/src/exchange/exchange-subaccount-repository.ts new file mode 100644 index 0000000..fc269ae --- /dev/null +++ b/apps/api/src/exchange/exchange-subaccount-repository.ts @@ -0,0 +1,112 @@ +import { randomUUID } from "node:crypto"; + +import type { Storage } from "@crypto-wallet/storage"; + +export interface ExchangeSubaccountRecord { + id: string; + exchangeAccountId: string; + name: string; + createdAt: Date; +} + +export interface CreateExchangeSubaccountInput { + exchangeAccountId: string; + name: string; +} + +interface ExchangeSubaccountRow { + id: string; + exchange_account_id: string; + name: string; + created_at: Date; +} + +export class ExchangeSubaccountRepository { + constructor(private readonly storage: Storage) {} + + async create( + input: CreateExchangeSubaccountInput, + ): Promise { + const id = randomUUID(); + + const result = await this.storage.query( + ` + INSERT INTO exchange_subaccounts ( + id, + exchange_account_id, + name + ) + VALUES ($1, $2, $3) + RETURNING + id, + exchange_account_id, + name, + created_at + `, + [id, input.exchangeAccountId, input.name], + ); + + const row = result.rows[0]; + + if (!row) { + throw new Error("Failed to create exchange subaccount"); + } + + return mapExchangeSubaccount(row); + } + + async findById(id: string): Promise { + const result = await this.storage.query( + ` + SELECT + id, + exchange_account_id, + name, + created_at + FROM exchange_subaccounts + WHERE id = $1 + LIMIT 1 + `, + [id], + ); + + const row = result.rows[0]; + + if (!row) { + return null; + } + + return mapExchangeSubaccount(row); + } + + async listByExchangeAccount( + exchangeAccountId: string, + ): Promise { + const result = await this.storage.query( + ` + SELECT + id, + exchange_account_id, + name, + created_at + FROM exchange_subaccounts + WHERE exchange_account_id = $1 + ORDER BY created_at ASC, id ASC + `, + [exchangeAccountId], + ); + + return result.rows.map(mapExchangeSubaccount); + } +} + +function mapExchangeSubaccount( + row: ExchangeSubaccountRow, +): ExchangeSubaccountRecord { + return { + id: row.id, + exchangeAccountId: row.exchange_account_id, + name: row.name, + createdAt: row.created_at, + }; +} \ No newline at end of file diff --git a/apps/api/src/exchange/exchange-trade-repository.ts b/apps/api/src/exchange/exchange-trade-repository.ts new file mode 100644 index 0000000..e221472 --- /dev/null +++ b/apps/api/src/exchange/exchange-trade-repository.ts @@ -0,0 +1,226 @@ +import { randomUUID } from "node:crypto"; + +import type { Storage } from "@crypto-wallet/storage"; + +export type ExchangeTradeStatus = "executed" | "reversed"; + +export interface ExchangeTradeRecord { + id: string; + buyerBaseExchangeAssetAccountId: string; + buyerQuoteExchangeAssetAccountId: string; + sellerBaseExchangeAssetAccountId: string; + sellerQuoteExchangeAssetAccountId: string; + baseAssetId: string; + quoteAssetId: string; + baseAmount: string; + quoteAmount: string; + priceNumerator: string; + priceDenominator: string; + status: ExchangeTradeStatus; + reference: string; + executedAt: Date; +} + +export interface CreateExchangeTradeInput { + buyerBaseExchangeAssetAccountId: string; + buyerQuoteExchangeAssetAccountId: string; + sellerBaseExchangeAssetAccountId: string; + sellerQuoteExchangeAssetAccountId: string; + baseAssetId: string; + quoteAssetId: string; + baseAmount: string; + quoteAmount: string; + priceNumerator: string; + priceDenominator: string; + status?: ExchangeTradeStatus; + reference: string; + executedAt?: Date; +} + +interface ExchangeTradeRow { + id: string; + buyer_base_exchange_asset_account_id: string; + buyer_quote_exchange_asset_account_id: string; + seller_base_exchange_asset_account_id: string; + seller_quote_exchange_asset_account_id: string; + base_asset_id: string; + quote_asset_id: string; + base_amount: string; + quote_amount: string; + price_numerator: string; + price_denominator: string; + status: ExchangeTradeStatus; + reference: string; + executed_at: Date; +} + +export class ExchangeTradeRepository { + constructor(private readonly storage: Storage) {} + + async create( + input: CreateExchangeTradeInput, + ): Promise { + const id = randomUUID(); + + const result = await this.storage.query( + ` + INSERT INTO exchange_trades ( + id, + buyer_base_exchange_asset_account_id, + buyer_quote_exchange_asset_account_id, + seller_base_exchange_asset_account_id, + seller_quote_exchange_asset_account_id, + base_asset_id, + quote_asset_id, + base_amount, + quote_amount, + price_numerator, + price_denominator, + status, + reference, + executed_at + ) + VALUES ( + $1, $2, $3, $4, $5, $6, $7, $8, + $9, $10, $11, $12, $13, $14 + ) + RETURNING + id, + buyer_base_exchange_asset_account_id, + buyer_quote_exchange_asset_account_id, + seller_base_exchange_asset_account_id, + seller_quote_exchange_asset_account_id, + base_asset_id, + quote_asset_id, + base_amount, + quote_amount, + price_numerator, + price_denominator, + status, + reference, + executed_at + `, + [ + id, + input.buyerBaseExchangeAssetAccountId, + input.buyerQuoteExchangeAssetAccountId, + input.sellerBaseExchangeAssetAccountId, + input.sellerQuoteExchangeAssetAccountId, + input.baseAssetId, + input.quoteAssetId, + input.baseAmount, + input.quoteAmount, + input.priceNumerator, + input.priceDenominator, + input.status ?? "executed", + input.reference, + input.executedAt ?? new Date(), + ], + ); + + const row = result.rows[0]; + + if (!row) { + throw new Error("Failed to create exchange trade"); + } + + return mapExchangeTrade(row); + } + + async findById( + id: string, + ): Promise { + const result = await this.storage.query( + ` + SELECT + id, + buyer_base_exchange_asset_account_id, + buyer_quote_exchange_asset_account_id, + seller_base_exchange_asset_account_id, + seller_quote_exchange_asset_account_id, + base_asset_id, + quote_asset_id, + base_amount, + quote_amount, + price_numerator, + price_denominator, + status, + reference, + executed_at + FROM exchange_trades + WHERE id = $1 + LIMIT 1 + `, + [id], + ); + + const row = result.rows[0]; + + if (!row) { + return null; + } + + return mapExchangeTrade(row); + } + + async findByReference( + reference: string, + ): Promise { + const result = await this.storage.query( + ` + SELECT + id, + buyer_base_exchange_asset_account_id, + buyer_quote_exchange_asset_account_id, + seller_base_exchange_asset_account_id, + seller_quote_exchange_asset_account_id, + base_asset_id, + quote_asset_id, + base_amount, + quote_amount, + price_numerator, + price_denominator, + status, + reference, + executed_at + FROM exchange_trades + WHERE reference = $1 + LIMIT 1 + `, + [reference], + ); + + const row = result.rows[0]; + + if (!row) { + return null; + } + + return mapExchangeTrade(row); + } +} + +function mapExchangeTrade( + row: ExchangeTradeRow, +): ExchangeTradeRecord { + return { + id: row.id, + buyerBaseExchangeAssetAccountId: + row.buyer_base_exchange_asset_account_id, + buyerQuoteExchangeAssetAccountId: + row.buyer_quote_exchange_asset_account_id, + sellerBaseExchangeAssetAccountId: + row.seller_base_exchange_asset_account_id, + sellerQuoteExchangeAssetAccountId: + row.seller_quote_exchange_asset_account_id, + baseAssetId: row.base_asset_id, + quoteAssetId: row.quote_asset_id, + baseAmount: row.base_amount, + quoteAmount: row.quote_amount, + priceNumerator: row.price_numerator, + priceDenominator: row.price_denominator, + status: row.status, + reference: row.reference, + executedAt: row.executed_at, + }; +} \ No newline at end of file diff --git a/apps/api/src/exchange/exchange-withdrawal-repository.ts b/apps/api/src/exchange/exchange-withdrawal-repository.ts new file mode 100644 index 0000000..de9aaac --- /dev/null +++ b/apps/api/src/exchange/exchange-withdrawal-repository.ts @@ -0,0 +1,186 @@ +import { randomUUID } from "node:crypto"; + +import type { Storage } from "@crypto-wallet/storage"; + +export type ExchangeWithdrawalStatus = + | "requested" + | "approved" + | "rejected" + | "submitted" + | "confirmed" + | "failed"; + +export interface ExchangeWithdrawalRecord { + id: string; + requestedBy: string; + approvedBy: string | null; + exchangeAssetAccountId: string; + networkId: string; + destination: string; + amount: string; + status: ExchangeWithdrawalStatus; + reference: string; + createdAt: Date; +} + +export interface CreateExchangeWithdrawalInput { + requestedBy: string; + approvedBy?: string; + exchangeAssetAccountId: string; + networkId: string; + destination: string; + amount: string; + status?: ExchangeWithdrawalStatus; + reference: string; +} + +interface ExchangeWithdrawalRow { + id: string; + requested_by: string; + approved_by: string | null; + exchange_asset_account_id: string; + network_id: string; + destination: string; + amount: string; + status: ExchangeWithdrawalStatus; + reference: string; + created_at: Date; +} + +export class ExchangeWithdrawalRepository { + constructor(private readonly storage: Storage) {} + + async create( + input: CreateExchangeWithdrawalInput, + ): Promise { + const id = randomUUID(); + + const result = await this.storage.query( + ` + INSERT INTO exchange_withdrawals ( + id, + requested_by, + approved_by, + exchange_asset_account_id, + network_id, + destination, + amount, + status, + reference + ) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) + RETURNING + id, + requested_by, + approved_by, + exchange_asset_account_id, + network_id, + destination, + amount, + status, + reference, + created_at + `, + [ + id, + input.requestedBy, + input.approvedBy ?? null, + input.exchangeAssetAccountId, + input.networkId, + input.destination, + input.amount, + input.status ?? "requested", + input.reference, + ], + ); + + const row = result.rows[0]; + + if (!row) { + throw new Error("Failed to create exchange withdrawal"); + } + + return mapExchangeWithdrawal(row); + } + + async findById( + id: string, + ): Promise { + const result = await this.storage.query( + ` + SELECT + id, + requested_by, + approved_by, + exchange_asset_account_id, + network_id, + destination, + amount, + status, + reference, + created_at + FROM exchange_withdrawals + WHERE id = $1 + LIMIT 1 + `, + [id], + ); + + const row = result.rows[0]; + + if (!row) { + return null; + } + + return mapExchangeWithdrawal(row); + } + + async findByReference( + reference: string, + ): Promise { + const result = await this.storage.query( + ` + SELECT + id, + requested_by, + approved_by, + exchange_asset_account_id, + network_id, + destination, + amount, + status, + reference, + created_at + FROM exchange_withdrawals + WHERE reference = $1 + LIMIT 1 + `, + [reference], + ); + + const row = result.rows[0]; + + if (!row) { + return null; + } + + return mapExchangeWithdrawal(row); + } +} + +function mapExchangeWithdrawal( + row: ExchangeWithdrawalRow, +): ExchangeWithdrawalRecord { + return { + id: row.id, + requestedBy: row.requested_by, + approvedBy: row.approved_by, + exchangeAssetAccountId: row.exchange_asset_account_id, + networkId: row.network_id, + destination: row.destination, + amount: row.amount, + status: row.status, + reference: row.reference, + createdAt: row.created_at, + }; +} \ No newline at end of file diff --git a/apps/api/src/reconciliation/index.ts b/apps/api/src/reconciliation/index.ts new file mode 100644 index 0000000..c7e2a7d --- /dev/null +++ b/apps/api/src/reconciliation/index.ts @@ -0,0 +1,2 @@ +export * from "./reconciliation-repository.js"; +export * from "./reconciliation-service.js"; \ No newline at end of file diff --git a/apps/api/src/reconciliation/reconciliation-repository.ts b/apps/api/src/reconciliation/reconciliation-repository.ts new file mode 100644 index 0000000..c4b4cb7 --- /dev/null +++ b/apps/api/src/reconciliation/reconciliation-repository.ts @@ -0,0 +1,188 @@ +import { randomUUID } from "node:crypto"; + +import type { + ReconciliationComparison, + ReconciliationRepository, + ReconciliationSource, + ReconciliationStatus, +} from "@crypto-wallet/ledger-core"; +import type { Storage } from "@crypto-wallet/storage"; + +interface ReconciliationComparisonRow { + id: string; + asset_id: string; + network_id: string | null; + account_id: string | null; + expected_observation_status: + | "available" + | "unavailable"; + actual_observation_status: + | "available" + | "unavailable"; + expected_source: ReconciliationSource; + expected_amount: string | null; + actual_source: ReconciliationSource; + actual_amount: string | null; + difference: string | null; + status: ReconciliationStatus; + expected_observed_at: Date; + actual_observed_at: Date; + expected_reference: string | null; + actual_reference: string | null; + created_at: Date; +} + +export class PostgresReconciliationRepository + implements ReconciliationRepository +{ + constructor(private readonly storage: Storage) {} + + async save(comparison: ReconciliationComparison): Promise { + await this.storage.query( + ` + INSERT INTO reconciliation_comparisons ( + id, + asset_id, + network_id, + account_id, + expected_source, + expected_amount, + actual_source, + actual_amount, + expected_observation_status, + actual_observation_status, + difference, + status, + expected_observed_at, + actual_observed_at, + expected_reference, + actual_reference + ) + VALUES ( + $1, + $2, + $3, + $4, + $5, + $6, + $7, + $8, + $9, + $10, + $11, + $12, + $13, + $14, + $15, + $16 + ) + `, + [ + randomUUID(), + comparison.scope.assetId, + comparison.scope.networkId ?? null, + comparison.scope.accountId ?? null, + comparison.expected.source, + comparison.expected.amount, + comparison.actual.source, + comparison.actual.amount, + comparison.expected.status, + comparison.actual.status, + comparison.difference, + comparison.status, + comparison.expected.observedAt, + comparison.actual.observedAt, + comparison.expected.reference ?? null, + comparison.actual.reference ?? null, + ], + ); + } + + async findLatest( + assetId: string, + networkId?: string, + accountId?: string, + ): Promise { + const result = await this.storage.query( + ` + SELECT + id, + asset_id, + network_id, + account_id, + expected_source, + expected_amount, + actual_source, + actual_amount, + expected_observation_status, + actual_observation_status, + difference, + status, + expected_observed_at, + actual_observed_at, + expected_reference, + actual_reference, + created_at + FROM reconciliation_comparisons + WHERE asset_id = $1 + AND network_id IS NOT DISTINCT FROM $2 + AND account_id IS NOT DISTINCT FROM $3 + ORDER BY created_at DESC + LIMIT 1 + `, + [ + assetId, + networkId ?? null, + accountId ?? null, + ], + ); + + const row = result.rows[0]; + + if (!row) { + return null; + } + + return mapReconciliationComparison(row); + } +} + +function mapReconciliationComparison( + row: ReconciliationComparisonRow, +): ReconciliationComparison { + const scope = { + assetId: row.asset_id, + ...(row.network_id !== null + ? { networkId: row.network_id } + : {}), + ...(row.account_id !== null + ? { accountId: row.account_id } + : {}), + }; + + return { + scope, + expected: { + source: row.expected_source, + scope, + amount: row.expected_amount, + status: row.expected_observation_status, + observedAt: row.expected_observed_at.toISOString(), + ...(row.expected_reference !== null + ? { reference: row.expected_reference } + : {}), + }, + actual: { + source: row.actual_source, + scope, + amount: row.actual_amount, + status: row.actual_observation_status, + observedAt: row.actual_observed_at.toISOString(), + ...(row.actual_reference !== null + ? { reference: row.actual_reference } + : {}), + }, + difference: row.difference, + status: row.status, + }; +} \ No newline at end of file diff --git a/apps/api/src/reconciliation/reconciliation-service.ts b/apps/api/src/reconciliation/reconciliation-service.ts new file mode 100644 index 0000000..a9740ff --- /dev/null +++ b/apps/api/src/reconciliation/reconciliation-service.ts @@ -0,0 +1,39 @@ +import { + DefaultReconciliationEngine, + type ReconciliationComparison, + type ReconciliationObservation, + type ReconciliationRepository, +} from "@crypto-wallet/ledger-core"; + +export class ReconciliationService { + private readonly engine: DefaultReconciliationEngine; + + constructor( + private readonly repository: ReconciliationRepository, + ) { + this.engine = new DefaultReconciliationEngine(); + } + + async reconcile( + expected: ReconciliationObservation, + actual: ReconciliationObservation, + ): Promise { + const comparison = this.engine.compare(expected, actual); + + await this.repository.save(comparison); + + return comparison; + } + + async findLatest( + assetId: string, + networkId?: string, + accountId?: string, + ): Promise { + return this.repository.findLatest( + assetId, + networkId, + accountId, + ); + } +} \ No newline at end of file diff --git a/packages/ledger-core/package.json b/packages/ledger-core/package.json new file mode 100644 index 0000000..032d0c9 --- /dev/null +++ b/packages/ledger-core/package.json @@ -0,0 +1,26 @@ +{ + "name": "@crypto-wallet/ledger-core", + "version": "0.1.0", + "private": true, + "type": "module", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js" + } + }, + "scripts": { + "build": "tsc -p tsconfig.json", + "typecheck": "tsc -p tsconfig.json --noEmit", + "test": "vitest run" + }, + "dependencies": { + "@crypto-wallet/shared-types": "workspace:*", + "@crypto-wallet/storage": "workspace:*" + }, + "devDependencies": { + "vitest": "^4.1.11" + } +} diff --git a/packages/ledger-core/src/__tests__/account-registry.test.ts b/packages/ledger-core/src/__tests__/account-registry.test.ts new file mode 100644 index 0000000..cb8b0d1 --- /dev/null +++ b/packages/ledger-core/src/__tests__/account-registry.test.ts @@ -0,0 +1,67 @@ +import { describe, expect, it } from "vitest"; + +import { LedgerAccountRegistry } from "../account-registry.js"; +import type { LedgerAccountRecord } from "../ledger-types.js"; + +describe("LedgerAccountRegistry", () => { + const account: LedgerAccountRecord = { + id: "ledger-account-1", + walletId: "wallet-1", + assetId: "btc", + chain: "bitcoin", + kind: "asset", + createdAt: "2026-09-12T00:00:00.000Z", + }; + + it("creates and retrieves a ledger account", () => { + const registry = new LedgerAccountRegistry(); + + const created = registry.create(account); + + expect(created).toEqual(account); + expect(registry.getById(account.id)).toEqual(account); + }); + + it("rejects duplicate ledger account ids", () => { + const registry = new LedgerAccountRegistry(); + + registry.create(account); + + expect(() => registry.create(account)).toThrow( + "Ledger account already exists: ledger-account-1", + ); + }); + + it("rejects duplicate account identities", () => { + const registry = new LedgerAccountRegistry(); + + registry.create(account); + + expect(() => + registry.create({ + ...account, + id: "ledger-account-2", + }), + ).toThrow("Ledger account already exists for wallet, asset, chain and kind"); + }); + + it("returns null for an unknown account", () => { + const registry = new LedgerAccountRegistry(); + + expect(registry.getById("unknown")).toBeNull(); + }); + + it("does not expose mutable internal account state", () => { + const registry = new LedgerAccountRegistry(); + + const created = registry.create(account); + + expect(() => { + created.assetId = "mutated"; + }).toThrow(); + + const stored = registry.getById(account.id); + + expect(stored).toEqual(account); + }); +}); diff --git a/packages/ledger-core/src/__tests__/exchange-account-registry.test.ts b/packages/ledger-core/src/__tests__/exchange-account-registry.test.ts new file mode 100644 index 0000000..51f8a66 --- /dev/null +++ b/packages/ledger-core/src/__tests__/exchange-account-registry.test.ts @@ -0,0 +1,108 @@ +import { describe, expect, it } from "vitest"; +import { + ExchangeAccountRegistry, + type ExchangeAccountRecord, +} from "../index.js"; + +function createAccount( + overrides: Partial = {}, +): ExchangeAccountRecord { + return { + id: "exchange-account-1", + ownerType: "customer", + ownerId: "customer-1", + kind: "customer", + status: "active", + createdAt: "2026-09-12T00:00:00.000Z", + ...overrides, + }; +} + +describe("ExchangeAccountRegistry", () => { + it("creates and retrieves an exchange account", () => { + const registry = new ExchangeAccountRegistry(); + const account = createAccount(); + + const created = registry.create(account); + + expect(created).toEqual(account); + expect(registry.getById(account.id)).toEqual(account); + }); + + it("rejects duplicate account IDs", () => { + const registry = new ExchangeAccountRegistry(); + + registry.create(createAccount()); + + expect(() => + registry.create(createAccount({ ownerId: "customer-2" })), + ).toThrow("Exchange account already exists"); + }); + + it("rejects duplicate owner and account kind", () => { + const registry = new ExchangeAccountRegistry(); + + registry.create(createAccount()); + + expect(() => + registry.create(createAccount({ id: "exchange-account-2" })), + ).toThrow( + "Exchange account already exists for owner and account kind", + ); + }); + + it("returns null for an unknown account", () => { + const registry = new ExchangeAccountRegistry(); + + expect(registry.getById("unknown")).toBeNull(); + }); + + it("returns an immutable account", () => { + const registry = new ExchangeAccountRegistry(); + + const created = registry.create(createAccount()); + + expect(() => { + created.status = "blocked"; + }).toThrow(); + + expect(registry.getById(created.id)?.status).toBe("active"); + }); + + it("rejects an empty owner ID", () => { + const registry = new ExchangeAccountRegistry(); + + expect(() => + registry.create(createAccount({ ownerId: " " })), + ).toThrow("Exchange account owner ID must not be empty"); + }); + + it("rejects customer-owned non-customer accounts", () => { + const registry = new ExchangeAccountRegistry(); + + expect(() => + registry.create( + createAccount({ + kind: "fee", + }), + ), + ).toThrow( + "Customer-owned exchange accounts must have customer kind", + ); + }); + + it("rejects platform-owned customer accounts", () => { + const registry = new ExchangeAccountRegistry(); + + expect(() => + registry.create( + createAccount({ + ownerType: "platform", + kind: "customer", + }), + ), + ).toThrow( + "Platform-owned exchange accounts cannot have customer kind", + ); + }); +}); \ No newline at end of file diff --git a/packages/ledger-core/src/__tests__/exchange-asset-account-registry.test.ts b/packages/ledger-core/src/__tests__/exchange-asset-account-registry.test.ts new file mode 100644 index 0000000..cf65347 --- /dev/null +++ b/packages/ledger-core/src/__tests__/exchange-asset-account-registry.test.ts @@ -0,0 +1,140 @@ +import { describe, expect, it } from "vitest"; +import { ExchangeAssetAccountRegistry, type ExchangeAssetAccountRecord } from "../index.js"; + +function createAssetAccount( + overrides: Partial = {}, +): ExchangeAssetAccountRecord { + return { + id: "exchange-asset-account-1", + exchangeAccountId: "exchange-account-1", + assetId: "btc", + networkId: "ethereum", + createdAt: "2026-09-12T00:00:00.000Z", + ...overrides, + }; +} + +describe("ExchangeAssetAccountRegistry", () => { + it("creates and retrieves an exchange asset account", () => { + const registry = new ExchangeAssetAccountRegistry(); + const assetAccount = createAssetAccount(); + + const created = registry.create(assetAccount); + + expect(created).toEqual(assetAccount); + expect(registry.getById(assetAccount.id)).toEqual(assetAccount); + }); + + it("rejects duplicate asset-account IDs", () => { + const registry = new ExchangeAssetAccountRegistry(); + + registry.create(createAssetAccount()); + + expect(() => + registry.create( + createAssetAccount({ + exchangeAccountId: "exchange-account-2", + }), + ), + ).toThrow("Exchange asset account already exists"); + }); + + it("rejects duplicate asset for the same exchange account", () => { + const registry = new ExchangeAssetAccountRegistry(); + + registry.create(createAssetAccount()); + + expect(() => + registry.create( + createAssetAccount({ + id: "exchange-asset-account-2", + }), + ), + ).toThrow("Exchange asset account already exists for exchange account and asset"); + }); + + it("allows the same asset for different exchange accounts", () => { + const registry = new ExchangeAssetAccountRegistry(); + + registry.create(createAssetAccount()); + + const second = registry.create( + createAssetAccount({ + id: "exchange-asset-account-2", + exchangeAccountId: "exchange-account-2", + }), + ); + + expect(second.assetId).toBe("btc"); + expect(second.exchangeAccountId).toBe("exchange-account-2"); + }); + + it("allows different assets for the same exchange account", () => { + const registry = new ExchangeAssetAccountRegistry(); + + registry.create(createAssetAccount()); + + const second = registry.create( + createAssetAccount({ + id: "exchange-asset-account-2", + assetId: "eth", + }), + ); + + expect(second.exchangeAccountId).toBe("exchange-account-1"); + expect(second.assetId).toBe("eth"); + }); + + it("returns null for an unknown asset account", () => { + const registry = new ExchangeAssetAccountRegistry(); + + expect(registry.getById("unknown")).toBeNull(); + }); + + it("returns an immutable asset account", () => { + const registry = new ExchangeAssetAccountRegistry(); + + const created = registry.create(createAssetAccount()); + + expect(() => { + created.assetId = "mutated"; + }).toThrow(); + + expect(registry.getById(created.id)?.assetId).toBe("btc"); + }); + + it("rejects an empty exchange account ID", () => { + const registry = new ExchangeAssetAccountRegistry(); + + expect(() => + registry.create( + createAssetAccount({ + exchangeAccountId: " ", + }), + ), + ).toThrow("Exchange asset account exchange account ID must not be empty"); + }); + + it("rejects an empty asset ID", () => { + const registry = new ExchangeAssetAccountRegistry(); + + expect(() => + registry.create( + createAssetAccount({ + assetId: " ", + }), + ), + ).toThrow("Exchange asset account asset ID must not be empty"); + }); + it("rejects an empty network ID", () => { + const registry = new ExchangeAssetAccountRegistry(); + + expect(() => + registry.create( + createAssetAccount({ + networkId: " ", + }), + ), + ).toThrow("Exchange asset account network ID must not be empty"); + }); +}); diff --git a/packages/ledger-core/src/__tests__/exchange-deposit-registry.test.ts b/packages/ledger-core/src/__tests__/exchange-deposit-registry.test.ts new file mode 100644 index 0000000..9acb753 --- /dev/null +++ b/packages/ledger-core/src/__tests__/exchange-deposit-registry.test.ts @@ -0,0 +1,155 @@ +import { describe, expect, it } from "vitest"; +import { + ExchangeDepositRegistry, + type ExchangeDepositRecord, +} from "../index.js"; + +function createDeposit( + overrides: Partial = {}, +): ExchangeDepositRecord { + return { + id: "deposit-1", + exchangeAssetAccountId: "exchange-asset-account-1", + networkId: "ethereum", + transactionHash: "0xabc123", + amount: "1000000", + status: "detected", + reference: "deposit-ref-1", + createdAt: "2026-09-12T00:00:00.000Z", + ...overrides, + }; +} + +describe("ExchangeDepositRegistry", () => { + it("creates and retrieves a deposit", () => { + const registry = new ExchangeDepositRegistry(); + const deposit = createDeposit(); + + const created = registry.create(deposit); + + expect(created).toEqual(deposit); + expect(registry.getById(deposit.id)).toEqual(deposit); + }); + + it("rejects duplicate deposit IDs", () => { + const registry = new ExchangeDepositRegistry(); + + registry.create(createDeposit()); + + expect(() => + registry.create( + createDeposit({ + reference: "deposit-ref-2", + }), + ), + ).toThrow("Exchange deposit already exists"); + }); + + it("rejects duplicate references", () => { + const registry = new ExchangeDepositRegistry(); + + registry.create(createDeposit()); + + expect(() => + registry.create( + createDeposit({ + id: "deposit-2", + }), + ), + ).toThrow("Exchange deposit reference already exists"); + }); + + it("returns null for an unknown deposit", () => { + const registry = new ExchangeDepositRegistry(); + + expect(registry.getById("unknown")).toBeNull(); + }); + + it("returns an immutable deposit", () => { + const registry = new ExchangeDepositRegistry(); + + const created = registry.create(createDeposit()); + + expect(() => { + created.status = "credited"; + }).toThrow(); + + expect(registry.getById(created.id)?.status).toBe("detected"); + }); + + it("rejects an empty asset account ID", () => { + const registry = new ExchangeDepositRegistry(); + + expect(() => + registry.create( + createDeposit({ + exchangeAssetAccountId: " ", + }), + ), + ).toThrow( + "Exchange deposit asset account ID must not be empty", + ); + }); + + it("rejects an empty network ID", () => { + const registry = new ExchangeDepositRegistry(); + + expect(() => + registry.create( + createDeposit({ + networkId: " ", + }), + ), + ).toThrow("Exchange deposit network ID must not be empty"); + }); + + it("rejects an empty transaction hash", () => { + const registry = new ExchangeDepositRegistry(); + + expect(() => + registry.create( + createDeposit({ + transactionHash: " ", + }), + ), + ).toThrow( + "Exchange deposit transaction hash must not be empty", + ); + }); + + it("rejects a non-positive amount", () => { + const registry = new ExchangeDepositRegistry(); + + expect(() => + registry.create( + createDeposit({ + amount: "0", + }), + ), + ).toThrow("Exchange deposit amount must be positive"); + }); + + it("rejects a non-integer amount", () => { + const registry = new ExchangeDepositRegistry(); + + expect(() => + registry.create( + createDeposit({ + amount: "1.5", + }), + ), + ).toThrow("Exchange deposit amount must be positive"); + }); + + it("rejects an empty reference", () => { + const registry = new ExchangeDepositRegistry(); + + expect(() => + registry.create( + createDeposit({ + reference: " ", + }), + ), + ).toThrow("Exchange deposit reference must not be empty"); + }); +}); \ No newline at end of file diff --git a/packages/ledger-core/src/__tests__/exchange-fee-registry.test.ts b/packages/ledger-core/src/__tests__/exchange-fee-registry.test.ts new file mode 100644 index 0000000..df23fb7 --- /dev/null +++ b/packages/ledger-core/src/__tests__/exchange-fee-registry.test.ts @@ -0,0 +1,180 @@ +import { describe, expect, it } from "vitest"; +import { + ExchangeFeeRegistry, + type ExchangeFeeRecord, +} from "../index.js"; + +function createFee( + overrides: Partial = {}, +): ExchangeFeeRecord { + return { + id: "fee-1", + tradeId: "trade-1", + sourceExchangeAssetAccountId: "customer-asset-account", + feeExchangeAssetAccountId: "fee-asset-account", + assetId: "usdc", + amount: "5000000", + status: "charged", + reference: "fee-ref-1", + createdAt: "2026-09-12T00:00:00.000Z", + ...overrides, + }; +} + +describe("ExchangeFeeRegistry", () => { + it("creates and retrieves a fee", () => { + const registry = new ExchangeFeeRegistry(); + const fee = createFee(); + + const created = registry.create(fee); + + expect(created).toEqual(fee); + expect(registry.getById(fee.id)).toEqual(fee); + }); + + it("rejects duplicate fee IDs", () => { + const registry = new ExchangeFeeRegistry(); + + registry.create(createFee()); + + expect(() => + registry.create( + createFee({ + reference: "fee-ref-2", + }), + ), + ).toThrow("Exchange fee already exists"); + }); + + it("rejects duplicate references", () => { + const registry = new ExchangeFeeRegistry(); + + registry.create(createFee()); + + expect(() => + registry.create( + createFee({ + id: "fee-2", + }), + ), + ).toThrow("Exchange fee reference already exists"); + }); + + it("returns null for an unknown fee", () => { + const registry = new ExchangeFeeRegistry(); + + expect(registry.getById("unknown")).toBeNull(); + }); + + it("returns an immutable fee", () => { + const registry = new ExchangeFeeRegistry(); + + const created = registry.create(createFee()); + + expect(() => { + created.status = "reversed"; + }).toThrow(); + + expect(registry.getById(created.id)?.status).toBe("charged"); + }); + + it("rejects an empty trade ID", () => { + const registry = new ExchangeFeeRegistry(); + + expect(() => + registry.create( + createFee({ + tradeId: " ", + }), + ), + ).toThrow("Exchange fee trade ID must not be empty"); + }); + + it("rejects an empty source account ID", () => { + const registry = new ExchangeFeeRegistry(); + + expect(() => + registry.create( + createFee({ + sourceExchangeAssetAccountId: " ", + }), + ), + ).toThrow( + "Exchange fee source asset account ID must not be empty", + ); + }); + + it("rejects an empty fee account ID", () => { + const registry = new ExchangeFeeRegistry(); + + expect(() => + registry.create( + createFee({ + feeExchangeAssetAccountId: " ", + }), + ), + ).toThrow("Exchange fee fee account ID must not be empty"); + }); + + it("rejects identical source and fee accounts", () => { + const registry = new ExchangeFeeRegistry(); + + expect(() => + registry.create( + createFee({ + feeExchangeAssetAccountId: "customer-asset-account", + }), + ), + ).toThrow( + "Exchange fee source and fee accounts must differ", + ); + }); + + it("rejects an empty asset ID", () => { + const registry = new ExchangeFeeRegistry(); + + expect(() => + registry.create( + createFee({ + assetId: " ", + }), + ), + ).toThrow("Exchange fee asset ID must not be empty"); + }); + + it("rejects a non-positive amount", () => { + const registry = new ExchangeFeeRegistry(); + + expect(() => + registry.create( + createFee({ + amount: "0", + }), + ), + ).toThrow("Exchange fee amount must be positive"); + }); + + it("rejects a non-integer amount", () => { + const registry = new ExchangeFeeRegistry(); + + expect(() => + registry.create( + createFee({ + amount: "1.5", + }), + ), + ).toThrow("Exchange fee amount must be positive"); + }); + + it("rejects an empty reference", () => { + const registry = new ExchangeFeeRegistry(); + + expect(() => + registry.create( + createFee({ + reference: " ", + }), + ), + ).toThrow("Exchange fee reference must not be empty"); + }); +}); \ No newline at end of file diff --git a/packages/ledger-core/src/__tests__/exchange-posting-builders.test.ts b/packages/ledger-core/src/__tests__/exchange-posting-builders.test.ts new file mode 100644 index 0000000..b165872 --- /dev/null +++ b/packages/ledger-core/src/__tests__/exchange-posting-builders.test.ts @@ -0,0 +1,185 @@ +import { describe, expect, it } from "vitest"; +import { + buildDepositPosting, + buildFeePosting, + buildTradePosting, + buildWithdrawalPosting, +} from "../index.js"; + +describe("exchange posting builders", () => { + it("builds a balanced deposit posting", () => { + const transaction = buildDepositPosting({ + id: "deposit-ledger-1", + reference: "deposit-1", + custodyLedgerAccountId: "custody-btc", + assetLedgerAccountId: "customer-btc", + amount: "1000", + }); + + expect(transaction.operation).toBe("deposit"); + expect(transaction.postings).toEqual([ + { + ledgerAccountId: "custody-btc", + type: "debit", + amount: "1000", + }, + { + ledgerAccountId: "customer-btc", + type: "credit", + amount: "1000", + }, + ]); + }); + + it("builds a balanced withdrawal posting", () => { + const transaction = buildWithdrawalPosting({ + id: "withdrawal-ledger-1", + reference: "withdrawal-1", + customerLedgerAccountId: "customer-btc", + custodyLedgerAccountId: "custody-btc", + amount: "1000", + }); + + expect(transaction.operation).toBe("withdrawal"); + expect(transaction.postings).toEqual([ + { + ledgerAccountId: "customer-btc", + type: "debit", + amount: "1000", + }, + { + ledgerAccountId: "custody-btc", + type: "credit", + amount: "1000", + }, + ]); + }); + + it("builds a four-posting trade settlement", () => { + const transaction = buildTradePosting({ + id: "trade-ledger-1", + reference: "trade-1", + buyerBaseLedgerAccountId: "buyer-btc", + sellerBaseLedgerAccountId: "seller-btc", + buyerQuoteLedgerAccountId: "buyer-usdc", + sellerQuoteLedgerAccountId: "seller-usdc", + baseAmount: "100", + quoteAmount: "5000000", + }); + + expect(transaction.operation).toBe("trade"); + expect(transaction.postings).toEqual([ + { + ledgerAccountId: "buyer-btc", + type: "debit", + amount: "100", + }, + { + ledgerAccountId: "seller-btc", + type: "credit", + amount: "100", + }, + { + ledgerAccountId: "buyer-usdc", + type: "credit", + amount: "5000000", + }, + { + ledgerAccountId: "seller-usdc", + type: "debit", + amount: "5000000", + }, + ]); + }); + + it("builds a balanced fee posting", () => { + const transaction = buildFeePosting({ + id: "fee-ledger-1", + reference: "fee-1", + sourceLedgerAccountId: "customer-usdc", + feeLedgerAccountId: "exchange-fee-usdc", + amount: "50000", + }); + + expect(transaction.operation).toBe("fee"); + expect(transaction.postings).toEqual([ + { + ledgerAccountId: "customer-usdc", + type: "debit", + amount: "50000", + }, + { + ledgerAccountId: "exchange-fee-usdc", + type: "credit", + amount: "50000", + }, + ]); + }); + + it("rejects invalid deposit amounts", () => { + expect(() => + buildDepositPosting({ + id: "deposit-ledger-1", + reference: "deposit-1", + custodyLedgerAccountId: "custody-btc", + assetLedgerAccountId: "customer-btc", + amount: "0", + }), + ).toThrow("Exchange ledger posting amount must be positive"); + }); + + it("rejects invalid withdrawal amounts", () => { + expect(() => + buildWithdrawalPosting({ + id: "withdrawal-ledger-1", + reference: "withdrawal-1", + customerLedgerAccountId: "customer-btc", + custodyLedgerAccountId: "custody-btc", + amount: "1.5", + }), + ).toThrow("Exchange ledger posting amount must be positive"); + }); + + it("rejects invalid trade amounts", () => { + expect(() => + buildTradePosting({ + id: "trade-ledger-1", + reference: "trade-1", + buyerBaseLedgerAccountId: "buyer-btc", + sellerBaseLedgerAccountId: "seller-btc", + buyerQuoteLedgerAccountId: "buyer-usdc", + sellerQuoteLedgerAccountId: "seller-usdc", + baseAmount: "100", + quoteAmount: "0", + }), + ).toThrow("Exchange ledger posting amount must be positive"); + }); + + it("rejects invalid fee amounts", () => { + expect(() => + buildFeePosting({ + id: "fee-ledger-1", + reference: "fee-1", + sourceLedgerAccountId: "customer-usdc", + feeLedgerAccountId: "exchange-fee-usdc", + amount: "0", + }), + ).toThrow("Exchange ledger posting amount must be positive"); + }); + + it("returns immutable transactions", () => { + const transaction = buildDepositPosting({ + id: "deposit-ledger-1", + reference: "deposit-1", + custodyLedgerAccountId: "custody-btc", + assetLedgerAccountId: "customer-btc", + amount: "1000", + }); + + expect(() => { + transaction.postings[0]!.amount = "2000"; + }).toThrow(); + + expect(transaction.postings[0]!.amount).toBe("1000"); + }); +}); \ No newline at end of file diff --git a/packages/ledger-core/src/__tests__/exchange-posting-validator.test.ts b/packages/ledger-core/src/__tests__/exchange-posting-validator.test.ts new file mode 100644 index 0000000..9c4e896 --- /dev/null +++ b/packages/ledger-core/src/__tests__/exchange-posting-validator.test.ts @@ -0,0 +1,194 @@ +import { describe, expect, it } from "vitest"; +import { + validateExchangeLedgerTransaction, + type ExchangeLedgerTransaction, +} from "../index.js"; + +function createTransaction( + overrides: Partial = {}, +): ExchangeLedgerTransaction { + return { + id: "exchange-ledger-tx-1", + reference: "deposit-ref-1", + operation: "deposit", + postings: [ + { + ledgerAccountId: "cash-account", + type: "debit", + amount: "1000000", + }, + { + ledgerAccountId: "customer-account", + type: "credit", + amount: "1000000", + }, + ], + ...overrides, + }; +} + +describe("validateExchangeLedgerTransaction", () => { + it("accepts a balanced transaction", () => { + expect(() => + validateExchangeLedgerTransaction(createTransaction()), + ).not.toThrow(); + }); + + it("accepts multiple balanced postings", () => { + expect(() => + validateExchangeLedgerTransaction( + createTransaction({ + postings: [ + { + ledgerAccountId: "account-a", + type: "debit", + amount: "600", + }, + { + ledgerAccountId: "account-b", + type: "debit", + amount: "400", + }, + { + ledgerAccountId: "account-c", + type: "credit", + amount: "1000", + }, + ], + }), + ), + ).not.toThrow(); + }); + + it("rejects an empty transaction ID", () => { + expect(() => + validateExchangeLedgerTransaction( + createTransaction({ + id: " ", + }), + ), + ).toThrow( + "Exchange ledger transaction ID must not be empty", + ); + }); + + it("rejects an empty reference", () => { + expect(() => + validateExchangeLedgerTransaction( + createTransaction({ + reference: " ", + }), + ), + ).toThrow( + "Exchange ledger transaction reference must not be empty", + ); + }); + + it("requires at least two postings", () => { + expect(() => + validateExchangeLedgerTransaction( + createTransaction({ + postings: [ + { + ledgerAccountId: "account-a", + type: "debit", + amount: "100", + }, + ], + }), + ), + ).toThrow( + "Exchange ledger transaction requires at least two postings", + ); + }); + + it("rejects unbalanced postings", () => { + expect(() => + validateExchangeLedgerTransaction( + createTransaction({ + postings: [ + { + ledgerAccountId: "account-a", + type: "debit", + amount: "100", + }, + { + ledgerAccountId: "account-b", + type: "credit", + amount: "99", + }, + ], + }), + ), + ).toThrow("Exchange ledger transaction must balance"); + }); + + it("rejects an empty posting account ID", () => { + expect(() => + validateExchangeLedgerTransaction( + createTransaction({ + postings: [ + { + ledgerAccountId: " ", + type: "debit", + amount: "100", + }, + { + ledgerAccountId: "account-b", + type: "credit", + amount: "100", + }, + ], + }), + ), + ).toThrow( + "Exchange ledger posting account ID must not be empty", + ); + }); + + it("rejects a zero posting amount", () => { + expect(() => + validateExchangeLedgerTransaction( + createTransaction({ + postings: [ + { + ledgerAccountId: "account-a", + type: "debit", + amount: "0", + }, + { + ledgerAccountId: "account-b", + type: "credit", + amount: "0", + }, + ], + }), + ), + ).toThrow( + "Exchange ledger posting amount must be positive", + ); + }); + + it("rejects a fractional posting amount", () => { + expect(() => + validateExchangeLedgerTransaction( + createTransaction({ + postings: [ + { + ledgerAccountId: "account-a", + type: "debit", + amount: "1.5", + }, + { + ledgerAccountId: "account-b", + type: "credit", + amount: "1.5", + }, + ], + }), + ), + ).toThrow( + "Exchange ledger posting amount must be positive", + ); + }); +}); \ No newline at end of file diff --git a/packages/ledger-core/src/__tests__/exchange-subaccount-registry.test.ts b/packages/ledger-core/src/__tests__/exchange-subaccount-registry.test.ts new file mode 100644 index 0000000..4cbc87b --- /dev/null +++ b/packages/ledger-core/src/__tests__/exchange-subaccount-registry.test.ts @@ -0,0 +1,118 @@ +import { describe, expect, it } from "vitest"; +import { + ExchangeSubaccountRegistry, + type ExchangeSubaccountRecord, +} from "../index.js"; + +function createSubaccount( + overrides: Partial = {}, +): ExchangeSubaccountRecord { + return { + id: "exchange-subaccount-1", + exchangeAccountId: "exchange-account-1", + name: "spot", + createdAt: "2026-09-12T00:00:00.000Z", + ...overrides, + }; +} + +describe("ExchangeSubaccountRegistry", () => { + it("creates and retrieves an exchange subaccount", () => { + const registry = new ExchangeSubaccountRegistry(); + const subaccount = createSubaccount(); + + const created = registry.create(subaccount); + + expect(created).toEqual(subaccount); + expect(registry.getById(subaccount.id)).toEqual(subaccount); + }); + + it("rejects duplicate subaccount IDs", () => { + const registry = new ExchangeSubaccountRegistry(); + + registry.create(createSubaccount()); + + expect(() => + registry.create( + createSubaccount({ + exchangeAccountId: "exchange-account-2", + }), + ), + ).toThrow("Exchange subaccount already exists"); + }); + + it("rejects duplicate names within the same exchange account", () => { + const registry = new ExchangeSubaccountRegistry(); + + registry.create(createSubaccount()); + + expect(() => + registry.create( + createSubaccount({ + id: "exchange-subaccount-2", + }), + ), + ).toThrow( + "Exchange subaccount already exists for exchange account and name", + ); + }); + + it("allows the same name for different exchange accounts", () => { + const registry = new ExchangeSubaccountRegistry(); + + registry.create(createSubaccount()); + + const second = registry.create( + createSubaccount({ + id: "exchange-subaccount-2", + exchangeAccountId: "exchange-account-2", + }), + ); + + expect(second.exchangeAccountId).toBe("exchange-account-2"); + }); + + it("returns null for an unknown subaccount", () => { + const registry = new ExchangeSubaccountRegistry(); + + expect(registry.getById("unknown")).toBeNull(); + }); + + it("returns an immutable subaccount", () => { + const registry = new ExchangeSubaccountRegistry(); + + const created = registry.create(createSubaccount()); + + expect(() => { + created.name = "mutated"; + }).toThrow(); + + expect(registry.getById(created.id)?.name).toBe("spot"); + }); + + it("rejects an empty exchange account ID", () => { + const registry = new ExchangeSubaccountRegistry(); + + expect(() => + registry.create( + createSubaccount({ + exchangeAccountId: " ", + }), + ), + ).toThrow( + "Exchange subaccount exchange account ID must not be empty", + ); + }); + + it("rejects an empty name", () => { + const registry = new ExchangeSubaccountRegistry(); + + expect(() => + registry.create( + createSubaccount({ + name: " ", + }), + ), + ).toThrow("Exchange subaccount name must not be empty"); + }); +}); \ No newline at end of file diff --git a/packages/ledger-core/src/__tests__/exchange-trade-registry.test.ts b/packages/ledger-core/src/__tests__/exchange-trade-registry.test.ts new file mode 100644 index 0000000..870d482 --- /dev/null +++ b/packages/ledger-core/src/__tests__/exchange-trade-registry.test.ts @@ -0,0 +1,185 @@ +import { describe, expect, it } from "vitest"; +import { + ExchangeTradeRegistry, + type ExchangeTradeRecord, +} from "../index.js"; + +function createTrade( + overrides: Partial = {}, +): ExchangeTradeRecord { + return { + id: "trade-1", + buyerExchangeAssetAccountId: "buyer-asset-account", + sellerExchangeAssetAccountId: "seller-asset-account", + baseAssetId: "btc", + quoteAssetId: "usdc", + baseAmount: "100000", + quoteAmount: "5000000000", + priceNumerator: "50000", + priceDenominator: "1", + status: "executed", + reference: "trade-ref-1", + executedAt: "2026-09-12T00:00:00.000Z", + ...overrides, + }; +} + +describe("ExchangeTradeRegistry", () => { + it("creates and retrieves a trade", () => { + const registry = new ExchangeTradeRegistry(); + const trade = createTrade(); + + const created = registry.create(trade); + + expect(created).toEqual(trade); + expect(registry.getById(trade.id)).toEqual(trade); + }); + + it("rejects duplicate trade IDs", () => { + const registry = new ExchangeTradeRegistry(); + + registry.create(createTrade()); + + expect(() => + registry.create( + createTrade({ + reference: "trade-ref-2", + }), + ), + ).toThrow("Exchange trade already exists"); + }); + + it("rejects duplicate references", () => { + const registry = new ExchangeTradeRegistry(); + + registry.create(createTrade()); + + expect(() => + registry.create( + createTrade({ + id: "trade-2", + }), + ), + ).toThrow("Exchange trade reference already exists"); + }); + + it("returns null for an unknown trade", () => { + const registry = new ExchangeTradeRegistry(); + + expect(registry.getById("unknown")).toBeNull(); + }); + + it("returns an immutable trade", () => { + const registry = new ExchangeTradeRegistry(); + + const created = registry.create(createTrade()); + + expect(() => { + created.status = "reversed"; + }).toThrow(); + + expect(registry.getById(created.id)?.status).toBe("executed"); + }); + + it("rejects identical buyer and seller accounts", () => { + const registry = new ExchangeTradeRegistry(); + + expect(() => + registry.create( + createTrade({ + sellerExchangeAssetAccountId: "buyer-asset-account", + }), + ), + ).toThrow( + "Exchange trade buyer and seller asset accounts must differ", + ); + }); + + it("rejects identical base and quote assets", () => { + const registry = new ExchangeTradeRegistry(); + + expect(() => + registry.create( + createTrade({ + quoteAssetId: "btc", + }), + ), + ).toThrow( + "Exchange trade base and quote assets must differ", + ); + }); + + it("rejects a non-positive base amount", () => { + const registry = new ExchangeTradeRegistry(); + + expect(() => + registry.create( + createTrade({ + baseAmount: "0", + }), + ), + ).toThrow("Exchange trade base amount must be positive"); + }); + + it("rejects a non-integer quote amount", () => { + const registry = new ExchangeTradeRegistry(); + + expect(() => + registry.create( + createTrade({ + quoteAmount: "1.5", + }), + ), + ).toThrow("Exchange trade quote amount must be positive"); + }); + + it("rejects a non-positive price numerator", () => { + const registry = new ExchangeTradeRegistry(); + + expect(() => + registry.create( + createTrade({ + priceNumerator: "0", + }), + ), + ).toThrow("Exchange trade price numerator must be positive"); + }); + + it("rejects a non-positive price denominator", () => { + const registry = new ExchangeTradeRegistry(); + + expect(() => + registry.create( + createTrade({ + priceDenominator: "0", + }), + ), + ).toThrow("Exchange trade price denominator must be positive"); + }); + + it("rejects an empty reference", () => { + const registry = new ExchangeTradeRegistry(); + + expect(() => + registry.create( + createTrade({ + reference: " ", + }), + ), + ).toThrow("Exchange trade reference must not be empty"); + }); + + it("rejects an empty execution time", () => { + const registry = new ExchangeTradeRegistry(); + + expect(() => + registry.create( + createTrade({ + executedAt: " ", + }), + ), + ).toThrow( + "Exchange trade execution time must not be empty", + ); + }); +}); \ No newline at end of file diff --git a/packages/ledger-core/src/__tests__/exchange-withdrawal-registry.test.ts b/packages/ledger-core/src/__tests__/exchange-withdrawal-registry.test.ts new file mode 100644 index 0000000..537f606 --- /dev/null +++ b/packages/ledger-core/src/__tests__/exchange-withdrawal-registry.test.ts @@ -0,0 +1,153 @@ +import { describe, expect, it } from "vitest"; +import { + ExchangeWithdrawalRegistry, + type ExchangeWithdrawalRecord, +} from "../index.js"; + +function createWithdrawal( + overrides: Partial = {}, +): ExchangeWithdrawalRecord { + return { + id: "withdrawal-1", + exchangeAssetAccountId: "exchange-asset-account-1", + networkId: "ethereum", + destination: "0xrecipient", + amount: "1000000", + status: "requested", + reference: "withdrawal-ref-1", + createdAt: "2026-09-12T00:00:00.000Z", + ...overrides, + }; +} + +describe("ExchangeWithdrawalRegistry", () => { + it("creates and retrieves a withdrawal", () => { + const registry = new ExchangeWithdrawalRegistry(); + const withdrawal = createWithdrawal(); + + const created = registry.create(withdrawal); + + expect(created).toEqual(withdrawal); + expect(registry.getById(withdrawal.id)).toEqual(withdrawal); + }); + + it("rejects duplicate withdrawal IDs", () => { + const registry = new ExchangeWithdrawalRegistry(); + + registry.create(createWithdrawal()); + + expect(() => + registry.create( + createWithdrawal({ + reference: "withdrawal-ref-2", + }), + ), + ).toThrow("Exchange withdrawal already exists"); + }); + + it("rejects duplicate references", () => { + const registry = new ExchangeWithdrawalRegistry(); + + registry.create(createWithdrawal()); + + expect(() => + registry.create( + createWithdrawal({ + id: "withdrawal-2", + }), + ), + ).toThrow("Exchange withdrawal reference already exists"); + }); + + it("returns null for an unknown withdrawal", () => { + const registry = new ExchangeWithdrawalRegistry(); + + expect(registry.getById("unknown")).toBeNull(); + }); + + it("returns an immutable withdrawal", () => { + const registry = new ExchangeWithdrawalRegistry(); + + const created = registry.create(createWithdrawal()); + + expect(() => { + created.status = "approved"; + }).toThrow(); + + expect(registry.getById(created.id)?.status).toBe("requested"); + }); + + it("rejects an empty asset account ID", () => { + const registry = new ExchangeWithdrawalRegistry(); + + expect(() => + registry.create( + createWithdrawal({ + exchangeAssetAccountId: " ", + }), + ), + ).toThrow( + "Exchange withdrawal asset account ID must not be empty", + ); + }); + + it("rejects an empty network ID", () => { + const registry = new ExchangeWithdrawalRegistry(); + + expect(() => + registry.create( + createWithdrawal({ + networkId: " ", + }), + ), + ).toThrow("Exchange withdrawal network ID must not be empty"); + }); + + it("rejects an empty destination", () => { + const registry = new ExchangeWithdrawalRegistry(); + + expect(() => + registry.create( + createWithdrawal({ + destination: " ", + }), + ), + ).toThrow("Exchange withdrawal destination must not be empty"); + }); + + it("rejects a non-positive amount", () => { + const registry = new ExchangeWithdrawalRegistry(); + + expect(() => + registry.create( + createWithdrawal({ + amount: "0", + }), + ), + ).toThrow("Exchange withdrawal amount must be positive"); + }); + + it("rejects a non-integer amount", () => { + const registry = new ExchangeWithdrawalRegistry(); + + expect(() => + registry.create( + createWithdrawal({ + amount: "1.5", + }), + ), + ).toThrow("Exchange withdrawal amount must be positive"); + }); + + it("rejects an empty reference", () => { + const registry = new ExchangeWithdrawalRegistry(); + + expect(() => + registry.create( + createWithdrawal({ + reference: " ", + }), + ), + ).toThrow("Exchange withdrawal reference must not be empty"); + }); +}); \ No newline at end of file diff --git a/packages/ledger-core/src/__tests__/ledger-engine.test.ts b/packages/ledger-core/src/__tests__/ledger-engine.test.ts new file mode 100644 index 0000000..1f42876 --- /dev/null +++ b/packages/ledger-core/src/__tests__/ledger-engine.test.ts @@ -0,0 +1,228 @@ +import { describe, expect, it } from "vitest"; + +import { DefaultLedgerEngine } from "../ledger-engine.js"; + +describe("DefaultLedgerEngine", () => { + const debit = { + ledgerAccountId: "account-a", + type: "debit" as const, + amount: "100", + }; + + const credit = { + ledgerAccountId: "account-b", + type: "credit" as const, + amount: "100", + }; + + it("accepts a balanced posting", () => { + const engine = new DefaultLedgerEngine(); + + const transaction = engine.createTransaction({ + id: "ledger-tx-1", + reference: "wallet-tx-1", + postings: [debit, credit], + }); + + expect(transaction.id).toBe("ledger-tx-1"); + expect(transaction.reference).toBe("wallet-tx-1"); + expect(transaction.postings).toHaveLength(2); + }); + + it("rejects an unbalanced posting", () => { + const engine = new DefaultLedgerEngine(); + + expect(() => + engine.createTransaction({ + id: "ledger-tx-2", + reference: "wallet-tx-2", + postings: [ + debit, + { + ...credit, + amount: "99", + }, + ], + }), + ).toThrow("Ledger transaction must balance"); + }); + + it("rejects a transaction without enough postings", () => { + const engine = new DefaultLedgerEngine(); + + expect(() => + engine.createTransaction({ + id: "ledger-tx-3", + reference: "wallet-tx-3", + postings: [debit], + }), + ).toThrow("Ledger transaction requires at least two postings"); + }); + + it("rejects zero amounts", () => { + const engine = new DefaultLedgerEngine(); + + expect(() => + engine.createTransaction({ + id: "ledger-tx-4", + reference: "wallet-tx-4", + postings: [ + debit, + { + ...credit, + amount: "0", + }, + ], + }), + ).toThrow("Ledger posting amount must be positive"); + }); + + it("rejects negative amounts", () => { + const engine = new DefaultLedgerEngine(); + + expect(() => + engine.createTransaction({ + id: "ledger-tx-5", + reference: "wallet-tx-5", + postings: [ + debit, + { + ...credit, + amount: "-100", + }, + ], + }), + ).toThrow("Ledger posting amount must be positive"); + }); + + it("rejects duplicate transaction references", () => { + const engine = new DefaultLedgerEngine(); + + engine.createTransaction({ + id: "ledger-tx-6", + reference: "wallet-tx-6", + postings: [debit, credit], + }); + + expect(() => + engine.createTransaction({ + id: "ledger-tx-7", + reference: "wallet-tx-6", + postings: [debit, credit], + }), + ).toThrow("Ledger transaction reference already exists"); + }); + it("does not allow mutation of a created transaction", () => { + const engine = new DefaultLedgerEngine(); + + const transaction = engine.createTransaction({ + id: "ledger-tx-7", + reference: "wallet-tx-7", + postings: [debit, credit], + }); + + expect(() => { + transaction.postings[0]!.amount = "999"; + }).toThrow(); + + const stored = engine.getById("ledger-tx-7"); + + expect(stored?.postings[0]!.amount).toBe("100"); + }); + + it("does not allow mutation of the original input to alter ledger state", () => { + const engine = new DefaultLedgerEngine(); + + const input = { + id: "ledger-tx-8", + reference: "wallet-tx-8", + postings: [{ ...debit }, { ...credit }], + }; + + engine.createTransaction(input); + + input.postings[0]!.amount = "999"; + + const stored = engine.getById("ledger-tx-8"); + + expect(stored?.postings[0]!.amount).toBe("100"); + }); + it("derives a ledger balance from postings", () => { + const engine = new DefaultLedgerEngine(); + + engine.createTransaction({ + id: "ledger-tx-9", + reference: "wallet-tx-9", + postings: [debit, credit], + }); + + const accountA = engine.getBalance("account-a"); + const accountB = engine.getBalance("account-b"); + + expect(accountA).toEqual({ + ledgerAccountId: "account-a", + debit: "100", + credit: "0", + balance: "100", + }); + + expect(accountB).toEqual({ + ledgerAccountId: "account-b", + debit: "0", + credit: "100", + balance: "-100", + }); + }); + + it("returns zero balance for an account with no postings", () => { + const engine = new DefaultLedgerEngine(); + + expect(engine.getBalance("account-empty")).toEqual({ + ledgerAccountId: "account-empty", + debit: "0", + credit: "0", + balance: "0", + }); + }); + + it("derives balances across multiple transactions", () => { + const engine = new DefaultLedgerEngine(); + + engine.createTransaction({ + id: "ledger-tx-10", + reference: "wallet-tx-10", + postings: [debit, credit], + }); + + engine.createTransaction({ + id: "ledger-tx-11", + reference: "wallet-tx-11", + postings: [ + { + ledgerAccountId: "account-a", + type: "credit", + amount: "40", + }, + { + ledgerAccountId: "account-b", + type: "debit", + amount: "40", + }, + ], + }); + + expect(engine.getBalance("account-a")).toEqual({ + ledgerAccountId: "account-a", + debit: "100", + credit: "40", + balance: "60", + }); + + expect(engine.getBalance("account-b")).toEqual({ + ledgerAccountId: "account-b", + debit: "40", + credit: "100", + balance: "-60", + }); + }); +}); diff --git a/packages/ledger-core/src/__tests__/ledger-types.test.ts b/packages/ledger-core/src/__tests__/ledger-types.test.ts new file mode 100644 index 0000000..e376d6a --- /dev/null +++ b/packages/ledger-core/src/__tests__/ledger-types.test.ts @@ -0,0 +1,47 @@ +import { describe, expect, it } from "vitest"; + +import type { + LedgerAccountKind, + LedgerAccountRecord, + LedgerSubaccountRecord, +} from "../ledger-types.js"; + +describe("ledger domain types", () => { + it("supports explicit ledger account kinds", () => { + const kinds: LedgerAccountKind[] = [ + "asset", + "liability", + "revenue", + "expense", + "equity", + ]; + + expect(kinds).toHaveLength(5); + }); + + it("models a ledger account", () => { + const account: LedgerAccountRecord = { + id: "ledger-account-1", + walletId: "wallet-1", + assetId: "btc", + chain: "bitcoin", + kind: "asset", + createdAt: "2026-09-12T00:00:00.000Z", + }; + + expect(account.kind).toBe("asset"); + expect(account.assetId).toBe("btc"); + }); + + it("models a ledger subaccount", () => { + const subaccount: LedgerSubaccountRecord = { + id: "subaccount-1", + ledgerAccountId: "ledger-account-1", + name: "available", + createdAt: "2026-09-12T00:00:00.000Z", + }; + + expect(subaccount.ledgerAccountId).toBe("ledger-account-1"); + expect(subaccount.name).toBe("available"); + }); +}); \ No newline at end of file diff --git a/packages/ledger-core/src/__tests__/reconciliation-engine.test.ts b/packages/ledger-core/src/__tests__/reconciliation-engine.test.ts new file mode 100644 index 0000000..82be82e --- /dev/null +++ b/packages/ledger-core/src/__tests__/reconciliation-engine.test.ts @@ -0,0 +1,95 @@ +import { describe, expect, it } from "vitest"; +import { DefaultReconciliationEngine } from "../reconciliation-engine.js"; +import type { ReconciliationObservation } from "../reconciliation-types.js"; + +const scope = { + assetId: "usdc", + networkId: "ethereum", + accountId: "exchange-asset-account-1", +}; + +function observation( + source: ReconciliationObservation["source"], + amount: string, +): ReconciliationObservation { + return { + source, + scope, + status: "available", + amount, + observedAt: "2026-09-12T00:00:00.000Z", + }; +} + +describe("DefaultReconciliationEngine", () => { + const engine = new DefaultReconciliationEngine(); + + it("marks equal observations as matched", () => { + const result = engine.compare( + observation("ledger", "1000000"), + observation("custody", "1000000"), + ); + + expect(result.status).toBe("matched"); + expect(result.difference).toBe("0"); + }); + + it("calculates positive differences using integer arithmetic", () => { + const result = engine.compare( + observation("ledger", "1000000"), + observation("blockchain", "1000500"), + ); + + expect(result.status).toBe("mismatched"); + expect(result.difference).toBe("500"); + }); + + it("calculates negative differences using integer arithmetic", () => { + const result = engine.compare( + observation("ledger", "1000000"), + observation("blockchain", "999500"), + ); + + expect(result.status).toBe("mismatched"); + expect(result.difference).toBe("-500"); + }); + + it("rejects non-integer amounts", () => { + expect(() => + engine.compare(observation("ledger", "1000.5"), observation("custody", "1000")), + ).toThrow("Reconciliation amount must be a non-negative integer"); + }); + + it("rejects observations from different scopes", () => { + expect(() => + engine.compare(observation("ledger", "1000"), { + ...observation("custody", "1000"), + scope: { + ...scope, + assetId: "btc", + }, + }), + ).toThrow("Reconciliation observations must use the same scope"); + }); + it("marks the comparison unavailable when an observation is unavailable", () => { + const result = engine.compare( + { + source: "ledger", + scope, + status: "available", + amount: "1000000", + observedAt: "2026-09-12T00:00:00.000Z", + }, + { + source: "custody", + scope, + status: "unavailable", + amount: null, + observedAt: "2026-09-12T00:00:01.000Z", + }, + ); + + expect(result.status).toBe("unavailable"); + expect(result.difference).toBeNull(); + }); +}); diff --git a/packages/ledger-core/src/__tests__/reconciliation-repository.test.ts b/packages/ledger-core/src/__tests__/reconciliation-repository.test.ts new file mode 100644 index 0000000..01cf505 --- /dev/null +++ b/packages/ledger-core/src/__tests__/reconciliation-repository.test.ts @@ -0,0 +1,83 @@ +import { describe, expect, it } from "vitest"; +import type { + ReconciliationComparison, + ReconciliationRepository, +} from "../index.js"; + +class InMemoryReconciliationRepository + implements ReconciliationRepository +{ + private readonly comparisons: ReconciliationComparison[] = []; + + async save(comparison: ReconciliationComparison): Promise { + this.comparisons.push(comparison); + } + + async findLatest( + assetId: string, + networkId?: string, + accountId?: string, + ): Promise { + const matches = this.comparisons.filter((comparison) => { + return ( + comparison.scope.assetId === assetId && + comparison.scope.networkId === networkId && + comparison.scope.accountId === accountId + ); + }); + + return matches.at(-1) ?? null; + } +} + +describe("ReconciliationRepository contract", () => { + it("stores and retrieves the latest comparison for a scope", async () => { + const repository = new InMemoryReconciliationRepository(); + + const comparison: ReconciliationComparison = { + scope: { + assetId: "usdc", + networkId: "ethereum", + accountId: "exchange-asset-account-1", + }, + expected: { + source: "ledger", + scope: { + assetId: "usdc", + networkId: "ethereum", + accountId: "exchange-asset-account-1", + }, + status: "available", + amount: "1000000", + observedAt: "2026-09-12T00:00:00.000Z", + }, + actual: { + source: "custody", + scope: { + assetId: "usdc", + networkId: "ethereum", + accountId: "exchange-asset-account-1", + }, + status: "available", + amount: "1000000", + observedAt: "2026-09-12T00:00:01.000Z", + }, + difference: "0", + status: "matched", + }; + + await repository.save(comparison); + + await expect( + repository.findLatest("usdc", "ethereum", "exchange-asset-account-1"), + ).resolves.toEqual(comparison); + }); + + it("returns null when no comparison exists", async () => { + const repository = new InMemoryReconciliationRepository(); + + await expect( + repository.findLatest("btc", "bitcoin", "missing-account"), + ).resolves.toBeNull(); + }); +}); \ No newline at end of file diff --git a/packages/ledger-core/src/__tests__/reconciliation-types.test.ts b/packages/ledger-core/src/__tests__/reconciliation-types.test.ts new file mode 100644 index 0000000..f89def3 --- /dev/null +++ b/packages/ledger-core/src/__tests__/reconciliation-types.test.ts @@ -0,0 +1,110 @@ +import { describe, expect, it } from "vitest"; +import type { + ReconciliationComparison, + ReconciliationObservation, + ReconciliationScope, +} from "../reconciliation-types.js"; + +describe("reconciliation contract", () => { + it("represents ledger and external observations for the same scope", () => { + const scope: ReconciliationScope = { + assetId: "usdc", + networkId: "ethereum", + accountId: "exchange-asset-account-1", + }; + + const ledgerObservation: ReconciliationObservation = { + source: "ledger", + scope, + status: "available", + amount: "1000000", + observedAt: "2026-09-12T00:00:00.000Z", + reference: "ledger-balance-1", + }; + + const custodyObservation: ReconciliationObservation = { + source: "custody", + scope, + status: "available", + amount: "1000000", + observedAt: "2026-09-12T00:00:01.000Z", + reference: "custody-balance-1", + }; + + const comparison: ReconciliationComparison = { + scope, + expected: ledgerObservation, + actual: custodyObservation, + difference: "0", + status: "matched", + }; + + expect(comparison.expected.source).toBe("ledger"); + expect(comparison.actual.source).toBe("custody"); + expect(comparison.difference).toBe("0"); + expect(comparison.status).toBe("matched"); + }); + + it("supports blockchain and fiat as external reconciliation sources", () => { + const scope: ReconciliationScope = { + assetId: "btc", + networkId: "bitcoin", + }; + + const blockchainObservation: ReconciliationObservation = { + source: "blockchain", + scope, + status: "available", + amount: "25000000", + observedAt: "2026-09-12T00:00:00.000Z", + }; + + const fiatObservation: ReconciliationObservation = { + source: "fiat", + scope: { + assetId: "usd", + accountId: "bank-account-1", + }, + status: "available", + amount: "500000", + observedAt: "2026-09-12T00:00:00.000Z", + }; + + expect(blockchainObservation.source).toBe("blockchain"); + expect(fiatObservation.source).toBe("fiat"); + }); + + it("represents mismatches without using floating-point amounts", () => { + const scope: ReconciliationScope = { + assetId: "usdc", + networkId: "ethereum", + }; + + const expected: ReconciliationObservation = { + source: "ledger", + scope, + status: "available", + amount: "1000000", + observedAt: "2026-09-12T00:00:00.000Z", + }; + + const actual: ReconciliationObservation = { + source: "blockchain", + scope, + status: "available", + amount: "999500", + observedAt: "2026-09-12T00:00:00.000Z", + }; + + const comparison: ReconciliationComparison = { + scope, + expected, + actual, + difference: "-500", + status: "mismatched", + }; + + expect(comparison.difference).toBe("-500"); + expect(comparison.status).toBe("mismatched"); + }); +}); \ No newline at end of file diff --git a/packages/ledger-core/src/__tests__/subaccount-registry.test.ts b/packages/ledger-core/src/__tests__/subaccount-registry.test.ts new file mode 100644 index 0000000..b3e865c --- /dev/null +++ b/packages/ledger-core/src/__tests__/subaccount-registry.test.ts @@ -0,0 +1,83 @@ +import { describe, expect, it } from "vitest"; + +import { LedgerSubaccountRegistry } from "../subaccount-registry.js"; +import type { LedgerSubaccountRecord } from "../ledger-types.js"; + +describe("LedgerSubaccountRegistry", () => { + const subaccount: LedgerSubaccountRecord = { + id: "subaccount-1", + ledgerAccountId: "ledger-account-1", + name: "available", + createdAt: "2026-09-12T00:00:00.000Z", + }; + + it("creates and retrieves a subaccount", () => { + const registry = new LedgerSubaccountRegistry(); + + const created = registry.create(subaccount); + + expect(created).toEqual(subaccount); + expect(registry.getById(subaccount.id)).toEqual(subaccount); + }); + + it("rejects duplicate subaccount ids", () => { + const registry = new LedgerSubaccountRegistry(); + + registry.create(subaccount); + + expect(() => registry.create(subaccount)).toThrow( + "Ledger subaccount already exists: subaccount-1", + ); + }); + + it("rejects duplicate subaccount names within the same ledger account", () => { + const registry = new LedgerSubaccountRegistry(); + + registry.create(subaccount); + + expect(() => + registry.create({ + ...subaccount, + id: "subaccount-2", + }), + ).toThrow( + "Ledger subaccount already exists for ledger account and name", + ); + }); + + it("allows the same subaccount name on different ledger accounts", () => { + const registry = new LedgerSubaccountRegistry(); + + registry.create(subaccount); + + const second = registry.create({ + ...subaccount, + id: "subaccount-2", + ledgerAccountId: "ledger-account-2", + }); + + expect(second).toEqual({ + ...subaccount, + id: "subaccount-2", + ledgerAccountId: "ledger-account-2", + }); + }); + + it("does not expose mutable internal state", () => { + const registry = new LedgerSubaccountRegistry(); + + const created = registry.create(subaccount); + + expect(() => { + created.name = "mutated"; + }).toThrow(); + + expect(registry.getById(subaccount.id)).toEqual(subaccount); + }); + + it("returns null for an unknown subaccount", () => { + const registry = new LedgerSubaccountRegistry(); + + expect(registry.getById("unknown")).toBeNull(); + }); +}); \ No newline at end of file diff --git a/packages/ledger-core/src/account-registry.ts b/packages/ledger-core/src/account-registry.ts new file mode 100644 index 0000000..760347f --- /dev/null +++ b/packages/ledger-core/src/account-registry.ts @@ -0,0 +1,46 @@ +import type { LedgerAccountRecord } from "./ledger-types.js"; + +export class LedgerAccountRegistry { + private readonly accounts = new Map(); + private readonly identities = new Map(); + + create(account: LedgerAccountRecord): LedgerAccountRecord { + if (this.accounts.has(account.id)) { + throw new Error(`Ledger account already exists: ${account.id}`); + } + + const identity = this.getIdentity(account); + + if (this.identities.has(identity)) { + throw new Error( + `Ledger account already exists for wallet, asset, chain and kind`, + ); + } + + const stored = Object.freeze({ ...account }); + + this.accounts.set(account.id, stored); + this.identities.set(identity, account.id); + + return stored; + } + + getById(id: string): LedgerAccountRecord | null { + const account = this.accounts.get(id); + + if (account === undefined) { + return null; + } + + return Object.freeze({ ...account }); + } + + private getIdentity(account: LedgerAccountRecord): string { + return JSON.stringify([ + account.walletId, + account.assetId, + account.chain, + account.kind, + ]); + } +} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-account-registry.ts b/packages/ledger-core/src/exchange-account-registry.ts new file mode 100644 index 0000000..3e16016 --- /dev/null +++ b/packages/ledger-core/src/exchange-account-registry.ts @@ -0,0 +1,71 @@ +import type { ExchangeAccountRecord } from "./exchange-account-types.js"; + +export class ExchangeAccountRegistry { + private readonly accounts = new Map(); + private readonly identities = new Map(); + + create(account: ExchangeAccountRecord): ExchangeAccountRecord { + if (this.accounts.has(account.id)) { + throw new Error(`Exchange account already exists: ${account.id}`); + } + + const identity = this.getIdentity(account); + + if (this.identities.has(identity)) { + throw new Error( + "Exchange account already exists for owner and account kind", + ); + } + + this.validate(account); + + const stored = Object.freeze({ ...account }); + + this.accounts.set(account.id, stored); + this.identities.set(identity, account.id); + + return stored; + } + + getById(id: string): ExchangeAccountRecord | null { + const account = this.accounts.get(id); + + if (account === undefined) { + return null; + } + + return Object.freeze({ ...account }); + } + + private getIdentity(account: ExchangeAccountRecord): string { + return JSON.stringify([ + account.ownerType, + account.ownerId, + account.kind, + ]); + } + + private validate(account: ExchangeAccountRecord): void { + if (account.ownerId.trim().length === 0) { + throw new Error("Exchange account owner ID must not be empty"); + } + + if ( + account.ownerType === "customer" && + account.kind !== "customer" + ) { + throw new Error( + "Customer-owned exchange accounts must have customer kind", + ); + } + + if ( + account.ownerType === "platform" && + account.kind === "customer" + ) { + throw new Error( + "Platform-owned exchange accounts cannot have customer kind", + ); + } + } +} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-account-types.ts b/packages/ledger-core/src/exchange-account-types.ts new file mode 100644 index 0000000..2856b2d --- /dev/null +++ b/packages/ledger-core/src/exchange-account-types.ts @@ -0,0 +1,33 @@ +export type ExchangeAccountOwnerType = "customer" | "platform"; + +export type ExchangeAccountKind = + | "customer" + | "treasury" + | "fee" + | "operational"; + +export type ExchangeAccountStatus = "active" | "blocked"; + +export interface ExchangeAccountRecord { + id: string; + ownerType: ExchangeAccountOwnerType; + ownerId: string; + kind: ExchangeAccountKind; + status: ExchangeAccountStatus; + createdAt: string; +} + +export interface ExchangeSubaccountRecord { + id: string; + exchangeAccountId: string; + name: string; + createdAt: string; +} + +export interface ExchangeAssetAccountRecord { + id: string; + exchangeAccountId: string; + assetId: string; + networkId: string; + createdAt: string; +} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-asset-account-registry.ts b/packages/ledger-core/src/exchange-asset-account-registry.ts new file mode 100644 index 0000000..834a0af --- /dev/null +++ b/packages/ledger-core/src/exchange-asset-account-registry.ts @@ -0,0 +1,78 @@ +import type { ExchangeAssetAccountRecord } from "./exchange-account-types.js"; + +export class ExchangeAssetAccountRegistry { + private readonly assetAccounts = new Map< + string, + ExchangeAssetAccountRecord + >(); + + private readonly identities = new Map(); + + create( + assetAccount: ExchangeAssetAccountRecord, + ): ExchangeAssetAccountRecord { + if (this.assetAccounts.has(assetAccount.id)) { + throw new Error( + `Exchange asset account already exists: ${assetAccount.id}`, + ); + } + + const identity = this.getIdentity(assetAccount); + + if (this.identities.has(identity)) { + throw new Error( + "Exchange asset account already exists for exchange account and asset", + ); + } + + this.validate(assetAccount); + + const stored = Object.freeze({ ...assetAccount }); + + this.assetAccounts.set(assetAccount.id, stored); + this.identities.set(identity, assetAccount.id); + + return stored; + } + + getById(id: string): ExchangeAssetAccountRecord | null { + const assetAccount = this.assetAccounts.get(id); + + if (assetAccount === undefined) { + return null; + } + + return Object.freeze({ ...assetAccount }); + } + + private getIdentity( + assetAccount: ExchangeAssetAccountRecord, + ): string { + return JSON.stringify([ + assetAccount.exchangeAccountId, + assetAccount.assetId, + ]); + } + + private validate( + assetAccount: ExchangeAssetAccountRecord, +): void { + if (assetAccount.exchangeAccountId.trim().length === 0) { + throw new Error( + "Exchange asset account exchange account ID must not be empty", + ); + } + + if (assetAccount.assetId.trim().length === 0) { + throw new Error( + "Exchange asset account asset ID must not be empty", + ); + } + + if (assetAccount.networkId.trim().length === 0) { + throw new Error( + "Exchange asset account network ID must not be empty", + ); + } +} +} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-deposit-registry.ts b/packages/ledger-core/src/exchange-deposit-registry.ts new file mode 100644 index 0000000..6383204 --- /dev/null +++ b/packages/ledger-core/src/exchange-deposit-registry.ts @@ -0,0 +1,65 @@ +import type { ExchangeDepositRecord } from "./exchange-deposit-types.js"; + +export class ExchangeDepositRegistry { + private readonly deposits = new Map(); + private readonly references = new Map(); + + create(deposit: ExchangeDepositRecord): ExchangeDepositRecord { + if (this.deposits.has(deposit.id)) { + throw new Error( + `Exchange deposit already exists: ${deposit.id}`, + ); + } + + if (this.references.has(deposit.reference)) { + throw new Error( + `Exchange deposit reference already exists: ${deposit.reference}`, + ); + } + + this.validate(deposit); + + const stored = Object.freeze({ ...deposit }); + + this.deposits.set(deposit.id, stored); + this.references.set(deposit.reference, deposit.id); + + return stored; + } + + getById(id: string): ExchangeDepositRecord | null { + const deposit = this.deposits.get(id); + + if (deposit === undefined) { + return null; + } + + return Object.freeze({ ...deposit }); + } + + private validate(deposit: ExchangeDepositRecord): void { + if (deposit.exchangeAssetAccountId.trim().length === 0) { + throw new Error( + "Exchange deposit asset account ID must not be empty", + ); + } + + if (deposit.networkId.trim().length === 0) { + throw new Error("Exchange deposit network ID must not be empty"); + } + + if (deposit.transactionHash.trim().length === 0) { + throw new Error( + "Exchange deposit transaction hash must not be empty", + ); + } + + if (!/^[0-9]+$/.test(deposit.amount) || BigInt(deposit.amount) <= 0n) { + throw new Error("Exchange deposit amount must be positive"); + } + + if (deposit.reference.trim().length === 0) { + throw new Error("Exchange deposit reference must not be empty"); + } + } +} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-deposit-types.ts b/packages/ledger-core/src/exchange-deposit-types.ts new file mode 100644 index 0000000..6bf5387 --- /dev/null +++ b/packages/ledger-core/src/exchange-deposit-types.ts @@ -0,0 +1,16 @@ +export type ExchangeDepositStatus = + | "detected" + | "confirmed" + | "credited" + | "reversed"; + +export interface ExchangeDepositRecord { + id: string; + exchangeAssetAccountId: string; + networkId: string; + transactionHash: string; + amount: string; + status: ExchangeDepositStatus; + reference: string; + createdAt: string; +} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-fee-registry.ts b/packages/ledger-core/src/exchange-fee-registry.ts new file mode 100644 index 0000000..54f7a57 --- /dev/null +++ b/packages/ledger-core/src/exchange-fee-registry.ts @@ -0,0 +1,76 @@ +import type { ExchangeFeeRecord } from "./exchange-fee-types.js"; + +export class ExchangeFeeRegistry { + private readonly fees = new Map(); + private readonly references = new Map(); + + create(fee: ExchangeFeeRecord): ExchangeFeeRecord { + if (this.fees.has(fee.id)) { + throw new Error(`Exchange fee already exists: ${fee.id}`); + } + + if (this.references.has(fee.reference)) { + throw new Error( + `Exchange fee reference already exists: ${fee.reference}`, + ); + } + + this.validate(fee); + + const stored = Object.freeze({ ...fee }); + + this.fees.set(fee.id, stored); + this.references.set(fee.reference, fee.id); + + return stored; + } + + getById(id: string): ExchangeFeeRecord | null { + const fee = this.fees.get(id); + + if (fee === undefined) { + return null; + } + + return Object.freeze({ ...fee }); + } + + private validate(fee: ExchangeFeeRecord): void { + if (fee.tradeId.trim().length === 0) { + throw new Error("Exchange fee trade ID must not be empty"); + } + + if (fee.sourceExchangeAssetAccountId.trim().length === 0) { + throw new Error( + "Exchange fee source asset account ID must not be empty", + ); + } + + if (fee.feeExchangeAssetAccountId.trim().length === 0) { + throw new Error( + "Exchange fee fee account ID must not be empty", + ); + } + + if ( + fee.sourceExchangeAssetAccountId === + fee.feeExchangeAssetAccountId + ) { + throw new Error( + "Exchange fee source and fee accounts must differ", + ); + } + + if (fee.assetId.trim().length === 0) { + throw new Error("Exchange fee asset ID must not be empty"); + } + + if (!/^[0-9]+$/.test(fee.amount) || BigInt(fee.amount) <= 0n) { + throw new Error("Exchange fee amount must be positive"); + } + + if (fee.reference.trim().length === 0) { + throw new Error("Exchange fee reference must not be empty"); + } + } +} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-fee-types.ts b/packages/ledger-core/src/exchange-fee-types.ts new file mode 100644 index 0000000..6b90a21 --- /dev/null +++ b/packages/ledger-core/src/exchange-fee-types.ts @@ -0,0 +1,13 @@ +export type ExchangeFeeStatus = "charged" | "reversed"; + +export interface ExchangeFeeRecord { + id: string; + tradeId: string; + sourceExchangeAssetAccountId: string; + feeExchangeAssetAccountId: string; + assetId: string; + amount: string; + status: ExchangeFeeStatus; + reference: string; + createdAt: string; +} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-posting-builders.ts b/packages/ledger-core/src/exchange-posting-builders.ts new file mode 100644 index 0000000..dd57bc5 --- /dev/null +++ b/packages/ledger-core/src/exchange-posting-builders.ts @@ -0,0 +1,171 @@ +import type { ExchangeLedgerTransaction } from "./exchange-posting-types.js"; +import { validateExchangeLedgerTransaction } from "./exchange-posting-validator.js"; + +export interface DepositPostingInput { + id: string; + reference: string; + assetLedgerAccountId: string; + custodyLedgerAccountId: string; + amount: string; +} + +export interface WithdrawalPostingInput { + id: string; + reference: string; + customerLedgerAccountId: string; + custodyLedgerAccountId: string; + amount: string; +} + +export interface TradePostingInput { + id: string; + reference: string; + buyerBaseLedgerAccountId: string; + sellerBaseLedgerAccountId: string; + buyerQuoteLedgerAccountId: string; + sellerQuoteLedgerAccountId: string; + baseAmount: string; + quoteAmount: string; +} + +export interface FeePostingInput { + id: string; + reference: string; + sourceLedgerAccountId: string; + feeLedgerAccountId: string; + amount: string; +} + +export function buildDepositPosting( + input: DepositPostingInput, +): ExchangeLedgerTransaction { + const transaction: ExchangeLedgerTransaction = { + id: input.id, + reference: input.reference, + operation: "deposit", + postings: [ + { + ledgerAccountId: input.custodyLedgerAccountId, + type: "debit", + amount: input.amount, + }, + { + ledgerAccountId: input.assetLedgerAccountId, + type: "credit", + amount: input.amount, + }, + ], + }; + + validateExchangeLedgerTransaction(transaction); + + return Object.freeze({ + ...transaction, + postings: Object.freeze( + transaction.postings.map((posting) => Object.freeze({ ...posting })), + ), + }); +} + +export function buildWithdrawalPosting( + input: WithdrawalPostingInput, +): ExchangeLedgerTransaction { + const transaction: ExchangeLedgerTransaction = { + id: input.id, + reference: input.reference, + operation: "withdrawal", + postings: [ + { + ledgerAccountId: input.customerLedgerAccountId, + type: "debit", + amount: input.amount, + }, + { + ledgerAccountId: input.custodyLedgerAccountId, + type: "credit", + amount: input.amount, + }, + ], + }; + + validateExchangeLedgerTransaction(transaction); + + return Object.freeze({ + ...transaction, + postings: Object.freeze( + transaction.postings.map((posting) => Object.freeze({ ...posting })), + ), + }); +} + +export function buildTradePosting( + input: TradePostingInput, +): ExchangeLedgerTransaction { + const transaction: ExchangeLedgerTransaction = { + id: input.id, + reference: input.reference, + operation: "trade", + postings: [ + { + ledgerAccountId: input.buyerBaseLedgerAccountId, + type: "debit", + amount: input.baseAmount, + }, + { + ledgerAccountId: input.sellerBaseLedgerAccountId, + type: "credit", + amount: input.baseAmount, + }, + { + ledgerAccountId: input.buyerQuoteLedgerAccountId, + type: "credit", + amount: input.quoteAmount, + }, + { + ledgerAccountId: input.sellerQuoteLedgerAccountId, + type: "debit", + amount: input.quoteAmount, + }, + ], + }; + + validateExchangeLedgerTransaction(transaction); + + return Object.freeze({ + ...transaction, + postings: Object.freeze( + transaction.postings.map((posting) => Object.freeze({ ...posting })), + ), + }); +} + +export function buildFeePosting( + input: FeePostingInput, +): ExchangeLedgerTransaction { + const transaction: ExchangeLedgerTransaction = { + id: input.id, + reference: input.reference, + operation: "fee", + postings: [ + { + ledgerAccountId: input.sourceLedgerAccountId, + type: "debit", + amount: input.amount, + }, + { + ledgerAccountId: input.feeLedgerAccountId, + type: "credit", + amount: input.amount, + }, + ], + }; + + validateExchangeLedgerTransaction(transaction); + + return Object.freeze({ + ...transaction, + postings: Object.freeze( + transaction.postings.map((posting) => Object.freeze({ ...posting })), + ), + }); +} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-posting-types.ts b/packages/ledger-core/src/exchange-posting-types.ts new file mode 100644 index 0000000..a92b18b --- /dev/null +++ b/packages/ledger-core/src/exchange-posting-types.ts @@ -0,0 +1,18 @@ +export type ExchangePostingOperation = + | "deposit" + | "withdrawal" + | "trade" + | "fee"; + +export interface ExchangePosting { + ledgerAccountId: string; + type: "debit" | "credit"; + amount: string; +} + +export interface ExchangeLedgerTransaction { + id: string; + reference: string; + operation: ExchangePostingOperation; + postings: readonly ExchangePosting[]; +} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-posting-validator.ts b/packages/ledger-core/src/exchange-posting-validator.ts new file mode 100644 index 0000000..6ffae9f --- /dev/null +++ b/packages/ledger-core/src/exchange-posting-validator.ts @@ -0,0 +1,68 @@ +import type { + ExchangeLedgerTransaction, + ExchangePosting, +} from "./exchange-posting-types.js"; + +export function validateExchangeLedgerTransaction( + transaction: ExchangeLedgerTransaction, +): void { + if (transaction.id.trim().length === 0) { + throw new Error("Exchange ledger transaction ID must not be empty"); + } + + if (transaction.reference.trim().length === 0) { + throw new Error( + "Exchange ledger transaction reference must not be empty", + ); + } + + if (transaction.postings.length < 2) { + throw new Error( + "Exchange ledger transaction requires at least two postings", + ); + } + + let debits = 0n; + let credits = 0n; + + for (const posting of transaction.postings) { + validatePosting(posting); + + const amount = BigInt(posting.amount); + + if (posting.type === "debit") { + debits += amount; + } else { + credits += amount; + } + } + + if (debits !== credits) { + throw new Error( + "Exchange ledger transaction must balance", + ); + } +} + +function validatePosting(posting: ExchangePosting): void { + if (posting.ledgerAccountId.trim().length === 0) { + throw new Error( + "Exchange ledger posting account ID must not be empty", + ); + } + + if ( + !/^[0-9]+$/.test(posting.amount) || + BigInt(posting.amount) <= 0n + ) { + throw new Error( + "Exchange ledger posting amount must be positive", + ); + } + + if (posting.type !== "debit" && posting.type !== "credit") { + throw new Error( + "Exchange ledger posting type must be debit or credit", + ); + } +} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-subaccount-registry.ts b/packages/ledger-core/src/exchange-subaccount-registry.ts new file mode 100644 index 0000000..fad5c2d --- /dev/null +++ b/packages/ledger-core/src/exchange-subaccount-registry.ts @@ -0,0 +1,70 @@ +import type { ExchangeSubaccountRecord } from "./exchange-account-types.js"; + +export class ExchangeSubaccountRegistry { + private readonly subaccounts = new Map< + string, + ExchangeSubaccountRecord + >(); + + private readonly identities = new Map(); + + create( + subaccount: ExchangeSubaccountRecord, + ): ExchangeSubaccountRecord { + if (this.subaccounts.has(subaccount.id)) { + throw new Error( + `Exchange subaccount already exists: ${subaccount.id}`, + ); + } + + const identity = this.getIdentity(subaccount); + + if (this.identities.has(identity)) { + throw new Error( + "Exchange subaccount already exists for exchange account and name", + ); + } + + this.validate(subaccount); + + const stored = Object.freeze({ ...subaccount }); + + this.subaccounts.set(subaccount.id, stored); + this.identities.set(identity, subaccount.id); + + return stored; + } + + getById(id: string): ExchangeSubaccountRecord | null { + const subaccount = this.subaccounts.get(id); + + if (subaccount === undefined) { + return null; + } + + return Object.freeze({ ...subaccount }); + } + + private getIdentity( + subaccount: ExchangeSubaccountRecord, + ): string { + return JSON.stringify([ + subaccount.exchangeAccountId, + subaccount.name, + ]); + } + + private validate( + subaccount: ExchangeSubaccountRecord, + ): void { + if (subaccount.exchangeAccountId.trim().length === 0) { + throw new Error( + "Exchange subaccount exchange account ID must not be empty", + ); + } + + if (subaccount.name.trim().length === 0) { + throw new Error("Exchange subaccount name must not be empty"); + } + } +} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-trade-registry.ts b/packages/ledger-core/src/exchange-trade-registry.ts new file mode 100644 index 0000000..1c40d8e --- /dev/null +++ b/packages/ledger-core/src/exchange-trade-registry.ts @@ -0,0 +1,111 @@ +import type { ExchangeTradeRecord } from "./exchange-trade-types.js"; + +export class ExchangeTradeRegistry { + private readonly trades = new Map(); + private readonly references = new Map(); + + create(trade: ExchangeTradeRecord): ExchangeTradeRecord { + if (this.trades.has(trade.id)) { + throw new Error(`Exchange trade already exists: ${trade.id}`); + } + + if (this.references.has(trade.reference)) { + throw new Error( + `Exchange trade reference already exists: ${trade.reference}`, + ); + } + + this.validate(trade); + + const stored = Object.freeze({ ...trade }); + + this.trades.set(trade.id, stored); + this.references.set(trade.reference, trade.id); + + return stored; + } + + getById(id: string): ExchangeTradeRecord | null { + const trade = this.trades.get(id); + + if (trade === undefined) { + return null; + } + + return Object.freeze({ ...trade }); + } + + private validate(trade: ExchangeTradeRecord): void { + if (trade.buyerExchangeAssetAccountId.trim().length === 0) { + throw new Error( + "Exchange trade buyer asset account ID must not be empty", + ); + } + + if (trade.sellerExchangeAssetAccountId.trim().length === 0) { + throw new Error( + "Exchange trade seller asset account ID must not be empty", + ); + } + + if ( + trade.buyerExchangeAssetAccountId === + trade.sellerExchangeAssetAccountId + ) { + throw new Error( + "Exchange trade buyer and seller asset accounts must differ", + ); + } + + if (trade.baseAssetId.trim().length === 0) { + throw new Error("Exchange trade base asset ID must not be empty"); + } + + if (trade.quoteAssetId.trim().length === 0) { + throw new Error("Exchange trade quote asset ID must not be empty"); + } + + if (trade.baseAssetId === trade.quoteAssetId) { + throw new Error( + "Exchange trade base and quote assets must differ", + ); + } + + this.validatePositiveInteger( + trade.baseAmount, + "Exchange trade base amount", + ); + + this.validatePositiveInteger( + trade.quoteAmount, + "Exchange trade quote amount", + ); + + this.validatePositiveInteger( + trade.priceNumerator, + "Exchange trade price numerator", + ); + + this.validatePositiveInteger( + trade.priceDenominator, + "Exchange trade price denominator", + ); + + if (trade.reference.trim().length === 0) { + throw new Error("Exchange trade reference must not be empty"); + } + + if (trade.executedAt.trim().length === 0) { + throw new Error("Exchange trade execution time must not be empty"); + } + } + + private validatePositiveInteger( + value: string, + field: string, + ): void { + if (!/^[0-9]+$/.test(value) || BigInt(value) <= 0n) { + throw new Error(`${field} must be positive`); + } + } +} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-trade-types.ts b/packages/ledger-core/src/exchange-trade-types.ts new file mode 100644 index 0000000..73229f6 --- /dev/null +++ b/packages/ledger-core/src/exchange-trade-types.ts @@ -0,0 +1,16 @@ +export type ExchangeTradeStatus = "executed" | "reversed"; + +export interface ExchangeTradeRecord { + id: string; + buyerExchangeAssetAccountId: string; + sellerExchangeAssetAccountId: string; + baseAssetId: string; + quoteAssetId: string; + baseAmount: string; + quoteAmount: string; + priceNumerator: string; + priceDenominator: string; + status: ExchangeTradeStatus; + reference: string; + executedAt: string; +} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-withdrawal-registry.ts b/packages/ledger-core/src/exchange-withdrawal-registry.ts new file mode 100644 index 0000000..196b77d --- /dev/null +++ b/packages/ledger-core/src/exchange-withdrawal-registry.ts @@ -0,0 +1,82 @@ +import type { ExchangeWithdrawalRecord } from "./exchange-withdrawal-types.js"; + +export class ExchangeWithdrawalRegistry { + private readonly withdrawals = new Map< + string, + ExchangeWithdrawalRecord + >(); + + private readonly references = new Map(); + + create( + withdrawal: ExchangeWithdrawalRecord, + ): ExchangeWithdrawalRecord { + if (this.withdrawals.has(withdrawal.id)) { + throw new Error( + `Exchange withdrawal already exists: ${withdrawal.id}`, + ); + } + + if (this.references.has(withdrawal.reference)) { + throw new Error( + `Exchange withdrawal reference already exists: ${withdrawal.reference}`, + ); + } + + this.validate(withdrawal); + + const stored = Object.freeze({ ...withdrawal }); + + this.withdrawals.set(withdrawal.id, stored); + this.references.set(withdrawal.reference, withdrawal.id); + + return stored; + } + + getById(id: string): ExchangeWithdrawalRecord | null { + const withdrawal = this.withdrawals.get(id); + + if (withdrawal === undefined) { + return null; + } + + return Object.freeze({ ...withdrawal }); + } + + private validate( + withdrawal: ExchangeWithdrawalRecord, + ): void { + if (withdrawal.exchangeAssetAccountId.trim().length === 0) { + throw new Error( + "Exchange withdrawal asset account ID must not be empty", + ); + } + + if (withdrawal.networkId.trim().length === 0) { + throw new Error( + "Exchange withdrawal network ID must not be empty", + ); + } + + if (withdrawal.destination.trim().length === 0) { + throw new Error( + "Exchange withdrawal destination must not be empty", + ); + } + + if ( + !/^[0-9]+$/.test(withdrawal.amount) || + BigInt(withdrawal.amount) <= 0n + ) { + throw new Error( + "Exchange withdrawal amount must be positive", + ); + } + + if (withdrawal.reference.trim().length === 0) { + throw new Error( + "Exchange withdrawal reference must not be empty", + ); + } + } +} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-withdrawal-types.ts b/packages/ledger-core/src/exchange-withdrawal-types.ts new file mode 100644 index 0000000..49fa3b6 --- /dev/null +++ b/packages/ledger-core/src/exchange-withdrawal-types.ts @@ -0,0 +1,18 @@ +export type ExchangeWithdrawalStatus = + | "requested" + | "approved" + | "rejected" + | "submitted" + | "confirmed" + | "failed"; + +export interface ExchangeWithdrawalRecord { + id: string; + exchangeAssetAccountId: string; + networkId: string; + destination: string; + amount: string; + status: ExchangeWithdrawalStatus; + reference: string; + createdAt: string; +} \ No newline at end of file diff --git a/packages/ledger-core/src/index.ts b/packages/ledger-core/src/index.ts new file mode 100644 index 0000000..050e5c0 --- /dev/null +++ b/packages/ledger-core/src/index.ts @@ -0,0 +1,22 @@ +export * from "./ledger-types.js"; +export * from "./ledger-engine.js"; +export * from "./account-registry.js"; +export * from "./subaccount-registry.js"; +export * from "./exchange-account-types.js"; +export * from "./exchange-account-registry.js"; +export * from "./exchange-subaccount-registry.js"; +export * from "./exchange-asset-account-registry.js"; +export * from "./exchange-deposit-types.js"; +export * from "./exchange-deposit-registry.js"; +export * from "./exchange-withdrawal-types.js"; +export * from "./exchange-withdrawal-registry.js"; +export * from "./exchange-trade-types.js"; +export * from "./exchange-trade-registry.js"; +export * from "./exchange-fee-types.js"; +export * from "./exchange-fee-registry.js"; +export * from "./exchange-posting-types.js"; +export * from "./exchange-posting-validator.js"; +export * from "./exchange-posting-builders.js"; +export * from "./reconciliation-types.js"; +export * from "./reconciliation-engine.js"; +export * from "./reconciliation-repository.js"; \ No newline at end of file diff --git a/packages/ledger-core/src/ledger-engine.ts b/packages/ledger-core/src/ledger-engine.ts new file mode 100644 index 0000000..77d9b6e --- /dev/null +++ b/packages/ledger-core/src/ledger-engine.ts @@ -0,0 +1,99 @@ +import type { CreateLedgerTransactionInput, LedgerBalance, LedgerPosting } from "./ledger-types.js"; + +function freezeTransaction( + transaction: CreateLedgerTransactionInput, +): CreateLedgerTransactionInput { + const postings = transaction.postings.map((posting: LedgerPosting) => + Object.freeze({ ...posting }), + ); + + return Object.freeze({ + ...transaction, + postings: Object.freeze(postings), + }); +} + +export class DefaultLedgerEngine { + private readonly transactions = new Map(); + + private readonly references = new Map(); + + createTransaction(transaction: CreateLedgerTransactionInput): CreateLedgerTransactionInput { + if (this.transactions.has(transaction.id)) { + throw new Error(`Ledger transaction already exists: ${transaction.id}`); + } + + if (this.references.has(transaction.reference)) { + throw new Error(`Ledger transaction reference already exists: ${transaction.reference}`); + } + + if (transaction.postings.length < 2) { + throw new Error("Ledger transaction requires at least two postings"); + } + + let debits = 0n; + let credits = 0n; + + for (const posting of transaction.postings) { + if (!/^[0-9]+$/.test(posting.amount) || BigInt(posting.amount) <= 0n) { + throw new Error("Ledger posting amount must be positive"); + } + + const amount = BigInt(posting.amount); + + if (posting.type === "debit") { + debits += amount; + } else if (posting.type === "credit") { + credits += amount; + } + } + + if (debits !== credits) { + throw new Error("Ledger transaction must balance"); + } + + const stored = freezeTransaction(transaction); + + this.transactions.set(transaction.id, stored); + this.references.set(transaction.reference, transaction.id); + + return stored; + } + + getById(id: string): CreateLedgerTransactionInput | null { + const transaction = this.transactions.get(id); + + if (transaction === undefined) { + return null; + } + + return freezeTransaction(transaction); + } + getBalance(ledgerAccountId: string): LedgerBalance { + let debit = 0n; + let credit = 0n; + + for (const transaction of this.transactions.values()) { + for (const posting of transaction.postings) { + if (posting.ledgerAccountId !== ledgerAccountId) { + continue; + } + + const amount = BigInt(posting.amount); + + if (posting.type === "debit") { + debit += amount; + } else if (posting.type === "credit") { + credit += amount; + } + } + } + + return { + ledgerAccountId, + debit: debit.toString(), + credit: credit.toString(), + balance: (debit - credit).toString(), + }; + } +} diff --git a/packages/ledger-core/src/ledger-types.ts b/packages/ledger-core/src/ledger-types.ts new file mode 100644 index 0000000..bc93a31 --- /dev/null +++ b/packages/ledger-core/src/ledger-types.ts @@ -0,0 +1,63 @@ +import type { + LedgerEntryStatus, + LedgerEntryType, +} from "@crypto-wallet/shared-types"; + +export interface LedgerAccountRecord { + id: string; + walletId: string; + assetId: string; + chain: string; + kind: LedgerAccountKind; + createdAt: string; +} + +export type LedgerAccountKind = + | "asset" + | "liability" + | "revenue" + | "expense" + | "equity"; + +export interface LedgerSubaccountRecord { + id: string; + ledgerAccountId: string; + name: string; + createdAt: string; +} + +export interface LedgerTransactionRecord { + id: string; + reference: string; + status: LedgerEntryStatus; + createdAt: string; +} + +export interface LedgerEntryRecord { + id: string; + ledgerAccountId: string; + transactionId: string; + type: LedgerEntryType; + amount: string; + status: LedgerEntryStatus; + createdAt: string; +} + +export interface LedgerPosting { + ledgerAccountId: string; + type: LedgerEntryType; + amount: string; +} + +export interface CreateLedgerTransactionInput { + id: string; + reference: string; + postings: readonly LedgerPosting[]; +} + +export interface LedgerBalance { + ledgerAccountId: string; + debit: string; + credit: string; + balance: string; +} diff --git a/packages/ledger-core/src/reconciliation-engine.ts b/packages/ledger-core/src/reconciliation-engine.ts new file mode 100644 index 0000000..a9f6c60 --- /dev/null +++ b/packages/ledger-core/src/reconciliation-engine.ts @@ -0,0 +1,68 @@ +import type { + ReconciliationComparison, + ReconciliationContract, + ReconciliationObservation, +} from "./reconciliation-types.js"; + +export class DefaultReconciliationEngine + implements ReconciliationContract +{ + compare( + expected: ReconciliationObservation, + actual: ReconciliationObservation, + ): ReconciliationComparison { + if (!this.isSameScope(expected, actual)) { + throw new Error("Reconciliation observations must use the same scope"); + } + + if ( + expected.status === "unavailable" || + actual.status === "unavailable" + ) { + return { + scope: expected.scope, + expected, + actual, + difference: null, + status: "unavailable", + }; + } + + if (expected.amount === null || actual.amount === null) { + throw new Error( + "Available reconciliation observations must have an amount", + ); + } + + const expectedAmount = this.parseAmount(expected.amount); + const actualAmount = this.parseAmount(actual.amount); + const difference = actualAmount - expectedAmount; + + return { + scope: expected.scope, + expected, + actual, + difference: difference.toString(), + status: difference === 0n ? "matched" : "mismatched", + }; + } + + private parseAmount(amount: string): bigint { + if (!/^[0-9]+$/.test(amount)) { + throw new Error("Reconciliation amount must be a non-negative integer"); + } + + return BigInt(amount); + } + + private isSameScope( + expected: ReconciliationObservation, + actual: ReconciliationObservation, + ): boolean { + return ( + expected.scope.assetId === actual.scope.assetId && + expected.scope.networkId === actual.scope.networkId && + expected.scope.accountId === actual.scope.accountId + ); + } +} \ No newline at end of file diff --git a/packages/ledger-core/src/reconciliation-repository.ts b/packages/ledger-core/src/reconciliation-repository.ts new file mode 100644 index 0000000..f1f7581 --- /dev/null +++ b/packages/ledger-core/src/reconciliation-repository.ts @@ -0,0 +1,11 @@ +import type { ReconciliationComparison } from "./reconciliation-types.js"; + +export interface ReconciliationRepository { + save(comparison: ReconciliationComparison): Promise; + + findLatest( + assetId: string, + networkId?: string, + accountId?: string, + ): Promise; +} \ No newline at end of file diff --git a/packages/ledger-core/src/reconciliation-types.ts b/packages/ledger-core/src/reconciliation-types.ts new file mode 100644 index 0000000..0f42de5 --- /dev/null +++ b/packages/ledger-core/src/reconciliation-types.ts @@ -0,0 +1,44 @@ +export type ReconciliationSource = + | "ledger" + | "custody" + | "blockchain" + | "fiat"; + +export type ReconciliationStatus = + | "matched" + | "mismatched" + | "unavailable"; + +export type ReconciliationObservationStatus = + | "available" + | "unavailable"; + +export interface ReconciliationScope { + assetId: string; + networkId?: string; + accountId?: string; +} + +export interface ReconciliationObservation { + source: ReconciliationSource; + scope: ReconciliationScope; + status: ReconciliationObservationStatus; + amount: string | null; + observedAt: string; + reference?: string; +} + +export interface ReconciliationComparison { + scope: ReconciliationScope; + expected: ReconciliationObservation; + actual: ReconciliationObservation; + difference: string | null; + status: ReconciliationStatus; +} + +export interface ReconciliationContract { + compare( + expected: ReconciliationObservation, + actual: ReconciliationObservation, + ): ReconciliationComparison; +} \ No newline at end of file diff --git a/packages/ledger-core/src/subaccount-registry.ts b/packages/ledger-core/src/subaccount-registry.ts new file mode 100644 index 0000000..30a719e --- /dev/null +++ b/packages/ledger-core/src/subaccount-registry.ts @@ -0,0 +1,46 @@ +import type { LedgerSubaccountRecord } from "./ledger-types.js"; + +export class LedgerSubaccountRegistry { + private readonly subaccounts = new Map(); + private readonly identities = new Map(); + + create(subaccount: LedgerSubaccountRecord): LedgerSubaccountRecord { + if (this.subaccounts.has(subaccount.id)) { + throw new Error( + `Ledger subaccount already exists: ${subaccount.id}`, + ); + } + + const identity = this.getIdentity(subaccount); + + if (this.identities.has(identity)) { + throw new Error( + `Ledger subaccount already exists for ledger account and name`, + ); + } + + const stored = Object.freeze({ ...subaccount }); + + this.subaccounts.set(subaccount.id, stored); + this.identities.set(identity, subaccount.id); + + return stored; + } + + getById(id: string): LedgerSubaccountRecord | null { + const subaccount = this.subaccounts.get(id); + + if (subaccount === undefined) { + return null; + } + + return Object.freeze({ ...subaccount }); + } + + private getIdentity(subaccount: LedgerSubaccountRecord): string { + return JSON.stringify([ + subaccount.ledgerAccountId, + subaccount.name, + ]); + } +} \ No newline at end of file diff --git a/packages/ledger-core/tsconfig.json b/packages/ledger-core/tsconfig.json new file mode 100644 index 0000000..6d34b17 --- /dev/null +++ b/packages/ledger-core/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist", + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "noEmitOnError": true, + "lib": ["ES2022", "DOM"] + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/storage/migrations/007_exchange_domain.sql b/packages/storage/migrations/007_exchange_domain.sql new file mode 100644 index 0000000..2cce1eb --- /dev/null +++ b/packages/storage/migrations/007_exchange_domain.sql @@ -0,0 +1,367 @@ +-- Exchange / custody domain persistence foundation +-- +-- This schema is intentionally separate from the self-custody wallet domain. +-- PostgreSQL remains the authoritative source of truth. +-- +-- Never store private keys, seed phrases, signing secrets, custody +-- credentials, or other key material in these tables. + +CREATE TABLE IF NOT EXISTS exchange_accounts ( + id UUID PRIMARY KEY, + + owner_type TEXT NOT NULL, + owner_id TEXT NOT NULL, + + kind TEXT NOT NULL, + status TEXT NOT NULL DEFAULT 'active', + + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + + CONSTRAINT exchange_accounts_owner_type_check + CHECK (owner_type IN ('customer', 'platform')), + + CONSTRAINT exchange_accounts_kind_check + CHECK ( + kind IN ( + 'customer', + 'treasury', + 'fee', + 'operational' + ) + ), + + CONSTRAINT exchange_accounts_status_check + CHECK ( + status IN ( + 'active', + 'blocked' + ) + ), + + CONSTRAINT exchange_accounts_owner_id_not_empty + CHECK (length(trim(owner_id)) > 0), + + CONSTRAINT exchange_accounts_owner_kind_check + CHECK ( + (owner_type = 'customer' AND kind = 'customer') + OR + (owner_type = 'platform' AND kind <> 'customer') + ), + + UNIQUE(owner_type, owner_id, kind) +); + +CREATE INDEX IF NOT EXISTS idx_exchange_accounts_owner + ON exchange_accounts(owner_type, owner_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_accounts_kind + ON exchange_accounts(kind); + +CREATE INDEX IF NOT EXISTS idx_exchange_accounts_status + ON exchange_accounts(status); + + +CREATE TABLE IF NOT EXISTS exchange_subaccounts ( + id UUID PRIMARY KEY, + + exchange_account_id UUID NOT NULL + REFERENCES exchange_accounts(id), + + name TEXT NOT NULL, + + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + + CONSTRAINT exchange_subaccounts_name_not_empty + CHECK (length(trim(name)) > 0), + + UNIQUE(exchange_account_id, name) +); + +CREATE INDEX IF NOT EXISTS idx_exchange_subaccounts_account + ON exchange_subaccounts(exchange_account_id); + +CREATE UNIQUE INDEX IF NOT EXISTS idx_assets_id_network_id + ON assets(id, network_id); + +CREATE TABLE IF NOT EXISTS exchange_asset_accounts ( + id UUID PRIMARY KEY, + + exchange_account_id UUID NOT NULL + REFERENCES exchange_accounts(id), + + asset_id UUID NOT NULL, + + network_id UUID NOT NULL + REFERENCES networks(id), + + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + + UNIQUE(exchange_account_id, asset_id), + UNIQUE(id, asset_id), + UNIQUE(id, network_id), + + CONSTRAINT exchange_asset_accounts_asset_network_fk + FOREIGN KEY (asset_id, network_id) + REFERENCES assets(id, network_id) +); + +CREATE INDEX IF NOT EXISTS idx_exchange_asset_accounts_account + ON exchange_asset_accounts(exchange_account_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_asset_accounts_asset + ON exchange_asset_accounts(asset_id); + + +CREATE TABLE IF NOT EXISTS exchange_deposits ( + id UUID PRIMARY KEY, + + exchange_asset_account_id UUID NOT NULL, + + network_id UUID NOT NULL, + + CONSTRAINT exchange_deposits_asset_account_network_fk + FOREIGN KEY (exchange_asset_account_id, network_id) + REFERENCES exchange_asset_accounts(id, network_id), + + transaction_hash TEXT NOT NULL, + + amount NUMERIC(78, 0) NOT NULL, + + status TEXT NOT NULL, + + reference TEXT NOT NULL UNIQUE, + + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + + CONSTRAINT exchange_deposits_amount_check + CHECK (amount > 0), + + CONSTRAINT exchange_deposits_status_check + CHECK ( + status IN ( + 'detected', + 'confirmed', + 'credited', + 'reversed' + ) + ), + + CONSTRAINT exchange_deposits_transaction_hash_not_empty + CHECK (length(trim(transaction_hash)) > 0) +); + +CREATE INDEX IF NOT EXISTS idx_exchange_deposits_asset_account + ON exchange_deposits(exchange_asset_account_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_deposits_network + ON exchange_deposits(network_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_deposits_transaction + ON exchange_deposits(network_id, transaction_hash); + +CREATE INDEX IF NOT EXISTS idx_exchange_deposits_status + ON exchange_deposits(status); + + +CREATE TABLE IF NOT EXISTS exchange_withdrawals ( + id UUID PRIMARY KEY, + + exchange_asset_account_id UUID NOT NULL, + + network_id UUID NOT NULL, + + CONSTRAINT exchange_withdrawals_asset_account_network_fk + FOREIGN KEY (exchange_asset_account_id, network_id) + REFERENCES exchange_asset_accounts(id, network_id), + + destination TEXT NOT NULL, + + amount NUMERIC(78, 0) NOT NULL, + + status TEXT NOT NULL, + + reference TEXT NOT NULL UNIQUE, + + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + + CONSTRAINT exchange_withdrawals_amount_check + CHECK (amount > 0), + + CONSTRAINT exchange_withdrawals_status_check + CHECK ( + status IN ( + 'requested', + 'approved', + 'rejected', + 'submitted', + 'confirmed', + 'failed' + ) + ), + + CONSTRAINT exchange_withdrawals_destination_not_empty + CHECK (length(trim(destination)) > 0) +); + +CREATE INDEX IF NOT EXISTS idx_exchange_withdrawals_asset_account + ON exchange_withdrawals(exchange_asset_account_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_withdrawals_network + ON exchange_withdrawals(network_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_withdrawals_status + ON exchange_withdrawals(status); + + +CREATE TABLE IF NOT EXISTS exchange_trades ( + id UUID PRIMARY KEY, + + buyer_exchange_asset_account_id UUID NOT NULL, + + seller_exchange_asset_account_id UUID NOT NULL, + + base_asset_id UUID NOT NULL + REFERENCES assets(id), + + quote_asset_id UUID NOT NULL + REFERENCES assets(id), + + base_amount NUMERIC(78, 0) NOT NULL, + quote_amount NUMERIC(78, 0) NOT NULL, + + price_numerator NUMERIC(78, 0) NOT NULL, + price_denominator NUMERIC(78, 0) NOT NULL, + + status TEXT NOT NULL, + + reference TEXT NOT NULL UNIQUE, + + executed_at TIMESTAMPTZ NOT NULL, + + CONSTRAINT exchange_trades_base_amount_check + CHECK (base_amount > 0), + + CONSTRAINT exchange_trades_quote_amount_check + CHECK (quote_amount > 0), + + CONSTRAINT exchange_trades_price_numerator_check + CHECK (price_numerator > 0), + + CONSTRAINT exchange_trades_price_denominator_check + CHECK (price_denominator > 0), + + CONSTRAINT exchange_trades_status_check + CHECK ( + status IN ( + 'executed', + 'reversed' + ) + ), + + CONSTRAINT exchange_trades_accounts_differ_check + CHECK ( + buyer_exchange_asset_account_id + <> seller_exchange_asset_account_id + ), + + CONSTRAINT exchange_trades_assets_differ_check + CHECK ( + base_asset_id <> quote_asset_id + ), + + CONSTRAINT exchange_trades_buyer_base_asset_fk + FOREIGN KEY (buyer_exchange_asset_account_id, base_asset_id) + REFERENCES exchange_asset_accounts(id, asset_id), + + CONSTRAINT exchange_trades_seller_base_asset_fk + FOREIGN KEY (seller_exchange_asset_account_id, base_asset_id) + REFERENCES exchange_asset_accounts(id, asset_id), + + CONSTRAINT exchange_trades_buyer_quote_asset_fk + FOREIGN KEY (buyer_exchange_asset_account_id, quote_asset_id) + REFERENCES exchange_asset_accounts(id, asset_id), + + CONSTRAINT exchange_trades_seller_quote_asset_fk + FOREIGN KEY (seller_exchange_asset_account_id, quote_asset_id) + REFERENCES exchange_asset_accounts(id, asset_id) +); + +CREATE INDEX IF NOT EXISTS idx_exchange_trades_buyer_account + ON exchange_trades(buyer_exchange_asset_account_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_trades_seller_account + ON exchange_trades(seller_exchange_asset_account_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_trades_base_asset + ON exchange_trades(base_asset_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_trades_quote_asset + ON exchange_trades(quote_asset_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_trades_status + ON exchange_trades(status); + +CREATE INDEX IF NOT EXISTS idx_exchange_trades_executed_at + ON exchange_trades(executed_at); + + +CREATE TABLE IF NOT EXISTS exchange_fees ( + id UUID PRIMARY KEY, + + trade_id UUID NOT NULL + REFERENCES exchange_trades(id), + + source_exchange_asset_account_id UUID NOT NULL, + + fee_exchange_asset_account_id UUID NOT NULL, + + asset_id UUID NOT NULL, + + CONSTRAINT exchange_fees_source_asset_fk + FOREIGN KEY (source_exchange_asset_account_id, asset_id) + REFERENCES exchange_asset_accounts(id, asset_id), + + CONSTRAINT exchange_fees_fee_asset_fk + FOREIGN KEY (fee_exchange_asset_account_id, asset_id) + REFERENCES exchange_asset_accounts(id, asset_id), + + amount NUMERIC(78, 0) NOT NULL, + + status TEXT NOT NULL, + + reference TEXT NOT NULL UNIQUE, + + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + + CONSTRAINT exchange_fees_amount_check + CHECK (amount > 0), + + CONSTRAINT exchange_fees_status_check + CHECK ( + status IN ( + 'charged', + 'reversed' + ) + ), + + CONSTRAINT exchange_fees_accounts_differ_check + CHECK ( + source_exchange_asset_account_id + <> fee_exchange_asset_account_id + ) +); + +CREATE INDEX IF NOT EXISTS idx_exchange_fees_trade + ON exchange_fees(trade_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_fees_source_account + ON exchange_fees(source_exchange_asset_account_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_fees_fee_account + ON exchange_fees(fee_exchange_asset_account_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_fees_asset + ON exchange_fees(asset_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_fees_status + ON exchange_fees(status); diff --git a/packages/storage/migrations/008_exchange_trade_accounts.sql b/packages/storage/migrations/008_exchange_trade_accounts.sql new file mode 100644 index 0000000..525e816 --- /dev/null +++ b/packages/storage/migrations/008_exchange_trade_accounts.sql @@ -0,0 +1,76 @@ +-- Exchange trade account model correction +-- +-- Replace the original two-account trade representation with explicit +-- base/quote asset accounts for both buyer and seller. +-- +-- Migration 007 is already applied and must not be modified. + +ALTER TABLE exchange_trades + DROP CONSTRAINT IF EXISTS exchange_trades_accounts_differ_check, + DROP CONSTRAINT IF EXISTS exchange_trades_buyer_base_asset_fk, + DROP CONSTRAINT IF EXISTS exchange_trades_buyer_quote_asset_fk, + DROP CONSTRAINT IF EXISTS exchange_trades_seller_base_asset_fk, + DROP CONSTRAINT IF EXISTS exchange_trades_seller_quote_asset_fk; + +DROP INDEX IF EXISTS idx_exchange_trades_buyer_account; +DROP INDEX IF EXISTS idx_exchange_trades_seller_account; + +ALTER TABLE exchange_trades + DROP COLUMN IF EXISTS buyer_exchange_asset_account_id, + DROP COLUMN IF EXISTS seller_exchange_asset_account_id; + +ALTER TABLE exchange_trades + ADD COLUMN buyer_base_exchange_asset_account_id UUID NOT NULL, + ADD COLUMN buyer_quote_exchange_asset_account_id UUID NOT NULL, + ADD COLUMN seller_base_exchange_asset_account_id UUID NOT NULL, + ADD COLUMN seller_quote_exchange_asset_account_id UUID NOT NULL; + +ALTER TABLE exchange_trades + ADD CONSTRAINT exchange_trades_accounts_differ_check + CHECK ( + buyer_base_exchange_asset_account_id + <> seller_base_exchange_asset_account_id + OR + buyer_quote_exchange_asset_account_id + <> seller_quote_exchange_asset_account_id + ), + + ADD CONSTRAINT exchange_trades_buyer_base_asset_fk + FOREIGN KEY ( + buyer_base_exchange_asset_account_id, + base_asset_id + ) + REFERENCES exchange_asset_accounts(id, asset_id), + + ADD CONSTRAINT exchange_trades_buyer_quote_asset_fk + FOREIGN KEY ( + buyer_quote_exchange_asset_account_id, + quote_asset_id + ) + REFERENCES exchange_asset_accounts(id, asset_id), + + ADD CONSTRAINT exchange_trades_seller_base_asset_fk + FOREIGN KEY ( + seller_base_exchange_asset_account_id, + base_asset_id + ) + REFERENCES exchange_asset_accounts(id, asset_id), + + ADD CONSTRAINT exchange_trades_seller_quote_asset_fk + FOREIGN KEY ( + seller_quote_exchange_asset_account_id, + quote_asset_id + ) + REFERENCES exchange_asset_accounts(id, asset_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_trades_buyer_base_account + ON exchange_trades(buyer_base_exchange_asset_account_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_trades_buyer_quote_account + ON exchange_trades(buyer_quote_exchange_asset_account_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_trades_seller_base_account + ON exchange_trades(seller_base_exchange_asset_account_id); + +CREATE INDEX IF NOT EXISTS idx_exchange_trades_seller_quote_account + ON exchange_trades(seller_quote_exchange_asset_account_id); \ No newline at end of file diff --git a/packages/storage/migrations/009_reconciliation.sql b/packages/storage/migrations/009_reconciliation.sql new file mode 100644 index 0000000..c4caca9 --- /dev/null +++ b/packages/storage/migrations/009_reconciliation.sql @@ -0,0 +1,53 @@ +-- Reconciliation observations are an audit trail between +-- the authoritative ledger and external accounting sources. + +CREATE TABLE IF NOT EXISTS reconciliation_comparisons ( + id UUID PRIMARY KEY, + + asset_id UUID NOT NULL, + + network_id UUID, + account_id UUID, + + expected_source TEXT NOT NULL, + expected_amount NUMERIC(78, 0) NOT NULL, + + actual_source TEXT NOT NULL, + actual_amount NUMERIC(78, 0) NOT NULL, + + difference NUMERIC(78, 0) NOT NULL, + + status TEXT NOT NULL, + + expected_observed_at TIMESTAMPTZ NOT NULL, + actual_observed_at TIMESTAMPTZ NOT NULL, + + expected_reference TEXT, + actual_reference TEXT, + + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + + CONSTRAINT reconciliation_expected_source_check + CHECK (expected_source IN ('ledger', 'custody', 'blockchain', 'fiat')), + + CONSTRAINT reconciliation_actual_source_check + CHECK (actual_source IN ('ledger', 'custody', 'blockchain', 'fiat')), + + CONSTRAINT reconciliation_status_check + CHECK (status IN ('matched', 'mismatched', 'unavailable')), + + CONSTRAINT reconciliation_expected_amount_check + CHECK (expected_amount >= 0), + + CONSTRAINT reconciliation_actual_amount_check + CHECK (actual_amount >= 0) +); + +CREATE INDEX IF NOT EXISTS idx_reconciliation_scope + ON reconciliation_comparisons(asset_id, network_id, account_id); + +CREATE INDEX IF NOT EXISTS idx_reconciliation_status + ON reconciliation_comparisons(status); + +CREATE INDEX IF NOT EXISTS idx_reconciliation_created_at + ON reconciliation_comparisons(created_at DESC); \ No newline at end of file diff --git a/packages/storage/migrations/010_reconciliation_availability.sql b/packages/storage/migrations/010_reconciliation_availability.sql new file mode 100644 index 0000000..346db6a --- /dev/null +++ b/packages/storage/migrations/010_reconciliation_availability.sql @@ -0,0 +1,59 @@ +-- Preserve individual source availability in reconciliation records. +-- NULL amount means that the corresponding source was unavailable. + +ALTER TABLE reconciliation_comparisons + ADD COLUMN IF NOT EXISTS expected_observation_status TEXT, + ADD COLUMN IF NOT EXISTS actual_observation_status TEXT; + +UPDATE reconciliation_comparisons +SET + expected_observation_status = 'available', + actual_observation_status = 'available' +WHERE expected_observation_status IS NULL + OR actual_observation_status IS NULL; + +ALTER TABLE reconciliation_comparisons + ALTER COLUMN expected_observation_status SET NOT NULL, + ALTER COLUMN actual_observation_status SET NOT NULL; + +ALTER TABLE reconciliation_comparisons + ALTER COLUMN expected_amount DROP NOT NULL, + ALTER COLUMN actual_amount DROP NOT NULL; + +ALTER TABLE reconciliation_comparisons + ADD CONSTRAINT reconciliation_expected_observation_status_check + CHECK ( + expected_observation_status IN ('available', 'unavailable') + ), + ADD CONSTRAINT reconciliation_actual_observation_status_check + CHECK ( + actual_observation_status IN ('available', 'unavailable') + ); + +ALTER TABLE reconciliation_comparisons + ADD CONSTRAINT reconciliation_expected_amount_availability_check + CHECK ( + ( + expected_observation_status = 'available' + AND expected_amount IS NOT NULL + AND expected_amount >= 0 + ) + OR + ( + expected_observation_status = 'unavailable' + AND expected_amount IS NULL + ) + ), + ADD CONSTRAINT reconciliation_actual_amount_availability_check + CHECK ( + ( + actual_observation_status = 'available' + AND actual_amount IS NOT NULL + AND actual_amount >= 0 + ) + OR + ( + actual_observation_status = 'unavailable' + AND actual_amount IS NULL + ) + ); \ No newline at end of file diff --git a/packages/storage/migrations/011_reconciliation_difference_nullable.sql b/packages/storage/migrations/011_reconciliation_difference_nullable.sql new file mode 100644 index 0000000..ae04a65 --- /dev/null +++ b/packages/storage/migrations/011_reconciliation_difference_nullable.sql @@ -0,0 +1,2 @@ +ALTER TABLE reconciliation_comparisons + ALTER COLUMN difference DROP NOT NULL; \ No newline at end of file diff --git a/packages/storage/migrations/012_withdrawal_segregation_of_duties.sql b/packages/storage/migrations/012_withdrawal_segregation_of_duties.sql new file mode 100644 index 0000000..4caaca6 --- /dev/null +++ b/packages/storage/migrations/012_withdrawal_segregation_of_duties.sql @@ -0,0 +1,48 @@ +ALTER TABLE exchange_withdrawals + ADD COLUMN IF NOT EXISTS requested_by TEXT, + ADD COLUMN IF NOT EXISTS approved_by TEXT; + +UPDATE exchange_withdrawals +SET requested_by = 'legacy-system' +WHERE requested_by IS NULL; + +ALTER TABLE exchange_withdrawals + ALTER COLUMN requested_by SET NOT NULL; + +ALTER TABLE exchange_withdrawals + ADD CONSTRAINT exchange_withdrawals_requested_by_not_empty + CHECK (length(trim(requested_by)) > 0); + +ALTER TABLE exchange_withdrawals + ADD CONSTRAINT exchange_withdrawals_approved_by_not_empty + CHECK ( + approved_by IS NULL + OR length(trim(approved_by)) > 0 + ); + +ALTER TABLE exchange_withdrawals + ADD CONSTRAINT exchange_withdrawals_approver_differs_from_requester + CHECK ( + approved_by IS NULL + OR approved_by <> requested_by + ); + +ALTER TABLE exchange_withdrawals + ADD CONSTRAINT exchange_withdrawals_approval_actor_check + CHECK ( + ( + status = 'requested' + AND approved_by IS NULL + ) + OR + ( + status IN ( + 'approved', + 'rejected', + 'submitted', + 'confirmed', + 'failed' + ) + AND approved_by IS NOT NULL + ) + ); \ No newline at end of file From feadc6a507c37c49ee07c8162c7a906a5603f56e Mon Sep 17 00:00:00 2001 From: SHASHANK SHEKHAR Date: Sun, 13 Sep 2026 15:14:03 +0530 Subject: [PATCH 2/3] fix: sync pnpm lockfile --- pnpm-lock.yaml | 8482 +++++++++++++++++------------------------------- 1 file changed, 3004 insertions(+), 5478 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ef9be3f..37ac97b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -251,7 +251,7 @@ snapshots: pnpm@11.22.0: {} --- -lockfileVersion: "9.0" +lockfileVersion: '9.0' settings: autoInstallPeers: true @@ -260,13 +260,14 @@ settings: overrides: ajv>fast-uri: 3.1.6 fast-json-stringify>fast-uri: 4.1.3 - "@fastify/ajv-compiler>fast-uri": 4.1.3 + '@fastify/ajv-compiler>fast-uri': 4.1.3 xcode>uuid: 11.1.1 importers: + .: devDependencies: - "@eslint/js": + '@eslint/js': specifier: ^10.0.1 version: 10.0.1(eslint@10.8.1(supports-color@8.1.1)) eslint: @@ -293,34 +294,37 @@ importers: apps/api: dependencies: - "@crypto-wallet/cache": + '@crypto-wallet/cache': specifier: workspace:* version: link:../../packages/cache - "@crypto-wallet/config": + '@crypto-wallet/config': specifier: workspace:* version: link:../../packages/config - "@crypto-wallet/shared-types": + '@crypto-wallet/ledger-core': + specifier: workspace:* + version: link:../../packages/ledger-core + '@crypto-wallet/shared-types': specifier: workspace:* version: link:../../packages/shared-types - "@crypto-wallet/storage": + '@crypto-wallet/storage': specifier: workspace:* version: link:../../packages/storage - "@opentelemetry/api": + '@opentelemetry/api': specifier: ^1.9.1 version: 1.9.1 - "@opentelemetry/exporter-prometheus": + '@opentelemetry/exporter-prometheus': specifier: ^0.222.0 version: 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-metrics": + '@opentelemetry/sdk-metrics': specifier: ^2.11.0 version: 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-node": + '@opentelemetry/sdk-node': specifier: ^0.222.0 version: 0.222.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1) - "@opentelemetry/sdk-trace-node": + '@opentelemetry/sdk-trace-node': specifier: ^2.11.0 version: 2.11.0(@opentelemetry/api@1.9.1) - "@simplewebauthn/server": + '@simplewebauthn/server': specifier: ^13.3.3 version: 13.3.3 fastify: @@ -339,7 +343,7 @@ importers: apps/desktop: devDependencies: - "@types/node": + '@types/node': specifier: ^26.2.0 version: 26.2.0 electron: @@ -348,11 +352,11 @@ importers: apps/extension: dependencies: - "@crypto-wallet/dapp-core": + '@crypto-wallet/dapp-core': specifier: workspace:* version: link:../../packages/dapp-core devDependencies: - "@types/chrome": + '@types/chrome': specifier: ^0.2.9 version: 0.2.9 esbuild: @@ -364,22 +368,22 @@ importers: apps/mobile: dependencies: - "@crypto-wallet/chain-core": + '@crypto-wallet/chain-core': specifier: workspace:* version: link:../../packages/chain-core - "@crypto-wallet/secure-storage": + '@crypto-wallet/secure-storage': specifier: workspace:* version: link:../../packages/secure-storage - "@crypto-wallet/shared-types": + '@crypto-wallet/shared-types': specifier: workspace:* version: link:../../packages/shared-types - "@crypto-wallet/ui": + '@crypto-wallet/ui': specifier: workspace:* version: link:../../packages/ui - "@crypto-wallet/wallet-core": + '@crypto-wallet/wallet-core': specifier: workspace:* version: link:../../packages/wallet-core - "@noble/hashes": + '@noble/hashes': specifier: ^2.4.0 version: 2.4.0 expo: @@ -413,19 +417,19 @@ importers: specifier: ^15.15.5 version: 15.15.5(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) devDependencies: - "@types/react": + '@types/react': specifier: ^19.2.18 version: 19.2.18 apps/web: dependencies: - "@crypto-wallet/chain-core": + '@crypto-wallet/chain-core': specifier: workspace:* version: link:../../packages/chain-core - "@crypto-wallet/secure-storage": + '@crypto-wallet/secure-storage': specifier: workspace:* version: link:../../packages/secure-storage - "@crypto-wallet/wallet-core": + '@crypto-wallet/wallet-core': specifier: workspace:* version: link:../../packages/wallet-core qrcode.react: @@ -438,13 +442,13 @@ importers: specifier: ^19.2.8 version: 19.2.8(react@19.2.8) devDependencies: - "@types/react": + '@types/react': specifier: ^19.2.18 version: 19.2.18 - "@types/react-dom": + '@types/react-dom': specifier: ^19.2.5 version: 19.2.5(@types/react@19.2.18) - "@vitejs/plugin-react": + '@vitejs/plugin-react': specifier: ^6.1.1 version: 6.1.1(babel-plugin-react-compiler@1.0.0)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0)) typescript: @@ -460,46 +464,46 @@ importers: specifier: ^5.8.0 version: 5.12.1(@opentelemetry/api@1.9.1) devDependencies: - "@types/node": + '@types/node': specifier: ^26.2.0 version: 26.2.0 packages/chain-core: dependencies: - "@crypto-wallet/crypto": + '@crypto-wallet/crypto': specifier: workspace:* version: link:../crypto - "@noble/hashes": + '@noble/hashes': specifier: ^2.4.0 version: 2.4.0 - "@scure/base": + '@scure/base': specifier: ^2.4.0 version: 2.4.0 - "@scure/btc-signer": + '@scure/btc-signer': specifier: 2.3.0 version: 2.3.0 packages/config: devDependencies: - "@types/node": + '@types/node': specifier: ^26.2.0 version: 26.2.0 packages/crypto: dependencies: - "@noble/curves": + '@noble/curves': specifier: ^2.4.0 version: 2.4.0 - "@scure/bip32": + '@scure/bip32': specifier: 2.2.0 version: 2.2.0 - "@scure/bip39": + '@scure/bip39': specifier: 2.2.0 version: 2.2.0 packages/dapp-core: dependencies: - "@crypto-wallet/shared-types": + '@crypto-wallet/shared-types': specifier: workspace:* version: link:../shared-types devDependencies: @@ -513,9 +517,22 @@ importers: specifier: ^4.1.11 version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0)) + packages/ledger-core: + dependencies: + '@crypto-wallet/shared-types': + specifier: workspace:* + version: link:../shared-types + '@crypto-wallet/storage': + specifier: workspace:* + version: link:../storage + devDependencies: + vitest: + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0)) + packages/secure-storage: dependencies: - "@crypto-wallet/crypto": + '@crypto-wallet/crypto': specifier: workspace:* version: link:../crypto devDependencies: @@ -531,7 +548,7 @@ importers: specifier: ^8.23.0 version: 8.23.0 devDependencies: - "@types/pg": + '@types/pg': specifier: ^8.23.1 version: 8.23.1 tsx: @@ -544,16 +561,16 @@ importers: packages/wallet-core: dependencies: - "@crypto-wallet/chain-core": + '@crypto-wallet/chain-core': specifier: workspace:* version: link:../chain-core - "@crypto-wallet/crypto": + '@crypto-wallet/crypto': specifier: workspace:* version: link:../crypto - "@crypto-wallet/secure-storage": + '@crypto-wallet/secure-storage': specifier: workspace:* version: link:../secure-storage - "@crypto-wallet/shared-types": + '@crypto-wallet/shared-types': specifier: workspace:* version: link:../shared-types devDependencies: @@ -562,1065 +579,685 @@ importers: version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0)) packages: - "@babel/code-frame@7.29.7": - resolution: - { - integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==, - } - engines: { node: ">=6.9.0" } - "@babel/compat-data@7.29.7": - resolution: - { - integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==, - } - engines: { node: ">=6.9.0" } + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} - "@babel/core@7.29.7": - resolution: - { - integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==, - } - engines: { node: ">=6.9.0" } + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} + engines: {node: '>=6.9.0'} - "@babel/generator@7.29.8": - resolution: - { - integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==, - } - engines: { node: ">=6.9.0" } + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} + engines: {node: '>=6.9.0'} - "@babel/helper-annotate-as-pure@7.29.7": - resolution: - { - integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==, - } - engines: { node: ">=6.9.0" } + '@babel/generator@7.29.8': + resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} + engines: {node: '>=6.9.0'} - "@babel/helper-compilation-targets@7.29.7": - resolution: - { - integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-annotate-as-pure@7.29.7': + resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==} + engines: {node: '>=6.9.0'} - "@babel/helper-create-class-features-plugin@7.29.7": - resolution: - { - integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.29.7': + resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0 + '@babel/core': ^7.0.0 - "@babel/helper-create-regexp-features-plugin@7.29.7": - resolution: - { - integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-create-regexp-features-plugin@7.29.7': + resolution: {integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0 + '@babel/core': ^7.0.0 - "@babel/helper-define-polyfill-provider@0.6.8": - resolution: - { - integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==, - } + '@babel/helper-define-polyfill-provider@0.6.8': + resolution: {integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==} peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - "@babel/helper-globals@7.29.7": - resolution: - { - integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} - "@babel/helper-member-expression-to-functions@7.29.7": - resolution: - { - integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-member-expression-to-functions@7.29.7': + resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==} + engines: {node: '>=6.9.0'} - "@babel/helper-module-imports@7.29.7": - resolution: - { - integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} - "@babel/helper-module-transforms@7.29.7": - resolution: - { - integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0 + '@babel/core': ^7.0.0 - "@babel/helper-optimise-call-expression@7.29.7": - resolution: - { - integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-optimise-call-expression@7.29.7': + resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==} + engines: {node: '>=6.9.0'} - "@babel/helper-plugin-utils@7.29.7": - resolution: - { - integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-plugin-utils@7.29.7': + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} + engines: {node: '>=6.9.0'} - "@babel/helper-remap-async-to-generator@7.29.7": - resolution: - { - integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-remap-async-to-generator@7.29.7': + resolution: {integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0 + '@babel/core': ^7.0.0 - "@babel/helper-replace-supers@7.29.7": - resolution: - { - integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-replace-supers@7.29.7': + resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0 + '@babel/core': ^7.0.0 - "@babel/helper-skip-transparent-expression-wrappers@7.29.7": - resolution: - { - integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==} + engines: {node: '>=6.9.0'} - "@babel/helper-string-parser@7.29.7": - resolution: - { - integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} - "@babel/helper-validator-identifier@7.29.7": - resolution: - { - integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} - "@babel/helper-validator-option@7.29.7": - resolution: - { - integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} - "@babel/helper-wrap-function@7.29.7": - resolution: - { - integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==, - } - engines: { node: ">=6.9.0" } + '@babel/helper-wrap-function@7.29.7': + resolution: {integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==} + engines: {node: '>=6.9.0'} - "@babel/helpers@7.29.7": - resolution: - { - integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==, - } - engines: { node: ">=6.9.0" } + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + engines: {node: '>=6.9.0'} - "@babel/parser@7.29.8": - resolution: - { - integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==, - } - engines: { node: ">=6.0.0" } + '@babel/parser@7.29.8': + resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} + engines: {node: '>=6.0.0'} hasBin: true - "@babel/plugin-proposal-decorators@7.29.7": - resolution: - { - integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-proposal-decorators@7.29.7': + resolution: {integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-proposal-export-default-from@7.29.7": - resolution: - { - integrity: sha512-p+G5BNXDcy3bOXplhY4HybQ1GxH3i2Tppmdm/3epyRu2VgJJZuUlZ61MqRTg582Q7ZLBdP7fePYvsumSEkMxcQ==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-proposal-export-default-from@7.29.7': + resolution: {integrity: sha512-p+G5BNXDcy3bOXplhY4HybQ1GxH3i2Tppmdm/3epyRu2VgJJZuUlZ61MqRTg582Q7ZLBdP7fePYvsumSEkMxcQ==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-decorators@7.29.7": - resolution: - { - integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-syntax-decorators@7.29.7': + resolution: {integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-dynamic-import@7.8.3": - resolution: - { - integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==, - } + '@babel/plugin-syntax-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-export-default-from@7.29.7": - resolution: - { - integrity: sha512-foag0BB37ROhdeIX9O8G0jX7hw0UekJc04cHMrYLOnrErsnBKqJGHJ8eDRpoCFZBvEPPygmmtw4qyU97qa4oOw==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-syntax-export-default-from@7.29.7': + resolution: {integrity: sha512-foag0BB37ROhdeIX9O8G0jX7hw0UekJc04cHMrYLOnrErsnBKqJGHJ8eDRpoCFZBvEPPygmmtw4qyU97qa4oOw==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-flow@7.29.7": - resolution: - { - integrity: sha512-ajMX6QPcyomotqwpzhkYGxcK2i/us0rs1Qo9QvUpa+Fca0FTmqrzKrctoIYLMxcOhGZldGT/BAVkRGTWBiR8gQ==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-syntax-flow@7.29.7': + resolution: {integrity: sha512-ajMX6QPcyomotqwpzhkYGxcK2i/us0rs1Qo9QvUpa+Fca0FTmqrzKrctoIYLMxcOhGZldGT/BAVkRGTWBiR8gQ==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-jsx@7.29.7": - resolution: - { - integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-syntax-jsx@7.29.7': + resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3": - resolution: - { - integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, - } + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-optional-chaining@7.8.3": - resolution: - { - integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, - } + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-syntax-typescript@7.29.7": - resolution: - { - integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-syntax-typescript@7.29.7': + resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-async-generator-functions@7.29.7": - resolution: - { - integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-async-generator-functions@7.29.7': + resolution: {integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-async-to-generator@7.29.7": - resolution: - { - integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-async-to-generator@7.29.7': + resolution: {integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-block-scoping@7.29.7": - resolution: - { - integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-block-scoping@7.29.7': + resolution: {integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-class-properties@7.29.7": - resolution: - { - integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-class-properties@7.29.7': + resolution: {integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-class-static-block@7.29.7": - resolution: - { - integrity: sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-class-static-block@7.29.7': + resolution: {integrity: sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.12.0 + '@babel/core': ^7.12.0 - "@babel/plugin-transform-classes@7.29.7": - resolution: - { - integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-classes@7.29.7': + resolution: {integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-destructuring@7.29.7": - resolution: - { - integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-destructuring@7.29.7': + resolution: {integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-export-namespace-from@7.29.7": - resolution: - { - integrity: sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-export-namespace-from@7.29.7': + resolution: {integrity: sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-flow-strip-types@7.29.7": - resolution: - { - integrity: sha512-wRHeUjUjCZnMHmiO5bRgjFLcoEh7JyTdByOW11ahhwNa4V0bmeGEaIvt51yq0zQp2yWIpqfxXXPyUP6GFJZHOQ==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-flow-strip-types@7.29.7': + resolution: {integrity: sha512-wRHeUjUjCZnMHmiO5bRgjFLcoEh7JyTdByOW11ahhwNa4V0bmeGEaIvt51yq0zQp2yWIpqfxXXPyUP6GFJZHOQ==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-for-of@7.29.7": - resolution: - { - integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-for-of@7.29.7': + resolution: {integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-logical-assignment-operators@7.29.7": - resolution: - { - integrity: sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-logical-assignment-operators@7.29.7': + resolution: {integrity: sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-modules-commonjs@7.29.7": - resolution: - { - integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-modules-commonjs@7.29.7': + resolution: {integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-named-capturing-groups-regex@7.29.7": - resolution: - { - integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-named-capturing-groups-regex@7.29.7': + resolution: {integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0 + '@babel/core': ^7.0.0 - "@babel/plugin-transform-nullish-coalescing-operator@7.29.7": - resolution: - { - integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-nullish-coalescing-operator@7.29.7': + resolution: {integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-object-rest-spread@7.29.7": - resolution: - { - integrity: sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-object-rest-spread@7.29.7': + resolution: {integrity: sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-optional-catch-binding@7.29.7": - resolution: - { - integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-optional-catch-binding@7.29.7': + resolution: {integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-optional-chaining@7.29.7": - resolution: - { - integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-optional-chaining@7.29.7': + resolution: {integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-parameters@7.29.7": - resolution: - { - integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-parameters@7.29.7': + resolution: {integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-private-methods@7.29.7": - resolution: - { - integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-private-methods@7.29.7': + resolution: {integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-private-property-in-object@7.29.7": - resolution: - { - integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-private-property-in-object@7.29.7': + resolution: {integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-react-display-name@7.29.7": - resolution: - { - integrity: sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-react-display-name@7.29.7': + resolution: {integrity: sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-react-jsx-development@7.29.7": - resolution: - { - integrity: sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-react-jsx-development@7.29.7': + resolution: {integrity: sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-react-jsx@7.29.7": - resolution: - { - integrity: sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-react-jsx@7.29.7': + resolution: {integrity: sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-react-pure-annotations@7.29.7": - resolution: - { - integrity: sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-react-pure-annotations@7.29.7': + resolution: {integrity: sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-runtime@7.29.7": - resolution: - { - integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-runtime@7.29.7': + resolution: {integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-typescript@7.29.7": - resolution: - { - integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-typescript@7.29.7': + resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/plugin-transform-unicode-regex@7.29.7": - resolution: - { - integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==, - } - engines: { node: ">=6.9.0" } + '@babel/plugin-transform-unicode-regex@7.29.7': + resolution: {integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/preset-typescript@7.29.7": - resolution: - { - integrity: sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==, - } - engines: { node: ">=6.9.0" } + '@babel/preset-typescript@7.29.7': + resolution: {integrity: sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==} + engines: {node: '>=6.9.0'} peerDependencies: - "@babel/core": ^7.0.0-0 + '@babel/core': ^7.0.0-0 - "@babel/runtime@7.29.7": - resolution: - { - integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==, - } - engines: { node: ">=6.9.0" } + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + engines: {node: '>=6.9.0'} - "@babel/template@7.29.7": - resolution: - { - integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==, - } - engines: { node: ">=6.9.0" } + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} - "@babel/traverse@7.29.8": - resolution: - { - integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==, - } - engines: { node: ">=6.9.0" } + '@babel/traverse@7.29.8': + resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} + engines: {node: '>=6.9.0'} - "@babel/types@7.29.8": - resolution: - { - integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==, - } - engines: { node: ">=6.9.0" } + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} + engines: {node: '>=6.9.0'} - "@electron-internal/extract-zip@1.0.5": - resolution: - { - integrity: sha512-+bqFCP98pLI0Tt0XQo1TmlXtwjWchISndDOxCkEcIuUgXWpBnLyRI+2DU+mesvnMMX6L1XDqYNA0lXNDHd/yiA==, - } - engines: { node: ">=22.12.0" } + '@electron-internal/extract-zip@1.0.5': + resolution: {integrity: sha512-+bqFCP98pLI0Tt0XQo1TmlXtwjWchISndDOxCkEcIuUgXWpBnLyRI+2DU+mesvnMMX6L1XDqYNA0lXNDHd/yiA==} + engines: {node: '>=22.12.0'} - "@electron/get@5.1.0": - resolution: - { - integrity: sha512-3kSBtG8ObcTVfXanm5vVJ6UnBLEVmVsRk1M+vGqCuMBV+XLCbJYuWQful+yIy0GQDsSlK0kHEriEHn7SPk4EnA==, - } - engines: { node: ">=22.12.0" } + '@electron/get@5.1.0': + resolution: {integrity: sha512-3kSBtG8ObcTVfXanm5vVJ6UnBLEVmVsRk1M+vGqCuMBV+XLCbJYuWQful+yIy0GQDsSlK0kHEriEHn7SPk4EnA==} + engines: {node: '>=22.12.0'} - "@esbuild/aix-ppc64@0.28.2": - resolution: - { - integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==, - } - engines: { node: ">=18" } + '@esbuild/aix-ppc64@0.28.2': + resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] - "@esbuild/android-arm64@0.28.2": - resolution: - { - integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==, - } - engines: { node: ">=18" } + '@esbuild/android-arm64@0.28.2': + resolution: {integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==} + engines: {node: '>=18'} cpu: [arm64] os: [android] - "@esbuild/android-arm@0.28.2": - resolution: - { - integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==, - } - engines: { node: ">=18" } + '@esbuild/android-arm@0.28.2': + resolution: {integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==} + engines: {node: '>=18'} cpu: [arm] os: [android] - "@esbuild/android-x64@0.28.2": - resolution: - { - integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==, - } - engines: { node: ">=18" } + '@esbuild/android-x64@0.28.2': + resolution: {integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==} + engines: {node: '>=18'} cpu: [x64] os: [android] - "@esbuild/darwin-arm64@0.28.2": - resolution: - { - integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==, - } - engines: { node: ">=18" } + '@esbuild/darwin-arm64@0.28.2': + resolution: {integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] - "@esbuild/darwin-x64@0.28.2": - resolution: - { - integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==, - } - engines: { node: ">=18" } + '@esbuild/darwin-x64@0.28.2': + resolution: {integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] - "@esbuild/freebsd-arm64@0.28.2": - resolution: - { - integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==, - } - engines: { node: ">=18" } + '@esbuild/freebsd-arm64@0.28.2': + resolution: {integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-x64@0.28.2": - resolution: - { - integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==, - } - engines: { node: ">=18" } + '@esbuild/freebsd-x64@0.28.2': + resolution: {integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] - "@esbuild/linux-arm64@0.28.2": - resolution: - { - integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==, - } - engines: { node: ">=18" } + '@esbuild/linux-arm64@0.28.2': + resolution: {integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] - "@esbuild/linux-arm@0.28.2": - resolution: - { - integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==, - } - engines: { node: ">=18" } + '@esbuild/linux-arm@0.28.2': + resolution: {integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==} + engines: {node: '>=18'} cpu: [arm] os: [linux] - "@esbuild/linux-ia32@0.28.2": - resolution: - { - integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==, - } - engines: { node: ">=18" } + '@esbuild/linux-ia32@0.28.2': + resolution: {integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] - "@esbuild/linux-loong64@0.28.2": - resolution: - { - integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==, - } - engines: { node: ">=18" } + '@esbuild/linux-loong64@0.28.2': + resolution: {integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] - "@esbuild/linux-mips64el@0.28.2": - resolution: - { - integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==, - } - engines: { node: ">=18" } + '@esbuild/linux-mips64el@0.28.2': + resolution: {integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] - "@esbuild/linux-ppc64@0.28.2": - resolution: - { - integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==, - } - engines: { node: ">=18" } + '@esbuild/linux-ppc64@0.28.2': + resolution: {integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] - "@esbuild/linux-riscv64@0.28.2": - resolution: - { - integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==, - } - engines: { node: ">=18" } + '@esbuild/linux-riscv64@0.28.2': + resolution: {integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] - "@esbuild/linux-s390x@0.28.2": - resolution: - { - integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==, - } - engines: { node: ">=18" } + '@esbuild/linux-s390x@0.28.2': + resolution: {integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] - "@esbuild/linux-x64@0.28.2": - resolution: - { - integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==, - } - engines: { node: ">=18" } + '@esbuild/linux-x64@0.28.2': + resolution: {integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==} + engines: {node: '>=18'} cpu: [x64] os: [linux] - "@esbuild/netbsd-arm64@0.28.2": - resolution: - { - integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==, - } - engines: { node: ">=18" } + '@esbuild/netbsd-arm64@0.28.2': + resolution: {integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==} + engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - "@esbuild/netbsd-x64@0.28.2": - resolution: - { - integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==, - } - engines: { node: ">=18" } + '@esbuild/netbsd-x64@0.28.2': + resolution: {integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] - "@esbuild/openbsd-arm64@0.28.2": - resolution: - { - integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==, - } - engines: { node: ">=18" } + '@esbuild/openbsd-arm64@0.28.2': + resolution: {integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==} + engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - "@esbuild/openbsd-x64@0.28.2": - resolution: - { - integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==, - } - engines: { node: ">=18" } + '@esbuild/openbsd-x64@0.28.2': + resolution: {integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] - "@esbuild/openharmony-arm64@0.28.2": - resolution: - { - integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==, - } - engines: { node: ">=18" } + '@esbuild/openharmony-arm64@0.28.2': + resolution: {integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==} + engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - "@esbuild/sunos-x64@0.28.2": - resolution: - { - integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==, - } - engines: { node: ">=18" } + '@esbuild/sunos-x64@0.28.2': + resolution: {integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] - "@esbuild/win32-arm64@0.28.2": - resolution: - { - integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==, - } - engines: { node: ">=18" } + '@esbuild/win32-arm64@0.28.2': + resolution: {integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] - "@esbuild/win32-ia32@0.28.2": - resolution: - { - integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==, - } - engines: { node: ">=18" } + '@esbuild/win32-ia32@0.28.2': + resolution: {integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] - "@esbuild/win32-x64@0.28.2": - resolution: - { - integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==, - } - engines: { node: ">=18" } + '@esbuild/win32-x64@0.28.2': + resolution: {integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==} + engines: {node: '>=18'} cpu: [x64] os: [win32] - "@eslint-community/eslint-utils@4.10.1": - resolution: - { - integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + '@eslint-community/eslint-utils@4.10.1': + resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - "@eslint-community/regexpp@4.12.2": - resolution: - { - integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==, - } - engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - "@eslint/config-array@0.23.5": - resolution: - { - integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + '@eslint/config-array@0.23.5': + resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - "@eslint/config-helpers@0.7.0": - resolution: - { - integrity: sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + '@eslint/config-helpers@0.7.0': + resolution: {integrity: sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - "@eslint/core@1.2.1": - resolution: - { - integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + '@eslint/core@1.2.1': + resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - "@eslint/js@10.0.1": - resolution: - { - integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + '@eslint/js@10.0.1': + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: ^10.0.0 peerDependenciesMeta: eslint: optional: true - "@eslint/object-schema@3.0.5": - resolution: - { - integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + '@eslint/object-schema@3.0.5': + resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - "@eslint/plugin-kit@0.7.2": - resolution: - { - integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + '@eslint/plugin-kit@0.7.2': + resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - "@expo/cli@57.0.22": - resolution: - { - integrity: sha512-MdToR0ZZ1yjfkqbP1jcA7viS9duMPGq/C+qQ/21dtq+en583Ghp+O11BP/wujHa9ZGRtXimzuKPZDpPresVE0g==, - } + '@expo/cli@57.0.22': + resolution: {integrity: sha512-MdToR0ZZ1yjfkqbP1jcA7viS9duMPGq/C+qQ/21dtq+en583Ghp+O11BP/wujHa9ZGRtXimzuKPZDpPresVE0g==} hasBin: true peerDependencies: - expo: "*" - expo-router: "*" - react-native: "*" + expo: '*' + expo-router: '*' + react-native: '*' peerDependenciesMeta: expo-router: optional: true react-native: optional: true - "@expo/code-signing-certificates@0.0.6": - resolution: - { - integrity: sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==, - } + '@expo/code-signing-certificates@0.0.6': + resolution: {integrity: sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==} - "@expo/config-plugins@57.0.9": - resolution: - { - integrity: sha512-hHgfL1avkCdEvDSw7IwlKwRYYNgcxzbNNMIk6W6lTkJpY0MajinAfeJUS0J+wPCsjUfGbVqOJM+XhPaO5ulUxg==, - } + '@expo/config-plugins@57.0.9': + resolution: {integrity: sha512-hHgfL1avkCdEvDSw7IwlKwRYYNgcxzbNNMIk6W6lTkJpY0MajinAfeJUS0J+wPCsjUfGbVqOJM+XhPaO5ulUxg==} - "@expo/config-types@57.0.2": - resolution: - { - integrity: sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==, - } + '@expo/config-types@57.0.2': + resolution: {integrity: sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==} - "@expo/config@57.0.9": - resolution: - { - integrity: sha512-dmzlKraIFxa7wLwV6K7WzI8jp6QZpW6Mc5mGjLimJUFjzh4uQdYaT3m3plEutM5yxBoBEwqzks7l+I/ljCbxAQ==, - } + '@expo/config@57.0.9': + resolution: {integrity: sha512-dmzlKraIFxa7wLwV6K7WzI8jp6QZpW6Mc5mGjLimJUFjzh4uQdYaT3m3plEutM5yxBoBEwqzks7l+I/ljCbxAQ==} - "@expo/devcert@1.2.1": - resolution: - { - integrity: sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==, - } + '@expo/devcert@1.2.1': + resolution: {integrity: sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==} - "@expo/devtools@57.0.1": - resolution: - { - integrity: sha512-GyUf+wFNkbttaX0jR7MZa9bm77U0IrLg6d2AjpxdyoXw/w4abHoXG0oFufwLMgP9zLTd5+Ct4X/ffNUTnlzZgg==, - } + '@expo/devtools@57.0.1': + resolution: {integrity: sha512-GyUf+wFNkbttaX0jR7MZa9bm77U0IrLg6d2AjpxdyoXw/w4abHoXG0oFufwLMgP9zLTd5+Ct4X/ffNUTnlzZgg==} peerDependencies: - react: "*" - react-native: "*" + react: '*' + react-native: '*' peerDependenciesMeta: react: optional: true react-native: optional: true - "@expo/dom-webview@57.0.1": - resolution: - { - integrity: sha512-lAKsME4SAq+8sf56oN0DX5TBYyruupoRxbWbD2xf9RnKY8y6x8eb9LCE5pxSN0qyWdqnp+0wmyWzDkKboThKAw==, - } + '@expo/dom-webview@57.0.1': + resolution: {integrity: sha512-lAKsME4SAq+8sf56oN0DX5TBYyruupoRxbWbD2xf9RnKY8y6x8eb9LCE5pxSN0qyWdqnp+0wmyWzDkKboThKAw==} peerDependencies: - expo: "*" - react: "*" - react-native: "*" + expo: '*' + react: '*' + react-native: '*' - "@expo/env@2.4.3": - resolution: - { - integrity: sha512-M1NXeZCA1mkMkYOyIe7PlyRX0/jqFtMoJgyblnlq/vpCRfmueFT7RnGSQG8uEFDF5WHOFGijAQ3fogPh3/n5Ng==, - } - engines: { node: ">=20.12.0" } + '@expo/env@2.4.3': + resolution: {integrity: sha512-M1NXeZCA1mkMkYOyIe7PlyRX0/jqFtMoJgyblnlq/vpCRfmueFT7RnGSQG8uEFDF5WHOFGijAQ3fogPh3/n5Ng==} + engines: {node: '>=20.12.0'} - "@expo/expo-modules-macros-plugin@0.6.1": - resolution: - { - integrity: sha512-cpsLZE4rqkc1Y3eZTkxB98jrqY1YXgetmtxFt8q89jBRmk3quRuk1BZo+VcnCSObZardjg99r1k5xijEMONFGA==, - } + '@expo/expo-modules-macros-plugin@0.6.1': + resolution: {integrity: sha512-cpsLZE4rqkc1Y3eZTkxB98jrqY1YXgetmtxFt8q89jBRmk3quRuk1BZo+VcnCSObZardjg99r1k5xijEMONFGA==} - "@expo/fingerprint@0.20.12": - resolution: - { - integrity: sha512-FIR5fkZYeFaLSowmjgyB6RPKl8AXeE8HuCBHHvyxK8UhOjpPfCAmzT4E7v2yub4qqDafKnfcOFCYxvpUEu+01w==, - } + '@expo/fingerprint@0.20.12': + resolution: {integrity: sha512-FIR5fkZYeFaLSowmjgyB6RPKl8AXeE8HuCBHHvyxK8UhOjpPfCAmzT4E7v2yub4qqDafKnfcOFCYxvpUEu+01w==} hasBin: true - "@expo/image-utils@0.11.5": - resolution: - { - integrity: sha512-KPQBTpmpAfy/Vu9y4wPW808/qtZxjYmyJg8cm2QCPAupp+qEWA3b5zmk0ulOwQ9OgeHxuCPgUqWgkwHFo7UsrQ==, - } + '@expo/image-utils@0.11.5': + resolution: {integrity: sha512-KPQBTpmpAfy/Vu9y4wPW808/qtZxjYmyJg8cm2QCPAupp+qEWA3b5zmk0ulOwQ9OgeHxuCPgUqWgkwHFo7UsrQ==} - "@expo/inline-modules@0.1.7": - resolution: - { - integrity: sha512-Bz/khd1gIJqDkje7t5ejD5e9jFbm4xEJzWSwRKadRo6gruepbw1xJ3Eb+e58OS8fY1ZNQYjzZbspnuph67sN0g==, - } + '@expo/inline-modules@0.1.7': + resolution: {integrity: sha512-Bz/khd1gIJqDkje7t5ejD5e9jFbm4xEJzWSwRKadRo6gruepbw1xJ3Eb+e58OS8fY1ZNQYjzZbspnuph67sN0g==} - "@expo/json-file@11.0.1": - resolution: - { - integrity: sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==, - } + '@expo/json-file@11.0.1': + resolution: {integrity: sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==} - "@expo/local-build-cache-provider@57.0.8": - resolution: - { - integrity: sha512-SEdE0pAQrr90bRh3MNR0ZuwoIBw390cYdFgbn7Vk0Mtm9EHaBfP7kYj+2hXnXZJgOEm3/JMtfoD3rV7rWA9FGg==, - } + '@expo/local-build-cache-provider@57.0.8': + resolution: {integrity: sha512-SEdE0pAQrr90bRh3MNR0ZuwoIBw390cYdFgbn7Vk0Mtm9EHaBfP7kYj+2hXnXZJgOEm3/JMtfoD3rV7rWA9FGg==} - "@expo/log-box@57.0.4": - resolution: - { - integrity: sha512-IxwS9s1L2muj8mj8AQSuiy7u8OFJdc02NRFo2me/Tj6DiaeG5SREqmpBE4rQpR2cadqSg5jl8Qab8Cjie616dg==, - } + '@expo/log-box@57.0.4': + resolution: {integrity: sha512-IxwS9s1L2muj8mj8AQSuiy7u8OFJdc02NRFo2me/Tj6DiaeG5SREqmpBE4rQpR2cadqSg5jl8Qab8Cjie616dg==} peerDependencies: - "@expo/dom-webview": ^57.0.1 - expo: "*" - react: "*" - react-native: "*" + '@expo/dom-webview': ^57.0.1 + expo: '*' + react: '*' + react-native: '*' - "@expo/metro-config@57.0.12": - resolution: - { - integrity: sha512-S62Lrq35HZqBFD55423pmWb8PjaiR/W02zQC1uECBmw1vTN8WZaFz4TJ0i21EeJzwfebMb9MLxL8JZ102Z6VbA==, - } + '@expo/metro-config@57.0.12': + resolution: {integrity: sha512-S62Lrq35HZqBFD55423pmWb8PjaiR/W02zQC1uECBmw1vTN8WZaFz4TJ0i21EeJzwfebMb9MLxL8JZ102Z6VbA==} peerDependencies: - expo: "*" + expo: '*' peerDependenciesMeta: expo: optional: true - "@expo/metro-file-map@57.0.2": - resolution: - { - integrity: sha512-tb50nSIWwKpRufSkGuivOK0FbUxv1Uwqptb0SzFTk0bkmYmcy3gIwnCbOHTfmrQDVndRhPEiu2SYgh9Z0PCvGg==, - } + '@expo/metro-file-map@57.0.2': + resolution: {integrity: sha512-tb50nSIWwKpRufSkGuivOK0FbUxv1Uwqptb0SzFTk0bkmYmcy3gIwnCbOHTfmrQDVndRhPEiu2SYgh9Z0PCvGg==} - "@expo/metro@56.0.2": - resolution: - { - integrity: sha512-Ld5AeYMCCDa8bLeWhfuLbZFFjlV3f6ORqyPz2glGh6RltIngMuLf9BTC2yvHFjkKuGxL5SynijmA8xmNNWn5iA==, - } + '@expo/metro@56.0.2': + resolution: {integrity: sha512-Ld5AeYMCCDa8bLeWhfuLbZFFjlV3f6ORqyPz2glGh6RltIngMuLf9BTC2yvHFjkKuGxL5SynijmA8xmNNWn5iA==} - "@expo/osascript@2.7.1": - resolution: - { - integrity: sha512-Zn03EX6In7ts2lPUW2ESUSkEhEWQN1qqsiXjadtZMJOuZRkMiAg1ZQHuvz9DjByDWNJ2pBwAGyrts9lj9k389g==, - } - engines: { node: ">=12" } + '@expo/osascript@2.7.1': + resolution: {integrity: sha512-Zn03EX6In7ts2lPUW2ESUSkEhEWQN1qqsiXjadtZMJOuZRkMiAg1ZQHuvz9DjByDWNJ2pBwAGyrts9lj9k389g==} + engines: {node: '>=12'} - "@expo/package-manager@1.13.1": - resolution: - { - integrity: sha512-y/K+CaYYpZpNGZhSX4HyLT/vyIunFjNfyoxNysPBCefeLKI/VCx6f9LNPzrxayr3rCYO5bl9O8H+HRQK265Nkg==, - } + '@expo/package-manager@1.13.1': + resolution: {integrity: sha512-y/K+CaYYpZpNGZhSX4HyLT/vyIunFjNfyoxNysPBCefeLKI/VCx6f9LNPzrxayr3rCYO5bl9O8H+HRQK265Nkg==} - "@expo/plist@0.8.1": - resolution: - { - integrity: sha512-3gTReGIUm0oRaMClsAJYxBnVPCl6fVpsl8HS+DTVxDhW4GyVyxg9E/Znm3BvcHtUJ51RJJI14pC1wvrNilCRHw==, - } + '@expo/plist@0.8.1': + resolution: {integrity: sha512-3gTReGIUm0oRaMClsAJYxBnVPCl6fVpsl8HS+DTVxDhW4GyVyxg9E/Znm3BvcHtUJ51RJJI14pC1wvrNilCRHw==} - "@expo/prebuild-config@57.0.15": - resolution: - { - integrity: sha512-xTbWHroj0PDmlbqvmU+zF9ZZxveJkiuyiPoeRJYRGruFHebRAWnoTdw5S7d/UCzDBI8ropGGu9g2eb2nMxtvAw==, - } + '@expo/prebuild-config@57.0.15': + resolution: {integrity: sha512-xTbWHroj0PDmlbqvmU+zF9ZZxveJkiuyiPoeRJYRGruFHebRAWnoTdw5S7d/UCzDBI8ropGGu9g2eb2nMxtvAw==} - "@expo/require-utils@57.0.5": - resolution: - { - integrity: sha512-kTAXj9lDFEIPMsbAOGCGbjBbMF0oi7CqkYM79KOX0DDD9wSwXmlKL1z2h8OwsrBf7mbOo2DjlRvZu4BEjrIxGw==, - } + '@expo/require-utils@57.0.5': + resolution: {integrity: sha512-kTAXj9lDFEIPMsbAOGCGbjBbMF0oi7CqkYM79KOX0DDD9wSwXmlKL1z2h8OwsrBf7mbOo2DjlRvZu4BEjrIxGw==} peerDependencies: typescript: ^5.0.0 || ^5.0.0-0 || ^6.0.0 || ^7.0.0 peerDependenciesMeta: typescript: optional: true - "@expo/router-server@57.0.9": - resolution: - { - integrity: sha512-/PxRQozFesIyCJZOAtrQE8XcmcojNiL5ctPMQnbE4ojC2EJPu0zc7c0Y4PuXsoRxrZxm8Usw76/lCVrXcfTZ2w==, - } + '@expo/router-server@57.0.9': + resolution: {integrity: sha512-/PxRQozFesIyCJZOAtrQE8XcmcojNiL5ctPMQnbE4ojC2EJPu0zc7c0Y4PuXsoRxrZxm8Usw76/lCVrXcfTZ2w==} peerDependencies: - "@expo/metro-runtime": ^57.0.15 - expo: "*" + '@expo/metro-runtime': ^57.0.15 + expo: '*' expo-constants: ^57.0.17 expo-font: ^57.0.3 - expo-router: "*" + expo-router: '*' expo-server: ^57.0.3 - react: "*" - react-dom: "*" + react: '*' + react-dom: '*' react-server-dom-webpack: ~19.0.1 || ~19.1.2 || ~19.2.1 peerDependenciesMeta: - "@expo/metro-runtime": + '@expo/metro-runtime': optional: true expo-router: optional: true @@ -1629,1305 +1266,792 @@ packages: react-server-dom-webpack: optional: true - "@expo/schema-utils@57.0.2": - resolution: - { - integrity: sha512-fMu/jyN0l1Wzv7XkeWR4IYCx1M8ryui3FdBNGrWwbRgJ7EhxXxK8E2jxP2W3pbgUwUY0V3hG8+GyfCZwny+Lxw==, - } + '@expo/schema-utils@57.0.2': + resolution: {integrity: sha512-fMu/jyN0l1Wzv7XkeWR4IYCx1M8ryui3FdBNGrWwbRgJ7EhxXxK8E2jxP2W3pbgUwUY0V3hG8+GyfCZwny+Lxw==} - "@expo/sdk-runtime-versions@1.0.0": - resolution: - { - integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==, - } + '@expo/sdk-runtime-versions@1.0.0': + resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} - "@expo/spawn-async@1.8.0": - resolution: - { - integrity: sha512-eb9xxd/LbuEGSdua4NumCu/McVB9EM+F/JxB9pWgnERw4HQ9XyTNH1KapG6oqLWR8TuRK2LQfzJlmNi94CVobw==, - } - engines: { node: ">=12" } + '@expo/spawn-async@1.8.0': + resolution: {integrity: sha512-eb9xxd/LbuEGSdua4NumCu/McVB9EM+F/JxB9pWgnERw4HQ9XyTNH1KapG6oqLWR8TuRK2LQfzJlmNi94CVobw==} + engines: {node: '>=12'} - "@expo/sudo-prompt@9.3.2": - resolution: - { - integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==, - } + '@expo/sudo-prompt@9.3.2': + resolution: {integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==} - "@expo/ws-tunnel@2.0.0": - resolution: - { - integrity: sha512-j+JfTRdCk820J9dU0sA2SqshQIKFOMo7ED84w9MJFcebfbNQgsLztEY/SABDkGnjatrW4xGqnUhVRxSBVyCkXw==, - } + '@expo/ws-tunnel@2.0.0': + resolution: {integrity: sha512-j+JfTRdCk820J9dU0sA2SqshQIKFOMo7ED84w9MJFcebfbNQgsLztEY/SABDkGnjatrW4xGqnUhVRxSBVyCkXw==} peerDependencies: ws: ^8.0.0 - "@expo/xcpretty@4.4.4": - resolution: - { - integrity: sha512-4aQzz9vgxcNXFfo/iyNgDDYfsU5XGKKxWxZopw0cVotHiW+U8IJbIxMaxsINs6bHhtkG3StKNPcOrn3eBuxKPw==, - } + '@expo/xcpretty@4.4.4': + resolution: {integrity: sha512-4aQzz9vgxcNXFfo/iyNgDDYfsU5XGKKxWxZopw0cVotHiW+U8IJbIxMaxsINs6bHhtkG3StKNPcOrn3eBuxKPw==} hasBin: true - "@fastify/ajv-compiler@4.0.6": - resolution: - { - integrity: sha512-NtuzM0SfaMJbGlnjr9LWQUN5LzgSrbB8tf/wRZNas+4E1O/Nmzl53e7ruT61HDZyRCJGC6FxIogmNZO1c5ETBA==, - } + '@fastify/ajv-compiler@4.0.6': + resolution: {integrity: sha512-NtuzM0SfaMJbGlnjr9LWQUN5LzgSrbB8tf/wRZNas+4E1O/Nmzl53e7ruT61HDZyRCJGC6FxIogmNZO1c5ETBA==} - "@fastify/error@4.2.0": - resolution: - { - integrity: sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==, - } + '@fastify/error@4.2.0': + resolution: {integrity: sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==} - "@fastify/fast-json-stringify-compiler@5.1.0": - resolution: - { - integrity: sha512-PxcYtKLbQ8Z+yApiqjK8FwxIwvEj38k2OiLc17u8dkJSlmfi2wHHPaSnaoqBPQqtvF8YVsDgDpP2snDCfFrpfw==, - } + '@fastify/fast-json-stringify-compiler@5.1.0': + resolution: {integrity: sha512-PxcYtKLbQ8Z+yApiqjK8FwxIwvEj38k2OiLc17u8dkJSlmfi2wHHPaSnaoqBPQqtvF8YVsDgDpP2snDCfFrpfw==} - "@fastify/forwarded@3.0.2": - resolution: - { - integrity: sha512-NE8HgKLgYejV9lDpqkEFaDKMLYelJBVfHekhB0UKvX0ghagXRJqg68feg8er1NPXxG4N9i6vPxzt8E+3wHfcmA==, - } + '@fastify/forwarded@3.0.2': + resolution: {integrity: sha512-NE8HgKLgYejV9lDpqkEFaDKMLYelJBVfHekhB0UKvX0ghagXRJqg68feg8er1NPXxG4N9i6vPxzt8E+3wHfcmA==} - "@fastify/merge-json-schemas@0.2.1": - resolution: - { - integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==, - } + '@fastify/merge-json-schemas@0.2.1': + resolution: {integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==} - "@fastify/proxy-addr@5.1.0": - resolution: - { - integrity: sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==, - } + '@fastify/proxy-addr@5.1.0': + resolution: {integrity: sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==} - "@grpc/grpc-js@1.14.4": - resolution: - { - integrity: sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==, - } - engines: { node: ">=12.10.0" } + '@grpc/grpc-js@1.14.4': + resolution: {integrity: sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==} + engines: {node: '>=12.10.0'} - "@grpc/proto-loader@0.8.1": - resolution: - { - integrity: sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==, - } - engines: { node: ">=6" } + '@grpc/proto-loader@0.8.1': + resolution: {integrity: sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==} + engines: {node: '>=6'} hasBin: true - "@hexagon/base64@1.1.28": - resolution: - { - integrity: sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==, - } + '@hexagon/base64@1.1.28': + resolution: {integrity: sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==} - "@humanfs/core@0.19.2": - resolution: - { - integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==, - } - engines: { node: ">=18.18.0" } + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} - "@humanfs/node@0.16.8": - resolution: - { - integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==, - } - engines: { node: ">=18.18.0" } + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} - "@humanfs/types@0.15.0": - resolution: - { - integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==, - } - engines: { node: ">=18.18.0" } + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} - "@humanwhocodes/module-importer@1.0.1": - resolution: - { - integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, - } - engines: { node: ">=12.22" } + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} - "@humanwhocodes/retry@0.4.3": - resolution: - { - integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==, - } - engines: { node: ">=18.18" } + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} - "@isaacs/ttlcache@1.4.1": - resolution: - { - integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==, - } - engines: { node: ">=12" } + '@isaacs/ttlcache@1.4.1': + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} - "@jest/schemas@29.6.3": - resolution: - { - integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - "@jest/types@29.6.3": - resolution: - { - integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - "@jridgewell/gen-mapping@0.3.13": - resolution: - { - integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, - } + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - "@jridgewell/remapping@2.3.5": - resolution: - { - integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==, - } + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - "@jridgewell/resolve-uri@3.1.2": - resolution: - { - integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, - } - engines: { node: ">=6.0.0" } + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} - "@jridgewell/source-map@0.3.11": - resolution: - { - integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==, - } + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - "@jridgewell/sourcemap-codec@1.5.5": - resolution: - { - integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, - } + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - "@jridgewell/trace-mapping@0.3.31": - resolution: - { - integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, - } + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - "@js-sdsl/ordered-map@4.4.2": - resolution: - { - integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==, - } + '@js-sdsl/ordered-map@4.4.2': + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} - "@levischuck/tiny-cbor@0.2.11": - resolution: - { - integrity: sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==, - } + '@levischuck/tiny-cbor@0.2.11': + resolution: {integrity: sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==} - "@noble/curves@2.2.0": - resolution: - { - integrity: sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ==, - } - engines: { node: ">= 20.19.0" } + '@noble/curves@2.2.0': + resolution: {integrity: sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ==} + engines: {node: '>= 20.19.0'} - "@noble/curves@2.3.0": - resolution: - { - integrity: sha512-v7cY+4oWYPQszRj6ZFGzTVL7uP2TaLo1xMhWHzYC5wj0ZhOXQ5x+sBre8rF3hi8cAoi0bh1qXoovoOkdFtvqEg==, - } - engines: { node: ">= 20.19.0" } + '@noble/curves@2.3.0': + resolution: {integrity: sha512-v7cY+4oWYPQszRj6ZFGzTVL7uP2TaLo1xMhWHzYC5wj0ZhOXQ5x+sBre8rF3hi8cAoi0bh1qXoovoOkdFtvqEg==} + engines: {node: '>= 20.19.0'} - "@noble/curves@2.4.0": - resolution: - { - integrity: sha512-P4/62zrgfH33CneE3Dn4WhJVA22YUU0eR51wKIan4NVRvwsA0YnPTwWGpNbpuacSujmSFLvyzpyuR30+fbq2Ew==, - } - engines: { node: ">= 20.19.0" } + '@noble/curves@2.4.0': + resolution: {integrity: sha512-P4/62zrgfH33CneE3Dn4WhJVA22YUU0eR51wKIan4NVRvwsA0YnPTwWGpNbpuacSujmSFLvyzpyuR30+fbq2Ew==} + engines: {node: '>= 20.19.0'} - "@noble/hashes@2.2.0": - resolution: - { - integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==, - } - engines: { node: ">= 20.19.0" } + '@noble/hashes@2.2.0': + resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} + engines: {node: '>= 20.19.0'} - "@noble/hashes@2.3.0": - resolution: - { - integrity: sha512-oN+QwyX7VSHotibwubG3kpzbwKrfnyR6OOO+3Nk/53ADL7FmgHHz4TgrbaYKvvOw09u6QTx0oiH1cNCIOuN0CQ==, - } - engines: { node: ">= 20.19.0" } + '@noble/hashes@2.3.0': + resolution: {integrity: sha512-oN+QwyX7VSHotibwubG3kpzbwKrfnyR6OOO+3Nk/53ADL7FmgHHz4TgrbaYKvvOw09u6QTx0oiH1cNCIOuN0CQ==} + engines: {node: '>= 20.19.0'} - "@noble/hashes@2.4.0": - resolution: - { - integrity: sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==, - } - engines: { node: ">= 20.19.0" } + '@noble/hashes@2.4.0': + resolution: {integrity: sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==} + engines: {node: '>= 20.19.0'} - "@opentelemetry/api-logs@0.222.0": - resolution: - { - integrity: sha512-9mb1If+IF6u0ZVXkHQ6ogEae5HwA6ajIVUgpSDQyRASxft6BSXHvBvPooRle3yFN/fKnCdSOnuu0OC3PLcF6+g==, - } - engines: { node: ">=8.0.0" } + '@opentelemetry/api-logs@0.222.0': + resolution: {integrity: sha512-9mb1If+IF6u0ZVXkHQ6ogEae5HwA6ajIVUgpSDQyRASxft6BSXHvBvPooRle3yFN/fKnCdSOnuu0OC3PLcF6+g==} + engines: {node: '>=8.0.0'} - "@opentelemetry/api@1.9.1": - resolution: - { - integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==, - } - engines: { node: ">=8.0.0" } + '@opentelemetry/api@1.9.1': + resolution: {integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==} + engines: {node: '>=8.0.0'} - "@opentelemetry/configuration@0.222.0": - resolution: - { - integrity: sha512-zNWGmEvyX7CUbS6F6PKi7hf3CF/SffzeBYyWVQAfadZ8hODrvLmqV3IUGVt1SiqyYanRPHc8VuhoO0Qh9OEuug==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/configuration@0.222.0': + resolution: {integrity: sha512-zNWGmEvyX7CUbS6F6PKi7hf3CF/SffzeBYyWVQAfadZ8hODrvLmqV3IUGVt1SiqyYanRPHc8VuhoO0Qh9OEuug==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.9.0 + '@opentelemetry/api': ^1.9.0 - "@opentelemetry/context-async-hooks@2.11.0": - resolution: - { - integrity: sha512-Tr79DyWI8itsBdg+jH+opjfrwLzX+erk1/ExkIwhWoAVjVrJIn2y5+cGjTC0Vy8fyNIA/y8wuJPZwr1T3xCZeQ==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/context-async-hooks@2.11.0': + resolution: {integrity: sha512-Tr79DyWI8itsBdg+jH+opjfrwLzX+erk1/ExkIwhWoAVjVrJIn2y5+cGjTC0Vy8fyNIA/y8wuJPZwr1T3xCZeQ==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" + '@opentelemetry/api': '>=1.0.0 <1.10.0' - "@opentelemetry/core@2.11.0": - resolution: - { - integrity: sha512-7YP44XH0tV6+Mb54x2YGf84i7yi+31MBZlE8JwvozkxyTvXbSp10X7cI7YE49ChJ3shMJoBmCJF3+1QFBJctGA==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/core@2.11.0': + resolution: {integrity: sha512-7YP44XH0tV6+Mb54x2YGf84i7yi+31MBZlE8JwvozkxyTvXbSp10X7cI7YE49ChJ3shMJoBmCJF3+1QFBJctGA==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" + '@opentelemetry/api': '>=1.0.0 <1.10.0' - "@opentelemetry/exporter-logs-otlp-grpc@0.222.0": - resolution: - { - integrity: sha512-HH4Oi/E8HXBKtcjgcVPJGsrg+lSstdw1m93brRdpVj5CjMpyTkv/O0ZYMXP6QXVEaLjjFivtzUu4Y8+i1UJpjw==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/exporter-logs-otlp-grpc@0.222.0': + resolution: {integrity: sha512-HH4Oi/E8HXBKtcjgcVPJGsrg+lSstdw1m93brRdpVj5CjMpyTkv/O0ZYMXP6QXVEaLjjFivtzUu4Y8+i1UJpjw==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.3.0 + '@opentelemetry/api': ^1.3.0 - "@opentelemetry/exporter-logs-otlp-http@0.222.0": - resolution: - { - integrity: sha512-GqwLZohJTf/sttYlOpT1oFTJ9ScYaKnk0sOx4Qe/+KmXYVOa+v94cfnkUkFKDuvTODWhCL50Hz3gvsZD6ngQpg==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/exporter-logs-otlp-http@0.222.0': + resolution: {integrity: sha512-GqwLZohJTf/sttYlOpT1oFTJ9ScYaKnk0sOx4Qe/+KmXYVOa+v94cfnkUkFKDuvTODWhCL50Hz3gvsZD6ngQpg==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.3.0 + '@opentelemetry/api': ^1.3.0 - "@opentelemetry/exporter-logs-otlp-proto@0.222.0": - resolution: - { - integrity: sha512-LlCDJuaznfFPzjHoKXjN/r9T5pgCZpmVheZ/EmwMUhMvpxI7RXDmsdLXoYpl5suYQNkwyXAUZhVEXKe3lev8Hg==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/exporter-logs-otlp-proto@0.222.0': + resolution: {integrity: sha512-LlCDJuaznfFPzjHoKXjN/r9T5pgCZpmVheZ/EmwMUhMvpxI7RXDmsdLXoYpl5suYQNkwyXAUZhVEXKe3lev8Hg==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.3.0 + '@opentelemetry/api': ^1.3.0 - "@opentelemetry/exporter-metrics-otlp-grpc@0.222.0": - resolution: - { - integrity: sha512-nPU2gpQWJfQttf+A71aLkKEOQoO6n6QGs5QTtPagi/rb3Lc1I55bqRXoLQEZsWqWimc8eas2Vo168NkTaByxQw==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/exporter-metrics-otlp-grpc@0.222.0': + resolution: {integrity: sha512-nPU2gpQWJfQttf+A71aLkKEOQoO6n6QGs5QTtPagi/rb3Lc1I55bqRXoLQEZsWqWimc8eas2Vo168NkTaByxQw==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.3.0 + '@opentelemetry/api': ^1.3.0 - "@opentelemetry/exporter-metrics-otlp-http@0.222.0": - resolution: - { - integrity: sha512-6Ko+0bgNP6V4G/RsmNBSk5lO1B/lo9z6tvLpFY3ykPPevXNzFmOW3C9hEmTt0zKCvHovyrol3TYlg4HVb5gwjg==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/exporter-metrics-otlp-http@0.222.0': + resolution: {integrity: sha512-6Ko+0bgNP6V4G/RsmNBSk5lO1B/lo9z6tvLpFY3ykPPevXNzFmOW3C9hEmTt0zKCvHovyrol3TYlg4HVb5gwjg==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.3.0 + '@opentelemetry/api': ^1.3.0 - "@opentelemetry/exporter-metrics-otlp-proto@0.222.0": - resolution: - { - integrity: sha512-s1ZPwS8Ig7cpRmL3kCobPaFbemM81dJ03LNPrsuN32h3mCDvNF2NQ1pRHruOju0P0o1TZ24LkZA685rtQal1KA==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/exporter-metrics-otlp-proto@0.222.0': + resolution: {integrity: sha512-s1ZPwS8Ig7cpRmL3kCobPaFbemM81dJ03LNPrsuN32h3mCDvNF2NQ1pRHruOju0P0o1TZ24LkZA685rtQal1KA==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.3.0 + '@opentelemetry/api': ^1.3.0 - "@opentelemetry/exporter-prometheus@0.222.0": - resolution: - { - integrity: sha512-I7nalnnBZrhlTgjlqsVeEjJGcQCFK5kKAYVk7XTz/cbubvj5fvjLOal/Many0taHF2GIkOWmegsbQ8vbQJjhFg==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/exporter-prometheus@0.222.0': + resolution: {integrity: sha512-I7nalnnBZrhlTgjlqsVeEjJGcQCFK5kKAYVk7XTz/cbubvj5fvjLOal/Many0taHF2GIkOWmegsbQ8vbQJjhFg==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.3.0 + '@opentelemetry/api': ^1.3.0 - "@opentelemetry/exporter-trace-otlp-grpc@0.222.0": - resolution: - { - integrity: sha512-uisilePEdOMa3hIfXW82XXU6FofF8gw3iv+PoboIMWEUBC7XbJB3XnIHSdrSDsqCw3njR/If08qD0yzOY1U9Sg==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/exporter-trace-otlp-grpc@0.222.0': + resolution: {integrity: sha512-uisilePEdOMa3hIfXW82XXU6FofF8gw3iv+PoboIMWEUBC7XbJB3XnIHSdrSDsqCw3njR/If08qD0yzOY1U9Sg==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.3.0 + '@opentelemetry/api': ^1.3.0 - "@opentelemetry/exporter-trace-otlp-http@0.222.0": - resolution: - { - integrity: sha512-RCnPWcHppwiquQ+cV3nWvNwdf0MG1w26e5jewW2T83nTZOlXgcg88sY9ulCVgagGHcq1mj0L0GP6YHgzk2v8oA==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/exporter-trace-otlp-http@0.222.0': + resolution: {integrity: sha512-RCnPWcHppwiquQ+cV3nWvNwdf0MG1w26e5jewW2T83nTZOlXgcg88sY9ulCVgagGHcq1mj0L0GP6YHgzk2v8oA==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.3.0 + '@opentelemetry/api': ^1.3.0 - "@opentelemetry/exporter-trace-otlp-proto@0.222.0": - resolution: - { - integrity: sha512-imLrLzNhnABJt3tUyT63h6MqfZrG3Gdv3TE7+OUQTvwD088RfCUx3rF01lcgfu2KXBFk13vwi0yKZLvFEalkIA==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/exporter-trace-otlp-proto@0.222.0': + resolution: {integrity: sha512-imLrLzNhnABJt3tUyT63h6MqfZrG3Gdv3TE7+OUQTvwD088RfCUx3rF01lcgfu2KXBFk13vwi0yKZLvFEalkIA==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.3.0 + '@opentelemetry/api': ^1.3.0 - "@opentelemetry/exporter-zipkin@2.11.0": - resolution: - { - integrity: sha512-mFibA45yXLEETIj+VcTVycFFe4R91iD41d+r3CU0f3DDWJCrICiHxUIjmYBTCZIuywXEeNo++2lncQeWnH7lWQ==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/exporter-zipkin@2.11.0': + resolution: {integrity: sha512-mFibA45yXLEETIj+VcTVycFFe4R91iD41d+r3CU0f3DDWJCrICiHxUIjmYBTCZIuywXEeNo++2lncQeWnH7lWQ==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.0.0 + '@opentelemetry/api': ^1.0.0 - "@opentelemetry/instrumentation@0.222.0": - resolution: - { - integrity: sha512-fhbRDuAgzPKpq1k5+hX3uS+3QAYNca0on0Ngot/R8dDsQtuFaADeZnG2uSgxABuvcI7S2phAaRhbct9jieeKZw==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/instrumentation@0.222.0': + resolution: {integrity: sha512-fhbRDuAgzPKpq1k5+hX3uS+3QAYNca0on0Ngot/R8dDsQtuFaADeZnG2uSgxABuvcI7S2phAaRhbct9jieeKZw==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.3.0 + '@opentelemetry/api': ^1.3.0 - "@opentelemetry/otlp-exporter-base@0.222.0": - resolution: - { - integrity: sha512-YbywG3veEm2Fb6TbdxRkuquWob6eVWXuA8/Ba1tXz9jHfUqpdE3keilOHEtPboC4CvS1bjeeVfNkWGOOrLj+lw==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/otlp-exporter-base@0.222.0': + resolution: {integrity: sha512-YbywG3veEm2Fb6TbdxRkuquWob6eVWXuA8/Ba1tXz9jHfUqpdE3keilOHEtPboC4CvS1bjeeVfNkWGOOrLj+lw==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.3.0 + '@opentelemetry/api': ^1.3.0 - "@opentelemetry/otlp-grpc-exporter-base@0.222.0": - resolution: - { - integrity: sha512-Kw5WqDBYYpCgY+edHWZS/Jp3bdguqNkCyEWOsqFhf8RmtcEuWYzPFA9i+L6UsNoJXTs8ngeQB6dwELH1czNYjA==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/otlp-grpc-exporter-base@0.222.0': + resolution: {integrity: sha512-Kw5WqDBYYpCgY+edHWZS/Jp3bdguqNkCyEWOsqFhf8RmtcEuWYzPFA9i+L6UsNoJXTs8ngeQB6dwELH1czNYjA==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.3.0 + '@opentelemetry/api': ^1.3.0 - "@opentelemetry/otlp-transformer@0.222.0": - resolution: - { - integrity: sha512-/F3BZ89+CJQnZkMh2tCrtcdB+XT2Dxhj4FFE+WPQ//413hmFL0/RfEX6vgOIWGhiSzrkHWTK3+6SiT7K5/g/jQ==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/otlp-transformer@0.222.0': + resolution: {integrity: sha512-/F3BZ89+CJQnZkMh2tCrtcdB+XT2Dxhj4FFE+WPQ//413hmFL0/RfEX6vgOIWGhiSzrkHWTK3+6SiT7K5/g/jQ==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ^1.3.0 + '@opentelemetry/api': ^1.3.0 - "@opentelemetry/propagator-b3@2.11.0": - resolution: - { - integrity: sha512-ldyRZXx6qsqu9Spqd7rVxo6SNAUJqP8Ir3vwIi4N8xyZLXNl/2XeQmIHvFneiVOqNwWkU+JGFg2O9/T1fefU0w==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/propagator-b3@2.11.0': + resolution: {integrity: sha512-ldyRZXx6qsqu9Spqd7rVxo6SNAUJqP8Ir3vwIi4N8xyZLXNl/2XeQmIHvFneiVOqNwWkU+JGFg2O9/T1fefU0w==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" + '@opentelemetry/api': '>=1.0.0 <1.10.0' - "@opentelemetry/propagator-jaeger@2.11.0": - resolution: - { - integrity: sha512-RUOqgoIqXOPQTOhpBrs07Y8sBlxVoLY5Fka6ueZ0prW+k6fWQsba/nHDY4gm+gmfuwtRqbX5Y9YKhDvktjbIqQ==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/propagator-jaeger@2.11.0': + resolution: {integrity: sha512-RUOqgoIqXOPQTOhpBrs07Y8sBlxVoLY5Fka6ueZ0prW+k6fWQsba/nHDY4gm+gmfuwtRqbX5Y9YKhDvktjbIqQ==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" + '@opentelemetry/api': '>=1.0.0 <1.10.0' - "@opentelemetry/resources@2.11.0": - resolution: - { - integrity: sha512-Ie7+8q8MDF4FAEQCKVMTx3ReUvxiIAgIiiW3c9JdmP8+HMcDy20puT+AHjexnExgnbvBxjQ9fjkFDWrikJ2jQA==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/resources@2.11.0': + resolution: {integrity: sha512-Ie7+8q8MDF4FAEQCKVMTx3ReUvxiIAgIiiW3c9JdmP8+HMcDy20puT+AHjexnExgnbvBxjQ9fjkFDWrikJ2jQA==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ">=1.3.0 <1.10.0" + '@opentelemetry/api': '>=1.3.0 <1.10.0' - "@opentelemetry/sdk-logs@0.222.0": - resolution: - { - integrity: sha512-+19YHODIjaUCArxleaJtuufFZVpz/xvvK+VllQqE+W8hHolxdoRwHfK/s667zezwh1hkx6FFF+oYzetYgqK+Bg==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/sdk-logs@0.222.0': + resolution: {integrity: sha512-+19YHODIjaUCArxleaJtuufFZVpz/xvvK+VllQqE+W8hHolxdoRwHfK/s667zezwh1hkx6FFF+oYzetYgqK+Bg==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ">=1.4.0 <1.10.0" + '@opentelemetry/api': '>=1.4.0 <1.10.0' - "@opentelemetry/sdk-metrics@2.11.0": - resolution: - { - integrity: sha512-7GXXcObyHyDUUSG+L+kJoquty01bzm7ivE7+SSgXXJcHuPzGviptxwARmI2c+bnnxjexGQbJnyNlN8HxBP/Y7A==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/sdk-metrics@2.11.0': + resolution: {integrity: sha512-7GXXcObyHyDUUSG+L+kJoquty01bzm7ivE7+SSgXXJcHuPzGviptxwARmI2c+bnnxjexGQbJnyNlN8HxBP/Y7A==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ">=1.9.0 <1.10.0" + '@opentelemetry/api': '>=1.9.0 <1.10.0' - "@opentelemetry/sdk-node@0.222.0": - resolution: - { - integrity: sha512-t8tlFN/ezYV7iI4k6u3t2jFbIReX99Z0iVMVSYLJscE4McxIW9YGHhdOldeY1elHeoq8mjEO4B9s4Fk7+zJbsg==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/sdk-node@0.222.0': + resolution: {integrity: sha512-t8tlFN/ezYV7iI4k6u3t2jFbIReX99Z0iVMVSYLJscE4McxIW9YGHhdOldeY1elHeoq8mjEO4B9s4Fk7+zJbsg==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ">=1.3.0 <1.10.0" + '@opentelemetry/api': '>=1.3.0 <1.10.0' - "@opentelemetry/sdk-trace-base@2.11.0": - resolution: - { - integrity: sha512-H19x/TX/LZdqiYOjM7fqtSxwlplC5pgelavqbQdHbhdq0q/AI/TGkM2dfGuuynTXmJPeF2HoZVoPDu+TGoW78A==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/sdk-trace-base@2.11.0': + resolution: {integrity: sha512-H19x/TX/LZdqiYOjM7fqtSxwlplC5pgelavqbQdHbhdq0q/AI/TGkM2dfGuuynTXmJPeF2HoZVoPDu+TGoW78A==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ">=1.3.0 <1.10.0" + '@opentelemetry/api': '>=1.3.0 <1.10.0' - "@opentelemetry/sdk-trace-node@2.11.0": - resolution: - { - integrity: sha512-CuvCMJmZxswhNLlM2LfuLOW3h3fZujA4hsG4B+Sz4dX2zvaXO8Ng74cnDHWD64gLszTlhiG3c0iNUjj4g+0/sA==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/sdk-trace-node@2.11.0': + resolution: {integrity: sha512-CuvCMJmZxswhNLlM2LfuLOW3h3fZujA4hsG4B+Sz4dX2zvaXO8Ng74cnDHWD64gLszTlhiG3c0iNUjj4g+0/sA==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" + '@opentelemetry/api': '>=1.0.0 <1.10.0' - "@opentelemetry/sdk-trace@2.11.0": - resolution: - { - integrity: sha512-fFnTqGm8/G73GQVnxYi7LXa1ZVYEUvgL6XI1LpvV0bPC7WQ/ZGgKxCSl8FnlZBKto9JHHEFTO6s6CUpvvtwFrA==, - } - engines: { node: ^18.19.0 || >=20.6.0 } + '@opentelemetry/sdk-trace@2.11.0': + resolution: {integrity: sha512-fFnTqGm8/G73GQVnxYi7LXa1ZVYEUvgL6XI1LpvV0bPC7WQ/ZGgKxCSl8FnlZBKto9JHHEFTO6s6CUpvvtwFrA==} + engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: - "@opentelemetry/api": ">=1.3.0 <1.10.0" + '@opentelemetry/api': '>=1.3.0 <1.10.0' - "@opentelemetry/semantic-conventions@1.43.0": - resolution: - { - integrity: sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==, - } - engines: { node: ">=14" } + '@opentelemetry/semantic-conventions@1.43.0': + resolution: {integrity: sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==} + engines: {node: '>=14'} - "@oxc-project/types@0.146.0": - resolution: - { - integrity: sha512-XC0QsnnhVe7sLIWmYmdPw7x5P0h4W8vUU3Nv1ySgWXtvCz8NizoAEpGXA0sOYoJQV2Rl13LgURAHQ5cI5ILCSA==, - } + '@oxc-project/types@0.146.0': + resolution: {integrity: sha512-XC0QsnnhVe7sLIWmYmdPw7x5P0h4W8vUU3Nv1ySgWXtvCz8NizoAEpGXA0sOYoJQV2Rl13LgURAHQ5cI5ILCSA==} - "@peculiar/asn1-android@2.9.4": - resolution: - { - integrity: sha512-SYHm4SoWSI0nRCoos6jpGusIqhPH9bbGBqv7ohlZ+H6BunrDzzQPk2ePgDuEUzV82OdvbLgtW4twUDwhU9P3YQ==, - } - engines: { node: ">=14" } + '@peculiar/asn1-android@2.9.4': + resolution: {integrity: sha512-SYHm4SoWSI0nRCoos6jpGusIqhPH9bbGBqv7ohlZ+H6BunrDzzQPk2ePgDuEUzV82OdvbLgtW4twUDwhU9P3YQ==} + engines: {node: '>=14'} - "@peculiar/asn1-cms@2.9.4": - resolution: - { - integrity: sha512-cben7oxmQsUGZqotus7yt0srYdncOT6RNWcTQ77T2RFOXejYVYkXadrfePdRcrVpO9K95IRLKKglG2k38jKXuw==, - } - engines: { node: ">=14" } + '@peculiar/asn1-cms@2.9.4': + resolution: {integrity: sha512-cben7oxmQsUGZqotus7yt0srYdncOT6RNWcTQ77T2RFOXejYVYkXadrfePdRcrVpO9K95IRLKKglG2k38jKXuw==} + engines: {node: '>=14'} - "@peculiar/asn1-csr@2.9.4": - resolution: - { - integrity: sha512-xd4YN4vpRjkDAQWVfZZkeu12IEND7DOpkqaHSIHxZl1uggUNa9Ju0QxY2jHvDAS9pP0zhRBytg8ifsnGo3V0jw==, - } - engines: { node: ">=14" } + '@peculiar/asn1-csr@2.9.4': + resolution: {integrity: sha512-xd4YN4vpRjkDAQWVfZZkeu12IEND7DOpkqaHSIHxZl1uggUNa9Ju0QxY2jHvDAS9pP0zhRBytg8ifsnGo3V0jw==} + engines: {node: '>=14'} - "@peculiar/asn1-ecc@2.9.4": - resolution: - { - integrity: sha512-JJXefFshRAuVAjWQo/39bkg1ywc1VaiO44S8RRC+Ykvf/u2KDmYffoDb0ZBPCR5uJy4AGKQhl8mX+Q8ShcWaXQ==, - } - engines: { node: ">=14" } + '@peculiar/asn1-ecc@2.9.4': + resolution: {integrity: sha512-JJXefFshRAuVAjWQo/39bkg1ywc1VaiO44S8RRC+Ykvf/u2KDmYffoDb0ZBPCR5uJy4AGKQhl8mX+Q8ShcWaXQ==} + engines: {node: '>=14'} - "@peculiar/asn1-pfx@2.9.4": - resolution: - { - integrity: sha512-khuGzHTzNzk4GDlIBEILyIs6Lce0yn0ZBdoI9v93kmNncfZRhD+AQ5ODFqdhvoE8cMJF/JMTQ8yA+t1D14kqCw==, - } - engines: { node: ">=14" } + '@peculiar/asn1-pfx@2.9.4': + resolution: {integrity: sha512-khuGzHTzNzk4GDlIBEILyIs6Lce0yn0ZBdoI9v93kmNncfZRhD+AQ5ODFqdhvoE8cMJF/JMTQ8yA+t1D14kqCw==} + engines: {node: '>=14'} - "@peculiar/asn1-pkcs8@2.9.4": - resolution: - { - integrity: sha512-duRdotlUx9eDZe6QrQpQKl61RbWykCHBCkKayP8V8XdEFwlKHZ8qGGDMyS6Pye7OX7nLFttTTpRkJeet78ckwQ==, - } - engines: { node: ">=14" } + '@peculiar/asn1-pkcs8@2.9.4': + resolution: {integrity: sha512-duRdotlUx9eDZe6QrQpQKl61RbWykCHBCkKayP8V8XdEFwlKHZ8qGGDMyS6Pye7OX7nLFttTTpRkJeet78ckwQ==} + engines: {node: '>=14'} - "@peculiar/asn1-pkcs9@2.9.4": - resolution: - { - integrity: sha512-kaL4cNxBpdQE2dKlyZBqz4ygCrwffO+8wfoxTEqM1Z8RadvCeELBRzcv0dzM8aY9azHMwODO5nxU65zXmhToOQ==, - } - engines: { node: ">=14" } + '@peculiar/asn1-pkcs9@2.9.4': + resolution: {integrity: sha512-kaL4cNxBpdQE2dKlyZBqz4ygCrwffO+8wfoxTEqM1Z8RadvCeELBRzcv0dzM8aY9azHMwODO5nxU65zXmhToOQ==} + engines: {node: '>=14'} - "@peculiar/asn1-rsa@2.9.4": - resolution: - { - integrity: sha512-pZ96eD1PptovcWQ/GSmuNFXd/7EQJNlKfDaNCyE2rx3W0v6QFelkzquVqRSRyyDXXCYD69ZXJDzZ8GhIiQzKoA==, - } - engines: { node: ">=14" } + '@peculiar/asn1-rsa@2.9.4': + resolution: {integrity: sha512-pZ96eD1PptovcWQ/GSmuNFXd/7EQJNlKfDaNCyE2rx3W0v6QFelkzquVqRSRyyDXXCYD69ZXJDzZ8GhIiQzKoA==} + engines: {node: '>=14'} - "@peculiar/asn1-schema@2.9.4": - resolution: - { - integrity: sha512-GjzePcT9Iw8NzeOPf73iNS9xM+TBhd/FilAfP+RQGkTMQJTVWtytN3JHJACCjf/ABNau5S7mS3g+DcuxmRgYEg==, - } - engines: { node: ">=14" } + '@peculiar/asn1-schema@2.9.4': + resolution: {integrity: sha512-GjzePcT9Iw8NzeOPf73iNS9xM+TBhd/FilAfP+RQGkTMQJTVWtytN3JHJACCjf/ABNau5S7mS3g+DcuxmRgYEg==} + engines: {node: '>=14'} - "@peculiar/asn1-x509-attr@2.9.4": - resolution: - { - integrity: sha512-ehQXbpQaQYycgu8OrvigwSPTFfVRcu0ECNYCWw+yzBp02Lw5paRqzzhUpfOgO2K38+WfFZuEz/0RPtam5g0OMg==, - } - engines: { node: ">=14" } + '@peculiar/asn1-x509-attr@2.9.4': + resolution: {integrity: sha512-ehQXbpQaQYycgu8OrvigwSPTFfVRcu0ECNYCWw+yzBp02Lw5paRqzzhUpfOgO2K38+WfFZuEz/0RPtam5g0OMg==} + engines: {node: '>=14'} - "@peculiar/asn1-x509@2.9.4": - resolution: - { - integrity: sha512-CxhBo/RdEbMMob7T31ZdQjGuoyRFLVwrDzTn25bihzBasRg9kRm/0IxIPvhgQtcK/9dNcO1XQL2fuPugwELL0Q==, - } - engines: { node: ">=14" } + '@peculiar/asn1-x509@2.9.4': + resolution: {integrity: sha512-CxhBo/RdEbMMob7T31ZdQjGuoyRFLVwrDzTn25bihzBasRg9kRm/0IxIPvhgQtcK/9dNcO1XQL2fuPugwELL0Q==} + engines: {node: '>=14'} - "@peculiar/utils@2.0.3": - resolution: - { - integrity: sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==, - } + '@peculiar/utils@2.0.3': + resolution: {integrity: sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==} - "@peculiar/x509@1.14.3": - resolution: - { - integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==, - } - engines: { node: ">=20.0.0" } + '@peculiar/x509@1.14.3': + resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==} + engines: {node: '>=20.0.0'} - "@pinojs/redact@0.4.0": - resolution: - { - integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==, - } + '@pinojs/redact@0.4.0': + resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} - "@protobufjs/aspromise@1.1.2": - resolution: - { - integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==, - } + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - "@protobufjs/base64@1.1.2": - resolution: - { - integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==, - } + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - "@protobufjs/codegen@2.0.5": - resolution: - { - integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==, - } + '@protobufjs/codegen@2.0.5': + resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==} - "@protobufjs/eventemitter@1.1.1": - resolution: - { - integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==, - } + '@protobufjs/eventemitter@1.1.1': + resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==} - "@protobufjs/fetch@1.1.1": - resolution: - { - integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==, - } + '@protobufjs/fetch@1.1.1': + resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==} - "@protobufjs/float@1.0.2": - resolution: - { - integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==, - } + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - "@protobufjs/path@1.1.2": - resolution: - { - integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==, - } + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - "@protobufjs/pool@1.1.0": - resolution: - { - integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==, - } + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - "@protobufjs/utf8@1.1.2": - resolution: - { - integrity: sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==, - } + '@protobufjs/utf8@1.1.2': + resolution: {integrity: sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==} - "@react-native/assets-registry@0.86.3": - resolution: - { - integrity: sha512-TDhgCZA4wjJg84d5A9swiOQYPIWSKEEVdg9IwMFZDupQzW/F3QoLUrfAJOcalgqTDA9/buTB8awhE3Whwg6u9Q==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + '@react-native/assets-registry@0.86.3': + resolution: {integrity: sha512-TDhgCZA4wjJg84d5A9swiOQYPIWSKEEVdg9IwMFZDupQzW/F3QoLUrfAJOcalgqTDA9/buTB8awhE3Whwg6u9Q==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} - "@react-native/babel-plugin-codegen@0.86.3": - resolution: - { - integrity: sha512-O6Xza4JBGPIU8J7YbKTyBoYL4thpy8jMW/oaLDWdAyOwYHKIjK47pAL5HUEbOe2bWz2PEKjbYRF2ApkJv1ottQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + '@react-native/babel-plugin-codegen@0.86.3': + resolution: {integrity: sha512-O6Xza4JBGPIU8J7YbKTyBoYL4thpy8jMW/oaLDWdAyOwYHKIjK47pAL5HUEbOe2bWz2PEKjbYRF2ApkJv1ottQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} - "@react-native/codegen@0.86.3": - resolution: - { - integrity: sha512-Ux4jHi0fh+bdtVEcL0gaPLbY56V+SvFUDl/8sRAE1jdb4k+o7fT/4Nc29yz4X+qfjstkSqObQTMBGhdzxH9JvA==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + '@react-native/codegen@0.86.3': + resolution: {integrity: sha512-Ux4jHi0fh+bdtVEcL0gaPLbY56V+SvFUDl/8sRAE1jdb4k+o7fT/4Nc29yz4X+qfjstkSqObQTMBGhdzxH9JvA==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} peerDependencies: - "@babel/core": "*" + '@babel/core': '*' - "@react-native/community-cli-plugin@0.86.3": - resolution: - { - integrity: sha512-qSDL9LQc5mZSZPNczT95WU9YQuPzxBklgON9vLhhqfI0yWIwKInqFx88dQ/uiEXBtf0yossthaQIqA4Ml6bF6g==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + '@react-native/community-cli-plugin@0.86.3': + resolution: {integrity: sha512-qSDL9LQc5mZSZPNczT95WU9YQuPzxBklgON9vLhhqfI0yWIwKInqFx88dQ/uiEXBtf0yossthaQIqA4Ml6bF6g==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} peerDependencies: - "@react-native-community/cli": "*" - "@react-native/metro-config": 0.86.3 + '@react-native-community/cli': '*' + '@react-native/metro-config': 0.86.3 peerDependenciesMeta: - "@react-native-community/cli": + '@react-native-community/cli': optional: true - "@react-native/metro-config": + '@react-native/metro-config': optional: true - "@react-native/debugger-frontend@0.86.3": - resolution: - { - integrity: sha512-TQmeofQ0PcuylhhlleOeuzHYZfbrgm3gayXzowqUEzgRisTm1D40/J3ggqs7XkQi5HP5ZA3n8dHmKL9vIzPcsw==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + '@react-native/debugger-frontend@0.86.3': + resolution: {integrity: sha512-TQmeofQ0PcuylhhlleOeuzHYZfbrgm3gayXzowqUEzgRisTm1D40/J3ggqs7XkQi5HP5ZA3n8dHmKL9vIzPcsw==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} - "@react-native/debugger-shell@0.86.3": - resolution: - { - integrity: sha512-O4ds+J7xZfxkbih9T+cAGegBdvKSPKYJm/lDgC9CpEjFMkmzWTpVLU3Qsv9sqZuo58z+sGhIcJfPsCFFWHpqbQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + '@react-native/debugger-shell@0.86.3': + resolution: {integrity: sha512-O4ds+J7xZfxkbih9T+cAGegBdvKSPKYJm/lDgC9CpEjFMkmzWTpVLU3Qsv9sqZuo58z+sGhIcJfPsCFFWHpqbQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} - "@react-native/dev-middleware@0.86.3": - resolution: - { - integrity: sha512-LiEPTqTg/63bYUnrPyHLfjTDCNhA/+CUqI1+DsA9tYyewtSbULd5awsva6SgE10I+2iMhgKXS3ymkhU/kSCrGA==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + '@react-native/dev-middleware@0.86.3': + resolution: {integrity: sha512-LiEPTqTg/63bYUnrPyHLfjTDCNhA/+CUqI1+DsA9tYyewtSbULd5awsva6SgE10I+2iMhgKXS3ymkhU/kSCrGA==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} - "@react-native/gradle-plugin@0.86.3": - resolution: - { - integrity: sha512-lxmx0GqLEWRIpZfpYFXlYVIs3ENQwaW6Vmp6oi29l2GoQJ1wZfFZRdMimDWlGEk8LKfHar3QH3iaPMkTcK9lEQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + '@react-native/gradle-plugin@0.86.3': + resolution: {integrity: sha512-lxmx0GqLEWRIpZfpYFXlYVIs3ENQwaW6Vmp6oi29l2GoQJ1wZfFZRdMimDWlGEk8LKfHar3QH3iaPMkTcK9lEQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} - "@react-native/js-polyfills@0.86.3": - resolution: - { - integrity: sha512-eYIJ0es967+tePBFQDnl/gidVFxLns3fnbiK6rxscQrGodvuUO6hwxpQnfNynJ8MjbbndImXihXjcnJdc7SzJg==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + '@react-native/js-polyfills@0.86.3': + resolution: {integrity: sha512-eYIJ0es967+tePBFQDnl/gidVFxLns3fnbiK6rxscQrGodvuUO6hwxpQnfNynJ8MjbbndImXihXjcnJdc7SzJg==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} - "@react-native/normalize-colors@0.86.3": - resolution: - { - integrity: sha512-Cv3CDkprb67GrzuaS9BGbBJC/6G4lIw3nyKOHRKTqTTum4bn37y5+R0Z04L8mcbQN85eEohNrRwb7IOM4j6uvg==, - } + '@react-native/normalize-colors@0.86.3': + resolution: {integrity: sha512-Cv3CDkprb67GrzuaS9BGbBJC/6G4lIw3nyKOHRKTqTTum4bn37y5+R0Z04L8mcbQN85eEohNrRwb7IOM4j6uvg==} - "@react-native/virtualized-lists@0.86.3": - resolution: - { - integrity: sha512-1j44NEyNn05Ut40vHAmoSWbsIcybFkMAOBTwQt1PrESyfSS+qBoyU1LGIogNva0VIa0rQyEC5PzbA7R4/7Nhyw==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + '@react-native/virtualized-lists@0.86.3': + resolution: {integrity: sha512-1j44NEyNn05Ut40vHAmoSWbsIcybFkMAOBTwQt1PrESyfSS+qBoyU1LGIogNva0VIa0rQyEC5PzbA7R4/7Nhyw==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} peerDependencies: - "@types/react": ^19.2.0 - react: "*" + '@types/react': ^19.2.0 + react: '*' react-native: 0.86.3 peerDependenciesMeta: - "@types/react": + '@types/react': optional: true - "@redis/bloom@5.12.1": - resolution: - { - integrity: sha512-PUUfv+ms7jgPSBVoo/DN4AkPHj4D5TZSd6SbJX7egzBplkYUcKmHRE8RKia7UtZ8bSQbLguLvxVO+asKtQfZWA==, - } - engines: { node: ">= 18.19.0" } + '@redis/bloom@5.12.1': + resolution: {integrity: sha512-PUUfv+ms7jgPSBVoo/DN4AkPHj4D5TZSd6SbJX7egzBplkYUcKmHRE8RKia7UtZ8bSQbLguLvxVO+asKtQfZWA==} + engines: {node: '>= 18.19.0'} peerDependencies: - "@redis/client": ^5.12.1 + '@redis/client': ^5.12.1 - "@redis/client@5.12.1": - resolution: - { - integrity: sha512-7aPGWeqA3uFm43o19umzdl16CEjK/JQGtSXVPevplTaOU3VJA/rseBC1QvYUz9lLDIMBimc4SW/zrW4S89BaCA==, - } - engines: { node: ">= 18.19.0" } + '@redis/client@5.12.1': + resolution: {integrity: sha512-7aPGWeqA3uFm43o19umzdl16CEjK/JQGtSXVPevplTaOU3VJA/rseBC1QvYUz9lLDIMBimc4SW/zrW4S89BaCA==} + engines: {node: '>= 18.19.0'} peerDependencies: - "@node-rs/xxhash": ^1.1.0 - "@opentelemetry/api": ">=1 <2" + '@node-rs/xxhash': ^1.1.0 + '@opentelemetry/api': '>=1 <2' peerDependenciesMeta: - "@node-rs/xxhash": + '@node-rs/xxhash': optional: true - "@opentelemetry/api": + '@opentelemetry/api': optional: true - "@redis/json@5.12.1": - resolution: - { - integrity: sha512-eOze75esLve4vfqDel7aMX08CNaiLLQS2fV8mpRN9NxPe1rVR4vQyYiW/OgtGUysF6QOr9ANhfxABKNOJfXdKg==, - } - engines: { node: ">= 18.19.0" } + '@redis/json@5.12.1': + resolution: {integrity: sha512-eOze75esLve4vfqDel7aMX08CNaiLLQS2fV8mpRN9NxPe1rVR4vQyYiW/OgtGUysF6QOr9ANhfxABKNOJfXdKg==} + engines: {node: '>= 18.19.0'} peerDependencies: - "@redis/client": ^5.12.1 + '@redis/client': ^5.12.1 - "@redis/search@5.12.1": - resolution: - { - integrity: sha512-ItlxbxC9cKI6IU1TLWoczwJCRb6TdmkEpWv05UrPawqaAnWGRu3rcIqsc5vN483T2fSociuyV1UkWIL5I4//2w==, - } - engines: { node: ">= 18.19.0" } + '@redis/search@5.12.1': + resolution: {integrity: sha512-ItlxbxC9cKI6IU1TLWoczwJCRb6TdmkEpWv05UrPawqaAnWGRu3rcIqsc5vN483T2fSociuyV1UkWIL5I4//2w==} + engines: {node: '>= 18.19.0'} peerDependencies: - "@redis/client": ^5.12.1 + '@redis/client': ^5.12.1 - "@redis/time-series@5.12.1": - resolution: - { - integrity: sha512-c6JL6E3EcZJuNqKFz+KM+l9l5mpcQiKvTwgA3blt5glWJ8hjDk0yeHN3beE/MpqYIQ8UEX44ItQzgkE/gCBELQ==, - } - engines: { node: ">= 18.19.0" } + '@redis/time-series@5.12.1': + resolution: {integrity: sha512-c6JL6E3EcZJuNqKFz+KM+l9l5mpcQiKvTwgA3blt5glWJ8hjDk0yeHN3beE/MpqYIQ8UEX44ItQzgkE/gCBELQ==} + engines: {node: '>= 18.19.0'} peerDependencies: - "@redis/client": ^5.12.1 + '@redis/client': ^5.12.1 - "@rolldown/binding-android-arm-eabi@1.2.5": - resolution: - { - integrity: sha512-DLe/i+l8ynIBY7XEQ191TeZvCoowIGa18R+dIV30GW7DiOtp74i/xX8hs8GUjW5ARV7VZuie3d6AumSmCwbeRA==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-android-arm-eabi@1.2.5': + resolution: {integrity: sha512-DLe/i+l8ynIBY7XEQ191TeZvCoowIGa18R+dIV30GW7DiOtp74i/xX8hs8GUjW5ARV7VZuie3d6AumSmCwbeRA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - "@rolldown/binding-android-arm64@1.2.5": - resolution: - { - integrity: sha512-zXcwKlQApYAOELHd8PwKDFkagYF9Wy4e0RJ+0qnzl9Pjnpj75TEG8ufv40p2J7kCEfwZAsNiuzRIyNNMWT38ig==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-android-arm64@1.2.5': + resolution: {integrity: sha512-zXcwKlQApYAOELHd8PwKDFkagYF9Wy4e0RJ+0qnzl9Pjnpj75TEG8ufv40p2J7kCEfwZAsNiuzRIyNNMWT38ig==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - "@rolldown/binding-darwin-arm64@1.2.5": - resolution: - { - integrity: sha512-dK4QakI42nzWgJT5sm4y4y/O//D4OxM75/cH28RLV+nzIN9AY+YsbuUVrUTjlLjXR6vpyxFbSsbmNuJ6BP9sww==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-darwin-arm64@1.2.5': + resolution: {integrity: sha512-dK4QakI42nzWgJT5sm4y4y/O//D4OxM75/cH28RLV+nzIN9AY+YsbuUVrUTjlLjXR6vpyxFbSsbmNuJ6BP9sww==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - "@rolldown/binding-darwin-x64@1.2.5": - resolution: - { - integrity: sha512-fqSALaUu1Wjd1nK2uW2kJDWdLCc8lx1IcY+MTY26Aurfdx19anlzhqXOgCFbBFQnlFDTn4TC1/7Nz4Bl2mLP3A==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-darwin-x64@1.2.5': + resolution: {integrity: sha512-fqSALaUu1Wjd1nK2uW2kJDWdLCc8lx1IcY+MTY26Aurfdx19anlzhqXOgCFbBFQnlFDTn4TC1/7Nz4Bl2mLP3A==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - "@rolldown/binding-freebsd-x64@1.2.5": - resolution: - { - integrity: sha512-/vCnNxlkxs9tKxNDcyWUePpJ/PgTzxIaVhoM5SmG8UV+GR/IcPam4VYxi7GIMo7PSDuNqlJqvprqii9NqqVCMw==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-freebsd-x64@1.2.5': + resolution: {integrity: sha512-/vCnNxlkxs9tKxNDcyWUePpJ/PgTzxIaVhoM5SmG8UV+GR/IcPam4VYxi7GIMo7PSDuNqlJqvprqii9NqqVCMw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - "@rolldown/binding-linux-arm-gnueabihf@1.2.5": - resolution: - { - integrity: sha512-abk0NLA519LxRCszmbE0jYKuQ9YPocOXTiOXOo6Yr+YAT95VH+PtqYAjOJvGKt3viEd/x4qzabAlwd5bHOOARg==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-linux-arm-gnueabihf@1.2.5': + resolution: {integrity: sha512-abk0NLA519LxRCszmbE0jYKuQ9YPocOXTiOXOo6Yr+YAT95VH+PtqYAjOJvGKt3viEd/x4qzabAlwd5bHOOARg==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - "@rolldown/binding-linux-arm64-gnu@1.2.5": - resolution: - { - integrity: sha512-Y7eALiJ8lr0M2HH103Js+g7V34wf6snlpZLAsHI90uLhr3PVlNsbFVAXJC9d/V6BnPyKtpSwI+NcB/RLxsQxuA==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-linux-arm64-gnu@1.2.5': + resolution: {integrity: sha512-Y7eALiJ8lr0M2HH103Js+g7V34wf6snlpZLAsHI90uLhr3PVlNsbFVAXJC9d/V6BnPyKtpSwI+NcB/RLxsQxuA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - "@rolldown/binding-linux-arm64-musl@1.2.5": - resolution: - { - integrity: sha512-xMvZgnbZg4YVnR/AX2b3oOPDTFYJvUVaJg5FedA/LuvexAtXibZQej4cnTkw3rjsJ/ggUROB64TdtETiim+FYA==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-linux-arm64-musl@1.2.5': + resolution: {integrity: sha512-xMvZgnbZg4YVnR/AX2b3oOPDTFYJvUVaJg5FedA/LuvexAtXibZQej4cnTkw3rjsJ/ggUROB64TdtETiim+FYA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - "@rolldown/binding-linux-ppc64-gnu@1.2.5": - resolution: - { - integrity: sha512-GRjeqTUDHTo5GwntsLaAMcBahG3nlpjftXWZLN73HiYQlhwEowvarFgQnRnQZtIp4keXX7quXFbG38uPZBa2EA==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-linux-ppc64-gnu@1.2.5': + resolution: {integrity: sha512-GRjeqTUDHTo5GwntsLaAMcBahG3nlpjftXWZLN73HiYQlhwEowvarFgQnRnQZtIp4keXX7quXFbG38uPZBa2EA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - "@rolldown/binding-linux-s390x-gnu@1.2.5": - resolution: - { - integrity: sha512-vLNTR45F2Uwc8AufkNXPmB4VliaXs+FvcheEogIzOXzO4l+LzieXF5A/TWxLy5HtqpsRCHUfd0lPVrrdgXdLHQ==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-linux-s390x-gnu@1.2.5': + resolution: {integrity: sha512-vLNTR45F2Uwc8AufkNXPmB4VliaXs+FvcheEogIzOXzO4l+LzieXF5A/TWxLy5HtqpsRCHUfd0lPVrrdgXdLHQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - "@rolldown/binding-linux-x64-gnu@1.2.5": - resolution: - { - integrity: sha512-Mgj59/HTuYeK9Gz2MA+mBWKnHsAgkBSec15ZMb1st3oIfFbX7gCjOae7GydHhzcyQi9Z/7M1QuN9bR3oFqF0jQ==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-linux-x64-gnu@1.2.5': + resolution: {integrity: sha512-Mgj59/HTuYeK9Gz2MA+mBWKnHsAgkBSec15ZMb1st3oIfFbX7gCjOae7GydHhzcyQi9Z/7M1QuN9bR3oFqF0jQ==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - "@rolldown/binding-linux-x64-musl@1.2.5": - resolution: - { - integrity: sha512-mY8AP0/ichsbhAxGnLa3d3+MwV0EfgrPND2bplI3Ym8T6R2pJ0N87bvrKVwNXmdy3jnr6eQBecdqx/HMknBmpA==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-linux-x64-musl@1.2.5': + resolution: {integrity: sha512-mY8AP0/ichsbhAxGnLa3d3+MwV0EfgrPND2bplI3Ym8T6R2pJ0N87bvrKVwNXmdy3jnr6eQBecdqx/HMknBmpA==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - "@rolldown/binding-openharmony-arm64@1.2.5": - resolution: - { - integrity: sha512-8SLssA2oweAxyRgDp789ACfRb/3P+zNRJpzZxSizxF9m8NUDQ4+3xjo8ttjhVGGw6Qxb70oZiEtIjaKikCO7Yw==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-openharmony-arm64@1.2.5': + resolution: {integrity: sha512-8SLssA2oweAxyRgDp789ACfRb/3P+zNRJpzZxSizxF9m8NUDQ4+3xjo8ttjhVGGw6Qxb70oZiEtIjaKikCO7Yw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - "@rolldown/binding-win32-arm64-msvc@1.2.5": - resolution: - { - integrity: sha512-vGbruD5zquhoc8D9SViXgN2FBJtNdTyQ4DtG+SWiEGlJiAzoKcZ2xp+xuXCffhubVdt0NJlTZqkeRuERy7g8Cw==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-win32-arm64-msvc@1.2.5': + resolution: {integrity: sha512-vGbruD5zquhoc8D9SViXgN2FBJtNdTyQ4DtG+SWiEGlJiAzoKcZ2xp+xuXCffhubVdt0NJlTZqkeRuERy7g8Cw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - "@rolldown/binding-win32-x64-msvc@1.2.5": - resolution: - { - integrity: sha512-e/SXpgISz+IoqVcSSI0rx/d/he8zqLex+/rCWpnHpmVfmPIUjag9H6P7zotf0gJHwPUhQxZ/mF8tr6acebT9yw==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@rolldown/binding-win32-x64-msvc@1.2.5': + resolution: {integrity: sha512-e/SXpgISz+IoqVcSSI0rx/d/he8zqLex+/rCWpnHpmVfmPIUjag9H6P7zotf0gJHwPUhQxZ/mF8tr6acebT9yw==} + engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - "@rolldown/pluginutils@1.0.1": - resolution: - { - integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==, - } + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - "@scure/base@2.2.0": - resolution: - { - integrity: sha512-b8XEupJibegiXV+tDUseI8oLQc8ei3d/4Jkb2RpbHh3MfE054ov3uIz2dhFkB3FI8iwYkEh0gGCApkrYggkPNg==, - } + '@scure/base@2.2.0': + resolution: {integrity: sha512-b8XEupJibegiXV+tDUseI8oLQc8ei3d/4Jkb2RpbHh3MfE054ov3uIz2dhFkB3FI8iwYkEh0gGCApkrYggkPNg==} - "@scure/base@2.3.0": - resolution: - { - integrity: sha512-NsG6Y03tY6R5BUis4FdVtHVkur0U6FOzskgs9ZXNl78CUc9fkZ78HmENUle1nSOkCasDmbubmWD9qwB7mm4PZA==, - } + '@scure/base@2.3.0': + resolution: {integrity: sha512-NsG6Y03tY6R5BUis4FdVtHVkur0U6FOzskgs9ZXNl78CUc9fkZ78HmENUle1nSOkCasDmbubmWD9qwB7mm4PZA==} - "@scure/base@2.4.0": - resolution: - { - integrity: sha512-thZ1TuJwFwBblOhgsjDKvvGirBxNp+wSvY/DR6tJBJOTDhdAAcHJ8Vbr2eFnqaxeca4+t0i9KBf+uHYGWwZORg==, - } + '@scure/base@2.4.0': + resolution: {integrity: sha512-thZ1TuJwFwBblOhgsjDKvvGirBxNp+wSvY/DR6tJBJOTDhdAAcHJ8Vbr2eFnqaxeca4+t0i9KBf+uHYGWwZORg==} - "@scure/bip32@2.2.0": - resolution: - { - integrity: sha512-zFr7t2F+a9+5tB7QbarF2HQNYrgjCNaoLAupZdKkrFMYMozJf5zqH2WJCQibMzm1qQ0QogrxVGO3qXfQDYMaQg==, - } + '@scure/bip32@2.2.0': + resolution: {integrity: sha512-zFr7t2F+a9+5tB7QbarF2HQNYrgjCNaoLAupZdKkrFMYMozJf5zqH2WJCQibMzm1qQ0QogrxVGO3qXfQDYMaQg==} - "@scure/bip39@2.2.0": - resolution: - { - integrity: sha512-T/Bj/YvYMNkIPq6EENO6/rcs2e7qTNuyoUXf0KBFDmp0ZDu0H2X4Lq6yC3i0c8PcWkov5EbW+yQZZbdMmk154A==, - } + '@scure/bip39@2.2.0': + resolution: {integrity: sha512-T/Bj/YvYMNkIPq6EENO6/rcs2e7qTNuyoUXf0KBFDmp0ZDu0H2X4Lq6yC3i0c8PcWkov5EbW+yQZZbdMmk154A==} - "@scure/btc-signer@2.3.0": - resolution: - { - integrity: sha512-05oEjx2l4VhT+CBGKqGqE+4R2n+XN7+z+vC5I0edzymHfmTZ8nrHvl0WGgPVaNPkOg/+elEhIB1gRROkunxCRg==, - } + '@scure/btc-signer@2.3.0': + resolution: {integrity: sha512-05oEjx2l4VhT+CBGKqGqE+4R2n+XN7+z+vC5I0edzymHfmTZ8nrHvl0WGgPVaNPkOg/+elEhIB1gRROkunxCRg==} - "@simplewebauthn/server@13.3.3": - resolution: - { - integrity: sha512-LelX/lcy5cjc15A86i/aNxHhB5eU7dd20QsbP0VLAf9e38+SLlsnqCCyecx3xqfGofhmX05h1J9fKRYWxw+luA==, - } - engines: { node: ">=20.0.0" } + '@simplewebauthn/server@13.3.3': + resolution: {integrity: sha512-LelX/lcy5cjc15A86i/aNxHhB5eU7dd20QsbP0VLAf9e38+SLlsnqCCyecx3xqfGofhmX05h1J9fKRYWxw+luA==} + engines: {node: '>=20.0.0'} - "@sinclair/typebox@0.27.12": - resolution: - { - integrity: sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==, - } + '@sinclair/typebox@0.27.12': + resolution: {integrity: sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==} - "@standard-schema/spec@1.1.0": - resolution: - { - integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==, - } + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - "@turbo/darwin-64@2.10.11": - resolution: - { - integrity: sha512-v3R+1R/Ysozyo+p7Ri8MCIbndOvYt3DgPFrGLhrhQHfvyvbxyH3WyJj+A/2JTNmNleuAlh3JUyCV0iSVHIONTA==, - } + '@turbo/darwin-64@2.10.11': + resolution: {integrity: sha512-v3R+1R/Ysozyo+p7Ri8MCIbndOvYt3DgPFrGLhrhQHfvyvbxyH3WyJj+A/2JTNmNleuAlh3JUyCV0iSVHIONTA==} cpu: [x64] os: [darwin] - "@turbo/darwin-arm64@2.10.11": - resolution: - { - integrity: sha512-R0a0CvGAeYYsBgPIgFNB3agGXh6qukjduNhFlwVVX1Ss2IdBJLXmgjytNGmo084bLKS0B6UdLRwKhXMHKKaObQ==, - } + '@turbo/darwin-arm64@2.10.11': + resolution: {integrity: sha512-R0a0CvGAeYYsBgPIgFNB3agGXh6qukjduNhFlwVVX1Ss2IdBJLXmgjytNGmo084bLKS0B6UdLRwKhXMHKKaObQ==} cpu: [arm64] os: [darwin] - "@turbo/linux-64@2.10.11": - resolution: - { - integrity: sha512-dGlY2vg7jpsLjGS1bf9sD/cw1sGMAYbeHGQKGRFxd5Zaj+Ufbj8cNXl/vIit8ueCU97zhL/znn60ZV5iSfZAxw==, - } + '@turbo/linux-64@2.10.11': + resolution: {integrity: sha512-dGlY2vg7jpsLjGS1bf9sD/cw1sGMAYbeHGQKGRFxd5Zaj+Ufbj8cNXl/vIit8ueCU97zhL/znn60ZV5iSfZAxw==} cpu: [x64] os: [android, linux] - "@turbo/linux-arm64@2.10.11": - resolution: - { - integrity: sha512-eSP9+jjsSCBs2x0QpJZlp49dSD1EIMwXH7PsMIhdWk7w6IThhuKJ+jL95JQ2IW7tRjRmdh8gKcKQtrHLD5R5lA==, - } + '@turbo/linux-arm64@2.10.11': + resolution: {integrity: sha512-eSP9+jjsSCBs2x0QpJZlp49dSD1EIMwXH7PsMIhdWk7w6IThhuKJ+jL95JQ2IW7tRjRmdh8gKcKQtrHLD5R5lA==} cpu: [arm64] os: [android, linux] - "@turbo/windows-64@2.10.11": - resolution: - { - integrity: sha512-4aD7edogJ8arK8DOyvjTI2KKwmchD5M/WM4BZgidrtFf7aSgn8Ce2rJnDwmriw980c2cKlHnhXtlGy38VtKB8g==, - } + '@turbo/windows-64@2.10.11': + resolution: {integrity: sha512-4aD7edogJ8arK8DOyvjTI2KKwmchD5M/WM4BZgidrtFf7aSgn8Ce2rJnDwmriw980c2cKlHnhXtlGy38VtKB8g==} cpu: [x64] os: [win32] - "@turbo/windows-arm64@2.10.11": - resolution: - { - integrity: sha512-m8tJkIrTrbQ9O1uHxV0GUq623Zg1678xGna8eMsy4KbygUX/wVFgdZDYV/AxyoyaW/U7nyKoBvaDVwm22p9xqA==, - } + '@turbo/windows-arm64@2.10.11': + resolution: {integrity: sha512-m8tJkIrTrbQ9O1uHxV0GUq623Zg1678xGna8eMsy4KbygUX/wVFgdZDYV/AxyoyaW/U7nyKoBvaDVwm22p9xqA==} cpu: [arm64] os: [win32] - "@types/chai@5.2.3": - resolution: - { - integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==, - } + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - "@types/chrome@0.2.9": - resolution: - { - integrity: sha512-6rXrDPkkWv4D2Q23HqT+iED4voODU5CpOSc2VFgKyecSFItuEsIBvz9CY6jUQ3dd+Q7zo1bnCE9pKRMtkYut5g==, - } + '@types/chrome@0.2.9': + resolution: {integrity: sha512-6rXrDPkkWv4D2Q23HqT+iED4voODU5CpOSc2VFgKyecSFItuEsIBvz9CY6jUQ3dd+Q7zo1bnCE9pKRMtkYut5g==} - "@types/deep-eql@4.0.2": - resolution: - { - integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==, - } + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - "@types/esrecurse@4.3.1": - resolution: - { - integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==, - } + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} - "@types/estree@1.0.9": - resolution: - { - integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==, - } + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} - "@types/filesystem@0.0.36": - resolution: - { - integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==, - } + '@types/filesystem@0.0.36': + resolution: {integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==} - "@types/filewriter@0.0.33": - resolution: - { - integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==, - } + '@types/filewriter@0.0.33': + resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==} - "@types/har-format@1.2.16": - resolution: - { - integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==, - } + '@types/har-format@1.2.16': + resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==} - "@types/istanbul-lib-coverage@2.0.6": - resolution: - { - integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==, - } + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - "@types/istanbul-lib-report@3.0.3": - resolution: - { - integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==, - } + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - "@types/istanbul-reports@3.0.4": - resolution: - { - integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==, - } + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - "@types/json-schema@7.0.15": - resolution: - { - integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, - } + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - "@types/node@24.13.3": - resolution: - { - integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==, - } + '@types/node@24.13.3': + resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==} - "@types/node@26.2.0": - resolution: - { - integrity: sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==, - } + '@types/node@26.2.0': + resolution: {integrity: sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==} - "@types/pg@8.23.1": - resolution: - { - integrity: sha512-fKVHpikPdg4GKks3JuLEhvwSyvwzF23hnabPy6DD8ljVbC7+6J5dQzdv4arV6jqq57djnMgs1HKBxX4P8aBI3A==, - } + '@types/pg@8.23.1': + resolution: {integrity: sha512-fKVHpikPdg4GKks3JuLEhvwSyvwzF23hnabPy6DD8ljVbC7+6J5dQzdv4arV6jqq57djnMgs1HKBxX4P8aBI3A==} - "@types/react-dom@19.2.5": - resolution: - { - integrity: sha512-fMPwH9v7r/pp43yUd2/Mbiex5KouJwwR3dzHkhLREUC6764VyDsqxhAxv6OFEYR1RhjOyD1naqba8ECDBe7ZQg==, - } + '@types/react-dom@19.2.5': + resolution: {integrity: sha512-fMPwH9v7r/pp43yUd2/Mbiex5KouJwwR3dzHkhLREUC6764VyDsqxhAxv6OFEYR1RhjOyD1naqba8ECDBe7ZQg==} peerDependencies: - "@types/react": ^19.2.0 + '@types/react': ^19.2.0 - "@types/react@19.2.18": - resolution: - { - integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==, - } + '@types/react@19.2.18': + resolution: {integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==} - "@types/yargs-parser@21.0.3": - resolution: - { - integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==, - } + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - "@types/yargs@17.0.35": - resolution: - { - integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==, - } + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - "@typescript-eslint/eslint-plugin@8.67.0": - resolution: - { - integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/eslint-plugin@8.67.0': + resolution: {integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - "@typescript-eslint/parser": ^8.67.0 + '@typescript-eslint/parser': ^8.67.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.1.0" + typescript: '>=4.8.4 <6.1.0' - "@typescript-eslint/parser@8.67.0": - resolution: - { - integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/parser@8.67.0': + resolution: {integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.1.0" + typescript: '>=4.8.4 <6.1.0' - "@typescript-eslint/project-service@8.67.0": - resolution: - { - integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/project-service@8.67.0': + resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: ">=4.8.4 <6.1.0" + typescript: '>=4.8.4 <6.1.0' - "@typescript-eslint/scope-manager@8.67.0": - resolution: - { - integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/scope-manager@8.67.0': + resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - "@typescript-eslint/tsconfig-utils@8.67.0": - resolution: - { - integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/tsconfig-utils@8.67.0': + resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: ">=4.8.4 <6.1.0" + typescript: '>=4.8.4 <6.1.0' - "@typescript-eslint/type-utils@8.67.0": - resolution: - { - integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/type-utils@8.67.0': + resolution: {integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.1.0" + typescript: '>=4.8.4 <6.1.0' - "@typescript-eslint/types@8.67.0": - resolution: - { - integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/types@8.67.0': + resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - "@typescript-eslint/typescript-estree@8.67.0": - resolution: - { - integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/typescript-estree@8.67.0': + resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: ">=4.8.4 <6.1.0" + typescript: '>=4.8.4 <6.1.0' - "@typescript-eslint/utils@8.67.0": - resolution: - { - integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/utils@8.67.0': + resolution: {integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.1.0" + typescript: '>=4.8.4 <6.1.0' - "@typescript-eslint/visitor-keys@8.67.0": - resolution: - { - integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/visitor-keys@8.67.0': + resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - "@ungap/structured-clone@1.4.0": - resolution: - { - integrity: sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==, - } + '@ungap/structured-clone@1.4.0': + resolution: {integrity: sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==} - "@vitejs/plugin-react@6.1.1": - resolution: - { - integrity: sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + '@vitejs/plugin-react@6.1.1': + resolution: {integrity: sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw==} + engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - "@rolldown/plugin-babel": ^0.1.7 || ^0.2.0 + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 babel-plugin-react-compiler: ^1.0.0 oxc-transform-react: ^0.145.0 vite: ^8.0.0 peerDependenciesMeta: - "@rolldown/plugin-babel": + '@rolldown/plugin-babel': optional: true babel-plugin-react-compiler: optional: true oxc-transform-react: optional: true - "@vitest/expect@4.1.11": - resolution: - { - integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==, - } + '@vitest/expect@4.1.11': + resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==} - "@vitest/mocker@4.1.11": - resolution: - { - integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==, - } + '@vitest/mocker@4.1.11': + resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2937,113 +2061,65 @@ packages: vite: optional: true - "@vitest/pretty-format@4.1.11": - resolution: - { - integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==, - } + '@vitest/pretty-format@4.1.11': + resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==} - "@vitest/runner@4.1.11": - resolution: - { - integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==, - } + '@vitest/runner@4.1.11': + resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==} - "@vitest/snapshot@4.1.11": - resolution: - { - integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==, - } + '@vitest/snapshot@4.1.11': + resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==} - "@vitest/spy@4.1.11": - resolution: - { - integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==, - } + '@vitest/spy@4.1.11': + resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==} - "@vitest/utils@4.1.11": - resolution: - { - integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==, - } + '@vitest/utils@4.1.11': + resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} - "@xmldom/xmldom@0.8.15": - resolution: - { - integrity: sha512-/5NV/vDALVFDXgLmfsy9TRCBlKwO2LNBFzpzvb9iIj+jR+eSc6DLYYvVOdivT/jm7MtU6TebYuRmzEOI7w40UA==, - } - engines: { node: ">=10.0.0" } + '@xmldom/xmldom@0.8.15': + resolution: {integrity: sha512-/5NV/vDALVFDXgLmfsy9TRCBlKwO2LNBFzpzvb9iIj+jR+eSc6DLYYvVOdivT/jm7MtU6TebYuRmzEOI7w40UA==} + engines: {node: '>=10.0.0'} - "@xmldom/xmldom@0.9.12": - resolution: - { - integrity: sha512-5AXjrcMClTryPe9LgZrygpB1lj7s0S9E0+W+AHaVKAVyHanafK86iPSvG5xHVSp/jC+VH1UXu0TAEmY279xH7A==, - } - engines: { node: ">=14.6" } + '@xmldom/xmldom@0.9.12': + resolution: {integrity: sha512-5AXjrcMClTryPe9LgZrygpB1lj7s0S9E0+W+AHaVKAVyHanafK86iPSvG5xHVSp/jC+VH1UXu0TAEmY279xH7A==} + engines: {node: '>=14.6'} abort-controller@3.0.0: - resolution: - { - integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==, - } - engines: { node: ">=6.5" } + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} abstract-logging@2.0.1: - resolution: - { - integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==, - } + resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} accepts@1.3.8: - resolution: - { - integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} accepts@2.0.0: - resolution: - { - integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} acorn-jsx@5.3.2: - resolution: - { - integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, - } + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 acorn@8.18.0: - resolution: - { - integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + engines: {node: '>=0.4.0'} hasBin: true agent-base@7.1.4: - resolution: - { - integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==, - } - engines: { node: ">= 14" } + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} agent-cli-detector@0.1.7: - resolution: - { - integrity: sha512-d8OWDVdZMgjhLUT9ZPgSv/BdFFF9pVuscC0JdUSz3bjwE15gcp6u/o0/JooM2yyAWC49KThFhXlgTXRa9B7yng==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-d8OWDVdZMgjhLUT9ZPgSv/BdFFF9pVuscC0JdUSz3bjwE15gcp6u/o0/JooM2yyAWC49KThFhXlgTXRa9B7yng==} + engines: {node: '>=18.18'} hasBin: true ajv-formats@3.0.1: - resolution: - { - integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==, - } + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} peerDependencies: ajv: ^8.0.0 peerDependenciesMeta: @@ -3051,176 +2127,101 @@ packages: optional: true ajv@6.15.0: - resolution: - { - integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==, - } + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} ajv@8.20.0: - resolution: - { - integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==, - } + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} anser@1.4.10: - resolution: - { - integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==, - } + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} ansi-escapes@4.3.2: - resolution: - { - integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} ansi-regex@4.1.1: - resolution: - { - integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} ansi-styles@3.2.1: - resolution: - { - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} ansi-styles@5.2.0: - resolution: - { - integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} arg@5.0.2: - resolution: - { - integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, - } + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, - } + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} asap@2.0.6: - resolution: - { - integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==, - } + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} asn1js@3.0.10: - resolution: - { - integrity: sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==, - } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==} + engines: {node: '>=12.0.0'} assertion-error@2.0.1: - resolution: - { - integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} atomic-sleep@1.0.0: - resolution: - { - integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==, - } - engines: { node: ">=8.0.0" } + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} avvio@9.3.0: - resolution: - { - integrity: sha512-g2tQ7LE7oOSqDfwEm3M+ZCMTJc7KiZCdJ4UwyZJb5ckTKyYu50OYmvv0mCFXPuYXoM4zkSt8zM9XQ9KCvxA74A==, - } + resolution: {integrity: sha512-g2tQ7LE7oOSqDfwEm3M+ZCMTJc7KiZCdJ4UwyZJb5ckTKyYu50OYmvv0mCFXPuYXoM4zkSt8zM9XQ9KCvxA74A==} babel-plugin-polyfill-corejs2@0.4.17: - resolution: - { - integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==, - } + resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.13.0: - resolution: - { - integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==, - } + babel-plugin-polyfill-corejs3@0.13.0: + resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-regenerator@0.6.8: - resolution: - { - integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==, - } + resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==} peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-react-compiler@1.0.0: - resolution: - { - integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==, - } + resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==} babel-plugin-react-native-web@0.21.2: - resolution: - { - integrity: sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==, - } + resolution: {integrity: sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==} babel-plugin-syntax-hermes-parser@0.36.0: - resolution: - { - integrity: sha512-LhD0xdoedDw7ansQgXbB2DADLZIK/LRXuWNBPuVzMc5S2WK5GyT89tCM+cQzxFGO0mGyLK6D5TrVOJJzAoDy8Q==, - } + resolution: {integrity: sha512-LhD0xdoedDw7ansQgXbB2DADLZIK/LRXuWNBPuVzMc5S2WK5GyT89tCM+cQzxFGO0mGyLK6D5TrVOJJzAoDy8Q==} babel-plugin-syntax-hermes-parser@0.36.1: - resolution: - { - integrity: sha512-ycduwJbvdvIMmVvlAZqGggS+pm5Eu4Bk9pcV9Sm2Z4PJNRVsKkv0g7vHj+LeuC1gHTeF67sJXFOq61IlqCa2hA==, - } + resolution: {integrity: sha512-ycduwJbvdvIMmVvlAZqGggS+pm5Eu4Bk9pcV9Sm2Z4PJNRVsKkv0g7vHj+LeuC1gHTeF67sJXFOq61IlqCa2hA==} babel-plugin-transform-flow-enums@0.0.2: - resolution: - { - integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==, - } + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} babel-preset-expo@57.0.10: - resolution: - { - integrity: sha512-08bt6bqMZFoQuWO9gkt0EXotbqKHimELFGa1LlKJvY89iKsi4S0FJSFBFJ4pn9NZvofet48HIjYDQ0SZJ7bNrg==, - } + resolution: {integrity: sha512-08bt6bqMZFoQuWO9gkt0EXotbqKHimELFGa1LlKJvY89iKsi4S0FJSFBFJ4pn9NZvofet48HIjYDQ0SZJ7bNrg==} peerDependencies: - "@babel/runtime": ^7.20.0 - expo: "*" + '@babel/runtime': ^7.20.0 + expo: '*' expo-widgets: ^57.0.16 - react-refresh: ">=0.14.0 <1.0.0" + react-refresh: '>=0.14.0 <1.0.0' peerDependenciesMeta: - "@babel/runtime": + '@babel/runtime': optional: true expo: optional: true @@ -3228,826 +2229,487 @@ packages: optional: true balanced-match@4.0.4: - resolution: - { - integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==, - } - engines: { node: 18 || 20 || >=22 } + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} base64-js@1.5.1: - resolution: - { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, - } + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} baseline-browser-mapping@2.11.21: - resolution: - { - integrity: sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ==, - } - engines: { node: ">=6.0.0" } + resolution: {integrity: sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ==} + engines: {node: '>=6.0.0'} hasBin: true big-integer@1.6.52: - resolution: - { - integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==, - } - engines: { node: ">=0.6" } + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} boolbase@1.0.0: - resolution: - { - integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, - } + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} bplist-creator@0.1.0: - resolution: - { - integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==, - } + resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} bplist-parser@0.3.1: - resolution: - { - integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==, - } - engines: { node: ">= 5.10.0" } + resolution: {integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==} + engines: {node: '>= 5.10.0'} bplist-parser@0.3.2: - resolution: - { - integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==, - } - engines: { node: ">= 5.10.0" } + resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==} + engines: {node: '>= 5.10.0'} brace-expansion@5.0.9: - resolution: - { - integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} + engines: {node: 20 || >=22} braces@3.0.3: - resolution: - { - integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} browserslist@4.28.9: - resolution: - { - integrity: sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + resolution: {integrity: sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true bser@2.1.1: - resolution: - { - integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, - } + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} buffer-from@1.1.2: - resolution: - { - integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, - } + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} bytes@3.1.2: - resolution: - { - integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} camelcase@5.3.1: - resolution: - { - integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} camelcase@6.3.0: - resolution: - { - integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} caniuse-lite@1.0.30001810: - resolution: - { - integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==, - } + resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==} chai@6.2.2: - resolution: - { - integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} chalk@2.4.2: - resolution: - { - integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} chalk@4.1.2: - resolution: - { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} chrome-launcher@0.15.2: - resolution: - { - integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==, - } - engines: { node: ">=12.13.0" } + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} hasBin: true chromium-edge-launcher@0.3.0: - resolution: - { - integrity: sha512-p03azHlGjtyRvFEee3cyvtsRYdniSkwjkzmM/KmVnqT5d7QkkwpJBhis/zCLMYdQMVJ5tt140TBNqqrZPaWeFA==, - } + resolution: {integrity: sha512-p03azHlGjtyRvFEee3cyvtsRYdniSkwjkzmM/KmVnqT5d7QkkwpJBhis/zCLMYdQMVJ5tt140TBNqqrZPaWeFA==} ci-info@2.0.0: - resolution: - { - integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==, - } + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} ci-info@3.9.0: - resolution: - { - integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} cjs-module-lexer@2.2.1: - resolution: - { - integrity: sha512-Ca8swihM+/4yKecYHY52kgJd300hi2lADU/a1RxNTRe+RJ9jvqQlESpbz9DnG9mowez8qwXHB8qYdIUw9e+F5Q==, - } + resolution: {integrity: sha512-Ca8swihM+/4yKecYHY52kgJd300hi2lADU/a1RxNTRe+RJ9jvqQlESpbz9DnG9mowez8qwXHB8qYdIUw9e+F5Q==} cli-cursor@2.1.0: - resolution: - { - integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} cli-spinners@2.9.2: - resolution: - { - integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} cliui@6.0.0: - resolution: - { - integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==, - } + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} cliui@8.0.1: - resolution: - { - integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} clone@1.0.4: - resolution: - { - integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, - } - engines: { node: ">=0.8" } + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} cluster-key-slot@1.1.2: - resolution: - { - integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} + engines: {node: '>=0.10.0'} color-convert@1.9.3: - resolution: - { - integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, - } + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: ">=7.0.0" } + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} color-name@1.1.3: - resolution: - { - integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, - } + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, - } + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} commander@12.1.0: - resolution: - { - integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} commander@2.20.3: - resolution: - { - integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, - } + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} commander@7.2.0: - resolution: - { - integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==, - } - engines: { node: ">= 10" } + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} compressible@2.0.18: - resolution: - { - integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} compression@1.8.1: - resolution: - { - integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} connect@3.7.0: - resolution: - { - integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==, - } - engines: { node: ">= 0.10.0" } + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} content-type@2.1.0: - resolution: - { - integrity: sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==} + engines: {node: '>=18'} convert-source-map@2.0.0: - resolution: - { - integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, - } + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} cookie@1.1.1: - resolution: - { - integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} + engines: {node: '>=18'} core-js-compat@3.50.0: - resolution: - { - integrity: sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==, - } - engines: { node: ">=6.4.0" } + resolution: {integrity: sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==} + engines: {node: '>=6.4.0'} cross-spawn@7.0.6: - resolution: - { - integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} css-select@5.2.2: - resolution: - { - integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==, - } + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} css-tree@1.1.3: - resolution: - { - integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==, - } - engines: { node: ">=8.0.0" } + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} css-what@6.2.2: - resolution: - { - integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} csstype@3.2.3: - resolution: - { - integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==, - } + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} debug@2.6.9: - resolution: - { - integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, - } + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: - supports-color: "*" + supports-color: '*' peerDependenciesMeta: supports-color: optional: true debug@3.2.7: - resolution: - { - integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, - } + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: - supports-color: "*" + supports-color: '*' peerDependenciesMeta: supports-color: optional: true debug@4.4.3: - resolution: - { - integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, - } - engines: { node: ">=6.0" } + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} peerDependencies: - supports-color: "*" + supports-color: '*' peerDependenciesMeta: supports-color: optional: true decamelize@1.2.0: - resolution: - { - integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} deep-is@0.1.4: - resolution: - { - integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, - } + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} deepmerge@4.3.1: - resolution: - { - integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} defaults@1.0.4: - resolution: - { - integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, - } + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} depd@2.0.0: - resolution: - { - integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} dequal@2.0.3: - resolution: - { - integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} destroy@1.2.0: - resolution: - { - integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==, - } - engines: { node: ">= 0.8", npm: 1.2.8000 || >= 1.4.16 } + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} detect-libc@2.1.2: - resolution: - { - integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} dijkstrajs@1.0.3: - resolution: - { - integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==, - } + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} dnssd-advertise@1.1.6: - resolution: - { - integrity: sha512-Ndrrf6BMPalkQPd/zubL+4YghH2J9NspapQ09uDXwYbvOPkP0oaqf5CkcwJ0b50kS2O3ul6yVu+jz+RY62Cejg==, - } + resolution: {integrity: sha512-Ndrrf6BMPalkQPd/zubL+4YghH2J9NspapQ09uDXwYbvOPkP0oaqf5CkcwJ0b50kS2O3ul6yVu+jz+RY62Cejg==} dom-serializer@2.0.0: - resolution: - { - integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, - } + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} domelementtype@2.3.0: - resolution: - { - integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, - } + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} domhandler@5.0.3: - resolution: - { - integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, - } - engines: { node: ">= 4" } + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} domutils@3.2.2: - resolution: - { - integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==, - } + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} ee-first@1.1.1: - resolution: - { - integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==, - } + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} electron-to-chromium@1.5.422: - resolution: - { - integrity: sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA==, - } + resolution: {integrity: sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA==} electron@44.2.0: - resolution: - { - integrity: sha512-oK1icjhapp3xsUZycO9WZaLmd3hJnA7ieobC4mpdtO1pEN+PPGWpA3m1Mgzzuc1wzSD2Wai4zcH4yfpGJqxFMA==, - } - engines: { node: ">= 22.12.0" } + resolution: {integrity: sha512-oK1icjhapp3xsUZycO9WZaLmd3hJnA7ieobC4mpdtO1pEN+PPGWpA3m1Mgzzuc1wzSD2Wai4zcH4yfpGJqxFMA==} + engines: {node: '>= 22.12.0'} hasBin: true emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, - } + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} encodeurl@1.0.2: - resolution: - { - integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} encodeurl@2.0.0: - resolution: - { - integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} entities@4.5.0: - resolution: - { - integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, - } - engines: { node: ">=0.12" } + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} env-paths@3.0.0: - resolution: - { - integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - error-stack-parser@2.1.4: - resolution: - { - integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==, - } + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} es-errors@1.3.0: - resolution: - { - integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} es-module-lexer@2.3.2: - resolution: - { - integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==, - } + resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} es-module-lexer@3.0.2: - resolution: - { - integrity: sha512-BuIB67FngDSyQ/dpQNOZybwdEBDUGJQvOqwWr4ha/ufYiqzuEwPkKO2zLhRAgay28tStRIHUeWmszZAJo3GCOg==, - } + resolution: {integrity: sha512-BuIB67FngDSyQ/dpQNOZybwdEBDUGJQvOqwWr4ha/ufYiqzuEwPkKO2zLhRAgay28tStRIHUeWmszZAJo3GCOg==} esbuild@0.28.2: - resolution: - { - integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==} + engines: {node: '>=18'} hasBin: true escalade@3.2.0: - resolution: - { - integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} escape-html@1.0.3: - resolution: - { - integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, - } + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} escape-string-regexp@1.0.5: - resolution: - { - integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, - } - engines: { node: ">=0.8.0" } + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} eslint-config-prettier@10.1.8: - resolution: - { - integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==, - } + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} hasBin: true peerDependencies: - eslint: ">=7.0.0" + eslint: '>=7.0.0' eslint-scope@9.1.2: - resolution: - { - integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@3.4.3: - resolution: - { - integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} eslint-visitor-keys@5.0.1: - resolution: - { - integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint@10.8.1: - resolution: - { - integrity: sha512-wqA7W2jbsC/BnV9Iv1UZpKVFkO1AdNoSmYW8NWG4HNOBbkAMvIqDZ27pI2f07dqn583NcIC44ckjAcOXDL1QbQ==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + resolution: {integrity: sha512-wqA7W2jbsC/BnV9Iv1UZpKVFkO1AdNoSmYW8NWG4HNOBbkAMvIqDZ27pI2f07dqn583NcIC44ckjAcOXDL1QbQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: - jiti: "*" + jiti: '*' peerDependenciesMeta: jiti: optional: true espree@11.2.0: - resolution: - { - integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} esquery@1.7.0: - resolution: - { - integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==, - } - engines: { node: ">=0.10" } + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} esrecurse@4.3.0: - resolution: - { - integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, - } - engines: { node: ">=4.0" } + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} estraverse@5.3.0: - resolution: - { - integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, - } - engines: { node: ">=4.0" } + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} estree-walker@3.0.3: - resolution: - { - integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, - } + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} esutils@2.0.3: - resolution: - { - integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} etag@1.8.1: - resolution: - { - integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} event-target-shim@5.0.1: - resolution: - { - integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} expect-type@1.4.0: - resolution: - { - integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==, - } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} + engines: {node: '>=12.0.0'} expo-asset@57.0.16: - resolution: - { - integrity: sha512-IBRfQdW3iFT+GOBERMZLZM1MUNyrjMgMskuD0elVZ1ae44858UFlTJkHO3f8vi+u5zuv7O7KofsiN8NMG/uWzw==, - } + resolution: {integrity: sha512-IBRfQdW3iFT+GOBERMZLZM1MUNyrjMgMskuD0elVZ1ae44858UFlTJkHO3f8vi+u5zuv7O7KofsiN8NMG/uWzw==} peerDependencies: - expo: "*" - react: "*" - react-native: "*" + expo: '*' + react: '*' + react-native: '*' expo-constants@57.0.17: - resolution: - { - integrity: sha512-cPWYBKN1SEbg2lXg2f8VkePJqGZrJPLvVdQDCTfbFu9sQHO1M31Y1zILReUuGnmt/VKeUz40ze579vR00xGu/A==, - } + resolution: {integrity: sha512-cPWYBKN1SEbg2lXg2f8VkePJqGZrJPLvVdQDCTfbFu9sQHO1M31Y1zILReUuGnmt/VKeUz40ze579vR00xGu/A==} peerDependencies: - expo: "*" - react-native: "*" + expo: '*' + react-native: '*' expo-crypto@57.0.2: - resolution: - { - integrity: sha512-OGLvHK7Hb7qsONMWGB9pJw3n+iY4OnZQmM/KwQEHRMrrOmNg0Lxj9+tp9bj46aAMMzXx0FTVA2jUKoplpXPnkA==, - } + resolution: {integrity: sha512-OGLvHK7Hb7qsONMWGB9pJw3n+iY4OnZQmM/KwQEHRMrrOmNg0Lxj9+tp9bj46aAMMzXx0FTVA2jUKoplpXPnkA==} peerDependencies: - expo: "*" + expo: '*' expo-file-system@57.0.6: - resolution: - { - integrity: sha512-pm8PMYEW6BnVOCBJ7df9FcDmQtE1tqImuYphlfYe1ipQRLYtdCayRczJcbKIsnB3mqEyp4gC2gWmMbsAsAOjVg==, - } + resolution: {integrity: sha512-pm8PMYEW6BnVOCBJ7df9FcDmQtE1tqImuYphlfYe1ipQRLYtdCayRczJcbKIsnB3mqEyp4gC2gWmMbsAsAOjVg==} peerDependencies: - expo: "*" - react-native: "*" + expo: '*' + react-native: '*' expo-font@57.0.3: - resolution: - { - integrity: sha512-kiVUnc2A8vAvO2FfDJTsQa5BwmY+PAkof/1wRb5MOkcX1jtiaSTwz9gCUAyscMBFLundZDmZrLy1P7LZVC+NvA==, - } + resolution: {integrity: sha512-kiVUnc2A8vAvO2FfDJTsQa5BwmY+PAkof/1wRb5MOkcX1jtiaSTwz9gCUAyscMBFLundZDmZrLy1P7LZVC+NvA==} peerDependencies: - expo: "*" - react: "*" - react-native: "*" + expo: '*' + react: '*' + react-native: '*' expo-keep-awake@57.0.1: - resolution: - { - integrity: sha512-28lkFImeXTS+bhAjuCFV7w7tW5bXg27BJVrxv+nC/nyYa86qEa0oFeHwqol6ha5k4pdVDQgBF09GM4A1k76Ssg==, - } + resolution: {integrity: sha512-28lkFImeXTS+bhAjuCFV7w7tW5bXg27BJVrxv+nC/nyYa86qEa0oFeHwqol6ha5k4pdVDQgBF09GM4A1k76Ssg==} peerDependencies: - expo: "*" - react: "*" + expo: '*' + react: '*' expo-local-authentication@57.0.2: - resolution: - { - integrity: sha512-8K4zcrQ5wZkRS1rwEWY8qHbeGVMNh35e9D1VTVKlMHz1O47itW+pW6iBVuqwGFLozN4fRBeEDQH8hu9Gt58YuQ==, - } + resolution: {integrity: sha512-8K4zcrQ5wZkRS1rwEWY8qHbeGVMNh35e9D1VTVKlMHz1O47itW+pW6iBVuqwGFLozN4fRBeEDQH8hu9Gt58YuQ==} peerDependencies: - expo: "*" + expo: '*' expo-modules-autolinking@57.0.12: - resolution: - { - integrity: sha512-Q8KAlq37nLKsQ+HsS9NpQVpd5jCgqtu694TDUNHBUBpV9ViD82mRBh8Uug/h68RG9xnLS+kuL4nYaCuFRghHjg==, - } + resolution: {integrity: sha512-Q8KAlq37nLKsQ+HsS9NpQVpd5jCgqtu694TDUNHBUBpV9ViD82mRBh8Uug/h68RG9xnLS+kuL4nYaCuFRghHjg==} hasBin: true expo-modules-core@57.0.16: - resolution: - { - integrity: sha512-vPbxDOdvG6Ucpws5ucdbQa+nNmdxKONS1fTg92sy0p4TnHX8hBiExtbrtUA/5+1t3FRCUuiy29/1nJEGdt3E4A==, - } + resolution: {integrity: sha512-vPbxDOdvG6Ucpws5ucdbQa+nNmdxKONS1fTg92sy0p4TnHX8hBiExtbrtUA/5+1t3FRCUuiy29/1nJEGdt3E4A==} peerDependencies: - react: "*" - react-native: "*" + react: '*' + react-native: '*' react-native-worklets: ^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0 peerDependenciesMeta: react-native-worklets: optional: true expo-modules-jsi@57.0.8: - resolution: - { - integrity: sha512-MFwvKP0FXLkEET27KsKvOh/L7Dpu2d00UgzAlmKozJgtI23WTKSyKPxu+EOSs9peSgkHzKI0vQOhWjOseGBMkQ==, - } + resolution: {integrity: sha512-MFwvKP0FXLkEET27KsKvOh/L7Dpu2d00UgzAlmKozJgtI23WTKSyKPxu+EOSs9peSgkHzKI0vQOhWjOseGBMkQ==} peerDependencies: - react-native: "*" + react-native: '*' expo-screen-capture@57.0.2: - resolution: - { - integrity: sha512-Ww8LFdSXuW7YeHc6/DwZd5tOEUqHAsOy4hLrfBxu99pbv+14sD9Lh0ueZeutg4QVktI+u2XJqFjMqyJ0b/5yxA==, - } + resolution: {integrity: sha512-Ww8LFdSXuW7YeHc6/DwZd5tOEUqHAsOy4hLrfBxu99pbv+14sD9Lh0ueZeutg4QVktI+u2XJqFjMqyJ0b/5yxA==} peerDependencies: - expo: "*" - react: "*" + expo: '*' + react: '*' expo-secure-store@57.0.3: - resolution: - { - integrity: sha512-w7XkSQeUiYXPoKXo1jSrQqql7pyCSyIzOp2k0apsZZBE+RkoLTQIMjcbqc181y6KgupfNnYxkaKe+4MEg94+SA==, - } + resolution: {integrity: sha512-w7XkSQeUiYXPoKXo1jSrQqql7pyCSyIzOp2k0apsZZBE+RkoLTQIMjcbqc181y6KgupfNnYxkaKe+4MEg94+SA==} peerDependencies: - expo: "*" + expo: '*' expo-server@57.0.3: - resolution: - { - integrity: sha512-aK+LdKzauHSGmsOStZtyxdzv0zWssCkxTw3m4QuOhfDSJsZaMRTd9O41d8ixU/QfELTbaJ0oRNcF7JFV/7O9YQ==, - } - engines: { node: ">=20.16.0" } + resolution: {integrity: sha512-aK+LdKzauHSGmsOStZtyxdzv0zWssCkxTw3m4QuOhfDSJsZaMRTd9O41d8ixU/QfELTbaJ0oRNcF7JFV/7O9YQ==} + engines: {node: '>=20.16.0'} expo-standard-web-crypto@57.0.2: - resolution: - { - integrity: sha512-bjCeUKzptk03X6vbcCOwI80L38nbSyOKKu2IGTrQDgR+4W6mZuyMn7Y+z92rtnyMyIIyyvbEOdcqkPyxJrpAgw==, - } + resolution: {integrity: sha512-bjCeUKzptk03X6vbcCOwI80L38nbSyOKKu2IGTrQDgR+4W6mZuyMn7Y+z92rtnyMyIIyyvbEOdcqkPyxJrpAgw==} peerDependencies: expo-crypto: ^57.0.2 expo@57.0.20: - resolution: - { - integrity: sha512-H57GWLLpNPrltsrjvx6ROsMecoFQza7h9OzujUjBsaY+aDL+bj3GsZaH3T5v5B96R7txuidUwjUh5q5hi3qttg==, - } + resolution: {integrity: sha512-H57GWLLpNPrltsrjvx6ROsMecoFQza7h9OzujUjBsaY+aDL+bj3GsZaH3T5v5B96R7txuidUwjUh5q5hi3qttg==} hasBin: true peerDependencies: - "@expo/dom-webview": "*" - "@expo/metro-runtime": "*" - react: "*" - react-dom: "*" - react-native: "*" - react-native-web: "*" - react-native-webview: "*" + '@expo/dom-webview': '*' + '@expo/metro-runtime': '*' + react: '*' + react-dom: '*' + react-native: '*' + react-native-web: '*' + react-native-webview: '*' peerDependenciesMeta: - "@expo/dom-webview": + '@expo/dom-webview': optional: true - "@expo/metro-runtime": + '@expo/metro-runtime': optional: true react-dom: optional: true @@ -4057,91 +2719,49 @@ packages: optional: true exponential-backoff@3.1.3: - resolution: - { - integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==, - } + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} fast-decode-uri-component@1.0.1: - resolution: - { - integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==, - } + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, - } + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} fast-json-stable-stringify@2.1.0: - resolution: - { - integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, - } + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} fast-json-stringify@7.0.1: - resolution: - { - integrity: sha512-eRSayARSbbwlBjpP4vnTTIRD5QPcIrmihPxDeN1DtKnHPg66UuJLx+8hlK1kaFdjvzyQ/dzALoi4vwAQ+T+iZA==, - } + resolution: {integrity: sha512-eRSayARSbbwlBjpP4vnTTIRD5QPcIrmihPxDeN1DtKnHPg66UuJLx+8hlK1kaFdjvzyQ/dzALoi4vwAQ+T+iZA==} fast-levenshtein@2.0.6: - resolution: - { - integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, - } + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} fast-querystring@1.1.2: - resolution: - { - integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==, - } + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} fast-uri@3.1.6: - resolution: - { - integrity: sha512-7Ical1vFEMr0onbVzEDIreM22I4khW+fzyQPwvAFWBp1iwdshSZRsL4jjRvPG9JP1uiqMHRto+YU6R2/CzDz5Q==, - } + resolution: {integrity: sha512-7Ical1vFEMr0onbVzEDIreM22I4khW+fzyQPwvAFWBp1iwdshSZRsL4jjRvPG9JP1uiqMHRto+YU6R2/CzDz5Q==} fast-uri@4.1.3: - resolution: - { - integrity: sha512-7+72G6vLt7jjNas8SmSATx2qeyRIjxeqO3i4IkmDTxlqYZRKANhOe1bnovcp4WZmvsYrp60WyqPyHqgRiX0yXw==, - } + resolution: {integrity: sha512-7+72G6vLt7jjNas8SmSATx2qeyRIjxeqO3i4IkmDTxlqYZRKANhOe1bnovcp4WZmvsYrp60WyqPyHqgRiX0yXw==} fastify@5.12.1: - resolution: - { - integrity: sha512-FWi+tQvwxR/PeRX7Z2mhfEF5ozJ3jn9asiiclzKXNSzJRHAYcU924aIOKAdHFJ+YIKieh3cqr1IwCOvTr41B3Q==, - } + resolution: {integrity: sha512-FWi+tQvwxR/PeRX7Z2mhfEF5ozJ3jn9asiiclzKXNSzJRHAYcU924aIOKAdHFJ+YIKieh3cqr1IwCOvTr41B3Q==} fastq@1.20.1: - resolution: - { - integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==, - } + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fb-dotslash@0.5.8: - resolution: - { - integrity: sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==, - } - engines: { node: ">=20" } + resolution: {integrity: sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==} + engines: {node: '>=20'} hasBin: true fb-watchman@2.0.2: - resolution: - { - integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, - } + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} fdir@6.5.0: - resolution: - { - integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, - } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -4149,2345 +2769,1340 @@ packages: optional: true fetch-nodeshim@0.4.10: - resolution: - { - integrity: sha512-m6I8ALe4L4XpdETy7MJZWs6L1IVMbjs99bwbpIKphxX+0CTns4IKDWJY0LWfr4YsFjfg+z1TjzTMU8lKl8rG0w==, - } + resolution: {integrity: sha512-m6I8ALe4L4XpdETy7MJZWs6L1IVMbjs99bwbpIKphxX+0CTns4IKDWJY0LWfr4YsFjfg+z1TjzTMU8lKl8rG0w==} file-entry-cache@8.0.0: - resolution: - { - integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==, - } - engines: { node: ">=16.0.0" } + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} fill-range@7.1.1: - resolution: - { - integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} finalhandler@1.1.2: - resolution: - { - integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} find-my-way@9.8.0: - resolution: - { - integrity: sha512-JtyUgATO7qxRp2zKhrmWof74Mqxc1ikbwpwMY97p8ipuTj2QtreA4gK2JNAF6SOqqHnYYkwMUvsgQVi2AJxIyw==, - } - engines: { node: ">=20" } + resolution: {integrity: sha512-JtyUgATO7qxRp2zKhrmWof74Mqxc1ikbwpwMY97p8ipuTj2QtreA4gK2JNAF6SOqqHnYYkwMUvsgQVi2AJxIyw==} + engines: {node: '>=20'} find-up@4.1.0: - resolution: - { - integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} flat-cache@4.0.1: - resolution: - { - integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} flatted@3.4.4: - resolution: - { - integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==, - } + resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} flow-enums-runtime@0.0.6: - resolution: - { - integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==, - } + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} fontfaceobserver@2.3.0: - resolution: - { - integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==, - } + resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} fresh@0.5.2: - resolution: - { - integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} fsevents@2.3.3: - resolution: - { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] function-bind@1.1.2: - resolution: - { - integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, - } + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} gensync@1.0.0-beta.2: - resolution: - { - integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, - } - engines: { node: ">=6.9.0" } + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} get-caller-file@2.0.5: - resolution: - { - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, - } - engines: { node: 6.* || 8.* || >= 10.* } + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} getenv@2.0.0: - resolution: - { - integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==} + engines: {node: '>=6'} glob-parent@6.0.2: - resolution: - { - integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, - } - engines: { node: ">=10.13.0" } + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} glob@13.0.6: - resolution: - { - integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==, - } - engines: { node: 18 || 20 || >=22 } + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} + engines: {node: 18 || 20 || >=22} graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, - } + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} has-flag@3.0.0: - resolution: - { - integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} has-flag@4.0.0: - resolution: - { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} hasown@2.0.4: - resolution: - { - integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} hermes-compiler@250829098.0.17: - resolution: - { - integrity: sha512-qG1PXzTEtriF6oQLZF3vyHhSMxOdW5h2TqqLri0rdpstPustd2fSvRZQMVAPdlhgFwBfYnj3OUZtiO6LjYsEFw==, - } + resolution: {integrity: sha512-qG1PXzTEtriF6oQLZF3vyHhSMxOdW5h2TqqLri0rdpstPustd2fSvRZQMVAPdlhgFwBfYnj3OUZtiO6LjYsEFw==} hermes-estree@0.35.0: - resolution: - { - integrity: sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==, - } + resolution: {integrity: sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==} hermes-estree@0.36.0: - resolution: - { - integrity: sha512-A1+8zn5oss2CFP7pKsOaxorQG6FNIz1WU1VDqruLPPZl3LVgeE2C5xfFg8Ow6/Ow4mSslLLtYP1J3n38eKyW9w==, - } + resolution: {integrity: sha512-A1+8zn5oss2CFP7pKsOaxorQG6FNIz1WU1VDqruLPPZl3LVgeE2C5xfFg8Ow6/Ow4mSslLLtYP1J3n38eKyW9w==} hermes-estree@0.36.1: - resolution: - { - integrity: sha512-guv1nQ6IJ7S83NRFPWc3SA7IBZrdNC9kapwOq6uXvF4wP+sDCgjzQbKPCoyYmoyZRzztF/n/c36l/rccCZSiCw==, - } + resolution: {integrity: sha512-guv1nQ6IJ7S83NRFPWc3SA7IBZrdNC9kapwOq6uXvF4wP+sDCgjzQbKPCoyYmoyZRzztF/n/c36l/rccCZSiCw==} hermes-parser@0.35.0: - resolution: - { - integrity: sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==, - } + resolution: {integrity: sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==} hermes-parser@0.36.0: - resolution: - { - integrity: sha512-GdpwMmH5x6IpC1cijvcvYnlPB60Mh6kTSF/NFdYV/j56gYdi+0RIakYs+eqOV+bbO0SW7mgVVGSsTJxyPQfo3w==, - } + resolution: {integrity: sha512-GdpwMmH5x6IpC1cijvcvYnlPB60Mh6kTSF/NFdYV/j56gYdi+0RIakYs+eqOV+bbO0SW7mgVVGSsTJxyPQfo3w==} hermes-parser@0.36.1: - resolution: - { - integrity: sha512-GApNk4zLHi2UWoWZZkx7LNCOSzLSc5lB55pZ/PhK7ycFeg7u5LcF88p/WbpIi1XUDtE0MpHE3uRR3u3KB7TjSQ==, - } + resolution: {integrity: sha512-GApNk4zLHi2UWoWZZkx7LNCOSzLSc5lB55pZ/PhK7ycFeg7u5LcF88p/WbpIi1XUDtE0MpHE3uRR3u3KB7TjSQ==} hosted-git-info@7.0.2: - resolution: - { - integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} http-errors@2.0.1: - resolution: - { - integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} https-proxy-agent@7.0.6: - resolution: - { - integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==, - } - engines: { node: ">= 14" } + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} ignore@5.3.2: - resolution: - { - integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, - } - engines: { node: ">= 4" } + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} ignore@7.0.6: - resolution: - { - integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==, - } - engines: { node: ">= 4" } + resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} + engines: {node: '>= 4'} import-in-the-middle@3.5.0: - resolution: - { - integrity: sha512-O6wo8l0lhBuytKz3x8S65TvacFtoopji+gCVeEBbjCaRy75gkk4bCBQoVmY7OEZ63cbFK+yf77pDCTWaadV7hQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-O6wo8l0lhBuytKz3x8S65TvacFtoopji+gCVeEBbjCaRy75gkk4bCBQoVmY7OEZ63cbFK+yf77pDCTWaadV7hQ==} + engines: {node: '>=18'} imurmurhash@0.1.4: - resolution: - { - integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, - } - engines: { node: ">=0.8.19" } + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} inherits@2.0.4: - resolution: - { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, - } + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} invariant@2.2.4: - resolution: - { - integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==, - } + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} ipaddr.js@2.5.0: - resolution: - { - integrity: sha512-aq+t5NAc+cS6rZQQVWC2x98CPqGtKKTMDd4Gaodv0wShnItdKg/51djkGJ1hqH+Oy0ivDftCbSLCQob8zso01w==, - } - engines: { node: ">= 10" } + resolution: {integrity: sha512-aq+t5NAc+cS6rZQQVWC2x98CPqGtKKTMDd4Gaodv0wShnItdKg/51djkGJ1hqH+Oy0ivDftCbSLCQob8zso01w==} + engines: {node: '>= 10'} is-core-module@2.16.2: - resolution: - { - integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} + engines: {node: '>= 0.4'} is-docker@2.2.1: - resolution: - { - integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} hasBin: true is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, - } - engines: { node: ">=0.12.0" } + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} is-wsl@2.2.0: - resolution: - { - integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, - } + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} jest-get-type@29.6.3: - resolution: - { - integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-util@29.7.0: - resolution: - { - integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-validate@29.7.0: - resolution: - { - integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-worker@29.7.0: - resolution: - { - integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jimp-compact@0.16.1: - resolution: - { - integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==, - } + resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} js-tokens@4.0.0: - resolution: - { - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, - } + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} js-yaml@4.3.2: - resolution: - { - integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==, - } + resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} hasBin: true jsc-safe-url@0.2.4: - resolution: - { - integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==, - } + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} jsesc@3.1.0: - resolution: - { - integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} hasBin: true json-buffer@3.0.1: - resolution: - { - integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, - } + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} json-schema-ref-resolver@3.0.0: - resolution: - { - integrity: sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==, - } + resolution: {integrity: sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==} json-schema-traverse@0.4.1: - resolution: - { - integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, - } + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} json-schema-traverse@1.0.0: - resolution: - { - integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, - } + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} json-stable-stringify-without-jsonify@1.0.1: - resolution: - { - integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, - } + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} json5@2.2.3: - resolution: - { - integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} hasBin: true keyv@4.5.4: - resolution: - { - integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, - } + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} kleur@3.0.3: - resolution: - { - integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} lan-network@0.2.1: - resolution: - { - integrity: sha512-ONPnazC96VKDntab9j9JKwIWhZ4ZUceB4A9Epu4Ssg0hYFmtHZSeQ+n15nIwTFmcBUKtExOer8WTJ4GF9MO64A==, - } + resolution: {integrity: sha512-ONPnazC96VKDntab9j9JKwIWhZ4ZUceB4A9Epu4Ssg0hYFmtHZSeQ+n15nIwTFmcBUKtExOer8WTJ4GF9MO64A==} hasBin: true leven@3.1.0: - resolution: - { - integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} levn@0.4.1: - resolution: - { - integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} light-my-request@6.6.0: - resolution: - { - integrity: sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==, - } + resolution: {integrity: sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==} lighthouse-logger@1.4.2: - resolution: - { - integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==, - } + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} lightningcss-android-arm64@1.33.0: - resolution: - { - integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] lightningcss-darwin-arm64@1.33.0: - resolution: - { - integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] lightningcss-darwin-x64@1.33.0: - resolution: - { - integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] lightningcss-freebsd-x64@1.33.0: - resolution: - { - integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] lightningcss-linux-arm-gnueabihf@1.33.0: - resolution: - { - integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] lightningcss-linux-arm64-gnu@1.33.0: - resolution: - { - integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [glibc] lightningcss-linux-arm64-musl@1.33.0: - resolution: - { - integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [musl] lightningcss-linux-x64-gnu@1.33.0: - resolution: - { - integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [glibc] lightningcss-linux-x64-musl@1.33.0: - resolution: - { - integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [musl] lightningcss-win32-arm64-msvc@1.33.0: - resolution: - { - integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] lightningcss-win32-x64-msvc@1.33.0: - resolution: - { - integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] lightningcss@1.33.0: - resolution: - { - integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} locate-path@5.0.0: - resolution: - { - integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} lodash.camelcase@4.3.0: - resolution: - { - integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==, - } + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} lodash.debounce@4.0.8: - resolution: - { - integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, - } + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} lodash.throttle@4.1.1: - resolution: - { - integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==, - } + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} log-symbols@2.2.0: - resolution: - { - integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} long@5.3.2: - resolution: - { - integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==, - } + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} loose-envify@1.4.0: - resolution: - { - integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, - } + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true lru-cache@10.4.3: - resolution: - { - integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, - } + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@11.5.2: - resolution: - { - integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==, - } - engines: { node: 20 || >=22 } + resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} + engines: {node: 20 || >=22} lru-cache@5.1.1: - resolution: - { - integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, - } + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} magic-string@0.30.21: - resolution: - { - integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, - } + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} makeerror@1.0.12: - resolution: - { - integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, - } + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} marky@1.3.0: - resolution: - { - integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==, - } + resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==} mdn-data@2.0.14: - resolution: - { - integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==, - } + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} memoize-one@5.2.1: - resolution: - { - integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==, - } + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} merge-stream@2.0.0: - resolution: - { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, - } + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} metro-babel-transformer@0.84.5: - resolution: - { - integrity: sha512-2WbHILKMiJUzfdjmGOQOqU1bWi9//gqiclc/tkk/AIsrrVw3efhZ1uhkOwMTxUEPOzqoo091H0olLmVZH5FHGQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-2WbHILKMiJUzfdjmGOQOqU1bWi9//gqiclc/tkk/AIsrrVw3efhZ1uhkOwMTxUEPOzqoo091H0olLmVZH5FHGQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-babel-transformer@0.84.6: - resolution: - { - integrity: sha512-B1ozl6KxFHbQjXZ2U8WiTPWXylqiD3V4EXyV5r0fqETOrqIrJlBvbVTD82UxIN+B3Vpe4l8G1tb15ocd2RyOQA==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-B1ozl6KxFHbQjXZ2U8WiTPWXylqiD3V4EXyV5r0fqETOrqIrJlBvbVTD82UxIN+B3Vpe4l8G1tb15ocd2RyOQA==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-cache-key@0.84.5: - resolution: - { - integrity: sha512-3dPB2TnvGjjf0/9O7AXVQURKXuQNauTZE7WpTGTlR017Gh/B5y0m/2wcqxfveUguHSpu89KhVxCAlr2k/H7uhQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-3dPB2TnvGjjf0/9O7AXVQURKXuQNauTZE7WpTGTlR017Gh/B5y0m/2wcqxfveUguHSpu89KhVxCAlr2k/H7uhQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-cache-key@0.84.6: - resolution: - { - integrity: sha512-6tyXt1BZ/3U183XV48oif7Nm65TE+pTo0Vs31u4FxMgqiYQR/SiSr3RoXn3pmy4pd280ZmLmct0x3jZpu0pV4A==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-6tyXt1BZ/3U183XV48oif7Nm65TE+pTo0Vs31u4FxMgqiYQR/SiSr3RoXn3pmy4pd280ZmLmct0x3jZpu0pV4A==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-cache@0.84.5: - resolution: - { - integrity: sha512-WHS0n2OxQqtwEjSeQFPePNrMvEFhmQcUQM9cRJMHByWoi/GMWFBEWOf7hVkAM/0KRutAXNbDlSu/cZB6CyxgQQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-WHS0n2OxQqtwEjSeQFPePNrMvEFhmQcUQM9cRJMHByWoi/GMWFBEWOf7hVkAM/0KRutAXNbDlSu/cZB6CyxgQQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-cache@0.84.6: - resolution: - { - integrity: sha512-KBJVpb02oKNO+jlWQ1Aax7cd11YP0MClDaMgx6C4MhyZ9g95J/dC1Bo6sCzXaU9L9h/w5cQfT5zDkGW5sOj99A==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-KBJVpb02oKNO+jlWQ1Aax7cd11YP0MClDaMgx6C4MhyZ9g95J/dC1Bo6sCzXaU9L9h/w5cQfT5zDkGW5sOj99A==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-config@0.84.5: - resolution: - { - integrity: sha512-zie+uN6oohscowi2S7ByU+wUw6CrT4ZxW9uAbONOObSxx86RGmnIAmjXHLkfmcdYoY7jzOPEbqcI6oeVmqyBQA==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-zie+uN6oohscowi2S7ByU+wUw6CrT4ZxW9uAbONOObSxx86RGmnIAmjXHLkfmcdYoY7jzOPEbqcI6oeVmqyBQA==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-config@0.84.6: - resolution: - { - integrity: sha512-cD2mLEofcuV26kxSV4hfV1Pbuh6igdUhYQriO8ZVeJ7HyZfq4/wqHV0gSR7fEO8NUp9odr60/Kzm5YakmghWwQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-cD2mLEofcuV26kxSV4hfV1Pbuh6igdUhYQriO8ZVeJ7HyZfq4/wqHV0gSR7fEO8NUp9odr60/Kzm5YakmghWwQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-core@0.84.5: - resolution: - { - integrity: sha512-xwm605hCi5Y6eJTTb8ZWo6pkUcoBEIyiQOfkZh5GwtDwUrP9SNhTQZhzJHrBCwwxlf3Ptl/pxWJgQ1rsNYMnrA==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-xwm605hCi5Y6eJTTb8ZWo6pkUcoBEIyiQOfkZh5GwtDwUrP9SNhTQZhzJHrBCwwxlf3Ptl/pxWJgQ1rsNYMnrA==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-core@0.84.6: - resolution: - { - integrity: sha512-ZqYskM8+f3PFMosBDJd8DLqRvT1ltRGhWL/ZfTpBvf4SoadO30VVrdhAoHFVGz3G1CJpWa3fgZH7nnnX/ybllA==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-ZqYskM8+f3PFMosBDJd8DLqRvT1ltRGhWL/ZfTpBvf4SoadO30VVrdhAoHFVGz3G1CJpWa3fgZH7nnnX/ybllA==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-file-map@0.84.5: - resolution: - { - integrity: sha512-mlm/JL8toSbSc2akpKIGmzvrVRSCgZ5vkbycI34oMLoOnLGuLyC8WTyVJ6P0hZG/usDaGwZSl/s9BCRriqjGJA==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-mlm/JL8toSbSc2akpKIGmzvrVRSCgZ5vkbycI34oMLoOnLGuLyC8WTyVJ6P0hZG/usDaGwZSl/s9BCRriqjGJA==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-file-map@0.84.6: - resolution: - { - integrity: sha512-ov9VywWBsHPt54Zc7/DxWvqjTwxuZvhfeyHg8ZAMGKtf2PcH1wS3EnoBH7In53Rspk/eXVWAO5+avxunPn081w==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-ov9VywWBsHPt54Zc7/DxWvqjTwxuZvhfeyHg8ZAMGKtf2PcH1wS3EnoBH7In53Rspk/eXVWAO5+avxunPn081w==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-minify-terser@0.84.5: - resolution: - { - integrity: sha512-BJoFwCEDsYnagPqarayInv2+diCDNDdLlaof/p6s9w4gh+gc9HXYM+pDvsKGKKUumpZswNF3Z/ftTMqKl/5IBg==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-BJoFwCEDsYnagPqarayInv2+diCDNDdLlaof/p6s9w4gh+gc9HXYM+pDvsKGKKUumpZswNF3Z/ftTMqKl/5IBg==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-minify-terser@0.84.6: - resolution: - { - integrity: sha512-SqhB/Kxrw0XfyW0k8mEscqX/CQopm6Fp3EpdSIPzvKfGgQp9bTMahg9PAdVsXUmIWwErbmFw1VqB+VFBOKksUw==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-SqhB/Kxrw0XfyW0k8mEscqX/CQopm6Fp3EpdSIPzvKfGgQp9bTMahg9PAdVsXUmIWwErbmFw1VqB+VFBOKksUw==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-resolver@0.84.5: - resolution: - { - integrity: sha512-VSSnepg1k6LyCwtb6eirWdAWlpKwBG8Rdtsr1mU38rMelFyWgh3/QuMSiZIZAIjwg/fsa8GhW5/FO54CAUPCEA==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-VSSnepg1k6LyCwtb6eirWdAWlpKwBG8Rdtsr1mU38rMelFyWgh3/QuMSiZIZAIjwg/fsa8GhW5/FO54CAUPCEA==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-resolver@0.84.6: - resolution: - { - integrity: sha512-PplpGc/OCLxgKeLNsLQO/VHsYDIvkcGGr3zNT7UanHCGRqhxKv245o+naV8cRI4/pcLqyc+9j+J0AJbT3Kp5Sg==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } - - metro-runtime@0.84.5: - resolution: - { - integrity: sha512-U1m2+d1Pr+JO2/iVXBB2OfXXityz7tqwIorxfrT15IEgaHvpJBq/OHiqnOWPKJbUl3JcxjcdviZZOKk85oK4Qg==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-PplpGc/OCLxgKeLNsLQO/VHsYDIvkcGGr3zNT7UanHCGRqhxKv245o+naV8cRI4/pcLqyc+9j+J0AJbT3Kp5Sg==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + + metro-runtime@0.84.5: + resolution: {integrity: sha512-U1m2+d1Pr+JO2/iVXBB2OfXXityz7tqwIorxfrT15IEgaHvpJBq/OHiqnOWPKJbUl3JcxjcdviZZOKk85oK4Qg==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-runtime@0.84.6: - resolution: - { - integrity: sha512-47EYO/DOai0PA3GoAyDpyXOgHNMwbl/Z9dQlQineDLHkpD42xOwMrIx1crT0+n6F+aGoEyxZmeFwfMzaIqVqKQ==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-47EYO/DOai0PA3GoAyDpyXOgHNMwbl/Z9dQlQineDLHkpD42xOwMrIx1crT0+n6F+aGoEyxZmeFwfMzaIqVqKQ==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-source-map@0.84.5: - resolution: - { - integrity: sha512-2BtV5L9uPc49F13Gn5wiP6bX/EncqzqTIk2VL/0F/96Vo0YEOjluT/qktQjFODfqGFsucwnh5mPEAl/2jVEfeg==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-2BtV5L9uPc49F13Gn5wiP6bX/EncqzqTIk2VL/0F/96Vo0YEOjluT/qktQjFODfqGFsucwnh5mPEAl/2jVEfeg==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-source-map@0.84.6: - resolution: - { - integrity: sha512-4p/EplRbgNxhdqA6kAj1AmIq9qqYXYSAjgxuZ73rYA+p037xDDrxK8CyDKNfbn1k6aMuVt8LV0fpt7NHUTKiZw==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-4p/EplRbgNxhdqA6kAj1AmIq9qqYXYSAjgxuZ73rYA+p037xDDrxK8CyDKNfbn1k6aMuVt8LV0fpt7NHUTKiZw==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-symbolicate@0.84.5: - resolution: - { - integrity: sha512-rQ40zYDAkaWBN9yvjUuAD0ZpzBMZSoKyGYXnb5JrfbKjun7fTvfoLHL3KXFYenBTYZkQtlp4cKSCv/1utxFyOw==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-rQ40zYDAkaWBN9yvjUuAD0ZpzBMZSoKyGYXnb5JrfbKjun7fTvfoLHL3KXFYenBTYZkQtlp4cKSCv/1utxFyOw==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} hasBin: true metro-symbolicate@0.84.6: - resolution: - { - integrity: sha512-wJFyyF5ysbVyoYVWGL6GwVMiNnGllwDU2gF096376fl0fc8IFUlADSyNlswj31K9og2sOilXe/FdyWFPczPUYg==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-wJFyyF5ysbVyoYVWGL6GwVMiNnGllwDU2gF096376fl0fc8IFUlADSyNlswj31K9og2sOilXe/FdyWFPczPUYg==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} hasBin: true metro-transform-plugins@0.84.5: - resolution: - { - integrity: sha512-+InaSVGaOyt0DyRo4Y/zIdPI6CZwnbNho5LAL23tgmuGwv7fyfkF7kKfPjZcfxXBcoYdTLLFnCfCH/dHSiCqNg==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-+InaSVGaOyt0DyRo4Y/zIdPI6CZwnbNho5LAL23tgmuGwv7fyfkF7kKfPjZcfxXBcoYdTLLFnCfCH/dHSiCqNg==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-transform-plugins@0.84.6: - resolution: - { - integrity: sha512-pROPMFaj25Y9+3LlLqpBRz/7B/2YPnfEQz/z3juYxkh3FGQ+3c/Qh4E+khPSTdwTw0M6LitLYHMqaHMbQmuBJw==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-pROPMFaj25Y9+3LlLqpBRz/7B/2YPnfEQz/z3juYxkh3FGQ+3c/Qh4E+khPSTdwTw0M6LitLYHMqaHMbQmuBJw==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-transform-worker@0.84.5: - resolution: - { - integrity: sha512-ui1Z8x4s5RL36gMmKLaMMO7O9NNDHNdthEZSCDQHAau3JcAsTaFOK6I+2q4I/kW5u8hSEjJk9L45TXSVJw6g1A==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-ui1Z8x4s5RL36gMmKLaMMO7O9NNDHNdthEZSCDQHAau3JcAsTaFOK6I+2q4I/kW5u8hSEjJk9L45TXSVJw6g1A==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro-transform-worker@0.84.6: - resolution: - { - integrity: sha512-xLTVrOENaHR9DiuhnHS+zcle0rKsCy2CpXSIx7xD+zhJs+qVRNUyV7Z1zIt/0P/d0cSGVx846R+dIjHEudhcww==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-xLTVrOENaHR9DiuhnHS+zcle0rKsCy2CpXSIx7xD+zhJs+qVRNUyV7Z1zIt/0P/d0cSGVx846R+dIjHEudhcww==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} metro@0.84.5: - resolution: - { - integrity: sha512-r1liLkyFZMVSEMNjU1CJU5pRzs3NdkxHqXS60O25c0rCIqAR+cGk7rPydw/g0WAIKVXojIBIF45yYBPagJGcgw==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-r1liLkyFZMVSEMNjU1CJU5pRzs3NdkxHqXS60O25c0rCIqAR+cGk7rPydw/g0WAIKVXojIBIF45yYBPagJGcgw==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} hasBin: true metro@0.84.6: - resolution: - { - integrity: sha512-ty/tx/imE5Ph2gvPU788Ckim6RAC2tyZxLz2hWRgC9U7/fGKV7qY/slADy0qHPEw9cpUgc4BfmV3oUsYwm7oeg==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-ty/tx/imE5Ph2gvPU788Ckim6RAC2tyZxLz2hWRgC9U7/fGKV7qY/slADy0qHPEw9cpUgc4BfmV3oUsYwm7oeg==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} hasBin: true micro-packed@0.11.1: - resolution: - { - integrity: sha512-agQGBnBCw8OoKQZMUxcaQPaOowdfxyEmBsq4CNAXAXCyB8KxlRG0lTl5GADJIsMEDaFb0trhXBHKYsjTWa5kuw==, - } - engines: { node: ">= 20.19.0" } + resolution: {integrity: sha512-agQGBnBCw8OoKQZMUxcaQPaOowdfxyEmBsq4CNAXAXCyB8KxlRG0lTl5GADJIsMEDaFb0trhXBHKYsjTWa5kuw==} + engines: {node: '>= 20.19.0'} micromatch@4.0.8: - resolution: - { - integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, - } - engines: { node: ">=8.6" } + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} mime-db@1.52.0: - resolution: - { - integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} mime-db@1.54.0: - resolution: - { - integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} mime-types@2.1.35: - resolution: - { - integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} mime-types@3.0.2: - resolution: - { - integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} mime@1.6.0: - resolution: - { - integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} hasBin: true mimic-fn@1.2.0: - resolution: - { - integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} minimatch@10.2.6: - resolution: - { - integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==, - } - engines: { node: 18 || 20 || >=22 } + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} + engines: {node: 18 || 20 || >=22} minipass@7.1.3: - resolution: - { - integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==, - } - engines: { node: ">=16 || 14 >=14.17" } + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} mkdirp@1.0.4: - resolution: - { - integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} hasBin: true module-details-from-path@1.0.4: - resolution: - { - integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==, - } + resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} ms@2.0.0: - resolution: - { - integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, - } + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, - } + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} multitars@1.0.2: - resolution: - { - integrity: sha512-6GwVw5eLi9sThdtlS4PKwC7yRLaf45pYhIEzKBHdKxi+YOXGKFX8acIniH+Uh/+k9mS2lQOupTccjoe5r0/1IQ==, - } + resolution: {integrity: sha512-6GwVw5eLi9sThdtlS4PKwC7yRLaf45pYhIEzKBHdKxi+YOXGKFX8acIniH+Uh/+k9mS2lQOupTccjoe5r0/1IQ==} nanoid@3.3.18: - resolution: - { - integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==, - } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true natural-compare@1.4.0: - resolution: - { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, - } + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} negotiator@0.6.3: - resolution: - { - integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} negotiator@0.6.4: - resolution: - { - integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} negotiator@1.1.0: - resolution: - { - integrity: sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==} + engines: {node: '>=18'} node-forge@1.4.0: - resolution: - { - integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==, - } - engines: { node: ">= 6.13.0" } + resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} + engines: {node: '>= 6.13.0'} node-int64@0.4.0: - resolution: - { - integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, - } + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} node-releases@2.0.54: - resolution: - { - integrity: sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==} + engines: {node: '>=18'} npm-package-arg@11.0.3: - resolution: - { - integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==, - } - engines: { node: ^16.14.0 || >=18.0.0 } + resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} + engines: {node: ^16.14.0 || >=18.0.0} nth-check@2.1.1: - resolution: - { - integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, - } + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} nullthrows@1.1.1: - resolution: - { - integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==, - } + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} ob1@0.84.5: - resolution: - { - integrity: sha512-aH9RkoZc7w/90HBamFxTw8ZLFr05wXS+iOnvmrgo53Ep8Pyrm5FieQSaPIVROkfFVQISeD/zo92fes26TOwe+A==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-aH9RkoZc7w/90HBamFxTw8ZLFr05wXS+iOnvmrgo53Ep8Pyrm5FieQSaPIVROkfFVQISeD/zo92fes26TOwe+A==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} ob1@0.84.6: - resolution: - { - integrity: sha512-+s+6zjd0X68hfAcn92NsEPXnSYOF3O7exw/Fj4UfRTB+UL+Tdjdkzu5/4WquXlzqgvNm8FWuuW6/0Yd8S2rYxw==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-+s+6zjd0X68hfAcn92NsEPXnSYOF3O7exw/Fj4UfRTB+UL+Tdjdkzu5/4WquXlzqgvNm8FWuuW6/0Yd8S2rYxw==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} object-assign@4.1.1: - resolution: - { - integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} obug@2.1.4: - resolution: - { - integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==, - } - engines: { node: ">=12.20.0" } + resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} + engines: {node: '>=12.20.0'} on-exit-leak-free@2.1.2: - resolution: - { - integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==, - } - engines: { node: ">=14.0.0" } + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} on-finished@2.3.0: - resolution: - { - integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} on-finished@2.4.1: - resolution: - { - integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} on-headers@1.1.0: - resolution: - { - integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} onetime@2.0.1: - resolution: - { - integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} open@7.4.2: - resolution: - { - integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} optionator@0.9.4: - resolution: - { - integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} ora@3.4.0: - resolution: - { - integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} + engines: {node: '>=6'} p-limit@2.3.0: - resolution: - { - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} p-locate@4.1.0: - resolution: - { - integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} p-try@2.2.0: - resolution: - { - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} parse-png@2.1.0: - resolution: - { - integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} + engines: {node: '>=10'} parseurl@1.3.3: - resolution: - { - integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} path-parse@1.0.7: - resolution: - { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, - } + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} path-scurry@2.0.2: - resolution: - { - integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==, - } - engines: { node: 18 || 20 || >=22 } + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} pathe@2.0.3: - resolution: - { - integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, - } + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} pg-cloudflare@1.4.0: - resolution: - { - integrity: sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==, - } + resolution: {integrity: sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==} pg-connection-string@2.14.0: - resolution: - { - integrity: sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==, - } + resolution: {integrity: sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==} pg-int8@1.0.1: - resolution: - { - integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==, - } - engines: { node: ">=4.0.0" } + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} pg-pool@3.14.0: - resolution: - { - integrity: sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==, - } + resolution: {integrity: sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==} peerDependencies: - pg: ">=8.0" + pg: '>=8.0' pg-protocol@1.16.0: - resolution: - { - integrity: sha512-sILXutLVjCLjcDuOmvhX5e2Z4cS5qG/6Bu3VkpFwdf/633ElGLpEh9bgmuI5I4sqKqkifQiGyiCcx1HdtrK7tg==, - } + resolution: {integrity: sha512-sILXutLVjCLjcDuOmvhX5e2Z4cS5qG/6Bu3VkpFwdf/633ElGLpEh9bgmuI5I4sqKqkifQiGyiCcx1HdtrK7tg==} pg-types@2.2.0: - resolution: - { - integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} pg@8.23.0: - resolution: - { - integrity: sha512-Ip2EQCngowJLGOfCwkFhPXU7/ljlhn6Rxlmy4XYfL2Y+vyRM59+8uR2xqRWKdYmbXmxCFOAmKxBuSUCdF34qLg==, - } - engines: { node: ">= 16.0.0" } + resolution: {integrity: sha512-Ip2EQCngowJLGOfCwkFhPXU7/ljlhn6Rxlmy4XYfL2Y+vyRM59+8uR2xqRWKdYmbXmxCFOAmKxBuSUCdF34qLg==} + engines: {node: '>= 16.0.0'} peerDependencies: - pg-native: ">=3.0.1" + pg-native: '>=3.0.1' peerDependenciesMeta: pg-native: optional: true pgpass@1.0.5: - resolution: - { - integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==, - } + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} picocolors@1.1.1: - resolution: - { - integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, - } + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} picomatch@2.3.2: - resolution: - { - integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==, - } - engines: { node: ">=8.6" } + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} picomatch@4.0.5: - resolution: - { - integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} pino-abstract-transport@3.0.0: - resolution: - { - integrity: sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==, - } + resolution: {integrity: sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==} pino-std-serializers@7.1.0: - resolution: - { - integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==, - } + resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==} pino@10.3.1: - resolution: - { - integrity: sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==, - } + resolution: {integrity: sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==} hasBin: true plist@3.1.1: - resolution: - { - integrity: sha512-ZIfcLJC+7E7FBFnDxm9MPmt7D+DidyQ26lewieO75AdhA2ayMtsJSES0iWzqJQbcVRSrTufQoy0DR94xHue0oA==, - } - engines: { node: ">=10.4.0" } + resolution: {integrity: sha512-ZIfcLJC+7E7FBFnDxm9MPmt7D+DidyQ26lewieO75AdhA2ayMtsJSES0iWzqJQbcVRSrTufQoy0DR94xHue0oA==} + engines: {node: '>=10.4.0'} pngjs@3.4.0: - resolution: - { - integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==, - } - engines: { node: ">=4.0.0" } + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} pngjs@5.0.0: - resolution: - { - integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==, - } - engines: { node: ">=10.13.0" } + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} postcss@8.5.26: - resolution: - { - integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==, - } - engines: { node: ^10 || ^12 || >=14 } + resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==} + engines: {node: ^10 || ^12 || >=14} postgres-array@2.0.0: - resolution: - { - integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} postgres-bytea@1.0.1: - resolution: - { - integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} + engines: {node: '>=0.10.0'} postgres-date@1.0.7: - resolution: - { - integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} - postgres-interval@1.2.0: - resolution: - { - integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==, - } - engines: { node: ">=0.10.0" } + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} prelude-ls@1.2.1: - resolution: - { - integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} prettier@3.9.6: - resolution: - { - integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} + engines: {node: '>=14'} hasBin: true pretty-format@29.7.0: - resolution: - { - integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} proc-log@4.2.0: - resolution: - { - integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} process-warning@4.0.1: - resolution: - { - integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==, - } + resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==} process-warning@5.1.0: - resolution: - { - integrity: sha512-jQSaVHsPgtyw60e1rQ/A+/ArPEj/S8pS/vFnyGa/gYFXrKk/6RuDkoqVDQ5NI5MmS01698ltlAk0NoDBNLujRw==, - } + resolution: {integrity: sha512-jQSaVHsPgtyw60e1rQ/A+/ArPEj/S8pS/vFnyGa/gYFXrKk/6RuDkoqVDQ5NI5MmS01698ltlAk0NoDBNLujRw==} progress@2.0.3: - resolution: - { - integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} promise@8.3.0: - resolution: - { - integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==, - } + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} prompts@2.4.2: - resolution: - { - integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} prop-types@15.8.1: - resolution: - { - integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==, - } + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} protobufjs@7.6.6: - resolution: - { - integrity: sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg==, - } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg==} + engines: {node: '>=12.0.0'} punycode@2.3.1: - resolution: - { - integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} pvtsutils@1.3.6: - resolution: - { - integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==, - } + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} pvutils@1.2.0: - resolution: - { - integrity: sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg==, - } - engines: { node: ">=16.0.0" } + resolution: {integrity: sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg==} + engines: {node: '>=16.0.0'} qrcode.react@4.2.0: - resolution: - { - integrity: sha512-QpgqWi8rD9DsS9EP3z7BT+5lY5SFhsqGjpgW5DY/i3mK4M9DTBNz3ErMi8BWYEfI3L0d8GIbGmcdFAS1uIRGjA==, - } + resolution: {integrity: sha512-QpgqWi8rD9DsS9EP3z7BT+5lY5SFhsqGjpgW5DY/i3mK4M9DTBNz3ErMi8BWYEfI3L0d8GIbGmcdFAS1uIRGjA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 qrcode@1.5.4: - resolution: - { - integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==, - } - engines: { node: ">=10.13.0" } + resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==} + engines: {node: '>=10.13.0'} hasBin: true quick-format-unescaped@4.0.4: - resolution: - { - integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==, - } + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} range-parser@1.2.1: - resolution: - { - integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} react-devtools-core@6.1.5: - resolution: - { - integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==, - } + resolution: {integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==} react-dom@19.2.8: - resolution: - { - integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==, - } + resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==} peerDependencies: react: ^19.2.8 react-is@16.13.1: - resolution: - { - integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, - } + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} react-is@18.3.1: - resolution: - { - integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==, - } + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} react-native-qrcode-svg@6.3.22: - resolution: - { - integrity: sha512-1r4qTn6axLVuCuDqK4hu0pviOKWkvvAJIk0hKQVkpU6/O9FfbQpA/CsNJz/lBlGKFc0k/SRLGkD0pPTUKn9vtg==, - } + resolution: {integrity: sha512-1r4qTn6axLVuCuDqK4hu0pviOKWkvvAJIk0hKQVkpU6/O9FfbQpA/CsNJz/lBlGKFc0k/SRLGkD0pPTUKn9vtg==} peerDependencies: - react: "*" - react-native: ">=0.63.4" - react-native-svg: ">=14.0.0" + react: '*' + react-native: '>=0.63.4' + react-native-svg: '>=14.0.0' react-native-svg@15.15.5: - resolution: - { - integrity: sha512-L4go5jA+GWutdJ/JucuN20cjAbMg1HmMtAP+wZ+3JLCf6Jd0bhXQHxciRP/AQm/FlrIEZwkMcHNZP+FXAiic0w==, - } + resolution: {integrity: sha512-L4go5jA+GWutdJ/JucuN20cjAbMg1HmMtAP+wZ+3JLCf6Jd0bhXQHxciRP/AQm/FlrIEZwkMcHNZP+FXAiic0w==} peerDependencies: - react: "*" - react-native: "*" + react: '*' + react-native: '*' react-native@0.86.3: - resolution: - { - integrity: sha512-JR5s3bM9ezud+Mw24GlNXNfthqPIKwrQgPPJcam+L97t2sKjjEavhCzBn+fyqZZRcM5+XlhYxpTxVkK7e1n38Q==, - } - engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } + resolution: {integrity: sha512-JR5s3bM9ezud+Mw24GlNXNfthqPIKwrQgPPJcam+L97t2sKjjEavhCzBn+fyqZZRcM5+XlhYxpTxVkK7e1n38Q==} + engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} hasBin: true peerDependencies: - "@react-native/jest-preset": 0.86.3 - "@types/react": ^19.1.1 + '@react-native/jest-preset': 0.86.3 + '@types/react': ^19.1.1 react: ^19.2.3 peerDependenciesMeta: - "@react-native/jest-preset": + '@react-native/jest-preset': optional: true - "@types/react": + '@types/react': optional: true react-refresh@0.14.2: - resolution: - { - integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} react@19.2.3: - resolution: - { - integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} + engines: {node: '>=0.10.0'} react@19.2.8: - resolution: - { - integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} + engines: {node: '>=0.10.0'} real-require@0.2.0: - resolution: - { - integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==, - } - engines: { node: ">= 12.13.0" } + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} real-require@1.0.0: - resolution: - { - integrity: sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==, - } + resolution: {integrity: sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==} redis@5.12.1: - resolution: - { - integrity: sha512-LDsoVvb/CpoV9EN3FXvgvSHNJWuCIzl9MiO3ppOevuGLpSGJhwfQjpEwfFJcQvNSddHADDdZaWx0HnmMxRXG7g==, - } - engines: { node: ">= 18.19.0" } + resolution: {integrity: sha512-LDsoVvb/CpoV9EN3FXvgvSHNJWuCIzl9MiO3ppOevuGLpSGJhwfQjpEwfFJcQvNSddHADDdZaWx0HnmMxRXG7g==} + engines: {node: '>= 18.19.0'} reflect-metadata@0.2.2: - resolution: - { - integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==, - } + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} regenerate-unicode-properties@10.2.2: - resolution: - { - integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + engines: {node: '>=4'} regenerate@1.4.2: - resolution: - { - integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==, - } + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} regenerator-runtime@0.13.11: - resolution: - { - integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==, - } + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} regexpu-core@6.4.0: - resolution: - { - integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} + engines: {node: '>=4'} regjsgen@0.8.0: - resolution: - { - integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==, - } + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} regjsparser@0.13.2: - resolution: - { - integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==, - } + resolution: {integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==} hasBin: true require-directory@2.1.1: - resolution: - { - integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} require-from-string@2.0.2: - resolution: - { - integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} require-in-the-middle@8.0.1: - resolution: - { - integrity: sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==, - } - engines: { node: ">=9.3.0 || >=8.10.0 <9.0.0" } + resolution: {integrity: sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==} + engines: {node: '>=9.3.0 || >=8.10.0 <9.0.0'} require-main-filename@2.0.0: - resolution: - { - integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==, - } + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} resolve-from@5.0.0: - resolution: - { - integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} resolve-workspace-root@2.0.1: - resolution: - { - integrity: sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==, - } + resolution: {integrity: sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==} resolve@1.22.12: - resolution: - { - integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + engines: {node: '>= 0.4'} hasBin: true restore-cursor@2.0.0: - resolution: - { - integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} ret@0.5.0: - resolution: - { - integrity: sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==} + engines: {node: '>=10'} reusify@1.1.0: - resolution: - { - integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==, - } - engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rfdc@1.4.1: - resolution: - { - integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==, - } + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} rolldown@1.2.5: - resolution: - { - integrity: sha512-VD2IE5PUG4Oj8zz2VGykiYd5wbnjdIiSsNQb8Qu5B+noEp+A78mu2iVvpp27g8es14Tk9rofNs5Tku9iQCS4fA==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-VD2IE5PUG4Oj8zz2VGykiYd5wbnjdIiSsNQb8Qu5B+noEp+A78mu2iVvpp27g8es14Tk9rofNs5Tku9iQCS4fA==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true safe-buffer@5.2.1: - resolution: - { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, - } + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} safe-regex2@5.1.1: - resolution: - { - integrity: sha512-mOSBvHGDZMuIEZMdOz/aCEYDCv0E7nfcNsIhUF+/P+xC7Hyf3FkvymqgPbg9D1EdSGu+uKbJgy09K/RKKc7kJA==, - } + resolution: {integrity: sha512-mOSBvHGDZMuIEZMdOz/aCEYDCv0E7nfcNsIhUF+/P+xC7Hyf3FkvymqgPbg9D1EdSGu+uKbJgy09K/RKKc7kJA==} hasBin: true safe-stable-stringify@2.5.0: - resolution: - { - integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} sandbox-cli-detector@0.2.0: - resolution: - { - integrity: sha512-4lyHX0ZU0AZKwjgZ1InxZAa3PNpyEb8rOQ+Zss1ReYmhNzW0Q+h1zE5nvniXN0HaAWZaZE1zgVNEirb0R7LmNg==, - } - engines: { node: ">=18.18" } + resolution: {integrity: sha512-4lyHX0ZU0AZKwjgZ1InxZAa3PNpyEb8rOQ+Zss1ReYmhNzW0Q+h1zE5nvniXN0HaAWZaZE1zgVNEirb0R7LmNg==} + engines: {node: '>=18.18'} hasBin: true sax@1.6.1: - resolution: - { - integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==, - } - engines: { node: ">=11.0.0" } + resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==} + engines: {node: '>=11.0.0'} scheduler@0.27.0: - resolution: - { - integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==, - } + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} secure-json-parse@4.1.0: - resolution: - { - integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==, - } + resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==} semver@6.3.1: - resolution: - { - integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, - } + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true semver@7.8.5: - resolution: - { - integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} hasBin: true send@0.19.2: - resolution: - { - integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} + engines: {node: '>= 0.8.0'} serialize-error@2.1.0: - resolution: - { - integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} serve-static@1.16.3: - resolution: - { - integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} + engines: {node: '>= 0.8.0'} set-blocking@2.0.0: - resolution: - { - integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==, - } + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} set-cookie-parser@2.7.2: - resolution: - { - integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==, - } + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} setprototypeof@1.2.0: - resolution: - { - integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==, - } + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} shell-quote@1.10.0: - resolution: - { - integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==} + engines: {node: '>= 0.4'} siginfo@2.0.0: - resolution: - { - integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==, - } + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} signal-exit@3.0.7: - resolution: - { - integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, - } + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} simple-plist@1.3.1: - resolution: - { - integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==, - } + resolution: {integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==} sisteransi@1.0.5: - resolution: - { - integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, - } + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} slugify@1.6.9: - resolution: - { - integrity: sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==, - } - engines: { node: ">=8.0.0" } + resolution: {integrity: sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==} + engines: {node: '>=8.0.0'} sonic-boom@4.2.1: - resolution: - { - integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==, - } + resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==} source-map-js@1.2.1: - resolution: - { - integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} source-map-support@0.5.21: - resolution: - { - integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, - } + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} source-map@0.5.7: - resolution: - { - integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} source-map@0.6.1: - resolution: - { - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} split2@4.2.0: - resolution: - { - integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==, - } - engines: { node: ">= 10.x" } + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} stackback@0.0.2: - resolution: - { - integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==, - } + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} stackframe@1.3.4: - resolution: - { - integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==, - } + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} stacktrace-parser@0.1.11: - resolution: - { - integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} + engines: {node: '>=6'} statuses@1.5.0: - resolution: - { - integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} statuses@2.0.2: - resolution: - { - integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} std-env@4.2.0: - resolution: - { - integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==, - } + resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} stream-buffers@2.2.0: - resolution: - { - integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==, - } - engines: { node: ">= 0.10.0" } + resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} + engines: {node: '>= 0.10.0'} string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} strip-ansi@5.2.0: - resolution: - { - integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} structured-headers@0.4.1: - resolution: - { - integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==, - } + resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} sumchecker@3.0.1: - resolution: - { - integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==, - } - engines: { node: ">= 8.0" } + resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} + engines: {node: '>= 8.0'} supports-color@5.5.0: - resolution: - { - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} supports-color@7.2.0: - resolution: - { - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} supports-color@8.1.1: - resolution: - { - integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} supports-hyperlinks@2.3.0: - resolution: - { - integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} supports-preserve-symlinks-flag@1.0.0: - resolution: - { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} terminal-link@2.1.1: - resolution: - { - integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} terser@5.51.2: - resolution: - { - integrity: sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==} + engines: {node: '>=10'} hasBin: true text-encoding@0.7.0: - resolution: - { - integrity: sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==, - } + resolution: {integrity: sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==} deprecated: no longer maintained thread-stream@4.2.0: - resolution: - { - integrity: sha512-e2zZ96wSChazBsbENf/Pcm/4swHt2cEKQ92rhUjkL9GCKiTDJIaTBenjE/m9DXi0QBmTMDkFDdOomUy20A1tDQ==, - } - engines: { node: ">=20" } + resolution: {integrity: sha512-e2zZ96wSChazBsbENf/Pcm/4swHt2cEKQ92rhUjkL9GCKiTDJIaTBenjE/m9DXi0QBmTMDkFDdOomUy20A1tDQ==} + engines: {node: '>=20'} throat@5.0.0: - resolution: - { - integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==, - } + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} tinybench@2.9.0: - resolution: - { - integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==, - } + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} tinyexec@1.3.0: - resolution: - { - integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} + engines: {node: '>=18'} tinyglobby@0.2.17: - resolution: - { - integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==, - } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} tinyrainbow@3.1.1: - resolution: - { - integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==, - } - engines: { node: ">=14.0.0" } + resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} + engines: {node: '>=14.0.0'} tmpl@1.0.5: - resolution: - { - integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, - } + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, - } - engines: { node: ">=8.0" } + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} toad-cache@3.7.4: - resolution: - { - integrity: sha512-m1TdR/rvT7kgGJZhspNtXdsdYk0fddFpJJFlG5s+UkPFo6lkLoZ3YLOaovPYjq1R75NP5JfeTlSHaOsE09peCg==, - } - engines: { node: ">=20" } + resolution: {integrity: sha512-m1TdR/rvT7kgGJZhspNtXdsdYk0fddFpJJFlG5s+UkPFo6lkLoZ3YLOaovPYjq1R75NP5JfeTlSHaOsE09peCg==} + engines: {node: '>=20'} toidentifier@1.0.1: - resolution: - { - integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==, - } - engines: { node: ">=0.6" } + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} toqr@0.1.1: - resolution: - { - integrity: sha512-FWAPzCIHZHnrE/5/w9MPk0kK25hSQSH2IKhYh9PyjS3SG/+IEMvlwIHbhz+oF7xl54I+ueZlVnMjyzdSwLmAwA==, - } + resolution: {integrity: sha512-FWAPzCIHZHnrE/5/w9MPk0kK25hSQSH2IKhYh9PyjS3SG/+IEMvlwIHbhz+oF7xl54I+ueZlVnMjyzdSwLmAwA==} ts-api-utils@2.5.0: - resolution: - { - integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==, - } - engines: { node: ">=18.12" } + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} peerDependencies: - typescript: ">=4.8.4" + typescript: '>=4.8.4' tslib@1.14.1: - resolution: - { - integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, - } + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} tslib@2.8.1: - resolution: - { - integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, - } + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} tsx@4.23.12: - resolution: - { - integrity: sha512-FDf4L4sYzKtzWYhU/Xm0AQFdTjdIxNo9ElTf2mxXM6k8YMHXzYUe4yODVaXP4V9uMFbVg8c0qyBccK2OOxb45Q==, - } - engines: { node: ">=18.0.0" } + resolution: {integrity: sha512-FDf4L4sYzKtzWYhU/Xm0AQFdTjdIxNo9ElTf2mxXM6k8YMHXzYUe4yODVaXP4V9uMFbVg8c0qyBccK2OOxb45Q==} + engines: {node: '>=18.0.0'} hasBin: true tsyringe@4.10.0: - resolution: - { - integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==, - } - engines: { node: ">= 6.0.0" } + resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} + engines: {node: '>= 6.0.0'} turbo@2.10.11: - resolution: - { - integrity: sha512-yQfwQVoRXwOuyX1LxiJFBFNg6VfuYh+/RyZLd82+isgyLkBXw3S5XRRzvcck1FAjSCG5sVyLd+O1eDMvYa3J7g==, - } + resolution: {integrity: sha512-yQfwQVoRXwOuyX1LxiJFBFNg6VfuYh+/RyZLd82+isgyLkBXw3S5XRRzvcck1FAjSCG5sVyLd+O1eDMvYa3J7g==} hasBin: true type-check@0.4.0: - resolution: - { - integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} type-fest@0.21.3: - resolution: - { - integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} type-fest@0.7.1: - resolution: - { - integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} typescript-eslint@8.67.0: - resolution: - { - integrity: sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.1.0" + typescript: '>=4.8.4 <6.1.0' typescript@6.0.3: - resolution: - { - integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==, - } - engines: { node: ">=14.17" } + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} hasBin: true undici-types@7.18.2: - resolution: - { - integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==, - } + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} undici-types@8.3.0: - resolution: - { - integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==, - } + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} undici@7.29.1: - resolution: - { - integrity: sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==, - } - engines: { node: ">=20.18.1" } + resolution: {integrity: sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==} + engines: {node: '>=20.18.1'} unicode-canonical-property-names-ecmascript@2.0.1: - resolution: - { - integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} unicode-match-property-ecmascript@2.0.0: - resolution: - { - integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} unicode-match-property-value-ecmascript@2.2.1: - resolution: - { - integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + engines: {node: '>=4'} unicode-property-aliases-ecmascript@2.2.0: - resolution: - { - integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + engines: {node: '>=4'} unpipe@1.0.0: - resolution: - { - integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} update-browserslist-db@1.3.2: - resolution: - { - integrity: sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==, - } + resolution: {integrity: sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==} hasBin: true peerDependencies: - browserslist: ">= 4.21.0" + browserslist: '>= 4.21.0' uri-js@4.4.1: - resolution: - { - integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, - } + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} utils-merge@1.0.1: - resolution: - { - integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==, - } - engines: { node: ">= 0.4.0" } + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} uuid@11.1.1: - resolution: - { - integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==, - } + resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} hasBin: true validate-npm-package-name@5.0.1: - resolution: - { - integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} vary@1.1.2: - resolution: - { - integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==, - } - engines: { node: ">= 0.8" } + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} vite@8.2.2: - resolution: - { - integrity: sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - "@types/node": ^20.19.0 || >=22.12.0 - "@vitejs/devtools": ^0.4.0 || ^0.5.0 + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.4.0 || ^0.5.0 esbuild: ^0.27.0 || ^0.28.0 - jiti: ">=1.21.0" + jiti: '>=1.21.0' less: ^4.0.0 sass: ^1.70.0 sass-embedded: ^1.70.0 - stylus: ">=0.54.8" + stylus: '>=0.54.8' sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 peerDependenciesMeta: - "@types/node": + '@types/node': optional: true - "@vitejs/devtools": + '@vitejs/devtools': optional: true esbuild: optional: true @@ -6511,43 +4126,40 @@ packages: optional: true vitest@4.1.11: - resolution: - { - integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==, - } - engines: { node: ^20.0.0 || ^22.0.0 || >=24.0.0 } + resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: - "@edge-runtime/vm": "*" - "@opentelemetry/api": ^1.9.0 - "@types/node": ^20.0.0 || ^22.0.0 || >=24.0.0 - "@vitest/browser-playwright": 4.1.11 - "@vitest/browser-preview": 4.1.11 - "@vitest/browser-webdriverio": 4.1.11 - "@vitest/coverage-istanbul": 4.1.11 - "@vitest/coverage-v8": 4.1.11 - "@vitest/ui": 4.1.11 - happy-dom: "*" - jsdom: "*" + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.11 + '@vitest/browser-preview': 4.1.11 + '@vitest/browser-webdriverio': 4.1.11 + '@vitest/coverage-istanbul': 4.1.11 + '@vitest/coverage-v8': 4.1.11 + '@vitest/ui': 4.1.11 + happy-dom: '*' + jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: - "@edge-runtime/vm": + '@edge-runtime/vm': optional: true - "@opentelemetry/api": + '@opentelemetry/api': optional: true - "@types/node": + '@types/node': optional: true - "@vitest/browser-playwright": + '@vitest/browser-playwright': optional: true - "@vitest/browser-preview": + '@vitest/browser-preview': optional: true - "@vitest/browser-webdriverio": + '@vitest/browser-webdriverio': optional: true - "@vitest/coverage-istanbul": + '@vitest/coverage-istanbul': optional: true - "@vitest/coverage-v8": + '@vitest/coverage-v8': optional: true - "@vitest/ui": + '@vitest/ui': optional: true happy-dom: optional: true @@ -6555,84 +4167,48 @@ packages: optional: true vlq@1.0.1: - resolution: - { - integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==, - } + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} walker@1.0.8: - resolution: - { - integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, - } + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} wcwidth@1.0.1: - resolution: - { - integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, - } + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} whatwg-fetch@3.6.20: - resolution: - { - integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==, - } + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} whatwg-url-minimum@0.1.2: - resolution: - { - integrity: sha512-XPEm0XFQWNVG292lII1PrRRJl3sItrs7CettZ4ncYxuDVpLyy+NwlGyut2hXI0JswcJUxeCH+CyOJK0ZzAXD6A==, - } + resolution: {integrity: sha512-XPEm0XFQWNVG292lII1PrRRJl3sItrs7CettZ4ncYxuDVpLyy+NwlGyut2hXI0JswcJUxeCH+CyOJK0ZzAXD6A==} which-module@2.0.1: - resolution: - { - integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==, - } + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} hasBin: true why-is-node-running@2.3.0: - resolution: - { - integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} hasBin: true word-wrap@1.2.5: - resolution: - { - integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} wrap-ansi@6.2.0: - resolution: - { - integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} ws@7.5.13: - resolution: - { - integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==, - } - engines: { node: ">=8.3.0" } + resolution: {integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==} + engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -6643,14 +4219,11 @@ packages: optional: true ws@8.21.3: - resolution: - { - integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==, - } - engines: { node: ">=10.0.0" } + resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} + engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" + utf-8-validate: '>=5.0.2' peerDependenciesMeta: bufferutil: optional: true @@ -6658,135 +4231,88 @@ packages: optional: true xcode@3.0.1: - resolution: - { - integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==, - } - engines: { node: ">=10.0.0" } + resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==} + engines: {node: '>=10.0.0'} xml2js@0.6.0: - resolution: - { - integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==, - } - engines: { node: ">=4.0.0" } + resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} + engines: {node: '>=4.0.0'} xmlbuilder@11.0.1: - resolution: - { - integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==, - } - engines: { node: ">=4.0" } + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} xmlbuilder@15.1.1: - resolution: - { - integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==, - } - engines: { node: ">=8.0" } + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} xtend@4.0.2: - resolution: - { - integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==, - } - engines: { node: ">=0.4" } + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} y18n@4.0.3: - resolution: - { - integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==, - } + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} y18n@5.0.8: - resolution: - { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} yallist@3.1.1: - resolution: - { - integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, - } + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} yaml@2.9.0: - resolution: - { - integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==, - } - engines: { node: ">= 14.6" } + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} hasBin: true yargs-parser@18.1.3: - resolution: - { - integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} yargs-parser@21.1.1: - resolution: - { - integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} yargs@15.4.1: - resolution: - { - integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} yargs@17.7.3: - resolution: - { - integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} + engines: {node: '>=12'} yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} zod@3.25.76: - resolution: - { - integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==, - } + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} zod@4.4.3: - resolution: - { - integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==, - } + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} snapshots: - "@babel/code-frame@7.29.7": + + '@babel/code-frame@7.29.7': dependencies: - "@babel/helper-validator-identifier": 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 js-tokens: 4.0.0 picocolors: 1.1.1 - "@babel/compat-data@7.29.7": {} + '@babel/compat-data@7.29.7': {} - "@babel/core@7.29.7(supports-color@8.1.1)": + '@babel/core@7.29.7(supports-color@8.1.1)': dependencies: - "@babel/code-frame": 7.29.7 - "@babel/generator": 7.29.8 - "@babel/helper-compilation-targets": 7.29.7 - "@babel/helper-module-transforms": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/helpers": 7.29.7 - "@babel/parser": 7.29.8 - "@babel/template": 7.29.7 - "@babel/traverse": 7.29.8(supports-color@8.1.1) - "@babel/types": 7.29.8 - "@jridgewell/remapping": 2.3.5 + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@8.1.1) + '@babel/types': 7.29.8 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -6795,372 +4321,372 @@ snapshots: transitivePeerDependencies: - supports-color - "@babel/generator@7.29.8": + '@babel/generator@7.29.8': dependencies: - "@babel/parser": 7.29.8 - "@babel/types": 7.29.8 - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/trace-mapping": 0.3.31 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - "@babel/helper-annotate-as-pure@7.29.7": + '@babel/helper-annotate-as-pure@7.29.7': dependencies: - "@babel/types": 7.29.8 + '@babel/types': 7.29.8 - "@babel/helper-compilation-targets@7.29.7": + '@babel/helper-compilation-targets@7.29.7': dependencies: - "@babel/compat-data": 7.29.7 - "@babel/helper-validator-option": 7.29.7 + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 browserslist: 4.28.9 lru-cache: 5.1.1 semver: 6.3.1 - "@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-annotate-as-pure": 7.29.7 - "@babel/helper-member-expression-to-functions": 7.29.7(supports-color@8.1.1) - "@babel/helper-optimise-call-expression": 7.29.7 - "@babel/helper-replace-supers": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/helper-skip-transparent-expression-wrappers": 7.29.7(supports-color@8.1.1) - "@babel/traverse": 7.29.8(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-member-expression-to-functions': 7.29.7(supports-color@8.1.1) + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@8.1.1) + '@babel/traverse': 7.29.8(supports-color@8.1.1) semver: 6.3.1 transitivePeerDependencies: - supports-color - "@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-annotate-as-pure": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-annotate-as-pure': 7.29.7 regexpu-core: 6.4.0 semver: 6.3.1 - "@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-compilation-targets": 7.29.7 - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 debug: 4.4.3(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.12 transitivePeerDependencies: - supports-color - "@babel/helper-globals@7.29.7": {} + '@babel/helper-globals@7.29.7': {} - "@babel/helper-member-expression-to-functions@7.29.7(supports-color@8.1.1)": + '@babel/helper-member-expression-to-functions@7.29.7(supports-color@8.1.1)': dependencies: - "@babel/traverse": 7.29.8(supports-color@8.1.1) - "@babel/types": 7.29.8 + '@babel/traverse': 7.29.8(supports-color@8.1.1) + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color - "@babel/helper-module-imports@7.29.7(supports-color@8.1.1)": + '@babel/helper-module-imports@7.29.7(supports-color@8.1.1)': dependencies: - "@babel/traverse": 7.29.8(supports-color@8.1.1) - "@babel/types": 7.29.8 + '@babel/traverse': 7.29.8(supports-color@8.1.1) + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color - "@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-module-imports": 7.29.7(supports-color@8.1.1) - "@babel/helper-validator-identifier": 7.29.7 - "@babel/traverse": 7.29.8(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-module-imports': 7.29.7(supports-color@8.1.1) + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@8.1.1) transitivePeerDependencies: - supports-color - "@babel/helper-optimise-call-expression@7.29.7": + '@babel/helper-optimise-call-expression@7.29.7': dependencies: - "@babel/types": 7.29.8 + '@babel/types': 7.29.8 - "@babel/helper-plugin-utils@7.29.7": {} + '@babel/helper-plugin-utils@7.29.7': {} - "@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-annotate-as-pure": 7.29.7 - "@babel/helper-wrap-function": 7.29.7(supports-color@8.1.1) - "@babel/traverse": 7.29.8(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-wrap-function': 7.29.7(supports-color@8.1.1) + '@babel/traverse': 7.29.8(supports-color@8.1.1) transitivePeerDependencies: - supports-color - "@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-member-expression-to-functions": 7.29.7(supports-color@8.1.1) - "@babel/helper-optimise-call-expression": 7.29.7 - "@babel/traverse": 7.29.8(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-member-expression-to-functions': 7.29.7(supports-color@8.1.1) + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@8.1.1) transitivePeerDependencies: - supports-color - "@babel/helper-skip-transparent-expression-wrappers@7.29.7(supports-color@8.1.1)": + '@babel/helper-skip-transparent-expression-wrappers@7.29.7(supports-color@8.1.1)': dependencies: - "@babel/traverse": 7.29.8(supports-color@8.1.1) - "@babel/types": 7.29.8 + '@babel/traverse': 7.29.8(supports-color@8.1.1) + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color - "@babel/helper-string-parser@7.29.7": {} + '@babel/helper-string-parser@7.29.7': {} - "@babel/helper-validator-identifier@7.29.7": {} + '@babel/helper-validator-identifier@7.29.7': {} - "@babel/helper-validator-option@7.29.7": {} + '@babel/helper-validator-option@7.29.7': {} - "@babel/helper-wrap-function@7.29.7(supports-color@8.1.1)": + '@babel/helper-wrap-function@7.29.7(supports-color@8.1.1)': dependencies: - "@babel/template": 7.29.7 - "@babel/traverse": 7.29.8(supports-color@8.1.1) - "@babel/types": 7.29.8 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@8.1.1) + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color - "@babel/helpers@7.29.7": + '@babel/helpers@7.29.7': dependencies: - "@babel/template": 7.29.7 - "@babel/types": 7.29.8 + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 - "@babel/parser@7.29.8": + '@babel/parser@7.29.8': dependencies: - "@babel/types": 7.29.8 + '@babel/types': 7.29.8 - "@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 - "@babel/plugin-syntax-decorators": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-decorators': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) transitivePeerDependencies: - supports-color - "@babel/plugin-proposal-export-default-from@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-proposal-export-default-from@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-syntax-decorators@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-syntax-decorators@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-syntax-export-default-from@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-syntax-export-default-from@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-syntax-flow@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-syntax-flow@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 - "@babel/helper-remap-async-to-generator": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/traverse": 7.29.8(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/traverse': 7.29.8(supports-color@8.1.1) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-module-imports": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 - "@babel/helper-remap-async-to-generator": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-module-imports': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-annotate-as-pure": 7.29.7 - "@babel/helper-compilation-targets": 7.29.7 - "@babel/helper-globals": 7.29.7 - "@babel/helper-plugin-utils": 7.29.7 - "@babel/helper-replace-supers": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/traverse": 7.29.8(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/traverse': 7.29.8(supports-color@8.1.1) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 - "@babel/traverse": 7.29.8(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@8.1.1) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-transform-flow-strip-types@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-transform-flow-strip-types@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 - "@babel/plugin-syntax-flow": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-flow': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 - "@babel/helper-skip-transparent-expression-wrappers": 7.29.7(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-module-transforms": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-create-regexp-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-compilation-targets": 7.29.7 - "@babel/helper-plugin-utils": 7.29.7 - "@babel/plugin-transform-destructuring": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-parameters": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/traverse": 7.29.8(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/traverse': 7.29.8(supports-color@8.1.1) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 - "@babel/helper-skip-transparent-expression-wrappers": 7.29.7(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-annotate-as-pure": 7.29.7 - "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-react-display-name@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-transform-react-display-name@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-transform-react-jsx-development@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-react-jsx-development@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/plugin-transform-react-jsx": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-react-jsx@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-react-jsx@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-annotate-as-pure": 7.29.7 - "@babel/helper-module-imports": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 - "@babel/plugin-syntax-jsx": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/types": 7.29.8 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-module-imports': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/types': 7.29.8 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-react-pure-annotations@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-transform-react-pure-annotations@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-annotate-as-pure": 7.29.7 - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 - "@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-module-imports": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-module-imports': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) @@ -7168,62 +4694,62 @@ snapshots: transitivePeerDependencies: - supports-color - "@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-annotate-as-pure": 7.29.7 - "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 - "@babel/helper-skip-transparent-expression-wrappers": 7.29.7(supports-color@8.1.1) - "@babel/plugin-syntax-typescript": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@8.1.1) + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": + '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-create-regexp-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/helper-plugin-utils": 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/helper-plugin-utils': 7.29.7 - "@babel/preset-typescript@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@babel/preset-typescript@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-plugin-utils": 7.29.7 - "@babel/helper-validator-option": 7.29.7 - "@babel/plugin-syntax-jsx": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-transform-modules-commonjs": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-typescript": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color - "@babel/runtime@7.29.7": {} + '@babel/runtime@7.29.7': {} - "@babel/template@7.29.7": + '@babel/template@7.29.7': dependencies: - "@babel/code-frame": 7.29.7 - "@babel/parser": 7.29.8 - "@babel/types": 7.29.8 + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 - "@babel/traverse@7.29.8(supports-color@8.1.1)": + '@babel/traverse@7.29.8(supports-color@8.1.1)': dependencies: - "@babel/code-frame": 7.29.7 - "@babel/generator": 7.29.8 - "@babel/helper-globals": 7.29.7 - "@babel/parser": 7.29.8 - "@babel/template": 7.29.7 - "@babel/types": 7.29.8 + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color - "@babel/types@7.29.8": + '@babel/types@7.29.8': dependencies: - "@babel/helper-string-parser": 7.29.7 - "@babel/helper-validator-identifier": 7.29.7 + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 - "@electron-internal/extract-zip@1.0.5": {} + '@electron-internal/extract-zip@1.0.5': {} - "@electron/get@5.1.0(supports-color@8.1.1)": + '@electron/get@5.1.0(supports-color@8.1.1)': dependencies: debug: 4.4.3(supports-color@8.1.1) env-paths: 3.0.0 @@ -7236,143 +4762,143 @@ snapshots: transitivePeerDependencies: - supports-color - "@esbuild/aix-ppc64@0.28.2": + '@esbuild/aix-ppc64@0.28.2': optional: true - "@esbuild/android-arm64@0.28.2": + '@esbuild/android-arm64@0.28.2': optional: true - "@esbuild/android-arm@0.28.2": + '@esbuild/android-arm@0.28.2': optional: true - "@esbuild/android-x64@0.28.2": + '@esbuild/android-x64@0.28.2': optional: true - "@esbuild/darwin-arm64@0.28.2": + '@esbuild/darwin-arm64@0.28.2': optional: true - "@esbuild/darwin-x64@0.28.2": + '@esbuild/darwin-x64@0.28.2': optional: true - "@esbuild/freebsd-arm64@0.28.2": + '@esbuild/freebsd-arm64@0.28.2': optional: true - "@esbuild/freebsd-x64@0.28.2": + '@esbuild/freebsd-x64@0.28.2': optional: true - "@esbuild/linux-arm64@0.28.2": + '@esbuild/linux-arm64@0.28.2': optional: true - "@esbuild/linux-arm@0.28.2": + '@esbuild/linux-arm@0.28.2': optional: true - "@esbuild/linux-ia32@0.28.2": + '@esbuild/linux-ia32@0.28.2': optional: true - "@esbuild/linux-loong64@0.28.2": + '@esbuild/linux-loong64@0.28.2': optional: true - "@esbuild/linux-mips64el@0.28.2": + '@esbuild/linux-mips64el@0.28.2': optional: true - "@esbuild/linux-ppc64@0.28.2": + '@esbuild/linux-ppc64@0.28.2': optional: true - "@esbuild/linux-riscv64@0.28.2": + '@esbuild/linux-riscv64@0.28.2': optional: true - "@esbuild/linux-s390x@0.28.2": + '@esbuild/linux-s390x@0.28.2': optional: true - "@esbuild/linux-x64@0.28.2": + '@esbuild/linux-x64@0.28.2': optional: true - "@esbuild/netbsd-arm64@0.28.2": + '@esbuild/netbsd-arm64@0.28.2': optional: true - "@esbuild/netbsd-x64@0.28.2": + '@esbuild/netbsd-x64@0.28.2': optional: true - "@esbuild/openbsd-arm64@0.28.2": + '@esbuild/openbsd-arm64@0.28.2': optional: true - "@esbuild/openbsd-x64@0.28.2": + '@esbuild/openbsd-x64@0.28.2': optional: true - "@esbuild/openharmony-arm64@0.28.2": + '@esbuild/openharmony-arm64@0.28.2': optional: true - "@esbuild/sunos-x64@0.28.2": + '@esbuild/sunos-x64@0.28.2': optional: true - "@esbuild/win32-arm64@0.28.2": + '@esbuild/win32-arm64@0.28.2': optional: true - "@esbuild/win32-ia32@0.28.2": + '@esbuild/win32-ia32@0.28.2': optional: true - "@esbuild/win32-x64@0.28.2": + '@esbuild/win32-x64@0.28.2': optional: true - "@eslint-community/eslint-utils@4.10.1(eslint@10.8.1(supports-color@8.1.1))": + '@eslint-community/eslint-utils@4.10.1(eslint@10.8.1(supports-color@8.1.1))': dependencies: eslint: 10.8.1(supports-color@8.1.1) eslint-visitor-keys: 3.4.3 - "@eslint-community/regexpp@4.12.2": {} + '@eslint-community/regexpp@4.12.2': {} - "@eslint/config-array@0.23.5(supports-color@8.1.1)": + '@eslint/config-array@0.23.5(supports-color@8.1.1)': dependencies: - "@eslint/object-schema": 3.0.5 + '@eslint/object-schema': 3.0.5 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.6 transitivePeerDependencies: - supports-color - "@eslint/config-helpers@0.7.0": + '@eslint/config-helpers@0.7.0': dependencies: - "@eslint/core": 1.2.1 + '@eslint/core': 1.2.1 - "@eslint/core@1.2.1": + '@eslint/core@1.2.1': dependencies: - "@types/json-schema": 7.0.15 + '@types/json-schema': 7.0.15 - "@eslint/js@10.0.1(eslint@10.8.1(supports-color@8.1.1))": + '@eslint/js@10.0.1(eslint@10.8.1(supports-color@8.1.1))': optionalDependencies: eslint: 10.8.1(supports-color@8.1.1) - "@eslint/object-schema@3.0.5": {} + '@eslint/object-schema@3.0.5': {} - "@eslint/plugin-kit@0.7.2": + '@eslint/plugin-kit@0.7.2': dependencies: - "@eslint/core": 1.2.1 + '@eslint/core': 1.2.1 levn: 0.4.1 - "@expo/cli@57.0.22(@expo/dom-webview@57.0.1)(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3)": - dependencies: - "@expo/code-signing-certificates": 0.0.6 - "@expo/config": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - "@expo/config-plugins": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - "@expo/devcert": 1.2.1(supports-color@8.1.1) - "@expo/env": 2.4.3(supports-color@8.1.1) - "@expo/image-utils": 0.11.5(supports-color@8.1.1)(typescript@6.0.3) - "@expo/inline-modules": 0.1.7(supports-color@8.1.1)(typescript@6.0.3) - "@expo/json-file": 11.0.1 - "@expo/log-box": 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) - "@expo/metro": 56.0.2(supports-color@8.1.1) - "@expo/metro-config": 57.0.12(expo@57.0.20)(supports-color@8.1.1)(typescript@6.0.3) - "@expo/metro-file-map": 57.0.2(supports-color@8.1.1) - "@expo/osascript": 2.7.1 - "@expo/package-manager": 1.13.1 - "@expo/plist": 0.8.1 - "@expo/prebuild-config": 57.0.15(supports-color@8.1.1)(typescript@6.0.3) - "@expo/require-utils": 57.0.5(supports-color@8.1.1)(typescript@6.0.3) - "@expo/router-server": 57.0.9(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo-server@57.0.3)(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react@19.2.3)(supports-color@8.1.1) - "@expo/schema-utils": 57.0.2 - "@expo/spawn-async": 1.8.0 - "@expo/ws-tunnel": 2.0.0(ws@8.21.3) - "@expo/xcpretty": 4.4.4 - "@react-native/dev-middleware": 0.86.3(supports-color@8.1.1) + '@expo/cli@57.0.22(@expo/dom-webview@57.0.1)(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3)': + dependencies: + '@expo/code-signing-certificates': 0.0.6 + '@expo/config': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + '@expo/config-plugins': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + '@expo/devcert': 1.2.1(supports-color@8.1.1) + '@expo/env': 2.4.3(supports-color@8.1.1) + '@expo/image-utils': 0.11.5(supports-color@8.1.1)(typescript@6.0.3) + '@expo/inline-modules': 0.1.7(supports-color@8.1.1)(typescript@6.0.3) + '@expo/json-file': 11.0.1 + '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) + '@expo/metro': 56.0.2(supports-color@8.1.1) + '@expo/metro-config': 57.0.12(expo@57.0.20)(supports-color@8.1.1)(typescript@6.0.3) + '@expo/metro-file-map': 57.0.2(supports-color@8.1.1) + '@expo/osascript': 2.7.1 + '@expo/package-manager': 1.13.1 + '@expo/plist': 0.8.1 + '@expo/prebuild-config': 57.0.15(supports-color@8.1.1)(typescript@6.0.3) + '@expo/require-utils': 57.0.5(supports-color@8.1.1)(typescript@6.0.3) + '@expo/router-server': 57.0.9(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo-server@57.0.3)(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react@19.2.3)(supports-color@8.1.1) + '@expo/schema-utils': 57.0.2 + '@expo/spawn-async': 1.8.0 + '@expo/ws-tunnel': 2.0.0(ws@8.21.3) + '@expo/xcpretty': 4.4.4 + '@react-native/dev-middleware': 0.86.3(supports-color@8.1.1) accepts: 1.3.8 agent-cli-detector: 0.1.7 arg: 5.0.2 @@ -7413,8 +4939,8 @@ snapshots: optionalDependencies: react-native: 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1) transitivePeerDependencies: - - "@expo/dom-webview" - - "@expo/metro-runtime" + - '@expo/dom-webview' + - '@expo/metro-runtime' - bufferutil - expo-constants - expo-font @@ -7425,17 +4951,17 @@ snapshots: - typescript - utf-8-validate - "@expo/code-signing-certificates@0.0.6": + '@expo/code-signing-certificates@0.0.6': dependencies: node-forge: 1.4.0 - "@expo/config-plugins@57.0.9(supports-color@8.1.1)(typescript@6.0.3)": + '@expo/config-plugins@57.0.9(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - "@expo/config-types": 57.0.2 - "@expo/json-file": 11.0.1 - "@expo/plist": 0.8.1 - "@expo/require-utils": 57.0.5(supports-color@8.1.1)(typescript@6.0.3) - "@expo/sdk-runtime-versions": 1.0.0 + '@expo/config-types': 57.0.2 + '@expo/json-file': 11.0.1 + '@expo/plist': 0.8.1 + '@expo/require-utils': 57.0.5(supports-color@8.1.1)(typescript@6.0.3) + '@expo/sdk-runtime-versions': 1.0.0 chalk: 4.1.2 debug: 4.4.3(supports-color@8.1.1) getenv: 2.0.0 @@ -7448,14 +4974,14 @@ snapshots: - supports-color - typescript - "@expo/config-types@57.0.2": {} + '@expo/config-types@57.0.2': {} - "@expo/config@57.0.9(supports-color@8.1.1)(typescript@6.0.3)": + '@expo/config@57.0.9(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - "@expo/config-plugins": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - "@expo/config-types": 57.0.2 - "@expo/json-file": 11.0.1 - "@expo/require-utils": 57.0.5(supports-color@8.1.1)(typescript@6.0.3) + '@expo/config-plugins': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + '@expo/config-types': 57.0.2 + '@expo/json-file': 11.0.1 + '@expo/require-utils': 57.0.5(supports-color@8.1.1)(typescript@6.0.3) deepmerge: 4.3.1 getenv: 2.0.0 glob: 13.0.6 @@ -7466,27 +4992,27 @@ snapshots: - supports-color - typescript - "@expo/devcert@1.2.1(supports-color@8.1.1)": + '@expo/devcert@1.2.1(supports-color@8.1.1)': dependencies: - "@expo/sudo-prompt": 9.3.2 + '@expo/sudo-prompt': 9.3.2 debug: 3.2.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color - "@expo/devtools@57.0.1(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)": + '@expo/devtools@57.0.1(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)': dependencies: chalk: 4.1.2 optionalDependencies: react: 19.2.3 react-native: 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1) - "@expo/dom-webview@57.0.1(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)": + '@expo/dom-webview@57.0.1(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)': dependencies: expo: 57.0.20(@babel/core@7.29.7(supports-color@8.1.1))(@expo/dom-webview@57.0.1)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) react: 19.2.3 react-native: 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1) - "@expo/env@2.4.3(supports-color@8.1.1)": + '@expo/env@2.4.3(supports-color@8.1.1)': dependencies: chalk: 4.1.2 debug: 4.4.3(supports-color@8.1.1) @@ -7494,12 +5020,12 @@ snapshots: transitivePeerDependencies: - supports-color - "@expo/expo-modules-macros-plugin@0.6.1": {} + '@expo/expo-modules-macros-plugin@0.6.1': {} - "@expo/fingerprint@0.20.12(supports-color@8.1.1)": + '@expo/fingerprint@0.20.12(supports-color@8.1.1)': dependencies: - "@expo/env": 2.4.3(supports-color@8.1.1) - "@expo/spawn-async": 1.8.0 + '@expo/env': 2.4.3(supports-color@8.1.1) + '@expo/spawn-async': 1.8.0 arg: 5.0.2 chalk: 4.1.2 debug: 4.4.3(supports-color@8.1.1) @@ -7512,10 +5038,10 @@ snapshots: transitivePeerDependencies: - supports-color - "@expo/image-utils@0.11.5(supports-color@8.1.1)(typescript@6.0.3)": + '@expo/image-utils@0.11.5(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - "@expo/require-utils": 57.0.5(supports-color@8.1.1)(typescript@6.0.3) - "@expo/spawn-async": 1.8.0 + '@expo/require-utils': 57.0.5(supports-color@8.1.1)(typescript@6.0.3) + '@expo/spawn-async': 1.8.0 chalk: 4.1.2 getenv: 2.0.0 jimp-compact: 0.16.1 @@ -7525,49 +5051,49 @@ snapshots: - supports-color - typescript - "@expo/inline-modules@0.1.7(supports-color@8.1.1)(typescript@6.0.3)": + '@expo/inline-modules@0.1.7(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - "@expo/config-plugins": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + '@expo/config-plugins': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) transitivePeerDependencies: - supports-color - typescript - "@expo/json-file@11.0.1": + '@expo/json-file@11.0.1': dependencies: - "@babel/code-frame": 7.29.7 + '@babel/code-frame': 7.29.7 json5: 2.2.3 - "@expo/local-build-cache-provider@57.0.8(supports-color@8.1.1)(typescript@6.0.3)": + '@expo/local-build-cache-provider@57.0.8(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - "@expo/config": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + '@expo/config': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) chalk: 4.1.2 transitivePeerDependencies: - supports-color - typescript - "@expo/log-box@57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)": + '@expo/log-box@57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)': dependencies: - "@expo/dom-webview": 57.0.1(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) + '@expo/dom-webview': 57.0.1(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) anser: 1.4.10 expo: 57.0.20(@babel/core@7.29.7(supports-color@8.1.1))(@expo/dom-webview@57.0.1)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) react: 19.2.3 react-native: 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1) stacktrace-parser: 0.1.11 - "@expo/metro-config@57.0.12(expo@57.0.20)(supports-color@8.1.1)(typescript@6.0.3)": - dependencies: - "@babel/code-frame": 7.29.7 - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/generator": 7.29.8 - "@expo/config": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - "@expo/env": 2.4.3(supports-color@8.1.1) - "@expo/json-file": 11.0.1 - "@expo/metro": 56.0.2(supports-color@8.1.1) - "@expo/require-utils": 57.0.5(supports-color@8.1.1)(typescript@6.0.3) - "@expo/spawn-async": 1.8.0 - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/remapping": 2.3.5 - "@jridgewell/sourcemap-codec": 1.5.5 + '@expo/metro-config@57.0.12(expo@57.0.20)(supports-color@8.1.1)(typescript@6.0.3)': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/generator': 7.29.8 + '@expo/config': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + '@expo/env': 2.4.3(supports-color@8.1.1) + '@expo/json-file': 11.0.1 + '@expo/metro': 56.0.2(supports-color@8.1.1) + '@expo/require-utils': 57.0.5(supports-color@8.1.1)(typescript@6.0.3) + '@expo/spawn-async': 1.8.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/remapping': 2.3.5 + '@jridgewell/sourcemap-codec': 1.5.5 browserslist: 4.28.9 chalk: 4.1.2 debug: 4.4.3(supports-color@8.1.1) @@ -7587,7 +5113,7 @@ snapshots: - typescript - utf-8-validate - "@expo/metro-file-map@57.0.2(supports-color@8.1.1)": + '@expo/metro-file-map@57.0.2(supports-color@8.1.1)': dependencies: debug: 4.4.3(supports-color@8.1.1) fb-watchman: 2.0.2 @@ -7598,7 +5124,7 @@ snapshots: transitivePeerDependencies: - supports-color - "@expo/metro@56.0.2(supports-color@8.1.1)": + '@expo/metro@56.0.2(supports-color@8.1.1)': dependencies: metro: 0.84.5(supports-color@8.1.1) metro-babel-transformer: 0.84.5(supports-color@8.1.1) @@ -7619,33 +5145,33 @@ snapshots: - supports-color - utf-8-validate - "@expo/osascript@2.7.1": + '@expo/osascript@2.7.1': dependencies: - "@expo/spawn-async": 1.8.0 + '@expo/spawn-async': 1.8.0 - "@expo/package-manager@1.13.1": + '@expo/package-manager@1.13.1': dependencies: - "@expo/json-file": 11.0.1 - "@expo/spawn-async": 1.8.0 + '@expo/json-file': 11.0.1 + '@expo/spawn-async': 1.8.0 chalk: 4.1.2 npm-package-arg: 11.0.3 ora: 3.4.0 resolve-workspace-root: 2.0.1 - "@expo/plist@0.8.1": + '@expo/plist@0.8.1': dependencies: - "@xmldom/xmldom": 0.8.15 + '@xmldom/xmldom': 0.8.15 base64-js: 1.5.1 xmlbuilder: 15.1.1 - "@expo/prebuild-config@57.0.15(supports-color@8.1.1)(typescript@6.0.3)": + '@expo/prebuild-config@57.0.15(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - "@expo/config": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - "@expo/config-plugins": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - "@expo/config-types": 57.0.2 - "@expo/image-utils": 0.11.5(supports-color@8.1.1)(typescript@6.0.3) - "@expo/json-file": 11.0.1 - "@react-native/normalize-colors": 0.86.3 + '@expo/config': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + '@expo/config-plugins': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + '@expo/config-types': 57.0.2 + '@expo/image-utils': 0.11.5(supports-color@8.1.1)(typescript@6.0.3) + '@expo/json-file': 11.0.1 + '@react-native/normalize-colors': 0.86.3 debug: 4.4.3(supports-color@8.1.1) expo-modules-autolinking: 57.0.12(supports-color@8.1.1)(typescript@6.0.3) resolve-from: 5.0.0 @@ -7654,17 +5180,17 @@ snapshots: - supports-color - typescript - "@expo/require-utils@57.0.5(supports-color@8.1.1)(typescript@6.0.3)": + '@expo/require-utils@57.0.5(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - "@babel/code-frame": 7.29.7 - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/plugin-transform-modules-commonjs": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/code-frame': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) optionalDependencies: typescript: 6.0.3 transitivePeerDependencies: - supports-color - "@expo/router-server@57.0.9(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo-server@57.0.3)(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react@19.2.3)(supports-color@8.1.1)": + '@expo/router-server@57.0.9(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo-server@57.0.3)(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react@19.2.3)(supports-color@8.1.1)': dependencies: debug: 4.4.3(supports-color@8.1.1) expo: 57.0.20(@babel/core@7.29.7(supports-color@8.1.1))(@expo/dom-webview@57.0.1)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) @@ -7677,511 +5203,511 @@ snapshots: transitivePeerDependencies: - supports-color - "@expo/schema-utils@57.0.2": {} + '@expo/schema-utils@57.0.2': {} - "@expo/sdk-runtime-versions@1.0.0": {} + '@expo/sdk-runtime-versions@1.0.0': {} - "@expo/spawn-async@1.8.0": + '@expo/spawn-async@1.8.0': dependencies: cross-spawn: 7.0.6 - "@expo/sudo-prompt@9.3.2": {} + '@expo/sudo-prompt@9.3.2': {} - "@expo/ws-tunnel@2.0.0(ws@8.21.3)": + '@expo/ws-tunnel@2.0.0(ws@8.21.3)': dependencies: ws: 8.21.3 - "@expo/xcpretty@4.4.4": + '@expo/xcpretty@4.4.4': dependencies: - "@babel/code-frame": 7.29.7 + '@babel/code-frame': 7.29.7 chalk: 4.1.2 js-yaml: 4.3.2 - "@fastify/ajv-compiler@4.0.6": + '@fastify/ajv-compiler@4.0.6': dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) fast-uri: 4.1.3 - "@fastify/error@4.2.0": {} + '@fastify/error@4.2.0': {} - "@fastify/fast-json-stringify-compiler@5.1.0": + '@fastify/fast-json-stringify-compiler@5.1.0': dependencies: fast-json-stringify: 7.0.1 - "@fastify/forwarded@3.0.2": {} + '@fastify/forwarded@3.0.2': {} - "@fastify/merge-json-schemas@0.2.1": + '@fastify/merge-json-schemas@0.2.1': dependencies: dequal: 2.0.3 - "@fastify/proxy-addr@5.1.0": + '@fastify/proxy-addr@5.1.0': dependencies: - "@fastify/forwarded": 3.0.2 + '@fastify/forwarded': 3.0.2 ipaddr.js: 2.5.0 - "@grpc/grpc-js@1.14.4": + '@grpc/grpc-js@1.14.4': dependencies: - "@grpc/proto-loader": 0.8.1 - "@js-sdsl/ordered-map": 4.4.2 + '@grpc/proto-loader': 0.8.1 + '@js-sdsl/ordered-map': 4.4.2 - "@grpc/proto-loader@0.8.1": + '@grpc/proto-loader@0.8.1': dependencies: lodash.camelcase: 4.3.0 long: 5.3.2 protobufjs: 7.6.6 yargs: 17.7.3 - "@hexagon/base64@1.1.28": {} + '@hexagon/base64@1.1.28': {} - "@humanfs/core@0.19.2": + '@humanfs/core@0.19.2': dependencies: - "@humanfs/types": 0.15.0 + '@humanfs/types': 0.15.0 - "@humanfs/node@0.16.8": + '@humanfs/node@0.16.8': dependencies: - "@humanfs/core": 0.19.2 - "@humanfs/types": 0.15.0 - "@humanwhocodes/retry": 0.4.3 + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 - "@humanfs/types@0.15.0": {} + '@humanfs/types@0.15.0': {} - "@humanwhocodes/module-importer@1.0.1": {} + '@humanwhocodes/module-importer@1.0.1': {} - "@humanwhocodes/retry@0.4.3": {} + '@humanwhocodes/retry@0.4.3': {} - "@isaacs/ttlcache@1.4.1": {} + '@isaacs/ttlcache@1.4.1': {} - "@jest/schemas@29.6.3": + '@jest/schemas@29.6.3': dependencies: - "@sinclair/typebox": 0.27.12 + '@sinclair/typebox': 0.27.12 - "@jest/types@29.6.3": + '@jest/types@29.6.3': dependencies: - "@jest/schemas": 29.6.3 - "@types/istanbul-lib-coverage": 2.0.6 - "@types/istanbul-reports": 3.0.4 - "@types/node": 26.2.0 - "@types/yargs": 17.0.35 + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 26.2.0 + '@types/yargs': 17.0.35 chalk: 4.1.2 - "@jridgewell/gen-mapping@0.3.13": + '@jridgewell/gen-mapping@0.3.13': dependencies: - "@jridgewell/sourcemap-codec": 1.5.5 - "@jridgewell/trace-mapping": 0.3.31 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 - "@jridgewell/remapping@2.3.5": + '@jridgewell/remapping@2.3.5': dependencies: - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/trace-mapping": 0.3.31 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - "@jridgewell/resolve-uri@3.1.2": {} + '@jridgewell/resolve-uri@3.1.2': {} - "@jridgewell/source-map@0.3.11": + '@jridgewell/source-map@0.3.11': dependencies: - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/trace-mapping": 0.3.31 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - "@jridgewell/sourcemap-codec@1.5.5": {} + '@jridgewell/sourcemap-codec@1.5.5': {} - "@jridgewell/trace-mapping@0.3.31": + '@jridgewell/trace-mapping@0.3.31': dependencies: - "@jridgewell/resolve-uri": 3.1.2 - "@jridgewell/sourcemap-codec": 1.5.5 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 - "@js-sdsl/ordered-map@4.4.2": {} + '@js-sdsl/ordered-map@4.4.2': {} - "@levischuck/tiny-cbor@0.2.11": {} + '@levischuck/tiny-cbor@0.2.11': {} - "@noble/curves@2.2.0": + '@noble/curves@2.2.0': dependencies: - "@noble/hashes": 2.2.0 + '@noble/hashes': 2.2.0 - "@noble/curves@2.3.0": + '@noble/curves@2.3.0': dependencies: - "@noble/hashes": 2.3.0 + '@noble/hashes': 2.3.0 - "@noble/curves@2.4.0": + '@noble/curves@2.4.0': dependencies: - "@noble/hashes": 2.4.0 + '@noble/hashes': 2.4.0 - "@noble/hashes@2.2.0": {} + '@noble/hashes@2.2.0': {} - "@noble/hashes@2.3.0": {} + '@noble/hashes@2.3.0': {} - "@noble/hashes@2.4.0": {} + '@noble/hashes@2.4.0': {} - "@opentelemetry/api-logs@0.222.0": + '@opentelemetry/api-logs@0.222.0': dependencies: - "@opentelemetry/api": 1.9.1 + '@opentelemetry/api': 1.9.1 - "@opentelemetry/api@1.9.1": {} + '@opentelemetry/api@1.9.1': {} - "@opentelemetry/configuration@0.222.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/configuration@0.222.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) yaml: 2.9.0 - "@opentelemetry/context-async-hooks@2.11.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/context-async-hooks@2.11.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 + '@opentelemetry/api': 1.9.1 - "@opentelemetry/core@2.11.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/core@2.11.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/semantic-conventions": 1.43.0 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/semantic-conventions': 1.43.0 - "@opentelemetry/exporter-logs-otlp-grpc@0.222.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/exporter-logs-otlp-grpc@0.222.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-grpc-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-logs": 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-grpc-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-logs-otlp-http@0.222.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/exporter-logs-otlp-http@0.222.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-logs": 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-logs-otlp-proto@0.222.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/exporter-logs-otlp-proto@0.222.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-logs": 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-metrics-otlp-grpc@0.222.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/exporter-metrics-otlp-grpc@0.222.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/exporter-metrics-otlp-http": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-grpc-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/exporter-metrics-otlp-http': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-grpc-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-metrics-otlp-http@0.222.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/exporter-metrics-otlp-http@0.222.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-metrics": 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-metrics': 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-metrics-otlp-proto@0.222.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/exporter-metrics-otlp-proto@0.222.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/exporter-metrics-otlp-http": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/exporter-metrics-otlp-http': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-prometheus@0.222.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/exporter-prometheus@0.222.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-metrics": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/semantic-conventions": 1.43.0 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-metrics': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.43.0 - "@opentelemetry/exporter-trace-otlp-grpc@0.222.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/exporter-trace-otlp-grpc@0.222.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-grpc-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-trace": 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-grpc-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace': 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-trace-otlp-http@0.222.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/exporter-trace-otlp-http@0.222.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-trace": 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace': 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-trace-otlp-proto@0.222.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/exporter-trace-otlp-proto@0.222.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-trace": 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace': 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-zipkin@2.11.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/exporter-zipkin@2.11.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-trace": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/semantic-conventions": 1.43.0 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.43.0 - "@opentelemetry/instrumentation@0.222.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1)": + '@opentelemetry/instrumentation@0.222.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/api-logs": 0.222.0 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.222.0 import-in-the-middle: 3.5.0 require-in-the-middle: 8.0.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - "@opentelemetry/otlp-exporter-base@0.222.0(@opentelemetry/api@1.9.1)": - dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) - - "@opentelemetry/otlp-grpc-exporter-base@0.222.0(@opentelemetry/api@1.9.1)": - dependencies: - "@grpc/grpc-js": 1.14.4 - "@opentelemetry/api": 1.9.1 - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) - - "@opentelemetry/otlp-transformer@0.222.0(@opentelemetry/api@1.9.1)": - dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/api-logs": 0.222.0 - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-logs": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-metrics": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-trace": 2.11.0(@opentelemetry/api@1.9.1) - - "@opentelemetry/propagator-b3@2.11.0(@opentelemetry/api@1.9.1)": - dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) - - "@opentelemetry/propagator-jaeger@2.11.0(@opentelemetry/api@1.9.1)": - dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) - - "@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1)": - dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/semantic-conventions": 1.43.0 - - "@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1)": - dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/api-logs": 0.222.0 - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/semantic-conventions": 1.43.0 - - "@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1)": - dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) - - "@opentelemetry/sdk-node@0.222.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1)": - dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/api-logs": 0.222.0 - "@opentelemetry/configuration": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/context-async-hooks": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-logs-otlp-grpc": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-logs-otlp-http": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-logs-otlp-proto": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-metrics-otlp-grpc": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-metrics-otlp-http": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-metrics-otlp-proto": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-prometheus": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-trace-otlp-grpc": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-trace-otlp-http": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-trace-otlp-proto": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/exporter-zipkin": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/instrumentation": 0.222.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1) - "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/otlp-grpc-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/propagator-b3": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/propagator-jaeger": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-logs": 0.222.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-metrics": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-trace": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-trace-base": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-trace-node": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/semantic-conventions": 1.43.0 + '@opentelemetry/otlp-exporter-base@0.222.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/otlp-grpc-exporter-base@0.222.0(@opentelemetry/api@1.9.1)': + dependencies: + '@grpc/grpc-js': 1.14.4 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/otlp-transformer@0.222.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.222.0 + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-metrics': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace': 2.11.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/propagator-b3@2.11.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/propagator-jaeger@2.11.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.43.0 + + '@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.222.0 + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.43.0 + + '@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) + + '@opentelemetry/sdk-node@0.222.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1)': + dependencies: + '@opentelemetry/api': 1.9.1 + '@opentelemetry/api-logs': 0.222.0 + '@opentelemetry/configuration': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/context-async-hooks': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-logs-otlp-grpc': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-logs-otlp-http': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-logs-otlp-proto': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-metrics-otlp-grpc': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-metrics-otlp-http': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-metrics-otlp-proto': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-prometheus': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-trace-otlp-grpc': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-trace-otlp-http': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-trace-otlp-proto': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/exporter-zipkin': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/instrumentation': 0.222.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1) + '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/otlp-grpc-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/propagator-b3': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/propagator-jaeger': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-logs': 0.222.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-metrics': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace-base': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace-node': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.43.0 transitivePeerDependencies: - supports-color - "@opentelemetry/sdk-trace-base@2.11.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/sdk-trace-base@2.11.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-trace": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/semantic-conventions": 1.43.0 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.43.0 - "@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/context-async-hooks": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-trace-base": 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.1 + '@opentelemetry/context-async-hooks': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/sdk-trace-base': 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/sdk-trace@2.11.0(@opentelemetry/api@1.9.1)": + '@opentelemetry/sdk-trace@2.11.0(@opentelemetry/api@1.9.1)': dependencies: - "@opentelemetry/api": 1.9.1 - "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) - "@opentelemetry/semantic-conventions": 1.43.0 + '@opentelemetry/api': 1.9.1 + '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) + '@opentelemetry/semantic-conventions': 1.43.0 - "@opentelemetry/semantic-conventions@1.43.0": {} + '@opentelemetry/semantic-conventions@1.43.0': {} - "@oxc-project/types@0.146.0": {} + '@oxc-project/types@0.146.0': {} - "@peculiar/asn1-android@2.9.4": + '@peculiar/asn1-android@2.9.4': dependencies: - "@peculiar/asn1-schema": 2.9.4 + '@peculiar/asn1-schema': 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - "@peculiar/asn1-cms@2.9.4": + '@peculiar/asn1-cms@2.9.4': dependencies: - "@peculiar/asn1-schema": 2.9.4 - "@peculiar/asn1-x509": 2.9.4 - "@peculiar/asn1-x509-attr": 2.9.4 + '@peculiar/asn1-schema': 2.9.4 + '@peculiar/asn1-x509': 2.9.4 + '@peculiar/asn1-x509-attr': 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - "@peculiar/asn1-csr@2.9.4": + '@peculiar/asn1-csr@2.9.4': dependencies: - "@peculiar/asn1-schema": 2.9.4 - "@peculiar/asn1-x509": 2.9.4 + '@peculiar/asn1-schema': 2.9.4 + '@peculiar/asn1-x509': 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - "@peculiar/asn1-ecc@2.9.4": + '@peculiar/asn1-ecc@2.9.4': dependencies: - "@peculiar/asn1-schema": 2.9.4 - "@peculiar/asn1-x509": 2.9.4 + '@peculiar/asn1-schema': 2.9.4 + '@peculiar/asn1-x509': 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - "@peculiar/asn1-pfx@2.9.4": + '@peculiar/asn1-pfx@2.9.4': dependencies: - "@peculiar/asn1-cms": 2.9.4 - "@peculiar/asn1-pkcs8": 2.9.4 - "@peculiar/asn1-rsa": 2.9.4 - "@peculiar/asn1-schema": 2.9.4 + '@peculiar/asn1-cms': 2.9.4 + '@peculiar/asn1-pkcs8': 2.9.4 + '@peculiar/asn1-rsa': 2.9.4 + '@peculiar/asn1-schema': 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - "@peculiar/asn1-pkcs8@2.9.4": + '@peculiar/asn1-pkcs8@2.9.4': dependencies: - "@peculiar/asn1-schema": 2.9.4 - "@peculiar/asn1-x509": 2.9.4 + '@peculiar/asn1-schema': 2.9.4 + '@peculiar/asn1-x509': 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - "@peculiar/asn1-pkcs9@2.9.4": + '@peculiar/asn1-pkcs9@2.9.4': dependencies: - "@peculiar/asn1-cms": 2.9.4 - "@peculiar/asn1-pfx": 2.9.4 - "@peculiar/asn1-pkcs8": 2.9.4 - "@peculiar/asn1-schema": 2.9.4 - "@peculiar/asn1-x509": 2.9.4 - "@peculiar/asn1-x509-attr": 2.9.4 + '@peculiar/asn1-cms': 2.9.4 + '@peculiar/asn1-pfx': 2.9.4 + '@peculiar/asn1-pkcs8': 2.9.4 + '@peculiar/asn1-schema': 2.9.4 + '@peculiar/asn1-x509': 2.9.4 + '@peculiar/asn1-x509-attr': 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - "@peculiar/asn1-rsa@2.9.4": + '@peculiar/asn1-rsa@2.9.4': dependencies: - "@peculiar/asn1-schema": 2.9.4 - "@peculiar/asn1-x509": 2.9.4 + '@peculiar/asn1-schema': 2.9.4 + '@peculiar/asn1-x509': 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - "@peculiar/asn1-schema@2.9.4": + '@peculiar/asn1-schema@2.9.4': dependencies: - "@peculiar/utils": 2.0.3 + '@peculiar/utils': 2.0.3 asn1js: 3.0.10 tslib: 2.8.1 - "@peculiar/asn1-x509-attr@2.9.4": + '@peculiar/asn1-x509-attr@2.9.4': dependencies: - "@peculiar/asn1-schema": 2.9.4 - "@peculiar/asn1-x509": 2.9.4 + '@peculiar/asn1-schema': 2.9.4 + '@peculiar/asn1-x509': 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - "@peculiar/asn1-x509@2.9.4": + '@peculiar/asn1-x509@2.9.4': dependencies: - "@peculiar/asn1-schema": 2.9.4 - "@peculiar/utils": 2.0.3 + '@peculiar/asn1-schema': 2.9.4 + '@peculiar/utils': 2.0.3 asn1js: 3.0.10 tslib: 2.8.1 - "@peculiar/utils@2.0.3": + '@peculiar/utils@2.0.3': dependencies: tslib: 2.8.1 - "@peculiar/x509@1.14.3": + '@peculiar/x509@1.14.3': dependencies: - "@peculiar/asn1-cms": 2.9.4 - "@peculiar/asn1-csr": 2.9.4 - "@peculiar/asn1-ecc": 2.9.4 - "@peculiar/asn1-pkcs9": 2.9.4 - "@peculiar/asn1-rsa": 2.9.4 - "@peculiar/asn1-schema": 2.9.4 - "@peculiar/asn1-x509": 2.9.4 + '@peculiar/asn1-cms': 2.9.4 + '@peculiar/asn1-csr': 2.9.4 + '@peculiar/asn1-ecc': 2.9.4 + '@peculiar/asn1-pkcs9': 2.9.4 + '@peculiar/asn1-rsa': 2.9.4 + '@peculiar/asn1-schema': 2.9.4 + '@peculiar/asn1-x509': 2.9.4 pvtsutils: 1.3.6 reflect-metadata: 0.2.2 tslib: 2.8.1 tsyringe: 4.10.0 - "@pinojs/redact@0.4.0": {} + '@pinojs/redact@0.4.0': {} - "@protobufjs/aspromise@1.1.2": {} + '@protobufjs/aspromise@1.1.2': {} - "@protobufjs/base64@1.1.2": {} + '@protobufjs/base64@1.1.2': {} - "@protobufjs/codegen@2.0.5": {} + '@protobufjs/codegen@2.0.5': {} - "@protobufjs/eventemitter@1.1.1": {} + '@protobufjs/eventemitter@1.1.1': {} - "@protobufjs/fetch@1.1.1": + '@protobufjs/fetch@1.1.1': dependencies: - "@protobufjs/aspromise": 1.1.2 + '@protobufjs/aspromise': 1.1.2 - "@protobufjs/float@1.0.2": {} + '@protobufjs/float@1.0.2': {} - "@protobufjs/path@1.1.2": {} + '@protobufjs/path@1.1.2': {} - "@protobufjs/pool@1.1.0": {} + '@protobufjs/pool@1.1.0': {} - "@protobufjs/utf8@1.1.2": {} + '@protobufjs/utf8@1.1.2': {} - "@react-native/assets-registry@0.86.3": {} + '@react-native/assets-registry@0.86.3': {} - "@react-native/babel-plugin-codegen@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": + '@react-native/babel-plugin-codegen@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - "@babel/traverse": 7.29.8(supports-color@8.1.1) - "@react-native/codegen": 0.86.3(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/traverse': 7.29.8(supports-color@8.1.1) + '@react-native/codegen': 0.86.3(@babel/core@7.29.7(supports-color@8.1.1)) transitivePeerDependencies: - - "@babel/core" + - '@babel/core' - supports-color - "@react-native/codegen@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))": + '@react-native/codegen@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/parser": 7.29.8 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/parser': 7.29.8 hermes-parser: 0.36.0 invariant: 2.2.4 nullthrows: 1.1.1 tinyglobby: 0.2.17 yargs: 17.7.3 - "@react-native/community-cli-plugin@0.86.3(supports-color@8.1.1)": + '@react-native/community-cli-plugin@0.86.3(supports-color@8.1.1)': dependencies: - "@react-native/dev-middleware": 0.86.3(supports-color@8.1.1) + '@react-native/dev-middleware': 0.86.3(supports-color@8.1.1) debug: 4.4.3(supports-color@8.1.1) invariant: 2.2.4 metro: 0.84.6(supports-color@8.1.1) @@ -8193,9 +5719,9 @@ snapshots: - supports-color - utf-8-validate - "@react-native/debugger-frontend@0.86.3": {} + '@react-native/debugger-frontend@0.86.3': {} - "@react-native/debugger-shell@0.86.3(supports-color@8.1.1)": + '@react-native/debugger-shell@0.86.3(supports-color@8.1.1)': dependencies: cross-spawn: 7.0.6 debug: 4.4.3(supports-color@8.1.1) @@ -8203,11 +5729,11 @@ snapshots: transitivePeerDependencies: - supports-color - "@react-native/dev-middleware@0.86.3(supports-color@8.1.1)": + '@react-native/dev-middleware@0.86.3(supports-color@8.1.1)': dependencies: - "@isaacs/ttlcache": 1.4.1 - "@react-native/debugger-frontend": 0.86.3 - "@react-native/debugger-shell": 0.86.3(supports-color@8.1.1) + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.86.3 + '@react-native/debugger-shell': 0.86.3(supports-color@8.1.1) chrome-launcher: 0.15.2(supports-color@8.1.1) chromium-edge-launcher: 0.3.0(supports-color@8.1.1) connect: 3.7.0(supports-color@8.1.1) @@ -8222,219 +5748,219 @@ snapshots: - supports-color - utf-8-validate - "@react-native/gradle-plugin@0.86.3": {} + '@react-native/gradle-plugin@0.86.3': {} - "@react-native/js-polyfills@0.86.3": {} + '@react-native/js-polyfills@0.86.3': {} - "@react-native/normalize-colors@0.86.3": {} + '@react-native/normalize-colors@0.86.3': {} - "@react-native/virtualized-lists@0.86.3(@types/react@19.2.18)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)": + '@react-native/virtualized-lists@0.86.3(@types/react@19.2.18)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 19.2.3 react-native: 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1) optionalDependencies: - "@types/react": 19.2.18 + '@types/react': 19.2.18 - "@redis/bloom@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))": + '@redis/bloom@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))': dependencies: - "@redis/client": 5.12.1(@opentelemetry/api@1.9.1) + '@redis/client': 5.12.1(@opentelemetry/api@1.9.1) - "@redis/client@5.12.1(@opentelemetry/api@1.9.1)": + '@redis/client@5.12.1(@opentelemetry/api@1.9.1)': dependencies: cluster-key-slot: 1.1.2 optionalDependencies: - "@opentelemetry/api": 1.9.1 + '@opentelemetry/api': 1.9.1 - "@redis/json@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))": + '@redis/json@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))': dependencies: - "@redis/client": 5.12.1(@opentelemetry/api@1.9.1) + '@redis/client': 5.12.1(@opentelemetry/api@1.9.1) - "@redis/search@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))": + '@redis/search@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))': dependencies: - "@redis/client": 5.12.1(@opentelemetry/api@1.9.1) + '@redis/client': 5.12.1(@opentelemetry/api@1.9.1) - "@redis/time-series@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))": + '@redis/time-series@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))': dependencies: - "@redis/client": 5.12.1(@opentelemetry/api@1.9.1) + '@redis/client': 5.12.1(@opentelemetry/api@1.9.1) - "@rolldown/binding-android-arm-eabi@1.2.5": + '@rolldown/binding-android-arm-eabi@1.2.5': optional: true - "@rolldown/binding-android-arm64@1.2.5": + '@rolldown/binding-android-arm64@1.2.5': optional: true - "@rolldown/binding-darwin-arm64@1.2.5": + '@rolldown/binding-darwin-arm64@1.2.5': optional: true - "@rolldown/binding-darwin-x64@1.2.5": + '@rolldown/binding-darwin-x64@1.2.5': optional: true - "@rolldown/binding-freebsd-x64@1.2.5": + '@rolldown/binding-freebsd-x64@1.2.5': optional: true - "@rolldown/binding-linux-arm-gnueabihf@1.2.5": + '@rolldown/binding-linux-arm-gnueabihf@1.2.5': optional: true - "@rolldown/binding-linux-arm64-gnu@1.2.5": + '@rolldown/binding-linux-arm64-gnu@1.2.5': optional: true - "@rolldown/binding-linux-arm64-musl@1.2.5": + '@rolldown/binding-linux-arm64-musl@1.2.5': optional: true - "@rolldown/binding-linux-ppc64-gnu@1.2.5": + '@rolldown/binding-linux-ppc64-gnu@1.2.5': optional: true - "@rolldown/binding-linux-s390x-gnu@1.2.5": + '@rolldown/binding-linux-s390x-gnu@1.2.5': optional: true - "@rolldown/binding-linux-x64-gnu@1.2.5": + '@rolldown/binding-linux-x64-gnu@1.2.5': optional: true - "@rolldown/binding-linux-x64-musl@1.2.5": + '@rolldown/binding-linux-x64-musl@1.2.5': optional: true - "@rolldown/binding-openharmony-arm64@1.2.5": + '@rolldown/binding-openharmony-arm64@1.2.5': optional: true - "@rolldown/binding-win32-arm64-msvc@1.2.5": + '@rolldown/binding-win32-arm64-msvc@1.2.5': optional: true - "@rolldown/binding-win32-x64-msvc@1.2.5": + '@rolldown/binding-win32-x64-msvc@1.2.5': optional: true - "@rolldown/pluginutils@1.0.1": {} + '@rolldown/pluginutils@1.0.1': {} - "@scure/base@2.2.0": {} + '@scure/base@2.2.0': {} - "@scure/base@2.3.0": {} + '@scure/base@2.3.0': {} - "@scure/base@2.4.0": {} + '@scure/base@2.4.0': {} - "@scure/bip32@2.2.0": + '@scure/bip32@2.2.0': dependencies: - "@noble/curves": 2.2.0 - "@noble/hashes": 2.2.0 - "@scure/base": 2.2.0 + '@noble/curves': 2.2.0 + '@noble/hashes': 2.2.0 + '@scure/base': 2.2.0 - "@scure/bip39@2.2.0": + '@scure/bip39@2.2.0': dependencies: - "@noble/hashes": 2.2.0 - "@scure/base": 2.2.0 + '@noble/hashes': 2.2.0 + '@scure/base': 2.2.0 - "@scure/btc-signer@2.3.0": + '@scure/btc-signer@2.3.0': dependencies: - "@noble/curves": 2.3.0 - "@noble/hashes": 2.3.0 - "@scure/base": 2.3.0 + '@noble/curves': 2.3.0 + '@noble/hashes': 2.3.0 + '@scure/base': 2.3.0 micro-packed: 0.11.1 - "@simplewebauthn/server@13.3.3": + '@simplewebauthn/server@13.3.3': dependencies: - "@hexagon/base64": 1.1.28 - "@levischuck/tiny-cbor": 0.2.11 - "@peculiar/asn1-android": 2.9.4 - "@peculiar/asn1-ecc": 2.9.4 - "@peculiar/asn1-rsa": 2.9.4 - "@peculiar/asn1-schema": 2.9.4 - "@peculiar/asn1-x509": 2.9.4 - "@peculiar/x509": 1.14.3 + '@hexagon/base64': 1.1.28 + '@levischuck/tiny-cbor': 0.2.11 + '@peculiar/asn1-android': 2.9.4 + '@peculiar/asn1-ecc': 2.9.4 + '@peculiar/asn1-rsa': 2.9.4 + '@peculiar/asn1-schema': 2.9.4 + '@peculiar/asn1-x509': 2.9.4 + '@peculiar/x509': 1.14.3 - "@sinclair/typebox@0.27.12": {} + '@sinclair/typebox@0.27.12': {} - "@standard-schema/spec@1.1.0": {} + '@standard-schema/spec@1.1.0': {} - "@turbo/darwin-64@2.10.11": + '@turbo/darwin-64@2.10.11': optional: true - "@turbo/darwin-arm64@2.10.11": + '@turbo/darwin-arm64@2.10.11': optional: true - "@turbo/linux-64@2.10.11": + '@turbo/linux-64@2.10.11': optional: true - "@turbo/linux-arm64@2.10.11": + '@turbo/linux-arm64@2.10.11': optional: true - "@turbo/windows-64@2.10.11": + '@turbo/windows-64@2.10.11': optional: true - "@turbo/windows-arm64@2.10.11": + '@turbo/windows-arm64@2.10.11': optional: true - "@types/chai@5.2.3": + '@types/chai@5.2.3': dependencies: - "@types/deep-eql": 4.0.2 + '@types/deep-eql': 4.0.2 assertion-error: 2.0.1 - "@types/chrome@0.2.9": + '@types/chrome@0.2.9': dependencies: - "@types/filesystem": 0.0.36 - "@types/har-format": 1.2.16 + '@types/filesystem': 0.0.36 + '@types/har-format': 1.2.16 - "@types/deep-eql@4.0.2": {} + '@types/deep-eql@4.0.2': {} - "@types/esrecurse@4.3.1": {} + '@types/esrecurse@4.3.1': {} - "@types/estree@1.0.9": {} + '@types/estree@1.0.9': {} - "@types/filesystem@0.0.36": + '@types/filesystem@0.0.36': dependencies: - "@types/filewriter": 0.0.33 + '@types/filewriter': 0.0.33 - "@types/filewriter@0.0.33": {} + '@types/filewriter@0.0.33': {} - "@types/har-format@1.2.16": {} + '@types/har-format@1.2.16': {} - "@types/istanbul-lib-coverage@2.0.6": {} + '@types/istanbul-lib-coverage@2.0.6': {} - "@types/istanbul-lib-report@3.0.3": + '@types/istanbul-lib-report@3.0.3': dependencies: - "@types/istanbul-lib-coverage": 2.0.6 + '@types/istanbul-lib-coverage': 2.0.6 - "@types/istanbul-reports@3.0.4": + '@types/istanbul-reports@3.0.4': dependencies: - "@types/istanbul-lib-report": 3.0.3 + '@types/istanbul-lib-report': 3.0.3 - "@types/json-schema@7.0.15": {} + '@types/json-schema@7.0.15': {} - "@types/node@24.13.3": + '@types/node@24.13.3': dependencies: undici-types: 7.18.2 - "@types/node@26.2.0": + '@types/node@26.2.0': dependencies: undici-types: 8.3.0 - "@types/pg@8.23.1": + '@types/pg@8.23.1': dependencies: - "@types/node": 26.2.0 + '@types/node': 26.2.0 pg-protocol: 1.16.0 pg-types: 2.2.0 - "@types/react-dom@19.2.5(@types/react@19.2.18)": + '@types/react-dom@19.2.5(@types/react@19.2.18)': dependencies: - "@types/react": 19.2.18 + '@types/react': 19.2.18 - "@types/react@19.2.18": + '@types/react@19.2.18': dependencies: csstype: 3.2.3 - "@types/yargs-parser@21.0.3": {} + '@types/yargs-parser@21.0.3': {} - "@types/yargs@17.0.35": + '@types/yargs@17.0.35': dependencies: - "@types/yargs-parser": 21.0.3 + '@types/yargs-parser': 21.0.3 - "@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)": + '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - "@eslint-community/regexpp": 4.12.2 - "@typescript-eslint/parser": 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) - "@typescript-eslint/scope-manager": 8.67.0 - "@typescript-eslint/type-utils": 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) - "@typescript-eslint/utils": 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) - "@typescript-eslint/visitor-keys": 8.67.0 + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/type-utils': 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/utils': 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.67.0 eslint: 10.8.1(supports-color@8.1.1) ignore: 7.0.6 natural-compare: 1.4.0 @@ -8443,41 +5969,41 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/parser@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)": + '@typescript-eslint/parser@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - "@typescript-eslint/scope-manager": 8.67.0 - "@typescript-eslint/types": 8.67.0 - "@typescript-eslint/typescript-estree": 8.67.0(supports-color@8.1.1)(typescript@6.0.3) - "@typescript-eslint/visitor-keys": 8.67.0 + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.67.0 debug: 4.4.3(supports-color@8.1.1) eslint: 10.8.1(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/project-service@8.67.0(supports-color@8.1.1)(typescript@6.0.3)": + '@typescript-eslint/project-service@8.67.0(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - "@typescript-eslint/tsconfig-utils": 8.67.0(typescript@6.0.3) - "@typescript-eslint/types": 8.67.0 + '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3) + '@typescript-eslint/types': 8.67.0 debug: 4.4.3(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/scope-manager@8.67.0": + '@typescript-eslint/scope-manager@8.67.0': dependencies: - "@typescript-eslint/types": 8.67.0 - "@typescript-eslint/visitor-keys": 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 - "@typescript-eslint/tsconfig-utils@8.67.0(typescript@6.0.3)": + '@typescript-eslint/tsconfig-utils@8.67.0(typescript@6.0.3)': dependencies: typescript: 6.0.3 - "@typescript-eslint/type-utils@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)": + '@typescript-eslint/type-utils@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - "@typescript-eslint/types": 8.67.0 - "@typescript-eslint/typescript-estree": 8.67.0(supports-color@8.1.1)(typescript@6.0.3) - "@typescript-eslint/utils": 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/utils': 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) debug: 4.4.3(supports-color@8.1.1) eslint: 10.8.1(supports-color@8.1.1) ts-api-utils: 2.5.0(typescript@6.0.3) @@ -8485,14 +6011,14 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/types@8.67.0": {} + '@typescript-eslint/types@8.67.0': {} - "@typescript-eslint/typescript-estree@8.67.0(supports-color@8.1.1)(typescript@6.0.3)": + '@typescript-eslint/typescript-estree@8.67.0(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - "@typescript-eslint/project-service": 8.67.0(supports-color@8.1.1)(typescript@6.0.3) - "@typescript-eslint/tsconfig-utils": 8.67.0(typescript@6.0.3) - "@typescript-eslint/types": 8.67.0 - "@typescript-eslint/visitor-keys": 8.67.0 + '@typescript-eslint/project-service': 8.67.0(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.6 semver: 7.8.5 @@ -8502,75 +6028,75 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/utils@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)": + '@typescript-eslint/utils@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': dependencies: - "@eslint-community/eslint-utils": 4.10.1(eslint@10.8.1(supports-color@8.1.1)) - "@typescript-eslint/scope-manager": 8.67.0 - "@typescript-eslint/types": 8.67.0 - "@typescript-eslint/typescript-estree": 8.67.0(supports-color@8.1.1)(typescript@6.0.3) + '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(supports-color@8.1.1)) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(supports-color@8.1.1)(typescript@6.0.3) eslint: 10.8.1(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/visitor-keys@8.67.0": + '@typescript-eslint/visitor-keys@8.67.0': dependencies: - "@typescript-eslint/types": 8.67.0 + '@typescript-eslint/types': 8.67.0 eslint-visitor-keys: 5.0.1 - "@ungap/structured-clone@1.4.0": {} + '@ungap/structured-clone@1.4.0': {} - "@vitejs/plugin-react@6.1.1(babel-plugin-react-compiler@1.0.0)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0))": + '@vitejs/plugin-react@6.1.1(babel-plugin-react-compiler@1.0.0)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: - "@rolldown/pluginutils": 1.0.1 + '@rolldown/pluginutils': 1.0.1 vite: 8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0) optionalDependencies: babel-plugin-react-compiler: 1.0.0 - "@vitest/expect@4.1.11": + '@vitest/expect@4.1.11': dependencies: - "@standard-schema/spec": 1.1.0 - "@types/chai": 5.2.3 - "@vitest/spy": 4.1.11 - "@vitest/utils": 4.1.11 + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.11 + '@vitest/utils': 4.1.11 chai: 6.2.2 tinyrainbow: 3.1.1 - "@vitest/mocker@4.1.11(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0))": + '@vitest/mocker@4.1.11(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: - "@vitest/spy": 4.1.11 + '@vitest/spy': 4.1.11 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: vite: 8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0) - "@vitest/pretty-format@4.1.11": + '@vitest/pretty-format@4.1.11': dependencies: tinyrainbow: 3.1.1 - "@vitest/runner@4.1.11": + '@vitest/runner@4.1.11': dependencies: - "@vitest/utils": 4.1.11 + '@vitest/utils': 4.1.11 pathe: 2.0.3 - "@vitest/snapshot@4.1.11": + '@vitest/snapshot@4.1.11': dependencies: - "@vitest/pretty-format": 4.1.11 - "@vitest/utils": 4.1.11 + '@vitest/pretty-format': 4.1.11 + '@vitest/utils': 4.1.11 magic-string: 0.30.21 pathe: 2.0.3 - "@vitest/spy@4.1.11": {} + '@vitest/spy@4.1.11': {} - "@vitest/utils@4.1.11": + '@vitest/utils@4.1.11': dependencies: - "@vitest/pretty-format": 4.1.11 + '@vitest/pretty-format': 4.1.11 convert-source-map: 2.0.0 tinyrainbow: 3.1.1 - "@xmldom/xmldom@0.8.15": {} + '@xmldom/xmldom@0.8.15': {} - "@xmldom/xmldom@0.9.12": {} + '@xmldom/xmldom@0.9.12': {} abort-controller@3.0.0: dependencies: @@ -8654,36 +6180,36 @@ snapshots: avvio@9.3.0: dependencies: - "@fastify/error": 4.2.0 + '@fastify/error': 4.2.0 fastq: 1.20.1 babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - "@babel/compat-data": 7.29.7 - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-define-polyfill-provider": 0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/compat-data': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) semver: 6.3.1 transitivePeerDependencies: - supports-color babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-define-polyfill-provider": 0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) core-js-compat: 3.50.0 transitivePeerDependencies: - supports-color babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/helper-define-polyfill-provider": 0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color babel-plugin-react-compiler@1.0.0: dependencies: - "@babel/types": 7.29.8 + '@babel/types': 7.29.8 babel-plugin-react-native-web@0.21.2: {} @@ -8697,49 +6223,49 @@ snapshots: babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.29.7(supports-color@8.1.1)): dependencies: - "@babel/plugin-syntax-flow": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-syntax-flow': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) transitivePeerDependencies: - - "@babel/core" + - '@babel/core' babel-preset-expo@57.0.10(@babel/core@7.29.7(supports-color@8.1.1))(@babel/runtime@7.29.7)(expo@57.0.20)(react-refresh@0.14.2)(supports-color@8.1.1): dependencies: - "@babel/generator": 7.29.8 - "@babel/helper-module-imports": 7.29.7(supports-color@8.1.1) - "@babel/plugin-proposal-decorators": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-proposal-export-default-from": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-syntax-dynamic-import": 7.8.3(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-syntax-export-default-from": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-transform-async-generator-functions": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-async-to-generator": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-block-scoping": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-transform-class-properties": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-class-static-block": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-classes": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-destructuring": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-export-namespace-from": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-transform-flow-strip-types": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-transform-for-of": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-logical-assignment-operators": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-transform-modules-commonjs": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-named-capturing-groups-regex": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-transform-nullish-coalescing-operator": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-transform-object-rest-spread": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-optional-catch-binding": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-transform-optional-chaining": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-parameters": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-transform-private-methods": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-private-property-in-object": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-react-display-name": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-transform-react-jsx": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-react-jsx-development": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-react-pure-annotations": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/plugin-transform-runtime": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-typescript": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@babel/plugin-transform-unicode-regex": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - "@babel/preset-typescript": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - "@react-native/babel-plugin-codegen": 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/generator': 7.29.8 + '@babel/helper-module-imports': 7.29.7(supports-color@8.1.1) + '@babel/plugin-proposal-decorators': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-proposal-export-default-from': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-syntax-export-default-from': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-class-static-block': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-export-namespace-from': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-transform-flow-strip-types': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-logical-assignment-operators': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-react-pure-annotations': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@react-native/babel-plugin-codegen': 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) babel-plugin-react-compiler: 1.0.0 babel-plugin-react-native-web: 0.21.2 babel-plugin-syntax-hermes-parser: 0.36.1 @@ -8747,10 +6273,10 @@ snapshots: debug: 4.4.3(supports-color@8.1.1) react-refresh: 0.14.2 optionalDependencies: - "@babel/runtime": 7.29.7 + '@babel/runtime': 7.29.7 expo: 57.0.20(@babel/core@7.29.7(supports-color@8.1.1))(@expo/dom-webview@57.0.1)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) transitivePeerDependencies: - - "@babel/core" + - '@babel/core' - supports-color balanced-match@4.0.4: {} @@ -8820,7 +6346,7 @@ snapshots: chrome-launcher@0.15.2(supports-color@8.1.1): dependencies: - "@types/node": 26.2.0 + '@types/node': 26.2.0 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2(supports-color@8.1.1) @@ -8829,7 +6355,7 @@ snapshots: chromium-edge-launcher@0.3.0(supports-color@8.1.1): dependencies: - "@types/node": 26.2.0 + '@types/node': 26.2.0 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2(supports-color@8.1.1) @@ -9005,9 +6531,9 @@ snapshots: electron@44.2.0(supports-color@8.1.1): dependencies: - "@electron-internal/extract-zip": 1.0.5 - "@electron/get": 5.1.0(supports-color@8.1.1) - "@types/node": 24.13.3 + '@electron-internal/extract-zip': 1.0.5 + '@electron/get': 5.1.0(supports-color@8.1.1) + '@types/node': 24.13.3 transitivePeerDependencies: - supports-color @@ -9033,32 +6559,32 @@ snapshots: esbuild@0.28.2: optionalDependencies: - "@esbuild/aix-ppc64": 0.28.2 - "@esbuild/android-arm": 0.28.2 - "@esbuild/android-arm64": 0.28.2 - "@esbuild/android-x64": 0.28.2 - "@esbuild/darwin-arm64": 0.28.2 - "@esbuild/darwin-x64": 0.28.2 - "@esbuild/freebsd-arm64": 0.28.2 - "@esbuild/freebsd-x64": 0.28.2 - "@esbuild/linux-arm": 0.28.2 - "@esbuild/linux-arm64": 0.28.2 - "@esbuild/linux-ia32": 0.28.2 - "@esbuild/linux-loong64": 0.28.2 - "@esbuild/linux-mips64el": 0.28.2 - "@esbuild/linux-ppc64": 0.28.2 - "@esbuild/linux-riscv64": 0.28.2 - "@esbuild/linux-s390x": 0.28.2 - "@esbuild/linux-x64": 0.28.2 - "@esbuild/netbsd-arm64": 0.28.2 - "@esbuild/netbsd-x64": 0.28.2 - "@esbuild/openbsd-arm64": 0.28.2 - "@esbuild/openbsd-x64": 0.28.2 - "@esbuild/openharmony-arm64": 0.28.2 - "@esbuild/sunos-x64": 0.28.2 - "@esbuild/win32-arm64": 0.28.2 - "@esbuild/win32-ia32": 0.28.2 - "@esbuild/win32-x64": 0.28.2 + '@esbuild/aix-ppc64': 0.28.2 + '@esbuild/android-arm': 0.28.2 + '@esbuild/android-arm64': 0.28.2 + '@esbuild/android-x64': 0.28.2 + '@esbuild/darwin-arm64': 0.28.2 + '@esbuild/darwin-x64': 0.28.2 + '@esbuild/freebsd-arm64': 0.28.2 + '@esbuild/freebsd-x64': 0.28.2 + '@esbuild/linux-arm': 0.28.2 + '@esbuild/linux-arm64': 0.28.2 + '@esbuild/linux-ia32': 0.28.2 + '@esbuild/linux-loong64': 0.28.2 + '@esbuild/linux-mips64el': 0.28.2 + '@esbuild/linux-ppc64': 0.28.2 + '@esbuild/linux-riscv64': 0.28.2 + '@esbuild/linux-s390x': 0.28.2 + '@esbuild/linux-x64': 0.28.2 + '@esbuild/netbsd-arm64': 0.28.2 + '@esbuild/netbsd-x64': 0.28.2 + '@esbuild/openbsd-arm64': 0.28.2 + '@esbuild/openbsd-x64': 0.28.2 + '@esbuild/openharmony-arm64': 0.28.2 + '@esbuild/sunos-x64': 0.28.2 + '@esbuild/win32-arm64': 0.28.2 + '@esbuild/win32-ia32': 0.28.2 + '@esbuild/win32-x64': 0.28.2 escalade@3.2.0: {} @@ -9074,8 +6600,8 @@ snapshots: eslint-scope@9.1.2: dependencies: - "@types/esrecurse": 4.3.1 - "@types/estree": 1.0.9 + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.9 esrecurse: 4.3.0 estraverse: 5.3.0 @@ -9085,16 +6611,16 @@ snapshots: eslint@10.8.1(supports-color@8.1.1): dependencies: - "@eslint-community/eslint-utils": 4.10.1(eslint@10.8.1(supports-color@8.1.1)) - "@eslint-community/regexpp": 4.12.2 - "@eslint/config-array": 0.23.5(supports-color@8.1.1) - "@eslint/config-helpers": 0.7.0 - "@eslint/core": 1.2.1 - "@eslint/plugin-kit": 0.7.2 - "@humanfs/node": 0.16.8 - "@humanwhocodes/module-importer": 1.0.1 - "@humanwhocodes/retry": 0.4.3 - "@types/estree": 1.0.9 + '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(supports-color@8.1.1)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.23.5(supports-color@8.1.1) + '@eslint/config-helpers': 0.7.0 + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.2 + '@humanfs/node': 0.16.8 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.9 ajv: 6.15.0 cross-spawn: 7.0.6 debug: 4.4.3(supports-color@8.1.1) @@ -9136,7 +6662,7 @@ snapshots: estree-walker@3.0.3: dependencies: - "@types/estree": 1.0.9 + '@types/estree': 1.0.9 esutils@2.0.3: {} @@ -9148,7 +6674,7 @@ snapshots: expo-asset@57.0.16(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3): dependencies: - "@expo/image-utils": 0.11.5(supports-color@8.1.1)(typescript@6.0.3) + '@expo/image-utils': 0.11.5(supports-color@8.1.1)(typescript@6.0.3) expo: 57.0.20(@babel/core@7.29.7(supports-color@8.1.1))(@expo/dom-webview@57.0.1)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) expo-constants: 57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1) react: 19.2.3 @@ -9159,7 +6685,7 @@ snapshots: expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - "@expo/env": 2.4.3(supports-color@8.1.1) + '@expo/env': 2.4.3(supports-color@8.1.1) expo: 57.0.20(@babel/core@7.29.7(supports-color@8.1.1))(@expo/dom-webview@57.0.1)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) react-native: 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1) transitivePeerDependencies: @@ -9193,8 +6719,8 @@ snapshots: expo-modules-autolinking@57.0.12(supports-color@8.1.1)(typescript@6.0.3): dependencies: - "@expo/require-utils": 57.0.5(supports-color@8.1.1)(typescript@6.0.3) - "@expo/spawn-async": 1.8.0 + '@expo/require-utils': 57.0.5(supports-color@8.1.1)(typescript@6.0.3) + '@expo/spawn-async': 1.8.0 chalk: 4.1.2 commander: 7.2.0 transitivePeerDependencies: @@ -9203,7 +6729,7 @@ snapshots: expo-modules-core@57.0.16(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3): dependencies: - "@expo/expo-modules-macros-plugin": 0.6.1 + '@expo/expo-modules-macros-plugin': 0.6.1 expo-modules-jsi: 57.0.8(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1)) invariant: 2.2.4 react: 19.2.3 @@ -9230,17 +6756,17 @@ snapshots: expo@57.0.20(@babel/core@7.29.7(supports-color@8.1.1))(@expo/dom-webview@57.0.1)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3): dependencies: - "@babel/runtime": 7.29.7 - "@expo/cli": 57.0.22(@expo/dom-webview@57.0.1)(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) - "@expo/config": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - "@expo/config-plugins": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - "@expo/devtools": 57.0.1(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) - "@expo/fingerprint": 0.20.12(supports-color@8.1.1) - "@expo/local-build-cache-provider": 57.0.8(supports-color@8.1.1)(typescript@6.0.3) - "@expo/log-box": 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) - "@expo/metro": 56.0.2(supports-color@8.1.1) - "@expo/metro-config": 57.0.12(expo@57.0.20)(supports-color@8.1.1)(typescript@6.0.3) - "@ungap/structured-clone": 1.4.0 + '@babel/runtime': 7.29.7 + '@expo/cli': 57.0.22(@expo/dom-webview@57.0.1)(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) + '@expo/config': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + '@expo/config-plugins': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + '@expo/devtools': 57.0.1(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) + '@expo/fingerprint': 0.20.12(supports-color@8.1.1) + '@expo/local-build-cache-provider': 57.0.8(supports-color@8.1.1)(typescript@6.0.3) + '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) + '@expo/metro': 56.0.2(supports-color@8.1.1) + '@expo/metro-config': 57.0.12(expo@57.0.20)(supports-color@8.1.1)(typescript@6.0.3) + '@ungap/structured-clone': 1.4.0 babel-preset-expo: 57.0.10(@babel/core@7.29.7(supports-color@8.1.1))(@babel/runtime@7.29.7)(expo@57.0.20)(react-refresh@0.14.2)(supports-color@8.1.1) expo-asset: 57.0.16(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) expo-constants: 57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1) @@ -9255,10 +6781,10 @@ snapshots: react-refresh: 0.14.2 whatwg-url-minimum: 0.1.2 optionalDependencies: - "@expo/dom-webview": 57.0.1(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) + '@expo/dom-webview': 57.0.1(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) react-dom: 19.2.8(react@19.2.3) transitivePeerDependencies: - - "@babel/core" + - '@babel/core' - bufferutil - expo-router - expo-widgets @@ -9278,7 +6804,7 @@ snapshots: fast-json-stringify@7.0.1: dependencies: - "@fastify/merge-json-schemas": 0.2.1 + '@fastify/merge-json-schemas': 0.2.1 ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) fast-uri: 4.1.3 @@ -9297,10 +6823,10 @@ snapshots: fastify@5.12.1: dependencies: - "@fastify/ajv-compiler": 4.0.6 - "@fastify/error": 4.2.0 - "@fastify/fast-json-stringify-compiler": 5.1.0 - "@fastify/proxy-addr": 5.1.0 + '@fastify/ajv-compiler': 4.0.6 + '@fastify/error': 4.2.0 + '@fastify/fast-json-stringify-compiler': 5.1.0 + '@fastify/proxy-addr': 5.1.0 abstract-logging: 2.0.1 avvio: 9.3.0 fast-json-stringify: 7.0.1 @@ -9494,8 +7020,8 @@ snapshots: jest-util@29.7.0: dependencies: - "@jest/types": 29.6.3 - "@types/node": 26.2.0 + '@jest/types': 29.6.3 + '@types/node': 26.2.0 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -9503,7 +7029,7 @@ snapshots: jest-validate@29.7.0: dependencies: - "@jest/types": 29.6.3 + '@jest/types': 29.6.3 camelcase: 6.3.0 chalk: 4.1.2 jest-get-type: 29.6.3 @@ -9512,7 +7038,7 @@ snapshots: jest-worker@29.7.0: dependencies: - "@types/node": 26.2.0 + '@types/node': 26.2.0 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -9654,7 +7180,7 @@ snapshots: magic-string@0.30.21: dependencies: - "@jridgewell/sourcemap-codec": 1.5.5 + '@jridgewell/sourcemap-codec': 1.5.5 makeerror@1.0.12: dependencies: @@ -9670,7 +7196,7 @@ snapshots: metro-babel-transformer@0.84.5(supports-color@8.1.1): dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) flow-enums-runtime: 0.0.6 hermes-parser: 0.35.0 metro-cache-key: 0.84.5 @@ -9680,7 +7206,7 @@ snapshots: metro-babel-transformer@0.84.6(supports-color@8.1.1): dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) flow-enums-runtime: 0.0.6 hermes-parser: 0.35.0 metro-cache-key: 0.84.6 @@ -9804,18 +7330,18 @@ snapshots: metro-runtime@0.84.5: dependencies: - "@babel/runtime": 7.29.7 + '@babel/runtime': 7.29.7 flow-enums-runtime: 0.0.6 metro-runtime@0.84.6: dependencies: - "@babel/runtime": 7.29.7 + '@babel/runtime': 7.29.7 flow-enums-runtime: 0.0.6 metro-source-map@0.84.5(supports-color@8.1.1): dependencies: - "@babel/traverse": 7.29.8(supports-color@8.1.1) - "@babel/types": 7.29.8 + '@babel/traverse': 7.29.8(supports-color@8.1.1) + '@babel/types': 7.29.8 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.84.5(supports-color@8.1.1) @@ -9828,8 +7354,8 @@ snapshots: metro-source-map@0.84.6(supports-color@8.1.1): dependencies: - "@babel/traverse": 7.29.8(supports-color@8.1.1) - "@babel/types": 7.29.8 + '@babel/traverse': 7.29.8(supports-color@8.1.1) + '@babel/types': 7.29.8 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.84.6(supports-color@8.1.1) @@ -9864,10 +7390,10 @@ snapshots: metro-transform-plugins@0.84.5(supports-color@8.1.1): dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/generator": 7.29.8 - "@babel/template": 7.29.7 - "@babel/traverse": 7.29.8(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/generator': 7.29.8 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@8.1.1) flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: @@ -9875,10 +7401,10 @@ snapshots: metro-transform-plugins@0.84.6(supports-color@8.1.1): dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/generator": 7.29.8 - "@babel/template": 7.29.7 - "@babel/traverse": 7.29.8(supports-color@8.1.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/generator': 7.29.8 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@8.1.1) flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: @@ -9886,10 +7412,10 @@ snapshots: metro-transform-worker@0.84.5(supports-color@8.1.1): dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/generator": 7.29.8 - "@babel/parser": 7.29.8 - "@babel/types": 7.29.8 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/generator': 7.29.8 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 flow-enums-runtime: 0.0.6 metro: 0.84.5(supports-color@8.1.1) metro-babel-transformer: 0.84.5(supports-color@8.1.1) @@ -9906,10 +7432,10 @@ snapshots: metro-transform-worker@0.84.6(supports-color@8.1.1): dependencies: - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/generator": 7.29.8 - "@babel/parser": 7.29.8 - "@babel/types": 7.29.8 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/generator': 7.29.8 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 flow-enums-runtime: 0.0.6 metro: 0.84.6(supports-color@8.1.1) metro-babel-transformer: 0.84.6(supports-color@8.1.1) @@ -9926,13 +7452,13 @@ snapshots: metro@0.84.5(supports-color@8.1.1): dependencies: - "@babel/code-frame": 7.29.7 - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/generator": 7.29.8 - "@babel/parser": 7.29.8 - "@babel/template": 7.29.7 - "@babel/traverse": 7.29.8(supports-color@8.1.1) - "@babel/types": 7.29.8 + '@babel/code-frame': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/generator': 7.29.8 + '@babel/parser': 7.29.8 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@8.1.1) + '@babel/types': 7.29.8 accepts: 2.0.0 ci-info: 2.0.0 connect: 3.7.0(supports-color@8.1.1) @@ -9971,13 +7497,13 @@ snapshots: metro@0.84.6(supports-color@8.1.1): dependencies: - "@babel/code-frame": 7.29.7 - "@babel/core": 7.29.7(supports-color@8.1.1) - "@babel/generator": 7.29.8 - "@babel/parser": 7.29.8 - "@babel/template": 7.29.7 - "@babel/traverse": 7.29.8(supports-color@8.1.1) - "@babel/types": 7.29.8 + '@babel/code-frame': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/generator': 7.29.8 + '@babel/parser': 7.29.8 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8(supports-color@8.1.1) + '@babel/types': 7.29.8 accepts: 2.0.0 ci-info: 2.0.0 connect: 3.7.0(supports-color@8.1.1) @@ -10016,7 +7542,7 @@ snapshots: micro-packed@0.11.1: dependencies: - "@scure/base": 2.4.0 + '@scure/base': 2.4.0 micromatch@4.0.8: dependencies: @@ -10223,7 +7749,7 @@ snapshots: pino@10.3.1: dependencies: - "@pinojs/redact": 0.4.0 + '@pinojs/redact': 0.4.0 atomic-sleep: 1.0.0 on-exit-leak-free: 2.1.2 pino-abstract-transport: 3.0.0 @@ -10237,7 +7763,7 @@ snapshots: plist@3.1.1: dependencies: - "@xmldom/xmldom": 0.9.12 + '@xmldom/xmldom': 0.9.12 base64-js: 1.5.1 xmlbuilder: 15.1.1 @@ -10267,7 +7793,7 @@ snapshots: pretty-format@29.7.0: dependencies: - "@jest/schemas": 29.6.3 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.3.1 @@ -10296,16 +7822,16 @@ snapshots: protobufjs@7.6.6: dependencies: - "@protobufjs/aspromise": 1.1.2 - "@protobufjs/base64": 1.1.2 - "@protobufjs/codegen": 2.0.5 - "@protobufjs/eventemitter": 1.1.1 - "@protobufjs/fetch": 1.1.1 - "@protobufjs/float": 1.0.2 - "@protobufjs/path": 1.1.2 - "@protobufjs/pool": 1.1.0 - "@protobufjs/utf8": 1.1.2 - "@types/node": 26.2.0 + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.5 + '@protobufjs/eventemitter': 1.1.1 + '@protobufjs/fetch': 1.1.1 + '@protobufjs/float': 1.0.2 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.2 + '@types/node': 26.2.0 long: 5.3.2 punycode@2.3.1: {} @@ -10371,13 +7897,13 @@ snapshots: react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1): dependencies: - "@react-native/assets-registry": 0.86.3 - "@react-native/codegen": 0.86.3(@babel/core@7.29.7(supports-color@8.1.1)) - "@react-native/community-cli-plugin": 0.86.3(supports-color@8.1.1) - "@react-native/gradle-plugin": 0.86.3 - "@react-native/js-polyfills": 0.86.3 - "@react-native/normalize-colors": 0.86.3 - "@react-native/virtualized-lists": 0.86.3(@types/react@19.2.18)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) + '@react-native/assets-registry': 0.86.3 + '@react-native/codegen': 0.86.3(@babel/core@7.29.7(supports-color@8.1.1)) + '@react-native/community-cli-plugin': 0.86.3(supports-color@8.1.1) + '@react-native/gradle-plugin': 0.86.3 + '@react-native/js-polyfills': 0.86.3 + '@react-native/normalize-colors': 0.86.3 + '@react-native/virtualized-lists': 0.86.3(@types/react@19.2.18)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -10405,11 +7931,11 @@ snapshots: ws: 7.5.13 yargs: 17.7.3 optionalDependencies: - "@types/react": 19.2.18 + '@types/react': 19.2.18 transitivePeerDependencies: - - "@babel/core" - - "@react-native-community/cli" - - "@react-native/metro-config" + - '@babel/core' + - '@react-native-community/cli' + - '@react-native/metro-config' - bufferutil - supports-color - utf-8-validate @@ -10426,14 +7952,14 @@ snapshots: redis@5.12.1(@opentelemetry/api@1.9.1): dependencies: - "@redis/bloom": 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) - "@redis/client": 5.12.1(@opentelemetry/api@1.9.1) - "@redis/json": 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) - "@redis/search": 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) - "@redis/time-series": 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) + '@redis/bloom': 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) + '@redis/client': 5.12.1(@opentelemetry/api@1.9.1) + '@redis/json': 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) + '@redis/search': 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) + '@redis/time-series': 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) transitivePeerDependencies: - - "@node-rs/xxhash" - - "@opentelemetry/api" + - '@node-rs/xxhash' + - '@opentelemetry/api' reflect-metadata@0.2.2: {} @@ -10497,24 +8023,24 @@ snapshots: rolldown@1.2.5: dependencies: - "@oxc-project/types": 0.146.0 - "@rolldown/pluginutils": 1.0.1 + '@oxc-project/types': 0.146.0 + '@rolldown/pluginutils': 1.0.1 optionalDependencies: - "@rolldown/binding-android-arm-eabi": 1.2.5 - "@rolldown/binding-android-arm64": 1.2.5 - "@rolldown/binding-darwin-arm64": 1.2.5 - "@rolldown/binding-darwin-x64": 1.2.5 - "@rolldown/binding-freebsd-x64": 1.2.5 - "@rolldown/binding-linux-arm-gnueabihf": 1.2.5 - "@rolldown/binding-linux-arm64-gnu": 1.2.5 - "@rolldown/binding-linux-arm64-musl": 1.2.5 - "@rolldown/binding-linux-ppc64-gnu": 1.2.5 - "@rolldown/binding-linux-s390x-gnu": 1.2.5 - "@rolldown/binding-linux-x64-gnu": 1.2.5 - "@rolldown/binding-linux-x64-musl": 1.2.5 - "@rolldown/binding-openharmony-arm64": 1.2.5 - "@rolldown/binding-win32-arm64-msvc": 1.2.5 - "@rolldown/binding-win32-x64-msvc": 1.2.5 + '@rolldown/binding-android-arm-eabi': 1.2.5 + '@rolldown/binding-android-arm64': 1.2.5 + '@rolldown/binding-darwin-arm64': 1.2.5 + '@rolldown/binding-darwin-x64': 1.2.5 + '@rolldown/binding-freebsd-x64': 1.2.5 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.5 + '@rolldown/binding-linux-arm64-gnu': 1.2.5 + '@rolldown/binding-linux-arm64-musl': 1.2.5 + '@rolldown/binding-linux-ppc64-gnu': 1.2.5 + '@rolldown/binding-linux-s390x-gnu': 1.2.5 + '@rolldown/binding-linux-x64-gnu': 1.2.5 + '@rolldown/binding-linux-x64-musl': 1.2.5 + '@rolldown/binding-openharmony-arm64': 1.2.5 + '@rolldown/binding-win32-arm64-msvc': 1.2.5 + '@rolldown/binding-win32-x64-msvc': 1.2.5 safe-buffer@5.2.1: {} @@ -10674,7 +8200,7 @@ snapshots: terser@5.51.2: dependencies: - "@jridgewell/source-map": 0.3.11 + '@jridgewell/source-map': 0.3.11 acorn: 8.18.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -10730,12 +8256,12 @@ snapshots: turbo@2.10.11: optionalDependencies: - "@turbo/darwin-64": 2.10.11 - "@turbo/darwin-arm64": 2.10.11 - "@turbo/linux-64": 2.10.11 - "@turbo/linux-arm64": 2.10.11 - "@turbo/windows-64": 2.10.11 - "@turbo/windows-arm64": 2.10.11 + '@turbo/darwin-64': 2.10.11 + '@turbo/darwin-arm64': 2.10.11 + '@turbo/linux-64': 2.10.11 + '@turbo/linux-arm64': 2.10.11 + '@turbo/windows-64': 2.10.11 + '@turbo/windows-arm64': 2.10.11 type-check@0.4.0: dependencies: @@ -10747,10 +8273,10 @@ snapshots: typescript-eslint@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3): dependencies: - "@typescript-eslint/eslint-plugin": 8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) - "@typescript-eslint/parser": 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) - "@typescript-eslint/typescript-estree": 8.67.0(supports-color@8.1.1)(typescript@6.0.3) - "@typescript-eslint/utils": 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/parser': 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.67.0(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/utils': 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) eslint: 10.8.1(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: @@ -10804,7 +8330,7 @@ snapshots: rolldown: 1.2.5 tinyglobby: 0.2.17 optionalDependencies: - "@types/node": 26.2.0 + '@types/node': 26.2.0 esbuild: 0.28.2 fsevents: 2.3.3 terser: 5.51.2 @@ -10813,13 +8339,13 @@ snapshots: vitest@4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0)): dependencies: - "@vitest/expect": 4.1.11 - "@vitest/mocker": 4.1.11(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0)) - "@vitest/pretty-format": 4.1.11 - "@vitest/runner": 4.1.11 - "@vitest/snapshot": 4.1.11 - "@vitest/spy": 4.1.11 - "@vitest/utils": 4.1.11 + '@vitest/expect': 4.1.11 + '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.11 + '@vitest/runner': 4.1.11 + '@vitest/snapshot': 4.1.11 + '@vitest/spy': 4.1.11 + '@vitest/utils': 4.1.11 es-module-lexer: 2.3.2 expect-type: 1.4.0 magic-string: 0.30.21 @@ -10834,8 +8360,8 @@ snapshots: vite: 8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - "@opentelemetry/api": 1.9.1 - "@types/node": 26.2.0 + '@opentelemetry/api': 1.9.1 + '@types/node': 26.2.0 transitivePeerDependencies: - msw From db8c54bef926d2d0a32d35cbda87183514dd4585 Mon Sep 17 00:00:00 2001 From: SHASHANK SHEKHAR Date: Sun, 13 Sep 2026 15:20:00 +0530 Subject: [PATCH 3/3] style: format ledger exchange domain --- .../exchange-account-repository.test.ts | 16 +- .../exchange-asset-account-repository.test.ts | 69 +- .../exchange-deposit-repository.test.ts | 31 +- .../exchange-subaccount-repository.test.ts | 15 +- .../exchange-withdrawal-repository.test.ts | 28 +- .../__tests__/reconciliation-service.test.ts | 18 +- .../exchange/exchange-account-repository.ts | 24 +- .../exchange-asset-account-repository.ts | 25 +- .../exchange/exchange-deposit-repository.ts | 24 +- .../src/exchange/exchange-fee-repository.ts | 24 +- .../exchange-subaccount-repository.ts | 14 +- .../src/exchange/exchange-trade-repository.ts | 30 +- .../exchange-withdrawal-repository.ts | 25 +- apps/api/src/reconciliation/index.ts | 2 +- .../reconciliation-repository.ts | 40 +- .../reconciliation/reconciliation-service.ts | 12 +- .../exchange-account-registry.test.ts | 37 +- .../exchange-deposit-registry.test.ts | 21 +- .../__tests__/exchange-fee-registry.test.ts | 21 +- .../exchange-posting-builders.test.ts | 2 +- .../exchange-posting-validator.test.ts | 35 +- .../exchange-subaccount-registry.test.ts | 15 +- .../__tests__/exchange-trade-registry.test.ts | 25 +- .../exchange-withdrawal-registry.test.ts | 11 +- .../src/__tests__/ledger-types.test.ts | 10 +- .../reconciliation-repository.test.ts | 15 +- .../__tests__/reconciliation-types.test.ts | 2 +- .../src/__tests__/subaccount-registry.test.ts | 6 +- packages/ledger-core/src/account-registry.ts | 13 +- .../src/exchange-account-registry.ts | 30 +- .../ledger-core/src/exchange-account-types.ts | 8 +- .../src/exchange-asset-account-registry.ts | 54 +- .../src/exchange-deposit-registry.ts | 18 +- .../ledger-core/src/exchange-deposit-types.ts | 8 +- .../ledger-core/src/exchange-fee-registry.ts | 23 +- .../ledger-core/src/exchange-fee-types.ts | 2 +- .../src/exchange-posting-builders.ts | 34 +- .../ledger-core/src/exchange-posting-types.ts | 8 +- .../src/exchange-posting-validator.ts | 40 +- .../src/exchange-subaccount-registry.ts | 36 +- .../src/exchange-trade-registry.ts | 52 +- .../ledger-core/src/exchange-trade-types.ts | 2 +- .../src/exchange-withdrawal-registry.ts | 48 +- .../src/exchange-withdrawal-types.ts | 9 +- packages/ledger-core/src/index.ts | 2 +- packages/ledger-core/src/ledger-types.ts | 12 +- .../ledger-core/src/reconciliation-engine.ts | 15 +- .../src/reconciliation-repository.ts | 2 +- .../ledger-core/src/reconciliation-types.ts | 17 +- .../ledger-core/src/subaccount-registry.ts | 15 +- pnpm-lock.yaml | 8464 +++++++++++------ 51 files changed, 5744 insertions(+), 3765 deletions(-) diff --git a/apps/api/src/__tests__/exchange-account-repository.test.ts b/apps/api/src/__tests__/exchange-account-repository.test.ts index 2d605be..9761343 100644 --- a/apps/api/src/__tests__/exchange-account-repository.test.ts +++ b/apps/api/src/__tests__/exchange-account-repository.test.ts @@ -4,16 +4,12 @@ import { describe, expect, it } from "vitest"; import { PostgresStorage } from "@crypto-wallet/storage"; -import { - ExchangeAccountRepository, -} from "../exchange/exchange-account-repository.js"; +import { ExchangeAccountRepository } from "../exchange/exchange-account-repository.js"; const databaseUrl = process.env.DATABASE_URL; if (!databaseUrl) { - throw new Error( - "DATABASE_URL is required for exchange account repository tests", - ); + throw new Error("DATABASE_URL is required for exchange account repository tests"); } describe("ExchangeAccountRepository", () => { @@ -73,11 +69,7 @@ describe("ExchangeAccountRepository", () => { kind: "treasury", }); - const found = await repository.findByOwnerAndKind( - "platform", - ownerId, - "treasury", - ); + const found = await repository.findByOwnerAndKind("platform", ownerId, "treasury"); expect(found).toEqual(created); } finally { @@ -142,4 +134,4 @@ describe("ExchangeAccountRepository", () => { await storage.disconnect(); } }); -}); \ No newline at end of file +}); diff --git a/apps/api/src/__tests__/exchange-asset-account-repository.test.ts b/apps/api/src/__tests__/exchange-asset-account-repository.test.ts index 4ca0c94..2cd5345 100644 --- a/apps/api/src/__tests__/exchange-asset-account-repository.test.ts +++ b/apps/api/src/__tests__/exchange-asset-account-repository.test.ts @@ -4,16 +4,12 @@ import { describe, expect, it } from "vitest"; import { PostgresStorage } from "@crypto-wallet/storage"; -import { - ExchangeAssetAccountRepository, -} from "../exchange/exchange-asset-account-repository.js"; +import { ExchangeAssetAccountRepository } from "../exchange/exchange-asset-account-repository.js"; const databaseUrl = process.env.DATABASE_URL; if (!databaseUrl) { - throw new Error( - "DATABASE_URL is required for exchange asset account repository tests", - ); + throw new Error("DATABASE_URL is required for exchange asset account repository tests"); } describe("ExchangeAssetAccountRepository", () => { @@ -46,13 +42,7 @@ describe("ExchangeAssetAccountRepository", () => { ) VALUES ($1, $2, $3, $4, $5) `, - [ - networkId, - `test-${networkId}`, - "Test Network", - "test-chain", - "test", - ], + [networkId, `test-${networkId}`, "Test Network", "test-chain", "test"], ); await storage.query( @@ -67,14 +57,7 @@ describe("ExchangeAssetAccountRepository", () => { ) VALUES ($1, $2, $3, $4, $5, $6) `, - [ - assetId, - networkId, - `T${assetId.slice(0, 6)}`, - "Test Asset", - 18, - "native", - ], + [assetId, networkId, `T${assetId.slice(0, 6)}`, "Test Asset", 18, "native"], ); return { @@ -267,9 +250,7 @@ describe("ExchangeAssetAccountRepository", () => { networkId, }); - const listed = await repository.listByExchangeAccount( - exchangeAccountId, - ); + const listed = await repository.listByExchangeAccount(exchangeAccountId); expect(listed).toEqual([first, second]); } finally { @@ -292,24 +273,15 @@ describe("ExchangeAssetAccountRepository", () => { } if (assetId) { - await storage.query( - `DELETE FROM assets WHERE id = $1`, - [assetId], - ); + await storage.query(`DELETE FROM assets WHERE id = $1`, [assetId]); } if (secondAssetId) { - await storage.query( - `DELETE FROM assets WHERE id = $1`, - [secondAssetId], - ); + await storage.query(`DELETE FROM assets WHERE id = $1`, [secondAssetId]); } if (networkId) { - await storage.query( - `DELETE FROM networks WHERE id = $1`, - [networkId], - ); + await storage.query(`DELETE FROM networks WHERE id = $1`, [networkId]); } await storage.disconnect(); @@ -346,13 +318,7 @@ describe("ExchangeAssetAccountRepository", () => { ) VALUES ($1, $2, $3, $4, $5) `, - [ - wrongNetworkId, - `wrong-${wrongNetworkId}`, - "Wrong Network", - "wrong-chain", - "test", - ], + [wrongNetworkId, `wrong-${wrongNetworkId}`, "Wrong Network", "wrong-chain", "test"], ); await expect( @@ -382,24 +348,15 @@ describe("ExchangeAssetAccountRepository", () => { } if (assetId) { - await storage.query( - `DELETE FROM assets WHERE id = $1`, - [assetId], - ); + await storage.query(`DELETE FROM assets WHERE id = $1`, [assetId]); } if (wrongNetworkId) { - await storage.query( - `DELETE FROM networks WHERE id = $1`, - [wrongNetworkId], - ); + await storage.query(`DELETE FROM networks WHERE id = $1`, [wrongNetworkId]); } if (networkId) { - await storage.query( - `DELETE FROM networks WHERE id = $1`, - [networkId], - ); + await storage.query(`DELETE FROM networks WHERE id = $1`, [networkId]); } await storage.disconnect(); @@ -449,4 +406,4 @@ describe("ExchangeAssetAccountRepository", () => { await storage.disconnect(); } }); -}); \ No newline at end of file +}); diff --git a/apps/api/src/__tests__/exchange-deposit-repository.test.ts b/apps/api/src/__tests__/exchange-deposit-repository.test.ts index eeb3b28..2171b27 100644 --- a/apps/api/src/__tests__/exchange-deposit-repository.test.ts +++ b/apps/api/src/__tests__/exchange-deposit-repository.test.ts @@ -4,16 +4,12 @@ import { describe, expect, it } from "vitest"; import { PostgresStorage } from "@crypto-wallet/storage"; -import { - ExchangeDepositRepository, -} from "../exchange/exchange-deposit-repository.js"; +import { ExchangeDepositRepository } from "../exchange/exchange-deposit-repository.js"; const databaseUrl = process.env.DATABASE_URL; if (!databaseUrl) { - throw new Error( - "DATABASE_URL is required for exchange deposit repository tests", - ); + throw new Error("DATABASE_URL is required for exchange deposit repository tests"); } describe("ExchangeDepositRepository", () => { @@ -68,14 +64,7 @@ describe("ExchangeDepositRepository", () => { ) VALUES ($1, $2, $3, $4, $5, $6) `, - [ - assetId, - networkId, - `D${assetId.slice(0, 6)}`, - "Deposit Test Asset", - 18, - "native", - ], + [assetId, networkId, `D${assetId.slice(0, 6)}`, "Deposit Test Asset", 18, "native"], ); await storage.query( @@ -88,12 +77,7 @@ describe("ExchangeDepositRepository", () => { ) VALUES ($1, $2, $3, $4) `, - [ - exchangeAssetAccountId, - exchangeAccountId, - assetId, - networkId, - ], + [exchangeAssetAccountId, exchangeAccountId, assetId, networkId], ); return { @@ -280,10 +264,7 @@ describe("ExchangeDepositRepository", () => { reference: `deposit-${randomUUID()}`, }); - const found = await repository.findByTransaction( - fixtures.networkId, - transactionHash, - ); + const found = await repository.findByTransaction(fixtures.networkId, transactionHash); expect(found).toEqual(created); } finally { @@ -364,4 +345,4 @@ describe("ExchangeDepositRepository", () => { await storage.disconnect(); } }); -}); \ No newline at end of file +}); diff --git a/apps/api/src/__tests__/exchange-subaccount-repository.test.ts b/apps/api/src/__tests__/exchange-subaccount-repository.test.ts index 0f319f7..b533f6a 100644 --- a/apps/api/src/__tests__/exchange-subaccount-repository.test.ts +++ b/apps/api/src/__tests__/exchange-subaccount-repository.test.ts @@ -4,16 +4,12 @@ import { describe, expect, it } from "vitest"; import { PostgresStorage } from "@crypto-wallet/storage"; -import { - ExchangeSubaccountRepository, -} from "../exchange/exchange-subaccount-repository.js"; +import { ExchangeSubaccountRepository } from "../exchange/exchange-subaccount-repository.js"; const databaseUrl = process.env.DATABASE_URL; if (!databaseUrl) { - throw new Error( - "DATABASE_URL is required for exchange subaccount repository tests", - ); + throw new Error("DATABASE_URL is required for exchange subaccount repository tests"); } describe("ExchangeSubaccountRepository", () => { @@ -55,7 +51,6 @@ describe("ExchangeSubaccountRepository", () => { const found = await repository.findById(created.id); expect(found).toEqual(created); - } finally { await storage.query( ` @@ -109,9 +104,7 @@ describe("ExchangeSubaccountRepository", () => { name: "margin", }); - const listed = await repository.listByExchangeAccount( - exchangeAccountId, - ); + const listed = await repository.listByExchangeAccount(exchangeAccountId); expect(listed).toEqual([first, second]); } finally { @@ -203,4 +196,4 @@ describe("ExchangeSubaccountRepository", () => { await storage.disconnect(); } }); -}); \ No newline at end of file +}); diff --git a/apps/api/src/__tests__/exchange-withdrawal-repository.test.ts b/apps/api/src/__tests__/exchange-withdrawal-repository.test.ts index b5c3769..892b01f 100644 --- a/apps/api/src/__tests__/exchange-withdrawal-repository.test.ts +++ b/apps/api/src/__tests__/exchange-withdrawal-repository.test.ts @@ -4,16 +4,12 @@ import { describe, expect, it } from "vitest"; import { PostgresStorage } from "@crypto-wallet/storage"; -import { - ExchangeWithdrawalRepository, -} from "../exchange/exchange-withdrawal-repository.js"; +import { ExchangeWithdrawalRepository } from "../exchange/exchange-withdrawal-repository.js"; const databaseUrl = process.env.DATABASE_URL; if (!databaseUrl) { - throw new Error( - "DATABASE_URL is required for exchange withdrawal repository tests", - ); + throw new Error("DATABASE_URL is required for exchange withdrawal repository tests"); } describe("ExchangeWithdrawalRepository", () => { @@ -68,14 +64,7 @@ describe("ExchangeWithdrawalRepository", () => { ) VALUES ($1, $2, $3, $4, $5, $6) `, - [ - assetId, - networkId, - `W${assetId.slice(0, 6)}`, - "Withdrawal Test Asset", - 18, - "native", - ], + [assetId, networkId, `W${assetId.slice(0, 6)}`, "Withdrawal Test Asset", 18, "native"], ); await storage.query( @@ -88,12 +77,7 @@ describe("ExchangeWithdrawalRepository", () => { ) VALUES ($1, $2, $3, $4) `, - [ - exchangeAssetAccountId, - exchangeAccountId, - assetId, - networkId, - ], + [exchangeAssetAccountId, exchangeAccountId, assetId, networkId], ); return { @@ -372,7 +356,7 @@ describe("ExchangeWithdrawalRepository", () => { await storage.disconnect(); } }); - it("rejects an approved withdrawal when requester and approver are the same actor", async () => { + it("rejects an approved withdrawal when requester and approver are the same actor", async () => { const storage = new PostgresStorage(databaseUrl); const repository = new ExchangeWithdrawalRepository(storage); @@ -417,4 +401,4 @@ describe("ExchangeWithdrawalRepository", () => { await storage.disconnect(); } }); -}); \ No newline at end of file +}); diff --git a/apps/api/src/__tests__/reconciliation-service.test.ts b/apps/api/src/__tests__/reconciliation-service.test.ts index e8ef4e1..538306c 100644 --- a/apps/api/src/__tests__/reconciliation-service.test.ts +++ b/apps/api/src/__tests__/reconciliation-service.test.ts @@ -7,9 +7,7 @@ import type { import { ReconciliationService } from "../reconciliation/reconciliation-service.js"; -class InMemoryReconciliationRepository - implements ReconciliationRepository -{ +class InMemoryReconciliationRepository implements ReconciliationRepository { private latest: ReconciliationComparison | null = null; async save(comparison: ReconciliationComparison): Promise { @@ -72,11 +70,7 @@ describe("ReconciliationService", () => { expect(result.difference).toBe("-500"); await expect( - service.findLatest( - scope.assetId, - scope.networkId, - scope.accountId, - ), + service.findLatest(scope.assetId, scope.networkId, scope.accountId), ).resolves.toEqual(result); }); @@ -85,11 +79,7 @@ describe("ReconciliationService", () => { const service = new ReconciliationService(repository); await expect( - service.findLatest( - "missing-asset", - "missing-network", - "missing-account", - ), + service.findLatest("missing-asset", "missing-network", "missing-account"), ).resolves.toBeNull(); }); -}); \ No newline at end of file +}); diff --git a/apps/api/src/exchange/exchange-account-repository.ts b/apps/api/src/exchange/exchange-account-repository.ts index 1e65b7f..f581722 100644 --- a/apps/api/src/exchange/exchange-account-repository.ts +++ b/apps/api/src/exchange/exchange-account-repository.ts @@ -4,11 +4,7 @@ import type { Storage } from "@crypto-wallet/storage"; export type ExchangeAccountOwnerType = "customer" | "platform"; -export type ExchangeAccountKind = - | "customer" - | "treasury" - | "fee" - | "operational"; +export type ExchangeAccountKind = "customer" | "treasury" | "fee" | "operational"; export type ExchangeAccountStatus = "active" | "blocked"; @@ -40,9 +36,7 @@ interface ExchangeAccountRow { export class ExchangeAccountRepository { constructor(private readonly storage: Storage) {} - async create( - input: CreateExchangeAccountInput, - ): Promise { + async create(input: CreateExchangeAccountInput): Promise { const id = randomUUID(); const result = await this.storage.query( @@ -63,13 +57,7 @@ export class ExchangeAccountRepository { status, created_at `, - [ - id, - input.ownerType, - input.ownerId, - input.kind, - input.status ?? null, - ], + [id, input.ownerType, input.ownerId, input.kind, input.status ?? null], ); const row = result.rows[0]; @@ -140,9 +128,7 @@ export class ExchangeAccountRepository { } } -function mapExchangeAccount( - row: ExchangeAccountRow, -): ExchangeAccountRecord { +function mapExchangeAccount(row: ExchangeAccountRow): ExchangeAccountRecord { return { id: row.id, ownerType: row.owner_type, @@ -151,4 +137,4 @@ function mapExchangeAccount( status: row.status, createdAt: row.created_at, }; -} \ No newline at end of file +} diff --git a/apps/api/src/exchange/exchange-asset-account-repository.ts b/apps/api/src/exchange/exchange-asset-account-repository.ts index fdfc1ce..5a36387 100644 --- a/apps/api/src/exchange/exchange-asset-account-repository.ts +++ b/apps/api/src/exchange/exchange-asset-account-repository.ts @@ -27,9 +27,7 @@ interface ExchangeAssetAccountRow { export class ExchangeAssetAccountRepository { constructor(private readonly storage: Storage) {} - async create( - input: CreateExchangeAssetAccountInput, - ): Promise { + async create(input: CreateExchangeAssetAccountInput): Promise { const id = randomUUID(); const result = await this.storage.query( @@ -48,12 +46,7 @@ export class ExchangeAssetAccountRepository { network_id, created_at `, - [ - id, - input.exchangeAccountId, - input.assetId, - input.networkId, - ], + [id, input.exchangeAccountId, input.assetId, input.networkId], ); const row = result.rows[0]; @@ -65,9 +58,7 @@ export class ExchangeAssetAccountRepository { return mapExchangeAssetAccount(row); } - async findById( - id: string, - ): Promise { + async findById(id: string): Promise { const result = await this.storage.query( ` SELECT @@ -121,9 +112,7 @@ export class ExchangeAssetAccountRepository { return mapExchangeAssetAccount(row); } - async listByExchangeAccount( - exchangeAccountId: string, - ): Promise { + async listByExchangeAccount(exchangeAccountId: string): Promise { const result = await this.storage.query( ` SELECT @@ -143,9 +132,7 @@ export class ExchangeAssetAccountRepository { } } -function mapExchangeAssetAccount( - row: ExchangeAssetAccountRow, -): ExchangeAssetAccountRecord { +function mapExchangeAssetAccount(row: ExchangeAssetAccountRow): ExchangeAssetAccountRecord { return { id: row.id, exchangeAccountId: row.exchange_account_id, @@ -153,4 +140,4 @@ function mapExchangeAssetAccount( networkId: row.network_id, createdAt: row.created_at, }; -} \ No newline at end of file +} diff --git a/apps/api/src/exchange/exchange-deposit-repository.ts b/apps/api/src/exchange/exchange-deposit-repository.ts index 53f27aa..03d59b6 100644 --- a/apps/api/src/exchange/exchange-deposit-repository.ts +++ b/apps/api/src/exchange/exchange-deposit-repository.ts @@ -2,11 +2,7 @@ import { randomUUID } from "node:crypto"; import type { Storage } from "@crypto-wallet/storage"; -export type ExchangeDepositStatus = - | "detected" - | "confirmed" - | "credited" - | "reversed"; +export type ExchangeDepositStatus = "detected" | "confirmed" | "credited" | "reversed"; export interface ExchangeDepositRecord { id: string; @@ -42,9 +38,7 @@ interface ExchangeDepositRow { export class ExchangeDepositRepository { constructor(private readonly storage: Storage) {} - async create( - input: CreateExchangeDepositInput, - ): Promise { + async create(input: CreateExchangeDepositInput): Promise { const id = randomUUID(); const result = await this.storage.query( @@ -89,9 +83,7 @@ export class ExchangeDepositRepository { return mapExchangeDeposit(row); } - async findById( - id: string, - ): Promise { + async findById(id: string): Promise { const result = await this.storage.query( ` SELECT @@ -119,9 +111,7 @@ export class ExchangeDepositRepository { return mapExchangeDeposit(row); } - async findByReference( - reference: string, - ): Promise { + async findByReference(reference: string): Promise { const result = await this.storage.query( ` SELECT @@ -182,9 +172,7 @@ export class ExchangeDepositRepository { } } -function mapExchangeDeposit( - row: ExchangeDepositRow, -): ExchangeDepositRecord { +function mapExchangeDeposit(row: ExchangeDepositRow): ExchangeDepositRecord { return { id: row.id, exchangeAssetAccountId: row.exchange_asset_account_id, @@ -195,4 +183,4 @@ function mapExchangeDeposit( reference: row.reference, createdAt: row.created_at, }; -} \ No newline at end of file +} diff --git a/apps/api/src/exchange/exchange-fee-repository.ts b/apps/api/src/exchange/exchange-fee-repository.ts index f76ea4f..643d872 100644 --- a/apps/api/src/exchange/exchange-fee-repository.ts +++ b/apps/api/src/exchange/exchange-fee-repository.ts @@ -41,9 +41,7 @@ interface ExchangeFeeRow { export class ExchangeFeeRepository { constructor(private readonly storage: Storage) {} - async create( - input: CreateExchangeFeeInput, - ): Promise { + async create(input: CreateExchangeFeeInput): Promise { const id = randomUUID(); const result = await this.storage.query( @@ -91,9 +89,7 @@ export class ExchangeFeeRepository { return mapExchangeFee(row); } - async findById( - id: string, - ): Promise { + async findById(id: string): Promise { const result = await this.storage.query( ` SELECT @@ -122,9 +118,7 @@ export class ExchangeFeeRepository { return mapExchangeFee(row); } - async findByReference( - reference: string, - ): Promise { + async findByReference(reference: string): Promise { const result = await this.storage.query( ` SELECT @@ -154,20 +148,16 @@ export class ExchangeFeeRepository { } } -function mapExchangeFee( - row: ExchangeFeeRow, -): ExchangeFeeRecord { +function mapExchangeFee(row: ExchangeFeeRow): ExchangeFeeRecord { return { id: row.id, tradeId: row.trade_id, - sourceExchangeAssetAccountId: - row.source_exchange_asset_account_id, - feeExchangeAssetAccountId: - row.fee_exchange_asset_account_id, + sourceExchangeAssetAccountId: row.source_exchange_asset_account_id, + feeExchangeAssetAccountId: row.fee_exchange_asset_account_id, assetId: row.asset_id, amount: row.amount, status: row.status, reference: row.reference, createdAt: row.created_at, }; -} \ No newline at end of file +} diff --git a/apps/api/src/exchange/exchange-subaccount-repository.ts b/apps/api/src/exchange/exchange-subaccount-repository.ts index fc269ae..d28beb1 100644 --- a/apps/api/src/exchange/exchange-subaccount-repository.ts +++ b/apps/api/src/exchange/exchange-subaccount-repository.ts @@ -24,9 +24,7 @@ interface ExchangeSubaccountRow { export class ExchangeSubaccountRepository { constructor(private readonly storage: Storage) {} - async create( - input: CreateExchangeSubaccountInput, - ): Promise { + async create(input: CreateExchangeSubaccountInput): Promise { const id = randomUUID(); const result = await this.storage.query( @@ -79,9 +77,7 @@ export class ExchangeSubaccountRepository { return mapExchangeSubaccount(row); } - async listByExchangeAccount( - exchangeAccountId: string, - ): Promise { + async listByExchangeAccount(exchangeAccountId: string): Promise { const result = await this.storage.query( ` SELECT @@ -100,13 +96,11 @@ export class ExchangeSubaccountRepository { } } -function mapExchangeSubaccount( - row: ExchangeSubaccountRow, -): ExchangeSubaccountRecord { +function mapExchangeSubaccount(row: ExchangeSubaccountRow): ExchangeSubaccountRecord { return { id: row.id, exchangeAccountId: row.exchange_account_id, name: row.name, createdAt: row.created_at, }; -} \ No newline at end of file +} diff --git a/apps/api/src/exchange/exchange-trade-repository.ts b/apps/api/src/exchange/exchange-trade-repository.ts index e221472..705f510 100644 --- a/apps/api/src/exchange/exchange-trade-repository.ts +++ b/apps/api/src/exchange/exchange-trade-repository.ts @@ -57,9 +57,7 @@ interface ExchangeTradeRow { export class ExchangeTradeRepository { constructor(private readonly storage: Storage) {} - async create( - input: CreateExchangeTradeInput, - ): Promise { + async create(input: CreateExchangeTradeInput): Promise { const id = randomUUID(); const result = await this.storage.query( @@ -127,9 +125,7 @@ export class ExchangeTradeRepository { return mapExchangeTrade(row); } - async findById( - id: string, - ): Promise { + async findById(id: string): Promise { const result = await this.storage.query( ` SELECT @@ -163,9 +159,7 @@ export class ExchangeTradeRepository { return mapExchangeTrade(row); } - async findByReference( - reference: string, - ): Promise { + async findByReference(reference: string): Promise { const result = await this.storage.query( ` SELECT @@ -200,19 +194,13 @@ export class ExchangeTradeRepository { } } -function mapExchangeTrade( - row: ExchangeTradeRow, -): ExchangeTradeRecord { +function mapExchangeTrade(row: ExchangeTradeRow): ExchangeTradeRecord { return { id: row.id, - buyerBaseExchangeAssetAccountId: - row.buyer_base_exchange_asset_account_id, - buyerQuoteExchangeAssetAccountId: - row.buyer_quote_exchange_asset_account_id, - sellerBaseExchangeAssetAccountId: - row.seller_base_exchange_asset_account_id, - sellerQuoteExchangeAssetAccountId: - row.seller_quote_exchange_asset_account_id, + buyerBaseExchangeAssetAccountId: row.buyer_base_exchange_asset_account_id, + buyerQuoteExchangeAssetAccountId: row.buyer_quote_exchange_asset_account_id, + sellerBaseExchangeAssetAccountId: row.seller_base_exchange_asset_account_id, + sellerQuoteExchangeAssetAccountId: row.seller_quote_exchange_asset_account_id, baseAssetId: row.base_asset_id, quoteAssetId: row.quote_asset_id, baseAmount: row.base_amount, @@ -223,4 +211,4 @@ function mapExchangeTrade( reference: row.reference, executedAt: row.executed_at, }; -} \ No newline at end of file +} diff --git a/apps/api/src/exchange/exchange-withdrawal-repository.ts b/apps/api/src/exchange/exchange-withdrawal-repository.ts index de9aaac..f4e1cd4 100644 --- a/apps/api/src/exchange/exchange-withdrawal-repository.ts +++ b/apps/api/src/exchange/exchange-withdrawal-repository.ts @@ -3,12 +3,7 @@ import { randomUUID } from "node:crypto"; import type { Storage } from "@crypto-wallet/storage"; export type ExchangeWithdrawalStatus = - | "requested" - | "approved" - | "rejected" - | "submitted" - | "confirmed" - | "failed"; + "requested" | "approved" | "rejected" | "submitted" | "confirmed" | "failed"; export interface ExchangeWithdrawalRecord { id: string; @@ -50,9 +45,7 @@ interface ExchangeWithdrawalRow { export class ExchangeWithdrawalRepository { constructor(private readonly storage: Storage) {} - async create( - input: CreateExchangeWithdrawalInput, - ): Promise { + async create(input: CreateExchangeWithdrawalInput): Promise { const id = randomUUID(); const result = await this.storage.query( @@ -103,9 +96,7 @@ export class ExchangeWithdrawalRepository { return mapExchangeWithdrawal(row); } - async findById( - id: string, - ): Promise { + async findById(id: string): Promise { const result = await this.storage.query( ` SELECT @@ -135,9 +126,7 @@ export class ExchangeWithdrawalRepository { return mapExchangeWithdrawal(row); } - async findByReference( - reference: string, - ): Promise { + async findByReference(reference: string): Promise { const result = await this.storage.query( ` SELECT @@ -168,9 +157,7 @@ export class ExchangeWithdrawalRepository { } } -function mapExchangeWithdrawal( - row: ExchangeWithdrawalRow, -): ExchangeWithdrawalRecord { +function mapExchangeWithdrawal(row: ExchangeWithdrawalRow): ExchangeWithdrawalRecord { return { id: row.id, requestedBy: row.requested_by, @@ -183,4 +170,4 @@ function mapExchangeWithdrawal( reference: row.reference, createdAt: row.created_at, }; -} \ No newline at end of file +} diff --git a/apps/api/src/reconciliation/index.ts b/apps/api/src/reconciliation/index.ts index c7e2a7d..4f5fdcb 100644 --- a/apps/api/src/reconciliation/index.ts +++ b/apps/api/src/reconciliation/index.ts @@ -1,2 +1,2 @@ export * from "./reconciliation-repository.js"; -export * from "./reconciliation-service.js"; \ No newline at end of file +export * from "./reconciliation-service.js"; diff --git a/apps/api/src/reconciliation/reconciliation-repository.ts b/apps/api/src/reconciliation/reconciliation-repository.ts index c4b4cb7..b16362a 100644 --- a/apps/api/src/reconciliation/reconciliation-repository.ts +++ b/apps/api/src/reconciliation/reconciliation-repository.ts @@ -13,12 +13,8 @@ interface ReconciliationComparisonRow { asset_id: string; network_id: string | null; account_id: string | null; - expected_observation_status: - | "available" - | "unavailable"; - actual_observation_status: - | "available" - | "unavailable"; + expected_observation_status: "available" | "unavailable"; + actual_observation_status: "available" | "unavailable"; expected_source: ReconciliationSource; expected_amount: string | null; actual_source: ReconciliationSource; @@ -32,9 +28,7 @@ interface ReconciliationComparisonRow { created_at: Date; } -export class PostgresReconciliationRepository - implements ReconciliationRepository -{ +export class PostgresReconciliationRepository implements ReconciliationRepository { constructor(private readonly storage: Storage) {} async save(comparison: ReconciliationComparison): Promise { @@ -130,11 +124,7 @@ export class PostgresReconciliationRepository ORDER BY created_at DESC LIMIT 1 `, - [ - assetId, - networkId ?? null, - accountId ?? null, - ], + [assetId, networkId ?? null, accountId ?? null], ); const row = result.rows[0]; @@ -147,17 +137,11 @@ export class PostgresReconciliationRepository } } -function mapReconciliationComparison( - row: ReconciliationComparisonRow, -): ReconciliationComparison { +function mapReconciliationComparison(row: ReconciliationComparisonRow): ReconciliationComparison { const scope = { assetId: row.asset_id, - ...(row.network_id !== null - ? { networkId: row.network_id } - : {}), - ...(row.account_id !== null - ? { accountId: row.account_id } - : {}), + ...(row.network_id !== null ? { networkId: row.network_id } : {}), + ...(row.account_id !== null ? { accountId: row.account_id } : {}), }; return { @@ -168,9 +152,7 @@ function mapReconciliationComparison( amount: row.expected_amount, status: row.expected_observation_status, observedAt: row.expected_observed_at.toISOString(), - ...(row.expected_reference !== null - ? { reference: row.expected_reference } - : {}), + ...(row.expected_reference !== null ? { reference: row.expected_reference } : {}), }, actual: { source: row.actual_source, @@ -178,11 +160,9 @@ function mapReconciliationComparison( amount: row.actual_amount, status: row.actual_observation_status, observedAt: row.actual_observed_at.toISOString(), - ...(row.actual_reference !== null - ? { reference: row.actual_reference } - : {}), + ...(row.actual_reference !== null ? { reference: row.actual_reference } : {}), }, difference: row.difference, status: row.status, }; -} \ No newline at end of file +} diff --git a/apps/api/src/reconciliation/reconciliation-service.ts b/apps/api/src/reconciliation/reconciliation-service.ts index a9740ff..a26e764 100644 --- a/apps/api/src/reconciliation/reconciliation-service.ts +++ b/apps/api/src/reconciliation/reconciliation-service.ts @@ -8,9 +8,7 @@ import { export class ReconciliationService { private readonly engine: DefaultReconciliationEngine; - constructor( - private readonly repository: ReconciliationRepository, - ) { + constructor(private readonly repository: ReconciliationRepository) { this.engine = new DefaultReconciliationEngine(); } @@ -30,10 +28,6 @@ export class ReconciliationService { networkId?: string, accountId?: string, ): Promise { - return this.repository.findLatest( - assetId, - networkId, - accountId, - ); + return this.repository.findLatest(assetId, networkId, accountId); } -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/__tests__/exchange-account-registry.test.ts b/packages/ledger-core/src/__tests__/exchange-account-registry.test.ts index 51f8a66..3a70f19 100644 --- a/packages/ledger-core/src/__tests__/exchange-account-registry.test.ts +++ b/packages/ledger-core/src/__tests__/exchange-account-registry.test.ts @@ -1,12 +1,7 @@ import { describe, expect, it } from "vitest"; -import { - ExchangeAccountRegistry, - type ExchangeAccountRecord, -} from "../index.js"; - -function createAccount( - overrides: Partial = {}, -): ExchangeAccountRecord { +import { ExchangeAccountRegistry, type ExchangeAccountRecord } from "../index.js"; + +function createAccount(overrides: Partial = {}): ExchangeAccountRecord { return { id: "exchange-account-1", ownerType: "customer", @@ -34,9 +29,9 @@ describe("ExchangeAccountRegistry", () => { registry.create(createAccount()); - expect(() => - registry.create(createAccount({ ownerId: "customer-2" })), - ).toThrow("Exchange account already exists"); + expect(() => registry.create(createAccount({ ownerId: "customer-2" }))).toThrow( + "Exchange account already exists", + ); }); it("rejects duplicate owner and account kind", () => { @@ -44,9 +39,7 @@ describe("ExchangeAccountRegistry", () => { registry.create(createAccount()); - expect(() => - registry.create(createAccount({ id: "exchange-account-2" })), - ).toThrow( + expect(() => registry.create(createAccount({ id: "exchange-account-2" }))).toThrow( "Exchange account already exists for owner and account kind", ); }); @@ -72,9 +65,9 @@ describe("ExchangeAccountRegistry", () => { it("rejects an empty owner ID", () => { const registry = new ExchangeAccountRegistry(); - expect(() => - registry.create(createAccount({ ownerId: " " })), - ).toThrow("Exchange account owner ID must not be empty"); + expect(() => registry.create(createAccount({ ownerId: " " }))).toThrow( + "Exchange account owner ID must not be empty", + ); }); it("rejects customer-owned non-customer accounts", () => { @@ -86,9 +79,7 @@ describe("ExchangeAccountRegistry", () => { kind: "fee", }), ), - ).toThrow( - "Customer-owned exchange accounts must have customer kind", - ); + ).toThrow("Customer-owned exchange accounts must have customer kind"); }); it("rejects platform-owned customer accounts", () => { @@ -101,8 +92,6 @@ describe("ExchangeAccountRegistry", () => { kind: "customer", }), ), - ).toThrow( - "Platform-owned exchange accounts cannot have customer kind", - ); + ).toThrow("Platform-owned exchange accounts cannot have customer kind"); }); -}); \ No newline at end of file +}); diff --git a/packages/ledger-core/src/__tests__/exchange-deposit-registry.test.ts b/packages/ledger-core/src/__tests__/exchange-deposit-registry.test.ts index 9acb753..b0ea6f2 100644 --- a/packages/ledger-core/src/__tests__/exchange-deposit-registry.test.ts +++ b/packages/ledger-core/src/__tests__/exchange-deposit-registry.test.ts @@ -1,12 +1,7 @@ import { describe, expect, it } from "vitest"; -import { - ExchangeDepositRegistry, - type ExchangeDepositRecord, -} from "../index.js"; - -function createDeposit( - overrides: Partial = {}, -): ExchangeDepositRecord { +import { ExchangeDepositRegistry, type ExchangeDepositRecord } from "../index.js"; + +function createDeposit(overrides: Partial = {}): ExchangeDepositRecord { return { id: "deposit-1", exchangeAssetAccountId: "exchange-asset-account-1", @@ -86,9 +81,7 @@ describe("ExchangeDepositRegistry", () => { exchangeAssetAccountId: " ", }), ), - ).toThrow( - "Exchange deposit asset account ID must not be empty", - ); + ).toThrow("Exchange deposit asset account ID must not be empty"); }); it("rejects an empty network ID", () => { @@ -112,9 +105,7 @@ describe("ExchangeDepositRegistry", () => { transactionHash: " ", }), ), - ).toThrow( - "Exchange deposit transaction hash must not be empty", - ); + ).toThrow("Exchange deposit transaction hash must not be empty"); }); it("rejects a non-positive amount", () => { @@ -152,4 +143,4 @@ describe("ExchangeDepositRegistry", () => { ), ).toThrow("Exchange deposit reference must not be empty"); }); -}); \ No newline at end of file +}); diff --git a/packages/ledger-core/src/__tests__/exchange-fee-registry.test.ts b/packages/ledger-core/src/__tests__/exchange-fee-registry.test.ts index df23fb7..e9907b4 100644 --- a/packages/ledger-core/src/__tests__/exchange-fee-registry.test.ts +++ b/packages/ledger-core/src/__tests__/exchange-fee-registry.test.ts @@ -1,12 +1,7 @@ import { describe, expect, it } from "vitest"; -import { - ExchangeFeeRegistry, - type ExchangeFeeRecord, -} from "../index.js"; - -function createFee( - overrides: Partial = {}, -): ExchangeFeeRecord { +import { ExchangeFeeRegistry, type ExchangeFeeRecord } from "../index.js"; + +function createFee(overrides: Partial = {}): ExchangeFeeRecord { return { id: "fee-1", tradeId: "trade-1", @@ -99,9 +94,7 @@ describe("ExchangeFeeRegistry", () => { sourceExchangeAssetAccountId: " ", }), ), - ).toThrow( - "Exchange fee source asset account ID must not be empty", - ); + ).toThrow("Exchange fee source asset account ID must not be empty"); }); it("rejects an empty fee account ID", () => { @@ -125,9 +118,7 @@ describe("ExchangeFeeRegistry", () => { feeExchangeAssetAccountId: "customer-asset-account", }), ), - ).toThrow( - "Exchange fee source and fee accounts must differ", - ); + ).toThrow("Exchange fee source and fee accounts must differ"); }); it("rejects an empty asset ID", () => { @@ -177,4 +168,4 @@ describe("ExchangeFeeRegistry", () => { ), ).toThrow("Exchange fee reference must not be empty"); }); -}); \ No newline at end of file +}); diff --git a/packages/ledger-core/src/__tests__/exchange-posting-builders.test.ts b/packages/ledger-core/src/__tests__/exchange-posting-builders.test.ts index b165872..78c99cb 100644 --- a/packages/ledger-core/src/__tests__/exchange-posting-builders.test.ts +++ b/packages/ledger-core/src/__tests__/exchange-posting-builders.test.ts @@ -182,4 +182,4 @@ describe("exchange posting builders", () => { expect(transaction.postings[0]!.amount).toBe("1000"); }); -}); \ No newline at end of file +}); diff --git a/packages/ledger-core/src/__tests__/exchange-posting-validator.test.ts b/packages/ledger-core/src/__tests__/exchange-posting-validator.test.ts index 9c4e896..efdc8ae 100644 --- a/packages/ledger-core/src/__tests__/exchange-posting-validator.test.ts +++ b/packages/ledger-core/src/__tests__/exchange-posting-validator.test.ts @@ -1,8 +1,5 @@ import { describe, expect, it } from "vitest"; -import { - validateExchangeLedgerTransaction, - type ExchangeLedgerTransaction, -} from "../index.js"; +import { validateExchangeLedgerTransaction, type ExchangeLedgerTransaction } from "../index.js"; function createTransaction( overrides: Partial = {}, @@ -29,9 +26,7 @@ function createTransaction( describe("validateExchangeLedgerTransaction", () => { it("accepts a balanced transaction", () => { - expect(() => - validateExchangeLedgerTransaction(createTransaction()), - ).not.toThrow(); + expect(() => validateExchangeLedgerTransaction(createTransaction())).not.toThrow(); }); it("accepts multiple balanced postings", () => { @@ -67,9 +62,7 @@ describe("validateExchangeLedgerTransaction", () => { id: " ", }), ), - ).toThrow( - "Exchange ledger transaction ID must not be empty", - ); + ).toThrow("Exchange ledger transaction ID must not be empty"); }); it("rejects an empty reference", () => { @@ -79,9 +72,7 @@ describe("validateExchangeLedgerTransaction", () => { reference: " ", }), ), - ).toThrow( - "Exchange ledger transaction reference must not be empty", - ); + ).toThrow("Exchange ledger transaction reference must not be empty"); }); it("requires at least two postings", () => { @@ -97,9 +88,7 @@ describe("validateExchangeLedgerTransaction", () => { ], }), ), - ).toThrow( - "Exchange ledger transaction requires at least two postings", - ); + ).toThrow("Exchange ledger transaction requires at least two postings"); }); it("rejects unbalanced postings", () => { @@ -141,9 +130,7 @@ describe("validateExchangeLedgerTransaction", () => { ], }), ), - ).toThrow( - "Exchange ledger posting account ID must not be empty", - ); + ).toThrow("Exchange ledger posting account ID must not be empty"); }); it("rejects a zero posting amount", () => { @@ -164,9 +151,7 @@ describe("validateExchangeLedgerTransaction", () => { ], }), ), - ).toThrow( - "Exchange ledger posting amount must be positive", - ); + ).toThrow("Exchange ledger posting amount must be positive"); }); it("rejects a fractional posting amount", () => { @@ -187,8 +172,6 @@ describe("validateExchangeLedgerTransaction", () => { ], }), ), - ).toThrow( - "Exchange ledger posting amount must be positive", - ); + ).toThrow("Exchange ledger posting amount must be positive"); }); -}); \ No newline at end of file +}); diff --git a/packages/ledger-core/src/__tests__/exchange-subaccount-registry.test.ts b/packages/ledger-core/src/__tests__/exchange-subaccount-registry.test.ts index 4cbc87b..22b93a3 100644 --- a/packages/ledger-core/src/__tests__/exchange-subaccount-registry.test.ts +++ b/packages/ledger-core/src/__tests__/exchange-subaccount-registry.test.ts @@ -1,8 +1,5 @@ import { describe, expect, it } from "vitest"; -import { - ExchangeSubaccountRegistry, - type ExchangeSubaccountRecord, -} from "../index.js"; +import { ExchangeSubaccountRegistry, type ExchangeSubaccountRecord } from "../index.js"; function createSubaccount( overrides: Partial = {}, @@ -52,9 +49,7 @@ describe("ExchangeSubaccountRegistry", () => { id: "exchange-subaccount-2", }), ), - ).toThrow( - "Exchange subaccount already exists for exchange account and name", - ); + ).toThrow("Exchange subaccount already exists for exchange account and name"); }); it("allows the same name for different exchange accounts", () => { @@ -99,9 +94,7 @@ describe("ExchangeSubaccountRegistry", () => { exchangeAccountId: " ", }), ), - ).toThrow( - "Exchange subaccount exchange account ID must not be empty", - ); + ).toThrow("Exchange subaccount exchange account ID must not be empty"); }); it("rejects an empty name", () => { @@ -115,4 +108,4 @@ describe("ExchangeSubaccountRegistry", () => { ), ).toThrow("Exchange subaccount name must not be empty"); }); -}); \ No newline at end of file +}); diff --git a/packages/ledger-core/src/__tests__/exchange-trade-registry.test.ts b/packages/ledger-core/src/__tests__/exchange-trade-registry.test.ts index 870d482..7e640e2 100644 --- a/packages/ledger-core/src/__tests__/exchange-trade-registry.test.ts +++ b/packages/ledger-core/src/__tests__/exchange-trade-registry.test.ts @@ -1,12 +1,7 @@ import { describe, expect, it } from "vitest"; -import { - ExchangeTradeRegistry, - type ExchangeTradeRecord, -} from "../index.js"; - -function createTrade( - overrides: Partial = {}, -): ExchangeTradeRecord { +import { ExchangeTradeRegistry, type ExchangeTradeRecord } from "../index.js"; + +function createTrade(overrides: Partial = {}): ExchangeTradeRecord { return { id: "trade-1", buyerExchangeAssetAccountId: "buyer-asset-account", @@ -90,9 +85,7 @@ describe("ExchangeTradeRegistry", () => { sellerExchangeAssetAccountId: "buyer-asset-account", }), ), - ).toThrow( - "Exchange trade buyer and seller asset accounts must differ", - ); + ).toThrow("Exchange trade buyer and seller asset accounts must differ"); }); it("rejects identical base and quote assets", () => { @@ -104,9 +97,7 @@ describe("ExchangeTradeRegistry", () => { quoteAssetId: "btc", }), ), - ).toThrow( - "Exchange trade base and quote assets must differ", - ); + ).toThrow("Exchange trade base and quote assets must differ"); }); it("rejects a non-positive base amount", () => { @@ -178,8 +169,6 @@ describe("ExchangeTradeRegistry", () => { executedAt: " ", }), ), - ).toThrow( - "Exchange trade execution time must not be empty", - ); + ).toThrow("Exchange trade execution time must not be empty"); }); -}); \ No newline at end of file +}); diff --git a/packages/ledger-core/src/__tests__/exchange-withdrawal-registry.test.ts b/packages/ledger-core/src/__tests__/exchange-withdrawal-registry.test.ts index 537f606..5183438 100644 --- a/packages/ledger-core/src/__tests__/exchange-withdrawal-registry.test.ts +++ b/packages/ledger-core/src/__tests__/exchange-withdrawal-registry.test.ts @@ -1,8 +1,5 @@ import { describe, expect, it } from "vitest"; -import { - ExchangeWithdrawalRegistry, - type ExchangeWithdrawalRecord, -} from "../index.js"; +import { ExchangeWithdrawalRegistry, type ExchangeWithdrawalRecord } from "../index.js"; function createWithdrawal( overrides: Partial = {}, @@ -86,9 +83,7 @@ describe("ExchangeWithdrawalRegistry", () => { exchangeAssetAccountId: " ", }), ), - ).toThrow( - "Exchange withdrawal asset account ID must not be empty", - ); + ).toThrow("Exchange withdrawal asset account ID must not be empty"); }); it("rejects an empty network ID", () => { @@ -150,4 +145,4 @@ describe("ExchangeWithdrawalRegistry", () => { ), ).toThrow("Exchange withdrawal reference must not be empty"); }); -}); \ No newline at end of file +}); diff --git a/packages/ledger-core/src/__tests__/ledger-types.test.ts b/packages/ledger-core/src/__tests__/ledger-types.test.ts index e376d6a..b4b4268 100644 --- a/packages/ledger-core/src/__tests__/ledger-types.test.ts +++ b/packages/ledger-core/src/__tests__/ledger-types.test.ts @@ -8,13 +8,7 @@ import type { describe("ledger domain types", () => { it("supports explicit ledger account kinds", () => { - const kinds: LedgerAccountKind[] = [ - "asset", - "liability", - "revenue", - "expense", - "equity", - ]; + const kinds: LedgerAccountKind[] = ["asset", "liability", "revenue", "expense", "equity"]; expect(kinds).toHaveLength(5); }); @@ -44,4 +38,4 @@ describe("ledger domain types", () => { expect(subaccount.ledgerAccountId).toBe("ledger-account-1"); expect(subaccount.name).toBe("available"); }); -}); \ No newline at end of file +}); diff --git a/packages/ledger-core/src/__tests__/reconciliation-repository.test.ts b/packages/ledger-core/src/__tests__/reconciliation-repository.test.ts index 01cf505..0db0312 100644 --- a/packages/ledger-core/src/__tests__/reconciliation-repository.test.ts +++ b/packages/ledger-core/src/__tests__/reconciliation-repository.test.ts @@ -1,12 +1,7 @@ import { describe, expect, it } from "vitest"; -import type { - ReconciliationComparison, - ReconciliationRepository, -} from "../index.js"; +import type { ReconciliationComparison, ReconciliationRepository } from "../index.js"; -class InMemoryReconciliationRepository - implements ReconciliationRepository -{ +class InMemoryReconciliationRepository implements ReconciliationRepository { private readonly comparisons: ReconciliationComparison[] = []; async save(comparison: ReconciliationComparison): Promise { @@ -76,8 +71,6 @@ describe("ReconciliationRepository contract", () => { it("returns null when no comparison exists", async () => { const repository = new InMemoryReconciliationRepository(); - await expect( - repository.findLatest("btc", "bitcoin", "missing-account"), - ).resolves.toBeNull(); + await expect(repository.findLatest("btc", "bitcoin", "missing-account")).resolves.toBeNull(); }); -}); \ No newline at end of file +}); diff --git a/packages/ledger-core/src/__tests__/reconciliation-types.test.ts b/packages/ledger-core/src/__tests__/reconciliation-types.test.ts index f89def3..6dffa5d 100644 --- a/packages/ledger-core/src/__tests__/reconciliation-types.test.ts +++ b/packages/ledger-core/src/__tests__/reconciliation-types.test.ts @@ -107,4 +107,4 @@ describe("reconciliation contract", () => { expect(comparison.difference).toBe("-500"); expect(comparison.status).toBe("mismatched"); }); -}); \ No newline at end of file +}); diff --git a/packages/ledger-core/src/__tests__/subaccount-registry.test.ts b/packages/ledger-core/src/__tests__/subaccount-registry.test.ts index b3e865c..a99b971 100644 --- a/packages/ledger-core/src/__tests__/subaccount-registry.test.ts +++ b/packages/ledger-core/src/__tests__/subaccount-registry.test.ts @@ -40,9 +40,7 @@ describe("LedgerSubaccountRegistry", () => { ...subaccount, id: "subaccount-2", }), - ).toThrow( - "Ledger subaccount already exists for ledger account and name", - ); + ).toThrow("Ledger subaccount already exists for ledger account and name"); }); it("allows the same subaccount name on different ledger accounts", () => { @@ -80,4 +78,4 @@ describe("LedgerSubaccountRegistry", () => { expect(registry.getById("unknown")).toBeNull(); }); -}); \ No newline at end of file +}); diff --git a/packages/ledger-core/src/account-registry.ts b/packages/ledger-core/src/account-registry.ts index 760347f..1e47530 100644 --- a/packages/ledger-core/src/account-registry.ts +++ b/packages/ledger-core/src/account-registry.ts @@ -12,9 +12,7 @@ export class LedgerAccountRegistry { const identity = this.getIdentity(account); if (this.identities.has(identity)) { - throw new Error( - `Ledger account already exists for wallet, asset, chain and kind`, - ); + throw new Error(`Ledger account already exists for wallet, asset, chain and kind`); } const stored = Object.freeze({ ...account }); @@ -36,11 +34,6 @@ export class LedgerAccountRegistry { } private getIdentity(account: LedgerAccountRecord): string { - return JSON.stringify([ - account.walletId, - account.assetId, - account.chain, - account.kind, - ]); + return JSON.stringify([account.walletId, account.assetId, account.chain, account.kind]); } -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/exchange-account-registry.ts b/packages/ledger-core/src/exchange-account-registry.ts index 3e16016..df82a70 100644 --- a/packages/ledger-core/src/exchange-account-registry.ts +++ b/packages/ledger-core/src/exchange-account-registry.ts @@ -12,9 +12,7 @@ export class ExchangeAccountRegistry { const identity = this.getIdentity(account); if (this.identities.has(identity)) { - throw new Error( - "Exchange account already exists for owner and account kind", - ); + throw new Error("Exchange account already exists for owner and account kind"); } this.validate(account); @@ -38,11 +36,7 @@ export class ExchangeAccountRegistry { } private getIdentity(account: ExchangeAccountRecord): string { - return JSON.stringify([ - account.ownerType, - account.ownerId, - account.kind, - ]); + return JSON.stringify([account.ownerType, account.ownerId, account.kind]); } private validate(account: ExchangeAccountRecord): void { @@ -50,22 +44,12 @@ export class ExchangeAccountRegistry { throw new Error("Exchange account owner ID must not be empty"); } - if ( - account.ownerType === "customer" && - account.kind !== "customer" - ) { - throw new Error( - "Customer-owned exchange accounts must have customer kind", - ); + if (account.ownerType === "customer" && account.kind !== "customer") { + throw new Error("Customer-owned exchange accounts must have customer kind"); } - if ( - account.ownerType === "platform" && - account.kind === "customer" - ) { - throw new Error( - "Platform-owned exchange accounts cannot have customer kind", - ); + if (account.ownerType === "platform" && account.kind === "customer") { + throw new Error("Platform-owned exchange accounts cannot have customer kind"); } } -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/exchange-account-types.ts b/packages/ledger-core/src/exchange-account-types.ts index 2856b2d..290dbc2 100644 --- a/packages/ledger-core/src/exchange-account-types.ts +++ b/packages/ledger-core/src/exchange-account-types.ts @@ -1,10 +1,6 @@ export type ExchangeAccountOwnerType = "customer" | "platform"; -export type ExchangeAccountKind = - | "customer" - | "treasury" - | "fee" - | "operational"; +export type ExchangeAccountKind = "customer" | "treasury" | "fee" | "operational"; export type ExchangeAccountStatus = "active" | "blocked"; @@ -30,4 +26,4 @@ export interface ExchangeAssetAccountRecord { assetId: string; networkId: string; createdAt: string; -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/exchange-asset-account-registry.ts b/packages/ledger-core/src/exchange-asset-account-registry.ts index 834a0af..1f07f91 100644 --- a/packages/ledger-core/src/exchange-asset-account-registry.ts +++ b/packages/ledger-core/src/exchange-asset-account-registry.ts @@ -1,28 +1,19 @@ import type { ExchangeAssetAccountRecord } from "./exchange-account-types.js"; export class ExchangeAssetAccountRegistry { - private readonly assetAccounts = new Map< - string, - ExchangeAssetAccountRecord - >(); + private readonly assetAccounts = new Map(); private readonly identities = new Map(); - create( - assetAccount: ExchangeAssetAccountRecord, - ): ExchangeAssetAccountRecord { + create(assetAccount: ExchangeAssetAccountRecord): ExchangeAssetAccountRecord { if (this.assetAccounts.has(assetAccount.id)) { - throw new Error( - `Exchange asset account already exists: ${assetAccount.id}`, - ); + throw new Error(`Exchange asset account already exists: ${assetAccount.id}`); } const identity = this.getIdentity(assetAccount); if (this.identities.has(identity)) { - throw new Error( - "Exchange asset account already exists for exchange account and asset", - ); + throw new Error("Exchange asset account already exists for exchange account and asset"); } this.validate(assetAccount); @@ -45,34 +36,21 @@ export class ExchangeAssetAccountRegistry { return Object.freeze({ ...assetAccount }); } - private getIdentity( - assetAccount: ExchangeAssetAccountRecord, - ): string { - return JSON.stringify([ - assetAccount.exchangeAccountId, - assetAccount.assetId, - ]); + private getIdentity(assetAccount: ExchangeAssetAccountRecord): string { + return JSON.stringify([assetAccount.exchangeAccountId, assetAccount.assetId]); } - private validate( - assetAccount: ExchangeAssetAccountRecord, -): void { - if (assetAccount.exchangeAccountId.trim().length === 0) { - throw new Error( - "Exchange asset account exchange account ID must not be empty", - ); - } + private validate(assetAccount: ExchangeAssetAccountRecord): void { + if (assetAccount.exchangeAccountId.trim().length === 0) { + throw new Error("Exchange asset account exchange account ID must not be empty"); + } - if (assetAccount.assetId.trim().length === 0) { - throw new Error( - "Exchange asset account asset ID must not be empty", - ); - } + if (assetAccount.assetId.trim().length === 0) { + throw new Error("Exchange asset account asset ID must not be empty"); + } - if (assetAccount.networkId.trim().length === 0) { - throw new Error( - "Exchange asset account network ID must not be empty", - ); + if (assetAccount.networkId.trim().length === 0) { + throw new Error("Exchange asset account network ID must not be empty"); + } } } -} \ No newline at end of file diff --git a/packages/ledger-core/src/exchange-deposit-registry.ts b/packages/ledger-core/src/exchange-deposit-registry.ts index 6383204..29afff2 100644 --- a/packages/ledger-core/src/exchange-deposit-registry.ts +++ b/packages/ledger-core/src/exchange-deposit-registry.ts @@ -6,15 +6,11 @@ export class ExchangeDepositRegistry { create(deposit: ExchangeDepositRecord): ExchangeDepositRecord { if (this.deposits.has(deposit.id)) { - throw new Error( - `Exchange deposit already exists: ${deposit.id}`, - ); + throw new Error(`Exchange deposit already exists: ${deposit.id}`); } if (this.references.has(deposit.reference)) { - throw new Error( - `Exchange deposit reference already exists: ${deposit.reference}`, - ); + throw new Error(`Exchange deposit reference already exists: ${deposit.reference}`); } this.validate(deposit); @@ -39,9 +35,7 @@ export class ExchangeDepositRegistry { private validate(deposit: ExchangeDepositRecord): void { if (deposit.exchangeAssetAccountId.trim().length === 0) { - throw new Error( - "Exchange deposit asset account ID must not be empty", - ); + throw new Error("Exchange deposit asset account ID must not be empty"); } if (deposit.networkId.trim().length === 0) { @@ -49,9 +43,7 @@ export class ExchangeDepositRegistry { } if (deposit.transactionHash.trim().length === 0) { - throw new Error( - "Exchange deposit transaction hash must not be empty", - ); + throw new Error("Exchange deposit transaction hash must not be empty"); } if (!/^[0-9]+$/.test(deposit.amount) || BigInt(deposit.amount) <= 0n) { @@ -62,4 +54,4 @@ export class ExchangeDepositRegistry { throw new Error("Exchange deposit reference must not be empty"); } } -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/exchange-deposit-types.ts b/packages/ledger-core/src/exchange-deposit-types.ts index 6bf5387..c5ee8a0 100644 --- a/packages/ledger-core/src/exchange-deposit-types.ts +++ b/packages/ledger-core/src/exchange-deposit-types.ts @@ -1,8 +1,4 @@ -export type ExchangeDepositStatus = - | "detected" - | "confirmed" - | "credited" - | "reversed"; +export type ExchangeDepositStatus = "detected" | "confirmed" | "credited" | "reversed"; export interface ExchangeDepositRecord { id: string; @@ -13,4 +9,4 @@ export interface ExchangeDepositRecord { status: ExchangeDepositStatus; reference: string; createdAt: string; -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/exchange-fee-registry.ts b/packages/ledger-core/src/exchange-fee-registry.ts index 54f7a57..c78b4dc 100644 --- a/packages/ledger-core/src/exchange-fee-registry.ts +++ b/packages/ledger-core/src/exchange-fee-registry.ts @@ -10,9 +10,7 @@ export class ExchangeFeeRegistry { } if (this.references.has(fee.reference)) { - throw new Error( - `Exchange fee reference already exists: ${fee.reference}`, - ); + throw new Error(`Exchange fee reference already exists: ${fee.reference}`); } this.validate(fee); @@ -41,24 +39,15 @@ export class ExchangeFeeRegistry { } if (fee.sourceExchangeAssetAccountId.trim().length === 0) { - throw new Error( - "Exchange fee source asset account ID must not be empty", - ); + throw new Error("Exchange fee source asset account ID must not be empty"); } if (fee.feeExchangeAssetAccountId.trim().length === 0) { - throw new Error( - "Exchange fee fee account ID must not be empty", - ); + throw new Error("Exchange fee fee account ID must not be empty"); } - if ( - fee.sourceExchangeAssetAccountId === - fee.feeExchangeAssetAccountId - ) { - throw new Error( - "Exchange fee source and fee accounts must differ", - ); + if (fee.sourceExchangeAssetAccountId === fee.feeExchangeAssetAccountId) { + throw new Error("Exchange fee source and fee accounts must differ"); } if (fee.assetId.trim().length === 0) { @@ -73,4 +62,4 @@ export class ExchangeFeeRegistry { throw new Error("Exchange fee reference must not be empty"); } } -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/exchange-fee-types.ts b/packages/ledger-core/src/exchange-fee-types.ts index 6b90a21..b4550ac 100644 --- a/packages/ledger-core/src/exchange-fee-types.ts +++ b/packages/ledger-core/src/exchange-fee-types.ts @@ -10,4 +10,4 @@ export interface ExchangeFeeRecord { status: ExchangeFeeStatus; reference: string; createdAt: string; -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/exchange-posting-builders.ts b/packages/ledger-core/src/exchange-posting-builders.ts index dd57bc5..1c9b6d2 100644 --- a/packages/ledger-core/src/exchange-posting-builders.ts +++ b/packages/ledger-core/src/exchange-posting-builders.ts @@ -36,9 +36,7 @@ export interface FeePostingInput { amount: string; } -export function buildDepositPosting( - input: DepositPostingInput, -): ExchangeLedgerTransaction { +export function buildDepositPosting(input: DepositPostingInput): ExchangeLedgerTransaction { const transaction: ExchangeLedgerTransaction = { id: input.id, reference: input.reference, @@ -61,15 +59,11 @@ export function buildDepositPosting( return Object.freeze({ ...transaction, - postings: Object.freeze( - transaction.postings.map((posting) => Object.freeze({ ...posting })), - ), + postings: Object.freeze(transaction.postings.map((posting) => Object.freeze({ ...posting }))), }); } -export function buildWithdrawalPosting( - input: WithdrawalPostingInput, -): ExchangeLedgerTransaction { +export function buildWithdrawalPosting(input: WithdrawalPostingInput): ExchangeLedgerTransaction { const transaction: ExchangeLedgerTransaction = { id: input.id, reference: input.reference, @@ -92,15 +86,11 @@ export function buildWithdrawalPosting( return Object.freeze({ ...transaction, - postings: Object.freeze( - transaction.postings.map((posting) => Object.freeze({ ...posting })), - ), + postings: Object.freeze(transaction.postings.map((posting) => Object.freeze({ ...posting }))), }); } -export function buildTradePosting( - input: TradePostingInput, -): ExchangeLedgerTransaction { +export function buildTradePosting(input: TradePostingInput): ExchangeLedgerTransaction { const transaction: ExchangeLedgerTransaction = { id: input.id, reference: input.reference, @@ -133,15 +123,11 @@ export function buildTradePosting( return Object.freeze({ ...transaction, - postings: Object.freeze( - transaction.postings.map((posting) => Object.freeze({ ...posting })), - ), + postings: Object.freeze(transaction.postings.map((posting) => Object.freeze({ ...posting }))), }); } -export function buildFeePosting( - input: FeePostingInput, -): ExchangeLedgerTransaction { +export function buildFeePosting(input: FeePostingInput): ExchangeLedgerTransaction { const transaction: ExchangeLedgerTransaction = { id: input.id, reference: input.reference, @@ -164,8 +150,6 @@ export function buildFeePosting( return Object.freeze({ ...transaction, - postings: Object.freeze( - transaction.postings.map((posting) => Object.freeze({ ...posting })), - ), + postings: Object.freeze(transaction.postings.map((posting) => Object.freeze({ ...posting }))), }); -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/exchange-posting-types.ts b/packages/ledger-core/src/exchange-posting-types.ts index a92b18b..3315830 100644 --- a/packages/ledger-core/src/exchange-posting-types.ts +++ b/packages/ledger-core/src/exchange-posting-types.ts @@ -1,8 +1,4 @@ -export type ExchangePostingOperation = - | "deposit" - | "withdrawal" - | "trade" - | "fee"; +export type ExchangePostingOperation = "deposit" | "withdrawal" | "trade" | "fee"; export interface ExchangePosting { ledgerAccountId: string; @@ -15,4 +11,4 @@ export interface ExchangeLedgerTransaction { reference: string; operation: ExchangePostingOperation; postings: readonly ExchangePosting[]; -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/exchange-posting-validator.ts b/packages/ledger-core/src/exchange-posting-validator.ts index 6ffae9f..acbaac4 100644 --- a/packages/ledger-core/src/exchange-posting-validator.ts +++ b/packages/ledger-core/src/exchange-posting-validator.ts @@ -1,25 +1,16 @@ -import type { - ExchangeLedgerTransaction, - ExchangePosting, -} from "./exchange-posting-types.js"; +import type { ExchangeLedgerTransaction, ExchangePosting } from "./exchange-posting-types.js"; -export function validateExchangeLedgerTransaction( - transaction: ExchangeLedgerTransaction, -): void { +export function validateExchangeLedgerTransaction(transaction: ExchangeLedgerTransaction): void { if (transaction.id.trim().length === 0) { throw new Error("Exchange ledger transaction ID must not be empty"); } if (transaction.reference.trim().length === 0) { - throw new Error( - "Exchange ledger transaction reference must not be empty", - ); + throw new Error("Exchange ledger transaction reference must not be empty"); } if (transaction.postings.length < 2) { - throw new Error( - "Exchange ledger transaction requires at least two postings", - ); + throw new Error("Exchange ledger transaction requires at least two postings"); } let debits = 0n; @@ -38,31 +29,20 @@ export function validateExchangeLedgerTransaction( } if (debits !== credits) { - throw new Error( - "Exchange ledger transaction must balance", - ); + throw new Error("Exchange ledger transaction must balance"); } } function validatePosting(posting: ExchangePosting): void { if (posting.ledgerAccountId.trim().length === 0) { - throw new Error( - "Exchange ledger posting account ID must not be empty", - ); + throw new Error("Exchange ledger posting account ID must not be empty"); } - if ( - !/^[0-9]+$/.test(posting.amount) || - BigInt(posting.amount) <= 0n - ) { - throw new Error( - "Exchange ledger posting amount must be positive", - ); + if (!/^[0-9]+$/.test(posting.amount) || BigInt(posting.amount) <= 0n) { + throw new Error("Exchange ledger posting amount must be positive"); } if (posting.type !== "debit" && posting.type !== "credit") { - throw new Error( - "Exchange ledger posting type must be debit or credit", - ); + throw new Error("Exchange ledger posting type must be debit or credit"); } -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/exchange-subaccount-registry.ts b/packages/ledger-core/src/exchange-subaccount-registry.ts index fad5c2d..606c2bf 100644 --- a/packages/ledger-core/src/exchange-subaccount-registry.ts +++ b/packages/ledger-core/src/exchange-subaccount-registry.ts @@ -1,28 +1,19 @@ import type { ExchangeSubaccountRecord } from "./exchange-account-types.js"; export class ExchangeSubaccountRegistry { - private readonly subaccounts = new Map< - string, - ExchangeSubaccountRecord - >(); + private readonly subaccounts = new Map(); private readonly identities = new Map(); - create( - subaccount: ExchangeSubaccountRecord, - ): ExchangeSubaccountRecord { + create(subaccount: ExchangeSubaccountRecord): ExchangeSubaccountRecord { if (this.subaccounts.has(subaccount.id)) { - throw new Error( - `Exchange subaccount already exists: ${subaccount.id}`, - ); + throw new Error(`Exchange subaccount already exists: ${subaccount.id}`); } const identity = this.getIdentity(subaccount); if (this.identities.has(identity)) { - throw new Error( - "Exchange subaccount already exists for exchange account and name", - ); + throw new Error("Exchange subaccount already exists for exchange account and name"); } this.validate(subaccount); @@ -45,26 +36,17 @@ export class ExchangeSubaccountRegistry { return Object.freeze({ ...subaccount }); } - private getIdentity( - subaccount: ExchangeSubaccountRecord, - ): string { - return JSON.stringify([ - subaccount.exchangeAccountId, - subaccount.name, - ]); + private getIdentity(subaccount: ExchangeSubaccountRecord): string { + return JSON.stringify([subaccount.exchangeAccountId, subaccount.name]); } - private validate( - subaccount: ExchangeSubaccountRecord, - ): void { + private validate(subaccount: ExchangeSubaccountRecord): void { if (subaccount.exchangeAccountId.trim().length === 0) { - throw new Error( - "Exchange subaccount exchange account ID must not be empty", - ); + throw new Error("Exchange subaccount exchange account ID must not be empty"); } if (subaccount.name.trim().length === 0) { throw new Error("Exchange subaccount name must not be empty"); } } -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/exchange-trade-registry.ts b/packages/ledger-core/src/exchange-trade-registry.ts index 1c40d8e..9c8a66c 100644 --- a/packages/ledger-core/src/exchange-trade-registry.ts +++ b/packages/ledger-core/src/exchange-trade-registry.ts @@ -10,9 +10,7 @@ export class ExchangeTradeRegistry { } if (this.references.has(trade.reference)) { - throw new Error( - `Exchange trade reference already exists: ${trade.reference}`, - ); + throw new Error(`Exchange trade reference already exists: ${trade.reference}`); } this.validate(trade); @@ -37,24 +35,15 @@ export class ExchangeTradeRegistry { private validate(trade: ExchangeTradeRecord): void { if (trade.buyerExchangeAssetAccountId.trim().length === 0) { - throw new Error( - "Exchange trade buyer asset account ID must not be empty", - ); + throw new Error("Exchange trade buyer asset account ID must not be empty"); } if (trade.sellerExchangeAssetAccountId.trim().length === 0) { - throw new Error( - "Exchange trade seller asset account ID must not be empty", - ); + throw new Error("Exchange trade seller asset account ID must not be empty"); } - if ( - trade.buyerExchangeAssetAccountId === - trade.sellerExchangeAssetAccountId - ) { - throw new Error( - "Exchange trade buyer and seller asset accounts must differ", - ); + if (trade.buyerExchangeAssetAccountId === trade.sellerExchangeAssetAccountId) { + throw new Error("Exchange trade buyer and seller asset accounts must differ"); } if (trade.baseAssetId.trim().length === 0) { @@ -66,30 +55,16 @@ export class ExchangeTradeRegistry { } if (trade.baseAssetId === trade.quoteAssetId) { - throw new Error( - "Exchange trade base and quote assets must differ", - ); + throw new Error("Exchange trade base and quote assets must differ"); } - this.validatePositiveInteger( - trade.baseAmount, - "Exchange trade base amount", - ); + this.validatePositiveInteger(trade.baseAmount, "Exchange trade base amount"); - this.validatePositiveInteger( - trade.quoteAmount, - "Exchange trade quote amount", - ); + this.validatePositiveInteger(trade.quoteAmount, "Exchange trade quote amount"); - this.validatePositiveInteger( - trade.priceNumerator, - "Exchange trade price numerator", - ); + this.validatePositiveInteger(trade.priceNumerator, "Exchange trade price numerator"); - this.validatePositiveInteger( - trade.priceDenominator, - "Exchange trade price denominator", - ); + this.validatePositiveInteger(trade.priceDenominator, "Exchange trade price denominator"); if (trade.reference.trim().length === 0) { throw new Error("Exchange trade reference must not be empty"); @@ -100,12 +75,9 @@ export class ExchangeTradeRegistry { } } - private validatePositiveInteger( - value: string, - field: string, - ): void { + private validatePositiveInteger(value: string, field: string): void { if (!/^[0-9]+$/.test(value) || BigInt(value) <= 0n) { throw new Error(`${field} must be positive`); } } -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/exchange-trade-types.ts b/packages/ledger-core/src/exchange-trade-types.ts index 73229f6..ca931d6 100644 --- a/packages/ledger-core/src/exchange-trade-types.ts +++ b/packages/ledger-core/src/exchange-trade-types.ts @@ -13,4 +13,4 @@ export interface ExchangeTradeRecord { status: ExchangeTradeStatus; reference: string; executedAt: string; -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/exchange-withdrawal-registry.ts b/packages/ledger-core/src/exchange-withdrawal-registry.ts index 196b77d..cabd15e 100644 --- a/packages/ledger-core/src/exchange-withdrawal-registry.ts +++ b/packages/ledger-core/src/exchange-withdrawal-registry.ts @@ -1,26 +1,17 @@ import type { ExchangeWithdrawalRecord } from "./exchange-withdrawal-types.js"; export class ExchangeWithdrawalRegistry { - private readonly withdrawals = new Map< - string, - ExchangeWithdrawalRecord - >(); + private readonly withdrawals = new Map(); private readonly references = new Map(); - create( - withdrawal: ExchangeWithdrawalRecord, - ): ExchangeWithdrawalRecord { + create(withdrawal: ExchangeWithdrawalRecord): ExchangeWithdrawalRecord { if (this.withdrawals.has(withdrawal.id)) { - throw new Error( - `Exchange withdrawal already exists: ${withdrawal.id}`, - ); + throw new Error(`Exchange withdrawal already exists: ${withdrawal.id}`); } if (this.references.has(withdrawal.reference)) { - throw new Error( - `Exchange withdrawal reference already exists: ${withdrawal.reference}`, - ); + throw new Error(`Exchange withdrawal reference already exists: ${withdrawal.reference}`); } this.validate(withdrawal); @@ -43,40 +34,25 @@ export class ExchangeWithdrawalRegistry { return Object.freeze({ ...withdrawal }); } - private validate( - withdrawal: ExchangeWithdrawalRecord, - ): void { + private validate(withdrawal: ExchangeWithdrawalRecord): void { if (withdrawal.exchangeAssetAccountId.trim().length === 0) { - throw new Error( - "Exchange withdrawal asset account ID must not be empty", - ); + throw new Error("Exchange withdrawal asset account ID must not be empty"); } if (withdrawal.networkId.trim().length === 0) { - throw new Error( - "Exchange withdrawal network ID must not be empty", - ); + throw new Error("Exchange withdrawal network ID must not be empty"); } if (withdrawal.destination.trim().length === 0) { - throw new Error( - "Exchange withdrawal destination must not be empty", - ); + throw new Error("Exchange withdrawal destination must not be empty"); } - if ( - !/^[0-9]+$/.test(withdrawal.amount) || - BigInt(withdrawal.amount) <= 0n - ) { - throw new Error( - "Exchange withdrawal amount must be positive", - ); + if (!/^[0-9]+$/.test(withdrawal.amount) || BigInt(withdrawal.amount) <= 0n) { + throw new Error("Exchange withdrawal amount must be positive"); } if (withdrawal.reference.trim().length === 0) { - throw new Error( - "Exchange withdrawal reference must not be empty", - ); + throw new Error("Exchange withdrawal reference must not be empty"); } } -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/exchange-withdrawal-types.ts b/packages/ledger-core/src/exchange-withdrawal-types.ts index 49fa3b6..0223730 100644 --- a/packages/ledger-core/src/exchange-withdrawal-types.ts +++ b/packages/ledger-core/src/exchange-withdrawal-types.ts @@ -1,10 +1,5 @@ export type ExchangeWithdrawalStatus = - | "requested" - | "approved" - | "rejected" - | "submitted" - | "confirmed" - | "failed"; + "requested" | "approved" | "rejected" | "submitted" | "confirmed" | "failed"; export interface ExchangeWithdrawalRecord { id: string; @@ -15,4 +10,4 @@ export interface ExchangeWithdrawalRecord { status: ExchangeWithdrawalStatus; reference: string; createdAt: string; -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/index.ts b/packages/ledger-core/src/index.ts index 050e5c0..66260d5 100644 --- a/packages/ledger-core/src/index.ts +++ b/packages/ledger-core/src/index.ts @@ -19,4 +19,4 @@ export * from "./exchange-posting-validator.js"; export * from "./exchange-posting-builders.js"; export * from "./reconciliation-types.js"; export * from "./reconciliation-engine.js"; -export * from "./reconciliation-repository.js"; \ No newline at end of file +export * from "./reconciliation-repository.js"; diff --git a/packages/ledger-core/src/ledger-types.ts b/packages/ledger-core/src/ledger-types.ts index bc93a31..09a8e1f 100644 --- a/packages/ledger-core/src/ledger-types.ts +++ b/packages/ledger-core/src/ledger-types.ts @@ -1,7 +1,4 @@ -import type { - LedgerEntryStatus, - LedgerEntryType, -} from "@crypto-wallet/shared-types"; +import type { LedgerEntryStatus, LedgerEntryType } from "@crypto-wallet/shared-types"; export interface LedgerAccountRecord { id: string; @@ -12,12 +9,7 @@ export interface LedgerAccountRecord { createdAt: string; } -export type LedgerAccountKind = - | "asset" - | "liability" - | "revenue" - | "expense" - | "equity"; +export type LedgerAccountKind = "asset" | "liability" | "revenue" | "expense" | "equity"; export interface LedgerSubaccountRecord { id: string; diff --git a/packages/ledger-core/src/reconciliation-engine.ts b/packages/ledger-core/src/reconciliation-engine.ts index a9f6c60..c1ae99a 100644 --- a/packages/ledger-core/src/reconciliation-engine.ts +++ b/packages/ledger-core/src/reconciliation-engine.ts @@ -4,9 +4,7 @@ import type { ReconciliationObservation, } from "./reconciliation-types.js"; -export class DefaultReconciliationEngine - implements ReconciliationContract -{ +export class DefaultReconciliationEngine implements ReconciliationContract { compare( expected: ReconciliationObservation, actual: ReconciliationObservation, @@ -15,10 +13,7 @@ export class DefaultReconciliationEngine throw new Error("Reconciliation observations must use the same scope"); } - if ( - expected.status === "unavailable" || - actual.status === "unavailable" - ) { + if (expected.status === "unavailable" || actual.status === "unavailable") { return { scope: expected.scope, expected, @@ -29,9 +24,7 @@ export class DefaultReconciliationEngine } if (expected.amount === null || actual.amount === null) { - throw new Error( - "Available reconciliation observations must have an amount", - ); + throw new Error("Available reconciliation observations must have an amount"); } const expectedAmount = this.parseAmount(expected.amount); @@ -65,4 +58,4 @@ export class DefaultReconciliationEngine expected.scope.accountId === actual.scope.accountId ); } -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/reconciliation-repository.ts b/packages/ledger-core/src/reconciliation-repository.ts index f1f7581..f22a3fe 100644 --- a/packages/ledger-core/src/reconciliation-repository.ts +++ b/packages/ledger-core/src/reconciliation-repository.ts @@ -8,4 +8,4 @@ export interface ReconciliationRepository { networkId?: string, accountId?: string, ): Promise; -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/reconciliation-types.ts b/packages/ledger-core/src/reconciliation-types.ts index 0f42de5..26faa3e 100644 --- a/packages/ledger-core/src/reconciliation-types.ts +++ b/packages/ledger-core/src/reconciliation-types.ts @@ -1,17 +1,8 @@ -export type ReconciliationSource = - | "ledger" - | "custody" - | "blockchain" - | "fiat"; +export type ReconciliationSource = "ledger" | "custody" | "blockchain" | "fiat"; -export type ReconciliationStatus = - | "matched" - | "mismatched" - | "unavailable"; +export type ReconciliationStatus = "matched" | "mismatched" | "unavailable"; -export type ReconciliationObservationStatus = - | "available" - | "unavailable"; +export type ReconciliationObservationStatus = "available" | "unavailable"; export interface ReconciliationScope { assetId: string; @@ -41,4 +32,4 @@ export interface ReconciliationContract { expected: ReconciliationObservation, actual: ReconciliationObservation, ): ReconciliationComparison; -} \ No newline at end of file +} diff --git a/packages/ledger-core/src/subaccount-registry.ts b/packages/ledger-core/src/subaccount-registry.ts index 30a719e..d725e29 100644 --- a/packages/ledger-core/src/subaccount-registry.ts +++ b/packages/ledger-core/src/subaccount-registry.ts @@ -6,17 +6,13 @@ export class LedgerSubaccountRegistry { create(subaccount: LedgerSubaccountRecord): LedgerSubaccountRecord { if (this.subaccounts.has(subaccount.id)) { - throw new Error( - `Ledger subaccount already exists: ${subaccount.id}`, - ); + throw new Error(`Ledger subaccount already exists: ${subaccount.id}`); } const identity = this.getIdentity(subaccount); if (this.identities.has(identity)) { - throw new Error( - `Ledger subaccount already exists for ledger account and name`, - ); + throw new Error(`Ledger subaccount already exists for ledger account and name`); } const stored = Object.freeze({ ...subaccount }); @@ -38,9 +34,6 @@ export class LedgerSubaccountRegistry { } private getIdentity(subaccount: LedgerSubaccountRecord): string { - return JSON.stringify([ - subaccount.ledgerAccountId, - subaccount.name, - ]); + return JSON.stringify([subaccount.ledgerAccountId, subaccount.name]); } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 37ac97b..2c9e9db 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -251,7 +251,7 @@ snapshots: pnpm@11.22.0: {} --- -lockfileVersion: '9.0' +lockfileVersion: "9.0" settings: autoInstallPeers: true @@ -260,14 +260,13 @@ settings: overrides: ajv>fast-uri: 3.1.6 fast-json-stringify>fast-uri: 4.1.3 - '@fastify/ajv-compiler>fast-uri': 4.1.3 + "@fastify/ajv-compiler>fast-uri": 4.1.3 xcode>uuid: 11.1.1 importers: - .: devDependencies: - '@eslint/js': + "@eslint/js": specifier: ^10.0.1 version: 10.0.1(eslint@10.8.1(supports-color@8.1.1)) eslint: @@ -294,37 +293,37 @@ importers: apps/api: dependencies: - '@crypto-wallet/cache': + "@crypto-wallet/cache": specifier: workspace:* version: link:../../packages/cache - '@crypto-wallet/config': + "@crypto-wallet/config": specifier: workspace:* version: link:../../packages/config - '@crypto-wallet/ledger-core': + "@crypto-wallet/ledger-core": specifier: workspace:* version: link:../../packages/ledger-core - '@crypto-wallet/shared-types': + "@crypto-wallet/shared-types": specifier: workspace:* version: link:../../packages/shared-types - '@crypto-wallet/storage': + "@crypto-wallet/storage": specifier: workspace:* version: link:../../packages/storage - '@opentelemetry/api': + "@opentelemetry/api": specifier: ^1.9.1 version: 1.9.1 - '@opentelemetry/exporter-prometheus': + "@opentelemetry/exporter-prometheus": specifier: ^0.222.0 version: 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-metrics': + "@opentelemetry/sdk-metrics": specifier: ^2.11.0 version: 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-node': + "@opentelemetry/sdk-node": specifier: ^0.222.0 version: 0.222.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1) - '@opentelemetry/sdk-trace-node': + "@opentelemetry/sdk-trace-node": specifier: ^2.11.0 version: 2.11.0(@opentelemetry/api@1.9.1) - '@simplewebauthn/server': + "@simplewebauthn/server": specifier: ^13.3.3 version: 13.3.3 fastify: @@ -343,7 +342,7 @@ importers: apps/desktop: devDependencies: - '@types/node': + "@types/node": specifier: ^26.2.0 version: 26.2.0 electron: @@ -352,11 +351,11 @@ importers: apps/extension: dependencies: - '@crypto-wallet/dapp-core': + "@crypto-wallet/dapp-core": specifier: workspace:* version: link:../../packages/dapp-core devDependencies: - '@types/chrome': + "@types/chrome": specifier: ^0.2.9 version: 0.2.9 esbuild: @@ -368,22 +367,22 @@ importers: apps/mobile: dependencies: - '@crypto-wallet/chain-core': + "@crypto-wallet/chain-core": specifier: workspace:* version: link:../../packages/chain-core - '@crypto-wallet/secure-storage': + "@crypto-wallet/secure-storage": specifier: workspace:* version: link:../../packages/secure-storage - '@crypto-wallet/shared-types': + "@crypto-wallet/shared-types": specifier: workspace:* version: link:../../packages/shared-types - '@crypto-wallet/ui': + "@crypto-wallet/ui": specifier: workspace:* version: link:../../packages/ui - '@crypto-wallet/wallet-core': + "@crypto-wallet/wallet-core": specifier: workspace:* version: link:../../packages/wallet-core - '@noble/hashes': + "@noble/hashes": specifier: ^2.4.0 version: 2.4.0 expo: @@ -417,19 +416,19 @@ importers: specifier: ^15.15.5 version: 15.15.5(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) devDependencies: - '@types/react': + "@types/react": specifier: ^19.2.18 version: 19.2.18 apps/web: dependencies: - '@crypto-wallet/chain-core': + "@crypto-wallet/chain-core": specifier: workspace:* version: link:../../packages/chain-core - '@crypto-wallet/secure-storage': + "@crypto-wallet/secure-storage": specifier: workspace:* version: link:../../packages/secure-storage - '@crypto-wallet/wallet-core': + "@crypto-wallet/wallet-core": specifier: workspace:* version: link:../../packages/wallet-core qrcode.react: @@ -442,13 +441,13 @@ importers: specifier: ^19.2.8 version: 19.2.8(react@19.2.8) devDependencies: - '@types/react': + "@types/react": specifier: ^19.2.18 version: 19.2.18 - '@types/react-dom': + "@types/react-dom": specifier: ^19.2.5 version: 19.2.5(@types/react@19.2.18) - '@vitejs/plugin-react': + "@vitejs/plugin-react": specifier: ^6.1.1 version: 6.1.1(babel-plugin-react-compiler@1.0.0)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0)) typescript: @@ -464,46 +463,46 @@ importers: specifier: ^5.8.0 version: 5.12.1(@opentelemetry/api@1.9.1) devDependencies: - '@types/node': + "@types/node": specifier: ^26.2.0 version: 26.2.0 packages/chain-core: dependencies: - '@crypto-wallet/crypto': + "@crypto-wallet/crypto": specifier: workspace:* version: link:../crypto - '@noble/hashes': + "@noble/hashes": specifier: ^2.4.0 version: 2.4.0 - '@scure/base': + "@scure/base": specifier: ^2.4.0 version: 2.4.0 - '@scure/btc-signer': + "@scure/btc-signer": specifier: 2.3.0 version: 2.3.0 packages/config: devDependencies: - '@types/node': + "@types/node": specifier: ^26.2.0 version: 26.2.0 packages/crypto: dependencies: - '@noble/curves': + "@noble/curves": specifier: ^2.4.0 version: 2.4.0 - '@scure/bip32': + "@scure/bip32": specifier: 2.2.0 version: 2.2.0 - '@scure/bip39': + "@scure/bip39": specifier: 2.2.0 version: 2.2.0 packages/dapp-core: dependencies: - '@crypto-wallet/shared-types': + "@crypto-wallet/shared-types": specifier: workspace:* version: link:../shared-types devDependencies: @@ -519,10 +518,10 @@ importers: packages/ledger-core: dependencies: - '@crypto-wallet/shared-types': + "@crypto-wallet/shared-types": specifier: workspace:* version: link:../shared-types - '@crypto-wallet/storage': + "@crypto-wallet/storage": specifier: workspace:* version: link:../storage devDependencies: @@ -532,7 +531,7 @@ importers: packages/secure-storage: dependencies: - '@crypto-wallet/crypto': + "@crypto-wallet/crypto": specifier: workspace:* version: link:../crypto devDependencies: @@ -548,7 +547,7 @@ importers: specifier: ^8.23.0 version: 8.23.0 devDependencies: - '@types/pg': + "@types/pg": specifier: ^8.23.1 version: 8.23.1 tsx: @@ -561,16 +560,16 @@ importers: packages/wallet-core: dependencies: - '@crypto-wallet/chain-core': + "@crypto-wallet/chain-core": specifier: workspace:* version: link:../chain-core - '@crypto-wallet/crypto': + "@crypto-wallet/crypto": specifier: workspace:* version: link:../crypto - '@crypto-wallet/secure-storage': + "@crypto-wallet/secure-storage": specifier: workspace:* version: link:../secure-storage - '@crypto-wallet/shared-types': + "@crypto-wallet/shared-types": specifier: workspace:* version: link:../shared-types devDependencies: @@ -579,685 +578,1065 @@ importers: version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0)) packages: + "@babel/code-frame@7.29.7": + resolution: + { + integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==, + } + engines: { node: ">=6.9.0" } - '@babel/code-frame@7.29.7': - resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.29.7': - resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} - engines: {node: '>=6.9.0'} + "@babel/compat-data@7.29.7": + resolution: + { + integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==, + } + engines: { node: ">=6.9.0" } - '@babel/core@7.29.7': - resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} - engines: {node: '>=6.9.0'} + "@babel/core@7.29.7": + resolution: + { + integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==, + } + engines: { node: ">=6.9.0" } - '@babel/generator@7.29.8': - resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} - engines: {node: '>=6.9.0'} + "@babel/generator@7.29.8": + resolution: + { + integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==, + } + engines: { node: ">=6.9.0" } - '@babel/helper-annotate-as-pure@7.29.7': - resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==} - engines: {node: '>=6.9.0'} + "@babel/helper-annotate-as-pure@7.29.7": + resolution: + { + integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==, + } + engines: { node: ">=6.9.0" } - '@babel/helper-compilation-targets@7.29.7': - resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} - engines: {node: '>=6.9.0'} + "@babel/helper-compilation-targets@7.29.7": + resolution: + { + integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==, + } + engines: { node: ">=6.9.0" } - '@babel/helper-create-class-features-plugin@7.29.7': - resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==} - engines: {node: '>=6.9.0'} + "@babel/helper-create-class-features-plugin@7.29.7": + resolution: + { + integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 + "@babel/core": ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.29.7': - resolution: {integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==} - engines: {node: '>=6.9.0'} + "@babel/helper-create-regexp-features-plugin@7.29.7": + resolution: + { + integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 + "@babel/core": ^7.0.0 - '@babel/helper-define-polyfill-provider@0.6.8': - resolution: {integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==} + "@babel/helper-define-polyfill-provider@0.6.8": + resolution: + { + integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==, + } peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-globals@7.29.7': - resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} - engines: {node: '>=6.9.0'} + "@babel/helper-globals@7.29.7": + resolution: + { + integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==, + } + engines: { node: ">=6.9.0" } - '@babel/helper-member-expression-to-functions@7.29.7': - resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==} - engines: {node: '>=6.9.0'} + "@babel/helper-member-expression-to-functions@7.29.7": + resolution: + { + integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==, + } + engines: { node: ">=6.9.0" } - '@babel/helper-module-imports@7.29.7': - resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} - engines: {node: '>=6.9.0'} + "@babel/helper-module-imports@7.29.7": + resolution: + { + integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==, + } + engines: { node: ">=6.9.0" } - '@babel/helper-module-transforms@7.29.7': - resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} - engines: {node: '>=6.9.0'} + "@babel/helper-module-transforms@7.29.7": + resolution: + { + integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 + "@babel/core": ^7.0.0 - '@babel/helper-optimise-call-expression@7.29.7': - resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==} - engines: {node: '>=6.9.0'} + "@babel/helper-optimise-call-expression@7.29.7": + resolution: + { + integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==, + } + engines: { node: ">=6.9.0" } - '@babel/helper-plugin-utils@7.29.7': - resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} - engines: {node: '>=6.9.0'} + "@babel/helper-plugin-utils@7.29.7": + resolution: + { + integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==, + } + engines: { node: ">=6.9.0" } - '@babel/helper-remap-async-to-generator@7.29.7': - resolution: {integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==} - engines: {node: '>=6.9.0'} + "@babel/helper-remap-async-to-generator@7.29.7": + resolution: + { + integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 + "@babel/core": ^7.0.0 - '@babel/helper-replace-supers@7.29.7': - resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==} - engines: {node: '>=6.9.0'} + "@babel/helper-replace-supers@7.29.7": + resolution: + { + integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 + "@babel/core": ^7.0.0 - '@babel/helper-skip-transparent-expression-wrappers@7.29.7': - resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==} - engines: {node: '>=6.9.0'} + "@babel/helper-skip-transparent-expression-wrappers@7.29.7": + resolution: + { + integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==, + } + engines: { node: ">=6.9.0" } - '@babel/helper-string-parser@7.29.7': - resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} - engines: {node: '>=6.9.0'} + "@babel/helper-string-parser@7.29.7": + resolution: + { + integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==, + } + engines: { node: ">=6.9.0" } - '@babel/helper-validator-identifier@7.29.7': - resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} - engines: {node: '>=6.9.0'} + "@babel/helper-validator-identifier@7.29.7": + resolution: + { + integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==, + } + engines: { node: ">=6.9.0" } - '@babel/helper-validator-option@7.29.7': - resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} - engines: {node: '>=6.9.0'} + "@babel/helper-validator-option@7.29.7": + resolution: + { + integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==, + } + engines: { node: ">=6.9.0" } - '@babel/helper-wrap-function@7.29.7': - resolution: {integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==} - engines: {node: '>=6.9.0'} + "@babel/helper-wrap-function@7.29.7": + resolution: + { + integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==, + } + engines: { node: ">=6.9.0" } - '@babel/helpers@7.29.7': - resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} - engines: {node: '>=6.9.0'} + "@babel/helpers@7.29.7": + resolution: + { + integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==, + } + engines: { node: ">=6.9.0" } - '@babel/parser@7.29.8': - resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} - engines: {node: '>=6.0.0'} + "@babel/parser@7.29.8": + resolution: + { + integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==, + } + engines: { node: ">=6.0.0" } hasBin: true - '@babel/plugin-proposal-decorators@7.29.7': - resolution: {integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==} - engines: {node: '>=6.9.0'} + "@babel/plugin-proposal-decorators@7.29.7": + resolution: + { + integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-proposal-export-default-from@7.29.7': - resolution: {integrity: sha512-p+G5BNXDcy3bOXplhY4HybQ1GxH3i2Tppmdm/3epyRu2VgJJZuUlZ61MqRTg582Q7ZLBdP7fePYvsumSEkMxcQ==} - engines: {node: '>=6.9.0'} + "@babel/plugin-proposal-export-default-from@7.29.7": + resolution: + { + integrity: sha512-p+G5BNXDcy3bOXplhY4HybQ1GxH3i2Tppmdm/3epyRu2VgJJZuUlZ61MqRTg582Q7ZLBdP7fePYvsumSEkMxcQ==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-syntax-decorators@7.29.7': - resolution: {integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==} - engines: {node: '>=6.9.0'} + "@babel/plugin-syntax-decorators@7.29.7": + resolution: + { + integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + "@babel/plugin-syntax-dynamic-import@7.8.3": + resolution: + { + integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==, + } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-syntax-export-default-from@7.29.7': - resolution: {integrity: sha512-foag0BB37ROhdeIX9O8G0jX7hw0UekJc04cHMrYLOnrErsnBKqJGHJ8eDRpoCFZBvEPPygmmtw4qyU97qa4oOw==} - engines: {node: '>=6.9.0'} + "@babel/plugin-syntax-export-default-from@7.29.7": + resolution: + { + integrity: sha512-foag0BB37ROhdeIX9O8G0jX7hw0UekJc04cHMrYLOnrErsnBKqJGHJ8eDRpoCFZBvEPPygmmtw4qyU97qa4oOw==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-syntax-flow@7.29.7': - resolution: {integrity: sha512-ajMX6QPcyomotqwpzhkYGxcK2i/us0rs1Qo9QvUpa+Fca0FTmqrzKrctoIYLMxcOhGZldGT/BAVkRGTWBiR8gQ==} - engines: {node: '>=6.9.0'} + "@babel/plugin-syntax-flow@7.29.7": + resolution: + { + integrity: sha512-ajMX6QPcyomotqwpzhkYGxcK2i/us0rs1Qo9QvUpa+Fca0FTmqrzKrctoIYLMxcOhGZldGT/BAVkRGTWBiR8gQ==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.29.7': - resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} - engines: {node: '>=6.9.0'} + "@babel/plugin-syntax-jsx@7.29.7": + resolution: + { + integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3": + resolution: + { + integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, + } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + "@babel/plugin-syntax-optional-chaining@7.8.3": + resolution: + { + integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, + } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.29.7': - resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} - engines: {node: '>=6.9.0'} + "@babel/plugin-syntax-typescript@7.29.7": + resolution: + { + integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.29.7': - resolution: {integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-async-generator-functions@7.29.7": + resolution: + { + integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.29.7': - resolution: {integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-async-to-generator@7.29.7": + resolution: + { + integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.29.7': - resolution: {integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-block-scoping@7.29.7": + resolution: + { + integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-class-properties@7.29.7': - resolution: {integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-class-properties@7.29.7": + resolution: + { + integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.29.7': - resolution: {integrity: sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-class-static-block@7.29.7": + resolution: + { + integrity: sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.12.0 + "@babel/core": ^7.12.0 - '@babel/plugin-transform-classes@7.29.7': - resolution: {integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-classes@7.29.7": + resolution: + { + integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.29.7': - resolution: {integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-destructuring@7.29.7": + resolution: + { + integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.29.7': - resolution: {integrity: sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-export-namespace-from@7.29.7": + resolution: + { + integrity: sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-flow-strip-types@7.29.7': - resolution: {integrity: sha512-wRHeUjUjCZnMHmiO5bRgjFLcoEh7JyTdByOW11ahhwNa4V0bmeGEaIvt51yq0zQp2yWIpqfxXXPyUP6GFJZHOQ==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-flow-strip-types@7.29.7": + resolution: + { + integrity: sha512-wRHeUjUjCZnMHmiO5bRgjFLcoEh7JyTdByOW11ahhwNa4V0bmeGEaIvt51yq0zQp2yWIpqfxXXPyUP6GFJZHOQ==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-for-of@7.29.7': - resolution: {integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-for-of@7.29.7": + resolution: + { + integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.29.7': - resolution: {integrity: sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-logical-assignment-operators@7.29.7": + resolution: + { + integrity: sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.29.7': - resolution: {integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-modules-commonjs@7.29.7": + resolution: + { + integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-named-capturing-groups-regex@7.29.7': - resolution: {integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-named-capturing-groups-regex@7.29.7": + resolution: + { + integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 + "@babel/core": ^7.0.0 - '@babel/plugin-transform-nullish-coalescing-operator@7.29.7': - resolution: {integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-nullish-coalescing-operator@7.29.7": + resolution: + { + integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.29.7': - resolution: {integrity: sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-object-rest-spread@7.29.7": + resolution: + { + integrity: sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.29.7': - resolution: {integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-optional-catch-binding@7.29.7": + resolution: + { + integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.29.7': - resolution: {integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-optional-chaining@7.29.7": + resolution: + { + integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-parameters@7.29.7': - resolution: {integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-parameters@7.29.7": + resolution: + { + integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.29.7': - resolution: {integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-private-methods@7.29.7": + resolution: + { + integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.29.7': - resolution: {integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-private-property-in-object@7.29.7": + resolution: + { + integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-react-display-name@7.29.7': - resolution: {integrity: sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-react-display-name@7.29.7": + resolution: + { + integrity: sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-react-jsx-development@7.29.7': - resolution: {integrity: sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-react-jsx-development@7.29.7": + resolution: + { + integrity: sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-react-jsx@7.29.7': - resolution: {integrity: sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-react-jsx@7.29.7": + resolution: + { + integrity: sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-react-pure-annotations@7.29.7': - resolution: {integrity: sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-react-pure-annotations@7.29.7": + resolution: + { + integrity: sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-runtime@7.29.7': - resolution: {integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-runtime@7.29.7": + resolution: + { + integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-typescript@7.29.7': - resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-typescript@7.29.7": + resolution: + { + integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/plugin-transform-unicode-regex@7.29.7': - resolution: {integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==} - engines: {node: '>=6.9.0'} + "@babel/plugin-transform-unicode-regex@7.29.7": + resolution: + { + integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/preset-typescript@7.29.7': - resolution: {integrity: sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==} - engines: {node: '>=6.9.0'} + "@babel/preset-typescript@7.29.7": + resolution: + { + integrity: sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 - '@babel/runtime@7.29.7': - resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} - engines: {node: '>=6.9.0'} + "@babel/runtime@7.29.7": + resolution: + { + integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==, + } + engines: { node: ">=6.9.0" } - '@babel/template@7.29.7': - resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} - engines: {node: '>=6.9.0'} + "@babel/template@7.29.7": + resolution: + { + integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==, + } + engines: { node: ">=6.9.0" } - '@babel/traverse@7.29.8': - resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} - engines: {node: '>=6.9.0'} + "@babel/traverse@7.29.8": + resolution: + { + integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==, + } + engines: { node: ">=6.9.0" } - '@babel/types@7.29.8': - resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} - engines: {node: '>=6.9.0'} + "@babel/types@7.29.8": + resolution: + { + integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==, + } + engines: { node: ">=6.9.0" } - '@electron-internal/extract-zip@1.0.5': - resolution: {integrity: sha512-+bqFCP98pLI0Tt0XQo1TmlXtwjWchISndDOxCkEcIuUgXWpBnLyRI+2DU+mesvnMMX6L1XDqYNA0lXNDHd/yiA==} - engines: {node: '>=22.12.0'} + "@electron-internal/extract-zip@1.0.5": + resolution: + { + integrity: sha512-+bqFCP98pLI0Tt0XQo1TmlXtwjWchISndDOxCkEcIuUgXWpBnLyRI+2DU+mesvnMMX6L1XDqYNA0lXNDHd/yiA==, + } + engines: { node: ">=22.12.0" } - '@electron/get@5.1.0': - resolution: {integrity: sha512-3kSBtG8ObcTVfXanm5vVJ6UnBLEVmVsRk1M+vGqCuMBV+XLCbJYuWQful+yIy0GQDsSlK0kHEriEHn7SPk4EnA==} - engines: {node: '>=22.12.0'} + "@electron/get@5.1.0": + resolution: + { + integrity: sha512-3kSBtG8ObcTVfXanm5vVJ6UnBLEVmVsRk1M+vGqCuMBV+XLCbJYuWQful+yIy0GQDsSlK0kHEriEHn7SPk4EnA==, + } + engines: { node: ">=22.12.0" } - '@esbuild/aix-ppc64@0.28.2': - resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==} - engines: {node: '>=18'} + "@esbuild/aix-ppc64@0.28.2": + resolution: + { + integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==, + } + engines: { node: ">=18" } cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.28.2': - resolution: {integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==} - engines: {node: '>=18'} + "@esbuild/android-arm64@0.28.2": + resolution: + { + integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==, + } + engines: { node: ">=18" } cpu: [arm64] os: [android] - '@esbuild/android-arm@0.28.2': - resolution: {integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==} - engines: {node: '>=18'} + "@esbuild/android-arm@0.28.2": + resolution: + { + integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==, + } + engines: { node: ">=18" } cpu: [arm] os: [android] - '@esbuild/android-x64@0.28.2': - resolution: {integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==} - engines: {node: '>=18'} + "@esbuild/android-x64@0.28.2": + resolution: + { + integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==, + } + engines: { node: ">=18" } cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.28.2': - resolution: {integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==} - engines: {node: '>=18'} + "@esbuild/darwin-arm64@0.28.2": + resolution: + { + integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==, + } + engines: { node: ">=18" } cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.28.2': - resolution: {integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==} - engines: {node: '>=18'} + "@esbuild/darwin-x64@0.28.2": + resolution: + { + integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==, + } + engines: { node: ">=18" } cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.28.2': - resolution: {integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==} - engines: {node: '>=18'} + "@esbuild/freebsd-arm64@0.28.2": + resolution: + { + integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==, + } + engines: { node: ">=18" } cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.28.2': - resolution: {integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==} - engines: {node: '>=18'} + "@esbuild/freebsd-x64@0.28.2": + resolution: + { + integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==, + } + engines: { node: ">=18" } cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.28.2': - resolution: {integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==} - engines: {node: '>=18'} + "@esbuild/linux-arm64@0.28.2": + resolution: + { + integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==, + } + engines: { node: ">=18" } cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.28.2': - resolution: {integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==} - engines: {node: '>=18'} + "@esbuild/linux-arm@0.28.2": + resolution: + { + integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==, + } + engines: { node: ">=18" } cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.28.2': - resolution: {integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==} - engines: {node: '>=18'} + "@esbuild/linux-ia32@0.28.2": + resolution: + { + integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==, + } + engines: { node: ">=18" } cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.28.2': - resolution: {integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==} - engines: {node: '>=18'} + "@esbuild/linux-loong64@0.28.2": + resolution: + { + integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==, + } + engines: { node: ">=18" } cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.28.2': - resolution: {integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==} - engines: {node: '>=18'} + "@esbuild/linux-mips64el@0.28.2": + resolution: + { + integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==, + } + engines: { node: ">=18" } cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.28.2': - resolution: {integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==} - engines: {node: '>=18'} + "@esbuild/linux-ppc64@0.28.2": + resolution: + { + integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==, + } + engines: { node: ">=18" } cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.28.2': - resolution: {integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==} - engines: {node: '>=18'} + "@esbuild/linux-riscv64@0.28.2": + resolution: + { + integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==, + } + engines: { node: ">=18" } cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.28.2': - resolution: {integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==} - engines: {node: '>=18'} + "@esbuild/linux-s390x@0.28.2": + resolution: + { + integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==, + } + engines: { node: ">=18" } cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.28.2': - resolution: {integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==} - engines: {node: '>=18'} - cpu: [x64] + "@esbuild/linux-x64@0.28.2": + resolution: + { + integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==, + } + engines: { node: ">=18" } + cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.28.2': - resolution: {integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==} - engines: {node: '>=18'} + "@esbuild/netbsd-arm64@0.28.2": + resolution: + { + integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==, + } + engines: { node: ">=18" } cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.28.2': - resolution: {integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==} - engines: {node: '>=18'} + "@esbuild/netbsd-x64@0.28.2": + resolution: + { + integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==, + } + engines: { node: ">=18" } cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.28.2': - resolution: {integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==} - engines: {node: '>=18'} + "@esbuild/openbsd-arm64@0.28.2": + resolution: + { + integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==, + } + engines: { node: ">=18" } cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.28.2': - resolution: {integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==} - engines: {node: '>=18'} + "@esbuild/openbsd-x64@0.28.2": + resolution: + { + integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==, + } + engines: { node: ">=18" } cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.28.2': - resolution: {integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==} - engines: {node: '>=18'} + "@esbuild/openharmony-arm64@0.28.2": + resolution: + { + integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==, + } + engines: { node: ">=18" } cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.28.2': - resolution: {integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==} - engines: {node: '>=18'} + "@esbuild/sunos-x64@0.28.2": + resolution: + { + integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==, + } + engines: { node: ">=18" } cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.28.2': - resolution: {integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==} - engines: {node: '>=18'} + "@esbuild/win32-arm64@0.28.2": + resolution: + { + integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==, + } + engines: { node: ">=18" } cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.28.2': - resolution: {integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==} - engines: {node: '>=18'} + "@esbuild/win32-ia32@0.28.2": + resolution: + { + integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==, + } + engines: { node: ">=18" } cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.28.2': - resolution: {integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==} - engines: {node: '>=18'} + "@esbuild/win32-x64@0.28.2": + resolution: + { + integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==, + } + engines: { node: ">=18" } cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.10.1': - resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + "@eslint-community/eslint-utils@4.10.1": + resolution: + { + integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.2': - resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + "@eslint-community/regexpp@4.12.2": + resolution: + { + integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==, + } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - '@eslint/config-array@0.23.5': - resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + "@eslint/config-array@0.23.5": + resolution: + { + integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } - '@eslint/config-helpers@0.7.0': - resolution: {integrity: sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + "@eslint/config-helpers@0.7.0": + resolution: + { + integrity: sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } - '@eslint/core@1.2.1': - resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + "@eslint/core@1.2.1": + resolution: + { + integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } - '@eslint/js@10.0.1': - resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + "@eslint/js@10.0.1": + resolution: + { + integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } peerDependencies: eslint: ^10.0.0 peerDependenciesMeta: eslint: optional: true - '@eslint/object-schema@3.0.5': - resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + "@eslint/object-schema@3.0.5": + resolution: + { + integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } - '@eslint/plugin-kit@0.7.2': - resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + "@eslint/plugin-kit@0.7.2": + resolution: + { + integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } - '@expo/cli@57.0.22': - resolution: {integrity: sha512-MdToR0ZZ1yjfkqbP1jcA7viS9duMPGq/C+qQ/21dtq+en583Ghp+O11BP/wujHa9ZGRtXimzuKPZDpPresVE0g==} + "@expo/cli@57.0.22": + resolution: + { + integrity: sha512-MdToR0ZZ1yjfkqbP1jcA7viS9duMPGq/C+qQ/21dtq+en583Ghp+O11BP/wujHa9ZGRtXimzuKPZDpPresVE0g==, + } hasBin: true peerDependencies: - expo: '*' - expo-router: '*' - react-native: '*' + expo: "*" + expo-router: "*" + react-native: "*" peerDependenciesMeta: expo-router: optional: true react-native: optional: true - '@expo/code-signing-certificates@0.0.6': - resolution: {integrity: sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==} + "@expo/code-signing-certificates@0.0.6": + resolution: + { + integrity: sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==, + } - '@expo/config-plugins@57.0.9': - resolution: {integrity: sha512-hHgfL1avkCdEvDSw7IwlKwRYYNgcxzbNNMIk6W6lTkJpY0MajinAfeJUS0J+wPCsjUfGbVqOJM+XhPaO5ulUxg==} + "@expo/config-plugins@57.0.9": + resolution: + { + integrity: sha512-hHgfL1avkCdEvDSw7IwlKwRYYNgcxzbNNMIk6W6lTkJpY0MajinAfeJUS0J+wPCsjUfGbVqOJM+XhPaO5ulUxg==, + } - '@expo/config-types@57.0.2': - resolution: {integrity: sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==} + "@expo/config-types@57.0.2": + resolution: + { + integrity: sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==, + } - '@expo/config@57.0.9': - resolution: {integrity: sha512-dmzlKraIFxa7wLwV6K7WzI8jp6QZpW6Mc5mGjLimJUFjzh4uQdYaT3m3plEutM5yxBoBEwqzks7l+I/ljCbxAQ==} + "@expo/config@57.0.9": + resolution: + { + integrity: sha512-dmzlKraIFxa7wLwV6K7WzI8jp6QZpW6Mc5mGjLimJUFjzh4uQdYaT3m3plEutM5yxBoBEwqzks7l+I/ljCbxAQ==, + } - '@expo/devcert@1.2.1': - resolution: {integrity: sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==} + "@expo/devcert@1.2.1": + resolution: + { + integrity: sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==, + } - '@expo/devtools@57.0.1': - resolution: {integrity: sha512-GyUf+wFNkbttaX0jR7MZa9bm77U0IrLg6d2AjpxdyoXw/w4abHoXG0oFufwLMgP9zLTd5+Ct4X/ffNUTnlzZgg==} + "@expo/devtools@57.0.1": + resolution: + { + integrity: sha512-GyUf+wFNkbttaX0jR7MZa9bm77U0IrLg6d2AjpxdyoXw/w4abHoXG0oFufwLMgP9zLTd5+Ct4X/ffNUTnlzZgg==, + } peerDependencies: - react: '*' - react-native: '*' + react: "*" + react-native: "*" peerDependenciesMeta: react: optional: true react-native: optional: true - '@expo/dom-webview@57.0.1': - resolution: {integrity: sha512-lAKsME4SAq+8sf56oN0DX5TBYyruupoRxbWbD2xf9RnKY8y6x8eb9LCE5pxSN0qyWdqnp+0wmyWzDkKboThKAw==} + "@expo/dom-webview@57.0.1": + resolution: + { + integrity: sha512-lAKsME4SAq+8sf56oN0DX5TBYyruupoRxbWbD2xf9RnKY8y6x8eb9LCE5pxSN0qyWdqnp+0wmyWzDkKboThKAw==, + } peerDependencies: - expo: '*' - react: '*' - react-native: '*' + expo: "*" + react: "*" + react-native: "*" - '@expo/env@2.4.3': - resolution: {integrity: sha512-M1NXeZCA1mkMkYOyIe7PlyRX0/jqFtMoJgyblnlq/vpCRfmueFT7RnGSQG8uEFDF5WHOFGijAQ3fogPh3/n5Ng==} - engines: {node: '>=20.12.0'} + "@expo/env@2.4.3": + resolution: + { + integrity: sha512-M1NXeZCA1mkMkYOyIe7PlyRX0/jqFtMoJgyblnlq/vpCRfmueFT7RnGSQG8uEFDF5WHOFGijAQ3fogPh3/n5Ng==, + } + engines: { node: ">=20.12.0" } - '@expo/expo-modules-macros-plugin@0.6.1': - resolution: {integrity: sha512-cpsLZE4rqkc1Y3eZTkxB98jrqY1YXgetmtxFt8q89jBRmk3quRuk1BZo+VcnCSObZardjg99r1k5xijEMONFGA==} + "@expo/expo-modules-macros-plugin@0.6.1": + resolution: + { + integrity: sha512-cpsLZE4rqkc1Y3eZTkxB98jrqY1YXgetmtxFt8q89jBRmk3quRuk1BZo+VcnCSObZardjg99r1k5xijEMONFGA==, + } - '@expo/fingerprint@0.20.12': - resolution: {integrity: sha512-FIR5fkZYeFaLSowmjgyB6RPKl8AXeE8HuCBHHvyxK8UhOjpPfCAmzT4E7v2yub4qqDafKnfcOFCYxvpUEu+01w==} + "@expo/fingerprint@0.20.12": + resolution: + { + integrity: sha512-FIR5fkZYeFaLSowmjgyB6RPKl8AXeE8HuCBHHvyxK8UhOjpPfCAmzT4E7v2yub4qqDafKnfcOFCYxvpUEu+01w==, + } hasBin: true - '@expo/image-utils@0.11.5': - resolution: {integrity: sha512-KPQBTpmpAfy/Vu9y4wPW808/qtZxjYmyJg8cm2QCPAupp+qEWA3b5zmk0ulOwQ9OgeHxuCPgUqWgkwHFo7UsrQ==} + "@expo/image-utils@0.11.5": + resolution: + { + integrity: sha512-KPQBTpmpAfy/Vu9y4wPW808/qtZxjYmyJg8cm2QCPAupp+qEWA3b5zmk0ulOwQ9OgeHxuCPgUqWgkwHFo7UsrQ==, + } - '@expo/inline-modules@0.1.7': - resolution: {integrity: sha512-Bz/khd1gIJqDkje7t5ejD5e9jFbm4xEJzWSwRKadRo6gruepbw1xJ3Eb+e58OS8fY1ZNQYjzZbspnuph67sN0g==} + "@expo/inline-modules@0.1.7": + resolution: + { + integrity: sha512-Bz/khd1gIJqDkje7t5ejD5e9jFbm4xEJzWSwRKadRo6gruepbw1xJ3Eb+e58OS8fY1ZNQYjzZbspnuph67sN0g==, + } - '@expo/json-file@11.0.1': - resolution: {integrity: sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==} + "@expo/json-file@11.0.1": + resolution: + { + integrity: sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==, + } - '@expo/local-build-cache-provider@57.0.8': - resolution: {integrity: sha512-SEdE0pAQrr90bRh3MNR0ZuwoIBw390cYdFgbn7Vk0Mtm9EHaBfP7kYj+2hXnXZJgOEm3/JMtfoD3rV7rWA9FGg==} + "@expo/local-build-cache-provider@57.0.8": + resolution: + { + integrity: sha512-SEdE0pAQrr90bRh3MNR0ZuwoIBw390cYdFgbn7Vk0Mtm9EHaBfP7kYj+2hXnXZJgOEm3/JMtfoD3rV7rWA9FGg==, + } - '@expo/log-box@57.0.4': - resolution: {integrity: sha512-IxwS9s1L2muj8mj8AQSuiy7u8OFJdc02NRFo2me/Tj6DiaeG5SREqmpBE4rQpR2cadqSg5jl8Qab8Cjie616dg==} + "@expo/log-box@57.0.4": + resolution: + { + integrity: sha512-IxwS9s1L2muj8mj8AQSuiy7u8OFJdc02NRFo2me/Tj6DiaeG5SREqmpBE4rQpR2cadqSg5jl8Qab8Cjie616dg==, + } peerDependencies: - '@expo/dom-webview': ^57.0.1 - expo: '*' - react: '*' - react-native: '*' + "@expo/dom-webview": ^57.0.1 + expo: "*" + react: "*" + react-native: "*" - '@expo/metro-config@57.0.12': - resolution: {integrity: sha512-S62Lrq35HZqBFD55423pmWb8PjaiR/W02zQC1uECBmw1vTN8WZaFz4TJ0i21EeJzwfebMb9MLxL8JZ102Z6VbA==} + "@expo/metro-config@57.0.12": + resolution: + { + integrity: sha512-S62Lrq35HZqBFD55423pmWb8PjaiR/W02zQC1uECBmw1vTN8WZaFz4TJ0i21EeJzwfebMb9MLxL8JZ102Z6VbA==, + } peerDependencies: - expo: '*' + expo: "*" peerDependenciesMeta: expo: optional: true - '@expo/metro-file-map@57.0.2': - resolution: {integrity: sha512-tb50nSIWwKpRufSkGuivOK0FbUxv1Uwqptb0SzFTk0bkmYmcy3gIwnCbOHTfmrQDVndRhPEiu2SYgh9Z0PCvGg==} + "@expo/metro-file-map@57.0.2": + resolution: + { + integrity: sha512-tb50nSIWwKpRufSkGuivOK0FbUxv1Uwqptb0SzFTk0bkmYmcy3gIwnCbOHTfmrQDVndRhPEiu2SYgh9Z0PCvGg==, + } - '@expo/metro@56.0.2': - resolution: {integrity: sha512-Ld5AeYMCCDa8bLeWhfuLbZFFjlV3f6ORqyPz2glGh6RltIngMuLf9BTC2yvHFjkKuGxL5SynijmA8xmNNWn5iA==} + "@expo/metro@56.0.2": + resolution: + { + integrity: sha512-Ld5AeYMCCDa8bLeWhfuLbZFFjlV3f6ORqyPz2glGh6RltIngMuLf9BTC2yvHFjkKuGxL5SynijmA8xmNNWn5iA==, + } - '@expo/osascript@2.7.1': - resolution: {integrity: sha512-Zn03EX6In7ts2lPUW2ESUSkEhEWQN1qqsiXjadtZMJOuZRkMiAg1ZQHuvz9DjByDWNJ2pBwAGyrts9lj9k389g==} - engines: {node: '>=12'} + "@expo/osascript@2.7.1": + resolution: + { + integrity: sha512-Zn03EX6In7ts2lPUW2ESUSkEhEWQN1qqsiXjadtZMJOuZRkMiAg1ZQHuvz9DjByDWNJ2pBwAGyrts9lj9k389g==, + } + engines: { node: ">=12" } - '@expo/package-manager@1.13.1': - resolution: {integrity: sha512-y/K+CaYYpZpNGZhSX4HyLT/vyIunFjNfyoxNysPBCefeLKI/VCx6f9LNPzrxayr3rCYO5bl9O8H+HRQK265Nkg==} + "@expo/package-manager@1.13.1": + resolution: + { + integrity: sha512-y/K+CaYYpZpNGZhSX4HyLT/vyIunFjNfyoxNysPBCefeLKI/VCx6f9LNPzrxayr3rCYO5bl9O8H+HRQK265Nkg==, + } - '@expo/plist@0.8.1': - resolution: {integrity: sha512-3gTReGIUm0oRaMClsAJYxBnVPCl6fVpsl8HS+DTVxDhW4GyVyxg9E/Znm3BvcHtUJ51RJJI14pC1wvrNilCRHw==} + "@expo/plist@0.8.1": + resolution: + { + integrity: sha512-3gTReGIUm0oRaMClsAJYxBnVPCl6fVpsl8HS+DTVxDhW4GyVyxg9E/Znm3BvcHtUJ51RJJI14pC1wvrNilCRHw==, + } - '@expo/prebuild-config@57.0.15': - resolution: {integrity: sha512-xTbWHroj0PDmlbqvmU+zF9ZZxveJkiuyiPoeRJYRGruFHebRAWnoTdw5S7d/UCzDBI8ropGGu9g2eb2nMxtvAw==} + "@expo/prebuild-config@57.0.15": + resolution: + { + integrity: sha512-xTbWHroj0PDmlbqvmU+zF9ZZxveJkiuyiPoeRJYRGruFHebRAWnoTdw5S7d/UCzDBI8ropGGu9g2eb2nMxtvAw==, + } - '@expo/require-utils@57.0.5': - resolution: {integrity: sha512-kTAXj9lDFEIPMsbAOGCGbjBbMF0oi7CqkYM79KOX0DDD9wSwXmlKL1z2h8OwsrBf7mbOo2DjlRvZu4BEjrIxGw==} + "@expo/require-utils@57.0.5": + resolution: + { + integrity: sha512-kTAXj9lDFEIPMsbAOGCGbjBbMF0oi7CqkYM79KOX0DDD9wSwXmlKL1z2h8OwsrBf7mbOo2DjlRvZu4BEjrIxGw==, + } peerDependencies: typescript: ^5.0.0 || ^5.0.0-0 || ^6.0.0 || ^7.0.0 peerDependenciesMeta: typescript: optional: true - '@expo/router-server@57.0.9': - resolution: {integrity: sha512-/PxRQozFesIyCJZOAtrQE8XcmcojNiL5ctPMQnbE4ojC2EJPu0zc7c0Y4PuXsoRxrZxm8Usw76/lCVrXcfTZ2w==} + "@expo/router-server@57.0.9": + resolution: + { + integrity: sha512-/PxRQozFesIyCJZOAtrQE8XcmcojNiL5ctPMQnbE4ojC2EJPu0zc7c0Y4PuXsoRxrZxm8Usw76/lCVrXcfTZ2w==, + } peerDependencies: - '@expo/metro-runtime': ^57.0.15 - expo: '*' + "@expo/metro-runtime": ^57.0.15 + expo: "*" expo-constants: ^57.0.17 expo-font: ^57.0.3 - expo-router: '*' + expo-router: "*" expo-server: ^57.0.3 - react: '*' - react-dom: '*' + react: "*" + react-dom: "*" react-server-dom-webpack: ~19.0.1 || ~19.1.2 || ~19.2.1 peerDependenciesMeta: - '@expo/metro-runtime': + "@expo/metro-runtime": optional: true expo-router: optional: true @@ -1266,792 +1645,1305 @@ packages: react-server-dom-webpack: optional: true - '@expo/schema-utils@57.0.2': - resolution: {integrity: sha512-fMu/jyN0l1Wzv7XkeWR4IYCx1M8ryui3FdBNGrWwbRgJ7EhxXxK8E2jxP2W3pbgUwUY0V3hG8+GyfCZwny+Lxw==} + "@expo/schema-utils@57.0.2": + resolution: + { + integrity: sha512-fMu/jyN0l1Wzv7XkeWR4IYCx1M8ryui3FdBNGrWwbRgJ7EhxXxK8E2jxP2W3pbgUwUY0V3hG8+GyfCZwny+Lxw==, + } - '@expo/sdk-runtime-versions@1.0.0': - resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} + "@expo/sdk-runtime-versions@1.0.0": + resolution: + { + integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==, + } - '@expo/spawn-async@1.8.0': - resolution: {integrity: sha512-eb9xxd/LbuEGSdua4NumCu/McVB9EM+F/JxB9pWgnERw4HQ9XyTNH1KapG6oqLWR8TuRK2LQfzJlmNi94CVobw==} - engines: {node: '>=12'} + "@expo/spawn-async@1.8.0": + resolution: + { + integrity: sha512-eb9xxd/LbuEGSdua4NumCu/McVB9EM+F/JxB9pWgnERw4HQ9XyTNH1KapG6oqLWR8TuRK2LQfzJlmNi94CVobw==, + } + engines: { node: ">=12" } - '@expo/sudo-prompt@9.3.2': - resolution: {integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==} + "@expo/sudo-prompt@9.3.2": + resolution: + { + integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==, + } - '@expo/ws-tunnel@2.0.0': - resolution: {integrity: sha512-j+JfTRdCk820J9dU0sA2SqshQIKFOMo7ED84w9MJFcebfbNQgsLztEY/SABDkGnjatrW4xGqnUhVRxSBVyCkXw==} + "@expo/ws-tunnel@2.0.0": + resolution: + { + integrity: sha512-j+JfTRdCk820J9dU0sA2SqshQIKFOMo7ED84w9MJFcebfbNQgsLztEY/SABDkGnjatrW4xGqnUhVRxSBVyCkXw==, + } peerDependencies: ws: ^8.0.0 - '@expo/xcpretty@4.4.4': - resolution: {integrity: sha512-4aQzz9vgxcNXFfo/iyNgDDYfsU5XGKKxWxZopw0cVotHiW+U8IJbIxMaxsINs6bHhtkG3StKNPcOrn3eBuxKPw==} + "@expo/xcpretty@4.4.4": + resolution: + { + integrity: sha512-4aQzz9vgxcNXFfo/iyNgDDYfsU5XGKKxWxZopw0cVotHiW+U8IJbIxMaxsINs6bHhtkG3StKNPcOrn3eBuxKPw==, + } hasBin: true - '@fastify/ajv-compiler@4.0.6': - resolution: {integrity: sha512-NtuzM0SfaMJbGlnjr9LWQUN5LzgSrbB8tf/wRZNas+4E1O/Nmzl53e7ruT61HDZyRCJGC6FxIogmNZO1c5ETBA==} + "@fastify/ajv-compiler@4.0.6": + resolution: + { + integrity: sha512-NtuzM0SfaMJbGlnjr9LWQUN5LzgSrbB8tf/wRZNas+4E1O/Nmzl53e7ruT61HDZyRCJGC6FxIogmNZO1c5ETBA==, + } - '@fastify/error@4.2.0': - resolution: {integrity: sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==} + "@fastify/error@4.2.0": + resolution: + { + integrity: sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==, + } - '@fastify/fast-json-stringify-compiler@5.1.0': - resolution: {integrity: sha512-PxcYtKLbQ8Z+yApiqjK8FwxIwvEj38k2OiLc17u8dkJSlmfi2wHHPaSnaoqBPQqtvF8YVsDgDpP2snDCfFrpfw==} + "@fastify/fast-json-stringify-compiler@5.1.0": + resolution: + { + integrity: sha512-PxcYtKLbQ8Z+yApiqjK8FwxIwvEj38k2OiLc17u8dkJSlmfi2wHHPaSnaoqBPQqtvF8YVsDgDpP2snDCfFrpfw==, + } - '@fastify/forwarded@3.0.2': - resolution: {integrity: sha512-NE8HgKLgYejV9lDpqkEFaDKMLYelJBVfHekhB0UKvX0ghagXRJqg68feg8er1NPXxG4N9i6vPxzt8E+3wHfcmA==} + "@fastify/forwarded@3.0.2": + resolution: + { + integrity: sha512-NE8HgKLgYejV9lDpqkEFaDKMLYelJBVfHekhB0UKvX0ghagXRJqg68feg8er1NPXxG4N9i6vPxzt8E+3wHfcmA==, + } - '@fastify/merge-json-schemas@0.2.1': - resolution: {integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==} + "@fastify/merge-json-schemas@0.2.1": + resolution: + { + integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==, + } - '@fastify/proxy-addr@5.1.0': - resolution: {integrity: sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==} + "@fastify/proxy-addr@5.1.0": + resolution: + { + integrity: sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==, + } - '@grpc/grpc-js@1.14.4': - resolution: {integrity: sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==} - engines: {node: '>=12.10.0'} + "@grpc/grpc-js@1.14.4": + resolution: + { + integrity: sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==, + } + engines: { node: ">=12.10.0" } - '@grpc/proto-loader@0.8.1': - resolution: {integrity: sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==} - engines: {node: '>=6'} + "@grpc/proto-loader@0.8.1": + resolution: + { + integrity: sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==, + } + engines: { node: ">=6" } hasBin: true - '@hexagon/base64@1.1.28': - resolution: {integrity: sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==} + "@hexagon/base64@1.1.28": + resolution: + { + integrity: sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==, + } - '@humanfs/core@0.19.2': - resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} - engines: {node: '>=18.18.0'} + "@humanfs/core@0.19.2": + resolution: + { + integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==, + } + engines: { node: ">=18.18.0" } - '@humanfs/node@0.16.8': - resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} - engines: {node: '>=18.18.0'} + "@humanfs/node@0.16.8": + resolution: + { + integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==, + } + engines: { node: ">=18.18.0" } - '@humanfs/types@0.15.0': - resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} - engines: {node: '>=18.18.0'} + "@humanfs/types@0.15.0": + resolution: + { + integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==, + } + engines: { node: ">=18.18.0" } - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} + "@humanwhocodes/module-importer@1.0.1": + resolution: + { + integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, + } + engines: { node: ">=12.22" } - '@humanwhocodes/retry@0.4.3': - resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} - engines: {node: '>=18.18'} + "@humanwhocodes/retry@0.4.3": + resolution: + { + integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==, + } + engines: { node: ">=18.18" } - '@isaacs/ttlcache@1.4.1': - resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} - engines: {node: '>=12'} + "@isaacs/ttlcache@1.4.1": + resolution: + { + integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==, + } + engines: { node: ">=12" } - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + "@jest/schemas@29.6.3": + resolution: + { + integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + "@jest/types@29.6.3": + resolution: + { + integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - '@jridgewell/gen-mapping@0.3.13': - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + "@jridgewell/gen-mapping@0.3.13": + resolution: + { + integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, + } - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + "@jridgewell/remapping@2.3.5": + resolution: + { + integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==, + } - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} + "@jridgewell/resolve-uri@3.1.2": + resolution: + { + integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, + } + engines: { node: ">=6.0.0" } - '@jridgewell/source-map@0.3.11': - resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + "@jridgewell/source-map@0.3.11": + resolution: + { + integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==, + } - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + "@jridgewell/sourcemap-codec@1.5.5": + resolution: + { + integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, + } - '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + "@jridgewell/trace-mapping@0.3.31": + resolution: + { + integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, + } - '@js-sdsl/ordered-map@4.4.2': - resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + "@js-sdsl/ordered-map@4.4.2": + resolution: + { + integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==, + } - '@levischuck/tiny-cbor@0.2.11': - resolution: {integrity: sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==} + "@levischuck/tiny-cbor@0.2.11": + resolution: + { + integrity: sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==, + } - '@noble/curves@2.2.0': - resolution: {integrity: sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ==} - engines: {node: '>= 20.19.0'} + "@noble/curves@2.2.0": + resolution: + { + integrity: sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ==, + } + engines: { node: ">= 20.19.0" } - '@noble/curves@2.3.0': - resolution: {integrity: sha512-v7cY+4oWYPQszRj6ZFGzTVL7uP2TaLo1xMhWHzYC5wj0ZhOXQ5x+sBre8rF3hi8cAoi0bh1qXoovoOkdFtvqEg==} - engines: {node: '>= 20.19.0'} + "@noble/curves@2.3.0": + resolution: + { + integrity: sha512-v7cY+4oWYPQszRj6ZFGzTVL7uP2TaLo1xMhWHzYC5wj0ZhOXQ5x+sBre8rF3hi8cAoi0bh1qXoovoOkdFtvqEg==, + } + engines: { node: ">= 20.19.0" } - '@noble/curves@2.4.0': - resolution: {integrity: sha512-P4/62zrgfH33CneE3Dn4WhJVA22YUU0eR51wKIan4NVRvwsA0YnPTwWGpNbpuacSujmSFLvyzpyuR30+fbq2Ew==} - engines: {node: '>= 20.19.0'} + "@noble/curves@2.4.0": + resolution: + { + integrity: sha512-P4/62zrgfH33CneE3Dn4WhJVA22YUU0eR51wKIan4NVRvwsA0YnPTwWGpNbpuacSujmSFLvyzpyuR30+fbq2Ew==, + } + engines: { node: ">= 20.19.0" } - '@noble/hashes@2.2.0': - resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} - engines: {node: '>= 20.19.0'} + "@noble/hashes@2.2.0": + resolution: + { + integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==, + } + engines: { node: ">= 20.19.0" } - '@noble/hashes@2.3.0': - resolution: {integrity: sha512-oN+QwyX7VSHotibwubG3kpzbwKrfnyR6OOO+3Nk/53ADL7FmgHHz4TgrbaYKvvOw09u6QTx0oiH1cNCIOuN0CQ==} - engines: {node: '>= 20.19.0'} + "@noble/hashes@2.3.0": + resolution: + { + integrity: sha512-oN+QwyX7VSHotibwubG3kpzbwKrfnyR6OOO+3Nk/53ADL7FmgHHz4TgrbaYKvvOw09u6QTx0oiH1cNCIOuN0CQ==, + } + engines: { node: ">= 20.19.0" } - '@noble/hashes@2.4.0': - resolution: {integrity: sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==} - engines: {node: '>= 20.19.0'} + "@noble/hashes@2.4.0": + resolution: + { + integrity: sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==, + } + engines: { node: ">= 20.19.0" } - '@opentelemetry/api-logs@0.222.0': - resolution: {integrity: sha512-9mb1If+IF6u0ZVXkHQ6ogEae5HwA6ajIVUgpSDQyRASxft6BSXHvBvPooRle3yFN/fKnCdSOnuu0OC3PLcF6+g==} - engines: {node: '>=8.0.0'} + "@opentelemetry/api-logs@0.222.0": + resolution: + { + integrity: sha512-9mb1If+IF6u0ZVXkHQ6ogEae5HwA6ajIVUgpSDQyRASxft6BSXHvBvPooRle3yFN/fKnCdSOnuu0OC3PLcF6+g==, + } + engines: { node: ">=8.0.0" } - '@opentelemetry/api@1.9.1': - resolution: {integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==} - engines: {node: '>=8.0.0'} + "@opentelemetry/api@1.9.1": + resolution: + { + integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==, + } + engines: { node: ">=8.0.0" } - '@opentelemetry/configuration@0.222.0': - resolution: {integrity: sha512-zNWGmEvyX7CUbS6F6PKi7hf3CF/SffzeBYyWVQAfadZ8hODrvLmqV3IUGVt1SiqyYanRPHc8VuhoO0Qh9OEuug==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/configuration@0.222.0": + resolution: + { + integrity: sha512-zNWGmEvyX7CUbS6F6PKi7hf3CF/SffzeBYyWVQAfadZ8hODrvLmqV3IUGVt1SiqyYanRPHc8VuhoO0Qh9OEuug==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.9.0 + "@opentelemetry/api": ^1.9.0 - '@opentelemetry/context-async-hooks@2.11.0': - resolution: {integrity: sha512-Tr79DyWI8itsBdg+jH+opjfrwLzX+erk1/ExkIwhWoAVjVrJIn2y5+cGjTC0Vy8fyNIA/y8wuJPZwr1T3xCZeQ==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/context-async-hooks@2.11.0": + resolution: + { + integrity: sha512-Tr79DyWI8itsBdg+jH+opjfrwLzX+erk1/ExkIwhWoAVjVrJIn2y5+cGjTC0Vy8fyNIA/y8wuJPZwr1T3xCZeQ==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' + "@opentelemetry/api": ">=1.0.0 <1.10.0" - '@opentelemetry/core@2.11.0': - resolution: {integrity: sha512-7YP44XH0tV6+Mb54x2YGf84i7yi+31MBZlE8JwvozkxyTvXbSp10X7cI7YE49ChJ3shMJoBmCJF3+1QFBJctGA==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/core@2.11.0": + resolution: + { + integrity: sha512-7YP44XH0tV6+Mb54x2YGf84i7yi+31MBZlE8JwvozkxyTvXbSp10X7cI7YE49ChJ3shMJoBmCJF3+1QFBJctGA==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' + "@opentelemetry/api": ">=1.0.0 <1.10.0" - '@opentelemetry/exporter-logs-otlp-grpc@0.222.0': - resolution: {integrity: sha512-HH4Oi/E8HXBKtcjgcVPJGsrg+lSstdw1m93brRdpVj5CjMpyTkv/O0ZYMXP6QXVEaLjjFivtzUu4Y8+i1UJpjw==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/exporter-logs-otlp-grpc@0.222.0": + resolution: + { + integrity: sha512-HH4Oi/E8HXBKtcjgcVPJGsrg+lSstdw1m93brRdpVj5CjMpyTkv/O0ZYMXP6QXVEaLjjFivtzUu4Y8+i1UJpjw==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.3.0 + "@opentelemetry/api": ^1.3.0 - '@opentelemetry/exporter-logs-otlp-http@0.222.0': - resolution: {integrity: sha512-GqwLZohJTf/sttYlOpT1oFTJ9ScYaKnk0sOx4Qe/+KmXYVOa+v94cfnkUkFKDuvTODWhCL50Hz3gvsZD6ngQpg==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/exporter-logs-otlp-http@0.222.0": + resolution: + { + integrity: sha512-GqwLZohJTf/sttYlOpT1oFTJ9ScYaKnk0sOx4Qe/+KmXYVOa+v94cfnkUkFKDuvTODWhCL50Hz3gvsZD6ngQpg==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.3.0 + "@opentelemetry/api": ^1.3.0 - '@opentelemetry/exporter-logs-otlp-proto@0.222.0': - resolution: {integrity: sha512-LlCDJuaznfFPzjHoKXjN/r9T5pgCZpmVheZ/EmwMUhMvpxI7RXDmsdLXoYpl5suYQNkwyXAUZhVEXKe3lev8Hg==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/exporter-logs-otlp-proto@0.222.0": + resolution: + { + integrity: sha512-LlCDJuaznfFPzjHoKXjN/r9T5pgCZpmVheZ/EmwMUhMvpxI7RXDmsdLXoYpl5suYQNkwyXAUZhVEXKe3lev8Hg==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.3.0 + "@opentelemetry/api": ^1.3.0 - '@opentelemetry/exporter-metrics-otlp-grpc@0.222.0': - resolution: {integrity: sha512-nPU2gpQWJfQttf+A71aLkKEOQoO6n6QGs5QTtPagi/rb3Lc1I55bqRXoLQEZsWqWimc8eas2Vo168NkTaByxQw==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/exporter-metrics-otlp-grpc@0.222.0": + resolution: + { + integrity: sha512-nPU2gpQWJfQttf+A71aLkKEOQoO6n6QGs5QTtPagi/rb3Lc1I55bqRXoLQEZsWqWimc8eas2Vo168NkTaByxQw==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.3.0 + "@opentelemetry/api": ^1.3.0 - '@opentelemetry/exporter-metrics-otlp-http@0.222.0': - resolution: {integrity: sha512-6Ko+0bgNP6V4G/RsmNBSk5lO1B/lo9z6tvLpFY3ykPPevXNzFmOW3C9hEmTt0zKCvHovyrol3TYlg4HVb5gwjg==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/exporter-metrics-otlp-http@0.222.0": + resolution: + { + integrity: sha512-6Ko+0bgNP6V4G/RsmNBSk5lO1B/lo9z6tvLpFY3ykPPevXNzFmOW3C9hEmTt0zKCvHovyrol3TYlg4HVb5gwjg==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.3.0 + "@opentelemetry/api": ^1.3.0 - '@opentelemetry/exporter-metrics-otlp-proto@0.222.0': - resolution: {integrity: sha512-s1ZPwS8Ig7cpRmL3kCobPaFbemM81dJ03LNPrsuN32h3mCDvNF2NQ1pRHruOju0P0o1TZ24LkZA685rtQal1KA==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/exporter-metrics-otlp-proto@0.222.0": + resolution: + { + integrity: sha512-s1ZPwS8Ig7cpRmL3kCobPaFbemM81dJ03LNPrsuN32h3mCDvNF2NQ1pRHruOju0P0o1TZ24LkZA685rtQal1KA==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.3.0 + "@opentelemetry/api": ^1.3.0 - '@opentelemetry/exporter-prometheus@0.222.0': - resolution: {integrity: sha512-I7nalnnBZrhlTgjlqsVeEjJGcQCFK5kKAYVk7XTz/cbubvj5fvjLOal/Many0taHF2GIkOWmegsbQ8vbQJjhFg==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/exporter-prometheus@0.222.0": + resolution: + { + integrity: sha512-I7nalnnBZrhlTgjlqsVeEjJGcQCFK5kKAYVk7XTz/cbubvj5fvjLOal/Many0taHF2GIkOWmegsbQ8vbQJjhFg==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.3.0 + "@opentelemetry/api": ^1.3.0 - '@opentelemetry/exporter-trace-otlp-grpc@0.222.0': - resolution: {integrity: sha512-uisilePEdOMa3hIfXW82XXU6FofF8gw3iv+PoboIMWEUBC7XbJB3XnIHSdrSDsqCw3njR/If08qD0yzOY1U9Sg==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/exporter-trace-otlp-grpc@0.222.0": + resolution: + { + integrity: sha512-uisilePEdOMa3hIfXW82XXU6FofF8gw3iv+PoboIMWEUBC7XbJB3XnIHSdrSDsqCw3njR/If08qD0yzOY1U9Sg==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.3.0 + "@opentelemetry/api": ^1.3.0 - '@opentelemetry/exporter-trace-otlp-http@0.222.0': - resolution: {integrity: sha512-RCnPWcHppwiquQ+cV3nWvNwdf0MG1w26e5jewW2T83nTZOlXgcg88sY9ulCVgagGHcq1mj0L0GP6YHgzk2v8oA==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/exporter-trace-otlp-http@0.222.0": + resolution: + { + integrity: sha512-RCnPWcHppwiquQ+cV3nWvNwdf0MG1w26e5jewW2T83nTZOlXgcg88sY9ulCVgagGHcq1mj0L0GP6YHgzk2v8oA==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.3.0 + "@opentelemetry/api": ^1.3.0 - '@opentelemetry/exporter-trace-otlp-proto@0.222.0': - resolution: {integrity: sha512-imLrLzNhnABJt3tUyT63h6MqfZrG3Gdv3TE7+OUQTvwD088RfCUx3rF01lcgfu2KXBFk13vwi0yKZLvFEalkIA==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/exporter-trace-otlp-proto@0.222.0": + resolution: + { + integrity: sha512-imLrLzNhnABJt3tUyT63h6MqfZrG3Gdv3TE7+OUQTvwD088RfCUx3rF01lcgfu2KXBFk13vwi0yKZLvFEalkIA==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.3.0 + "@opentelemetry/api": ^1.3.0 - '@opentelemetry/exporter-zipkin@2.11.0': - resolution: {integrity: sha512-mFibA45yXLEETIj+VcTVycFFe4R91iD41d+r3CU0f3DDWJCrICiHxUIjmYBTCZIuywXEeNo++2lncQeWnH7lWQ==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/exporter-zipkin@2.11.0": + resolution: + { + integrity: sha512-mFibA45yXLEETIj+VcTVycFFe4R91iD41d+r3CU0f3DDWJCrICiHxUIjmYBTCZIuywXEeNo++2lncQeWnH7lWQ==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.0.0 + "@opentelemetry/api": ^1.0.0 - '@opentelemetry/instrumentation@0.222.0': - resolution: {integrity: sha512-fhbRDuAgzPKpq1k5+hX3uS+3QAYNca0on0Ngot/R8dDsQtuFaADeZnG2uSgxABuvcI7S2phAaRhbct9jieeKZw==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/instrumentation@0.222.0": + resolution: + { + integrity: sha512-fhbRDuAgzPKpq1k5+hX3uS+3QAYNca0on0Ngot/R8dDsQtuFaADeZnG2uSgxABuvcI7S2phAaRhbct9jieeKZw==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.3.0 + "@opentelemetry/api": ^1.3.0 - '@opentelemetry/otlp-exporter-base@0.222.0': - resolution: {integrity: sha512-YbywG3veEm2Fb6TbdxRkuquWob6eVWXuA8/Ba1tXz9jHfUqpdE3keilOHEtPboC4CvS1bjeeVfNkWGOOrLj+lw==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/otlp-exporter-base@0.222.0": + resolution: + { + integrity: sha512-YbywG3veEm2Fb6TbdxRkuquWob6eVWXuA8/Ba1tXz9jHfUqpdE3keilOHEtPboC4CvS1bjeeVfNkWGOOrLj+lw==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.3.0 + "@opentelemetry/api": ^1.3.0 - '@opentelemetry/otlp-grpc-exporter-base@0.222.0': - resolution: {integrity: sha512-Kw5WqDBYYpCgY+edHWZS/Jp3bdguqNkCyEWOsqFhf8RmtcEuWYzPFA9i+L6UsNoJXTs8ngeQB6dwELH1czNYjA==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/otlp-grpc-exporter-base@0.222.0": + resolution: + { + integrity: sha512-Kw5WqDBYYpCgY+edHWZS/Jp3bdguqNkCyEWOsqFhf8RmtcEuWYzPFA9i+L6UsNoJXTs8ngeQB6dwELH1czNYjA==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.3.0 + "@opentelemetry/api": ^1.3.0 - '@opentelemetry/otlp-transformer@0.222.0': - resolution: {integrity: sha512-/F3BZ89+CJQnZkMh2tCrtcdB+XT2Dxhj4FFE+WPQ//413hmFL0/RfEX6vgOIWGhiSzrkHWTK3+6SiT7K5/g/jQ==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/otlp-transformer@0.222.0": + resolution: + { + integrity: sha512-/F3BZ89+CJQnZkMh2tCrtcdB+XT2Dxhj4FFE+WPQ//413hmFL0/RfEX6vgOIWGhiSzrkHWTK3+6SiT7K5/g/jQ==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': ^1.3.0 + "@opentelemetry/api": ^1.3.0 - '@opentelemetry/propagator-b3@2.11.0': - resolution: {integrity: sha512-ldyRZXx6qsqu9Spqd7rVxo6SNAUJqP8Ir3vwIi4N8xyZLXNl/2XeQmIHvFneiVOqNwWkU+JGFg2O9/T1fefU0w==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/propagator-b3@2.11.0": + resolution: + { + integrity: sha512-ldyRZXx6qsqu9Spqd7rVxo6SNAUJqP8Ir3vwIi4N8xyZLXNl/2XeQmIHvFneiVOqNwWkU+JGFg2O9/T1fefU0w==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' + "@opentelemetry/api": ">=1.0.0 <1.10.0" - '@opentelemetry/propagator-jaeger@2.11.0': - resolution: {integrity: sha512-RUOqgoIqXOPQTOhpBrs07Y8sBlxVoLY5Fka6ueZ0prW+k6fWQsba/nHDY4gm+gmfuwtRqbX5Y9YKhDvktjbIqQ==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/propagator-jaeger@2.11.0": + resolution: + { + integrity: sha512-RUOqgoIqXOPQTOhpBrs07Y8sBlxVoLY5Fka6ueZ0prW+k6fWQsba/nHDY4gm+gmfuwtRqbX5Y9YKhDvktjbIqQ==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' + "@opentelemetry/api": ">=1.0.0 <1.10.0" - '@opentelemetry/resources@2.11.0': - resolution: {integrity: sha512-Ie7+8q8MDF4FAEQCKVMTx3ReUvxiIAgIiiW3c9JdmP8+HMcDy20puT+AHjexnExgnbvBxjQ9fjkFDWrikJ2jQA==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/resources@2.11.0": + resolution: + { + integrity: sha512-Ie7+8q8MDF4FAEQCKVMTx3ReUvxiIAgIiiW3c9JdmP8+HMcDy20puT+AHjexnExgnbvBxjQ9fjkFDWrikJ2jQA==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' + "@opentelemetry/api": ">=1.3.0 <1.10.0" - '@opentelemetry/sdk-logs@0.222.0': - resolution: {integrity: sha512-+19YHODIjaUCArxleaJtuufFZVpz/xvvK+VllQqE+W8hHolxdoRwHfK/s667zezwh1hkx6FFF+oYzetYgqK+Bg==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/sdk-logs@0.222.0": + resolution: + { + integrity: sha512-+19YHODIjaUCArxleaJtuufFZVpz/xvvK+VllQqE+W8hHolxdoRwHfK/s667zezwh1hkx6FFF+oYzetYgqK+Bg==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': '>=1.4.0 <1.10.0' + "@opentelemetry/api": ">=1.4.0 <1.10.0" - '@opentelemetry/sdk-metrics@2.11.0': - resolution: {integrity: sha512-7GXXcObyHyDUUSG+L+kJoquty01bzm7ivE7+SSgXXJcHuPzGviptxwARmI2c+bnnxjexGQbJnyNlN8HxBP/Y7A==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/sdk-metrics@2.11.0": + resolution: + { + integrity: sha512-7GXXcObyHyDUUSG+L+kJoquty01bzm7ivE7+SSgXXJcHuPzGviptxwARmI2c+bnnxjexGQbJnyNlN8HxBP/Y7A==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': '>=1.9.0 <1.10.0' + "@opentelemetry/api": ">=1.9.0 <1.10.0" - '@opentelemetry/sdk-node@0.222.0': - resolution: {integrity: sha512-t8tlFN/ezYV7iI4k6u3t2jFbIReX99Z0iVMVSYLJscE4McxIW9YGHhdOldeY1elHeoq8mjEO4B9s4Fk7+zJbsg==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/sdk-node@0.222.0": + resolution: + { + integrity: sha512-t8tlFN/ezYV7iI4k6u3t2jFbIReX99Z0iVMVSYLJscE4McxIW9YGHhdOldeY1elHeoq8mjEO4B9s4Fk7+zJbsg==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' + "@opentelemetry/api": ">=1.3.0 <1.10.0" - '@opentelemetry/sdk-trace-base@2.11.0': - resolution: {integrity: sha512-H19x/TX/LZdqiYOjM7fqtSxwlplC5pgelavqbQdHbhdq0q/AI/TGkM2dfGuuynTXmJPeF2HoZVoPDu+TGoW78A==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/sdk-trace-base@2.11.0": + resolution: + { + integrity: sha512-H19x/TX/LZdqiYOjM7fqtSxwlplC5pgelavqbQdHbhdq0q/AI/TGkM2dfGuuynTXmJPeF2HoZVoPDu+TGoW78A==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' + "@opentelemetry/api": ">=1.3.0 <1.10.0" - '@opentelemetry/sdk-trace-node@2.11.0': - resolution: {integrity: sha512-CuvCMJmZxswhNLlM2LfuLOW3h3fZujA4hsG4B+Sz4dX2zvaXO8Ng74cnDHWD64gLszTlhiG3c0iNUjj4g+0/sA==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/sdk-trace-node@2.11.0": + resolution: + { + integrity: sha512-CuvCMJmZxswhNLlM2LfuLOW3h3fZujA4hsG4B+Sz4dX2zvaXO8Ng74cnDHWD64gLszTlhiG3c0iNUjj4g+0/sA==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' + "@opentelemetry/api": ">=1.0.0 <1.10.0" - '@opentelemetry/sdk-trace@2.11.0': - resolution: {integrity: sha512-fFnTqGm8/G73GQVnxYi7LXa1ZVYEUvgL6XI1LpvV0bPC7WQ/ZGgKxCSl8FnlZBKto9JHHEFTO6s6CUpvvtwFrA==} - engines: {node: ^18.19.0 || >=20.6.0} + "@opentelemetry/sdk-trace@2.11.0": + resolution: + { + integrity: sha512-fFnTqGm8/G73GQVnxYi7LXa1ZVYEUvgL6XI1LpvV0bPC7WQ/ZGgKxCSl8FnlZBKto9JHHEFTO6s6CUpvvtwFrA==, + } + engines: { node: ^18.19.0 || >=20.6.0 } peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' + "@opentelemetry/api": ">=1.3.0 <1.10.0" - '@opentelemetry/semantic-conventions@1.43.0': - resolution: {integrity: sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==} - engines: {node: '>=14'} + "@opentelemetry/semantic-conventions@1.43.0": + resolution: + { + integrity: sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==, + } + engines: { node: ">=14" } - '@oxc-project/types@0.146.0': - resolution: {integrity: sha512-XC0QsnnhVe7sLIWmYmdPw7x5P0h4W8vUU3Nv1ySgWXtvCz8NizoAEpGXA0sOYoJQV2Rl13LgURAHQ5cI5ILCSA==} + "@oxc-project/types@0.146.0": + resolution: + { + integrity: sha512-XC0QsnnhVe7sLIWmYmdPw7x5P0h4W8vUU3Nv1ySgWXtvCz8NizoAEpGXA0sOYoJQV2Rl13LgURAHQ5cI5ILCSA==, + } - '@peculiar/asn1-android@2.9.4': - resolution: {integrity: sha512-SYHm4SoWSI0nRCoos6jpGusIqhPH9bbGBqv7ohlZ+H6BunrDzzQPk2ePgDuEUzV82OdvbLgtW4twUDwhU9P3YQ==} - engines: {node: '>=14'} + "@peculiar/asn1-android@2.9.4": + resolution: + { + integrity: sha512-SYHm4SoWSI0nRCoos6jpGusIqhPH9bbGBqv7ohlZ+H6BunrDzzQPk2ePgDuEUzV82OdvbLgtW4twUDwhU9P3YQ==, + } + engines: { node: ">=14" } - '@peculiar/asn1-cms@2.9.4': - resolution: {integrity: sha512-cben7oxmQsUGZqotus7yt0srYdncOT6RNWcTQ77T2RFOXejYVYkXadrfePdRcrVpO9K95IRLKKglG2k38jKXuw==} - engines: {node: '>=14'} + "@peculiar/asn1-cms@2.9.4": + resolution: + { + integrity: sha512-cben7oxmQsUGZqotus7yt0srYdncOT6RNWcTQ77T2RFOXejYVYkXadrfePdRcrVpO9K95IRLKKglG2k38jKXuw==, + } + engines: { node: ">=14" } - '@peculiar/asn1-csr@2.9.4': - resolution: {integrity: sha512-xd4YN4vpRjkDAQWVfZZkeu12IEND7DOpkqaHSIHxZl1uggUNa9Ju0QxY2jHvDAS9pP0zhRBytg8ifsnGo3V0jw==} - engines: {node: '>=14'} + "@peculiar/asn1-csr@2.9.4": + resolution: + { + integrity: sha512-xd4YN4vpRjkDAQWVfZZkeu12IEND7DOpkqaHSIHxZl1uggUNa9Ju0QxY2jHvDAS9pP0zhRBytg8ifsnGo3V0jw==, + } + engines: { node: ">=14" } - '@peculiar/asn1-ecc@2.9.4': - resolution: {integrity: sha512-JJXefFshRAuVAjWQo/39bkg1ywc1VaiO44S8RRC+Ykvf/u2KDmYffoDb0ZBPCR5uJy4AGKQhl8mX+Q8ShcWaXQ==} - engines: {node: '>=14'} + "@peculiar/asn1-ecc@2.9.4": + resolution: + { + integrity: sha512-JJXefFshRAuVAjWQo/39bkg1ywc1VaiO44S8RRC+Ykvf/u2KDmYffoDb0ZBPCR5uJy4AGKQhl8mX+Q8ShcWaXQ==, + } + engines: { node: ">=14" } - '@peculiar/asn1-pfx@2.9.4': - resolution: {integrity: sha512-khuGzHTzNzk4GDlIBEILyIs6Lce0yn0ZBdoI9v93kmNncfZRhD+AQ5ODFqdhvoE8cMJF/JMTQ8yA+t1D14kqCw==} - engines: {node: '>=14'} + "@peculiar/asn1-pfx@2.9.4": + resolution: + { + integrity: sha512-khuGzHTzNzk4GDlIBEILyIs6Lce0yn0ZBdoI9v93kmNncfZRhD+AQ5ODFqdhvoE8cMJF/JMTQ8yA+t1D14kqCw==, + } + engines: { node: ">=14" } - '@peculiar/asn1-pkcs8@2.9.4': - resolution: {integrity: sha512-duRdotlUx9eDZe6QrQpQKl61RbWykCHBCkKayP8V8XdEFwlKHZ8qGGDMyS6Pye7OX7nLFttTTpRkJeet78ckwQ==} - engines: {node: '>=14'} + "@peculiar/asn1-pkcs8@2.9.4": + resolution: + { + integrity: sha512-duRdotlUx9eDZe6QrQpQKl61RbWykCHBCkKayP8V8XdEFwlKHZ8qGGDMyS6Pye7OX7nLFttTTpRkJeet78ckwQ==, + } + engines: { node: ">=14" } - '@peculiar/asn1-pkcs9@2.9.4': - resolution: {integrity: sha512-kaL4cNxBpdQE2dKlyZBqz4ygCrwffO+8wfoxTEqM1Z8RadvCeELBRzcv0dzM8aY9azHMwODO5nxU65zXmhToOQ==} - engines: {node: '>=14'} + "@peculiar/asn1-pkcs9@2.9.4": + resolution: + { + integrity: sha512-kaL4cNxBpdQE2dKlyZBqz4ygCrwffO+8wfoxTEqM1Z8RadvCeELBRzcv0dzM8aY9azHMwODO5nxU65zXmhToOQ==, + } + engines: { node: ">=14" } - '@peculiar/asn1-rsa@2.9.4': - resolution: {integrity: sha512-pZ96eD1PptovcWQ/GSmuNFXd/7EQJNlKfDaNCyE2rx3W0v6QFelkzquVqRSRyyDXXCYD69ZXJDzZ8GhIiQzKoA==} - engines: {node: '>=14'} + "@peculiar/asn1-rsa@2.9.4": + resolution: + { + integrity: sha512-pZ96eD1PptovcWQ/GSmuNFXd/7EQJNlKfDaNCyE2rx3W0v6QFelkzquVqRSRyyDXXCYD69ZXJDzZ8GhIiQzKoA==, + } + engines: { node: ">=14" } - '@peculiar/asn1-schema@2.9.4': - resolution: {integrity: sha512-GjzePcT9Iw8NzeOPf73iNS9xM+TBhd/FilAfP+RQGkTMQJTVWtytN3JHJACCjf/ABNau5S7mS3g+DcuxmRgYEg==} - engines: {node: '>=14'} + "@peculiar/asn1-schema@2.9.4": + resolution: + { + integrity: sha512-GjzePcT9Iw8NzeOPf73iNS9xM+TBhd/FilAfP+RQGkTMQJTVWtytN3JHJACCjf/ABNau5S7mS3g+DcuxmRgYEg==, + } + engines: { node: ">=14" } - '@peculiar/asn1-x509-attr@2.9.4': - resolution: {integrity: sha512-ehQXbpQaQYycgu8OrvigwSPTFfVRcu0ECNYCWw+yzBp02Lw5paRqzzhUpfOgO2K38+WfFZuEz/0RPtam5g0OMg==} - engines: {node: '>=14'} + "@peculiar/asn1-x509-attr@2.9.4": + resolution: + { + integrity: sha512-ehQXbpQaQYycgu8OrvigwSPTFfVRcu0ECNYCWw+yzBp02Lw5paRqzzhUpfOgO2K38+WfFZuEz/0RPtam5g0OMg==, + } + engines: { node: ">=14" } - '@peculiar/asn1-x509@2.9.4': - resolution: {integrity: sha512-CxhBo/RdEbMMob7T31ZdQjGuoyRFLVwrDzTn25bihzBasRg9kRm/0IxIPvhgQtcK/9dNcO1XQL2fuPugwELL0Q==} - engines: {node: '>=14'} + "@peculiar/asn1-x509@2.9.4": + resolution: + { + integrity: sha512-CxhBo/RdEbMMob7T31ZdQjGuoyRFLVwrDzTn25bihzBasRg9kRm/0IxIPvhgQtcK/9dNcO1XQL2fuPugwELL0Q==, + } + engines: { node: ">=14" } - '@peculiar/utils@2.0.3': - resolution: {integrity: sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==} + "@peculiar/utils@2.0.3": + resolution: + { + integrity: sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==, + } - '@peculiar/x509@1.14.3': - resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==} - engines: {node: '>=20.0.0'} + "@peculiar/x509@1.14.3": + resolution: + { + integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==, + } + engines: { node: ">=20.0.0" } - '@pinojs/redact@0.4.0': - resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} + "@pinojs/redact@0.4.0": + resolution: + { + integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==, + } - '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + "@protobufjs/aspromise@1.1.2": + resolution: + { + integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==, + } - '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + "@protobufjs/base64@1.1.2": + resolution: + { + integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==, + } - '@protobufjs/codegen@2.0.5': - resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==} + "@protobufjs/codegen@2.0.5": + resolution: + { + integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==, + } - '@protobufjs/eventemitter@1.1.1': - resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==} + "@protobufjs/eventemitter@1.1.1": + resolution: + { + integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==, + } - '@protobufjs/fetch@1.1.1': - resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==} + "@protobufjs/fetch@1.1.1": + resolution: + { + integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==, + } - '@protobufjs/float@1.0.2': - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + "@protobufjs/float@1.0.2": + resolution: + { + integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==, + } - '@protobufjs/path@1.1.2': - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + "@protobufjs/path@1.1.2": + resolution: + { + integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==, + } - '@protobufjs/pool@1.1.0': - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + "@protobufjs/pool@1.1.0": + resolution: + { + integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==, + } - '@protobufjs/utf8@1.1.2': - resolution: {integrity: sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==} + "@protobufjs/utf8@1.1.2": + resolution: + { + integrity: sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==, + } - '@react-native/assets-registry@0.86.3': - resolution: {integrity: sha512-TDhgCZA4wjJg84d5A9swiOQYPIWSKEEVdg9IwMFZDupQzW/F3QoLUrfAJOcalgqTDA9/buTB8awhE3Whwg6u9Q==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + "@react-native/assets-registry@0.86.3": + resolution: + { + integrity: sha512-TDhgCZA4wjJg84d5A9swiOQYPIWSKEEVdg9IwMFZDupQzW/F3QoLUrfAJOcalgqTDA9/buTB8awhE3Whwg6u9Q==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } - '@react-native/babel-plugin-codegen@0.86.3': - resolution: {integrity: sha512-O6Xza4JBGPIU8J7YbKTyBoYL4thpy8jMW/oaLDWdAyOwYHKIjK47pAL5HUEbOe2bWz2PEKjbYRF2ApkJv1ottQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + "@react-native/babel-plugin-codegen@0.86.3": + resolution: + { + integrity: sha512-O6Xza4JBGPIU8J7YbKTyBoYL4thpy8jMW/oaLDWdAyOwYHKIjK47pAL5HUEbOe2bWz2PEKjbYRF2ApkJv1ottQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } - '@react-native/codegen@0.86.3': - resolution: {integrity: sha512-Ux4jHi0fh+bdtVEcL0gaPLbY56V+SvFUDl/8sRAE1jdb4k+o7fT/4Nc29yz4X+qfjstkSqObQTMBGhdzxH9JvA==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + "@react-native/codegen@0.86.3": + resolution: + { + integrity: sha512-Ux4jHi0fh+bdtVEcL0gaPLbY56V+SvFUDl/8sRAE1jdb4k+o7fT/4Nc29yz4X+qfjstkSqObQTMBGhdzxH9JvA==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } peerDependencies: - '@babel/core': '*' + "@babel/core": "*" - '@react-native/community-cli-plugin@0.86.3': - resolution: {integrity: sha512-qSDL9LQc5mZSZPNczT95WU9YQuPzxBklgON9vLhhqfI0yWIwKInqFx88dQ/uiEXBtf0yossthaQIqA4Ml6bF6g==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + "@react-native/community-cli-plugin@0.86.3": + resolution: + { + integrity: sha512-qSDL9LQc5mZSZPNczT95WU9YQuPzxBklgON9vLhhqfI0yWIwKInqFx88dQ/uiEXBtf0yossthaQIqA4Ml6bF6g==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } peerDependencies: - '@react-native-community/cli': '*' - '@react-native/metro-config': 0.86.3 + "@react-native-community/cli": "*" + "@react-native/metro-config": 0.86.3 peerDependenciesMeta: - '@react-native-community/cli': + "@react-native-community/cli": optional: true - '@react-native/metro-config': + "@react-native/metro-config": optional: true - '@react-native/debugger-frontend@0.86.3': - resolution: {integrity: sha512-TQmeofQ0PcuylhhlleOeuzHYZfbrgm3gayXzowqUEzgRisTm1D40/J3ggqs7XkQi5HP5ZA3n8dHmKL9vIzPcsw==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + "@react-native/debugger-frontend@0.86.3": + resolution: + { + integrity: sha512-TQmeofQ0PcuylhhlleOeuzHYZfbrgm3gayXzowqUEzgRisTm1D40/J3ggqs7XkQi5HP5ZA3n8dHmKL9vIzPcsw==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } - '@react-native/debugger-shell@0.86.3': - resolution: {integrity: sha512-O4ds+J7xZfxkbih9T+cAGegBdvKSPKYJm/lDgC9CpEjFMkmzWTpVLU3Qsv9sqZuo58z+sGhIcJfPsCFFWHpqbQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + "@react-native/debugger-shell@0.86.3": + resolution: + { + integrity: sha512-O4ds+J7xZfxkbih9T+cAGegBdvKSPKYJm/lDgC9CpEjFMkmzWTpVLU3Qsv9sqZuo58z+sGhIcJfPsCFFWHpqbQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } - '@react-native/dev-middleware@0.86.3': - resolution: {integrity: sha512-LiEPTqTg/63bYUnrPyHLfjTDCNhA/+CUqI1+DsA9tYyewtSbULd5awsva6SgE10I+2iMhgKXS3ymkhU/kSCrGA==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + "@react-native/dev-middleware@0.86.3": + resolution: + { + integrity: sha512-LiEPTqTg/63bYUnrPyHLfjTDCNhA/+CUqI1+DsA9tYyewtSbULd5awsva6SgE10I+2iMhgKXS3ymkhU/kSCrGA==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } - '@react-native/gradle-plugin@0.86.3': - resolution: {integrity: sha512-lxmx0GqLEWRIpZfpYFXlYVIs3ENQwaW6Vmp6oi29l2GoQJ1wZfFZRdMimDWlGEk8LKfHar3QH3iaPMkTcK9lEQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + "@react-native/gradle-plugin@0.86.3": + resolution: + { + integrity: sha512-lxmx0GqLEWRIpZfpYFXlYVIs3ENQwaW6Vmp6oi29l2GoQJ1wZfFZRdMimDWlGEk8LKfHar3QH3iaPMkTcK9lEQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } - '@react-native/js-polyfills@0.86.3': - resolution: {integrity: sha512-eYIJ0es967+tePBFQDnl/gidVFxLns3fnbiK6rxscQrGodvuUO6hwxpQnfNynJ8MjbbndImXihXjcnJdc7SzJg==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + "@react-native/js-polyfills@0.86.3": + resolution: + { + integrity: sha512-eYIJ0es967+tePBFQDnl/gidVFxLns3fnbiK6rxscQrGodvuUO6hwxpQnfNynJ8MjbbndImXihXjcnJdc7SzJg==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } - '@react-native/normalize-colors@0.86.3': - resolution: {integrity: sha512-Cv3CDkprb67GrzuaS9BGbBJC/6G4lIw3nyKOHRKTqTTum4bn37y5+R0Z04L8mcbQN85eEohNrRwb7IOM4j6uvg==} + "@react-native/normalize-colors@0.86.3": + resolution: + { + integrity: sha512-Cv3CDkprb67GrzuaS9BGbBJC/6G4lIw3nyKOHRKTqTTum4bn37y5+R0Z04L8mcbQN85eEohNrRwb7IOM4j6uvg==, + } - '@react-native/virtualized-lists@0.86.3': - resolution: {integrity: sha512-1j44NEyNn05Ut40vHAmoSWbsIcybFkMAOBTwQt1PrESyfSS+qBoyU1LGIogNva0VIa0rQyEC5PzbA7R4/7Nhyw==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + "@react-native/virtualized-lists@0.86.3": + resolution: + { + integrity: sha512-1j44NEyNn05Ut40vHAmoSWbsIcybFkMAOBTwQt1PrESyfSS+qBoyU1LGIogNva0VIa0rQyEC5PzbA7R4/7Nhyw==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } peerDependencies: - '@types/react': ^19.2.0 - react: '*' + "@types/react": ^19.2.0 + react: "*" react-native: 0.86.3 peerDependenciesMeta: - '@types/react': + "@types/react": optional: true - '@redis/bloom@5.12.1': - resolution: {integrity: sha512-PUUfv+ms7jgPSBVoo/DN4AkPHj4D5TZSd6SbJX7egzBplkYUcKmHRE8RKia7UtZ8bSQbLguLvxVO+asKtQfZWA==} - engines: {node: '>= 18.19.0'} + "@redis/bloom@5.12.1": + resolution: + { + integrity: sha512-PUUfv+ms7jgPSBVoo/DN4AkPHj4D5TZSd6SbJX7egzBplkYUcKmHRE8RKia7UtZ8bSQbLguLvxVO+asKtQfZWA==, + } + engines: { node: ">= 18.19.0" } peerDependencies: - '@redis/client': ^5.12.1 + "@redis/client": ^5.12.1 - '@redis/client@5.12.1': - resolution: {integrity: sha512-7aPGWeqA3uFm43o19umzdl16CEjK/JQGtSXVPevplTaOU3VJA/rseBC1QvYUz9lLDIMBimc4SW/zrW4S89BaCA==} - engines: {node: '>= 18.19.0'} + "@redis/client@5.12.1": + resolution: + { + integrity: sha512-7aPGWeqA3uFm43o19umzdl16CEjK/JQGtSXVPevplTaOU3VJA/rseBC1QvYUz9lLDIMBimc4SW/zrW4S89BaCA==, + } + engines: { node: ">= 18.19.0" } peerDependencies: - '@node-rs/xxhash': ^1.1.0 - '@opentelemetry/api': '>=1 <2' + "@node-rs/xxhash": ^1.1.0 + "@opentelemetry/api": ">=1 <2" peerDependenciesMeta: - '@node-rs/xxhash': + "@node-rs/xxhash": optional: true - '@opentelemetry/api': + "@opentelemetry/api": optional: true - '@redis/json@5.12.1': - resolution: {integrity: sha512-eOze75esLve4vfqDel7aMX08CNaiLLQS2fV8mpRN9NxPe1rVR4vQyYiW/OgtGUysF6QOr9ANhfxABKNOJfXdKg==} - engines: {node: '>= 18.19.0'} + "@redis/json@5.12.1": + resolution: + { + integrity: sha512-eOze75esLve4vfqDel7aMX08CNaiLLQS2fV8mpRN9NxPe1rVR4vQyYiW/OgtGUysF6QOr9ANhfxABKNOJfXdKg==, + } + engines: { node: ">= 18.19.0" } peerDependencies: - '@redis/client': ^5.12.1 + "@redis/client": ^5.12.1 - '@redis/search@5.12.1': - resolution: {integrity: sha512-ItlxbxC9cKI6IU1TLWoczwJCRb6TdmkEpWv05UrPawqaAnWGRu3rcIqsc5vN483T2fSociuyV1UkWIL5I4//2w==} - engines: {node: '>= 18.19.0'} + "@redis/search@5.12.1": + resolution: + { + integrity: sha512-ItlxbxC9cKI6IU1TLWoczwJCRb6TdmkEpWv05UrPawqaAnWGRu3rcIqsc5vN483T2fSociuyV1UkWIL5I4//2w==, + } + engines: { node: ">= 18.19.0" } peerDependencies: - '@redis/client': ^5.12.1 + "@redis/client": ^5.12.1 - '@redis/time-series@5.12.1': - resolution: {integrity: sha512-c6JL6E3EcZJuNqKFz+KM+l9l5mpcQiKvTwgA3blt5glWJ8hjDk0yeHN3beE/MpqYIQ8UEX44ItQzgkE/gCBELQ==} - engines: {node: '>= 18.19.0'} + "@redis/time-series@5.12.1": + resolution: + { + integrity: sha512-c6JL6E3EcZJuNqKFz+KM+l9l5mpcQiKvTwgA3blt5glWJ8hjDk0yeHN3beE/MpqYIQ8UEX44ItQzgkE/gCBELQ==, + } + engines: { node: ">= 18.19.0" } peerDependencies: - '@redis/client': ^5.12.1 + "@redis/client": ^5.12.1 - '@rolldown/binding-android-arm-eabi@1.2.5': - resolution: {integrity: sha512-DLe/i+l8ynIBY7XEQ191TeZvCoowIGa18R+dIV30GW7DiOtp74i/xX8hs8GUjW5ARV7VZuie3d6AumSmCwbeRA==} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-android-arm-eabi@1.2.5": + resolution: + { + integrity: sha512-DLe/i+l8ynIBY7XEQ191TeZvCoowIGa18R+dIV30GW7DiOtp74i/xX8hs8GUjW5ARV7VZuie3d6AumSmCwbeRA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm] os: [android] - '@rolldown/binding-android-arm64@1.2.5': - resolution: {integrity: sha512-zXcwKlQApYAOELHd8PwKDFkagYF9Wy4e0RJ+0qnzl9Pjnpj75TEG8ufv40p2J7kCEfwZAsNiuzRIyNNMWT38ig==} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-android-arm64@1.2.5": + resolution: + { + integrity: sha512-zXcwKlQApYAOELHd8PwKDFkagYF9Wy4e0RJ+0qnzl9Pjnpj75TEG8ufv40p2J7kCEfwZAsNiuzRIyNNMWT38ig==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.2.5': - resolution: {integrity: sha512-dK4QakI42nzWgJT5sm4y4y/O//D4OxM75/cH28RLV+nzIN9AY+YsbuUVrUTjlLjXR6vpyxFbSsbmNuJ6BP9sww==} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-darwin-arm64@1.2.5": + resolution: + { + integrity: sha512-dK4QakI42nzWgJT5sm4y4y/O//D4OxM75/cH28RLV+nzIN9AY+YsbuUVrUTjlLjXR6vpyxFbSsbmNuJ6BP9sww==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.2.5': - resolution: {integrity: sha512-fqSALaUu1Wjd1nK2uW2kJDWdLCc8lx1IcY+MTY26Aurfdx19anlzhqXOgCFbBFQnlFDTn4TC1/7Nz4Bl2mLP3A==} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-darwin-x64@1.2.5": + resolution: + { + integrity: sha512-fqSALaUu1Wjd1nK2uW2kJDWdLCc8lx1IcY+MTY26Aurfdx19anlzhqXOgCFbBFQnlFDTn4TC1/7Nz4Bl2mLP3A==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.2.5': - resolution: {integrity: sha512-/vCnNxlkxs9tKxNDcyWUePpJ/PgTzxIaVhoM5SmG8UV+GR/IcPam4VYxi7GIMo7PSDuNqlJqvprqii9NqqVCMw==} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-freebsd-x64@1.2.5": + resolution: + { + integrity: sha512-/vCnNxlkxs9tKxNDcyWUePpJ/PgTzxIaVhoM5SmG8UV+GR/IcPam4VYxi7GIMo7PSDuNqlJqvprqii9NqqVCMw==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.2.5': - resolution: {integrity: sha512-abk0NLA519LxRCszmbE0jYKuQ9YPocOXTiOXOo6Yr+YAT95VH+PtqYAjOJvGKt3viEd/x4qzabAlwd5bHOOARg==} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-linux-arm-gnueabihf@1.2.5": + resolution: + { + integrity: sha512-abk0NLA519LxRCszmbE0jYKuQ9YPocOXTiOXOo6Yr+YAT95VH+PtqYAjOJvGKt3viEd/x4qzabAlwd5bHOOARg==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.2.5': - resolution: {integrity: sha512-Y7eALiJ8lr0M2HH103Js+g7V34wf6snlpZLAsHI90uLhr3PVlNsbFVAXJC9d/V6BnPyKtpSwI+NcB/RLxsQxuA==} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-linux-arm64-gnu@1.2.5": + resolution: + { + integrity: sha512-Y7eALiJ8lr0M2HH103Js+g7V34wf6snlpZLAsHI90uLhr3PVlNsbFVAXJC9d/V6BnPyKtpSwI+NcB/RLxsQxuA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.2.5': - resolution: {integrity: sha512-xMvZgnbZg4YVnR/AX2b3oOPDTFYJvUVaJg5FedA/LuvexAtXibZQej4cnTkw3rjsJ/ggUROB64TdtETiim+FYA==} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-linux-arm64-musl@1.2.5": + resolution: + { + integrity: sha512-xMvZgnbZg4YVnR/AX2b3oOPDTFYJvUVaJg5FedA/LuvexAtXibZQej4cnTkw3rjsJ/ggUROB64TdtETiim+FYA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.2.5': - resolution: {integrity: sha512-GRjeqTUDHTo5GwntsLaAMcBahG3nlpjftXWZLN73HiYQlhwEowvarFgQnRnQZtIp4keXX7quXFbG38uPZBa2EA==} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-linux-ppc64-gnu@1.2.5": + resolution: + { + integrity: sha512-GRjeqTUDHTo5GwntsLaAMcBahG3nlpjftXWZLN73HiYQlhwEowvarFgQnRnQZtIp4keXX7quXFbG38uPZBa2EA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.5': - resolution: {integrity: sha512-vLNTR45F2Uwc8AufkNXPmB4VliaXs+FvcheEogIzOXzO4l+LzieXF5A/TWxLy5HtqpsRCHUfd0lPVrrdgXdLHQ==} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-linux-s390x-gnu@1.2.5": + resolution: + { + integrity: sha512-vLNTR45F2Uwc8AufkNXPmB4VliaXs+FvcheEogIzOXzO4l+LzieXF5A/TWxLy5HtqpsRCHUfd0lPVrrdgXdLHQ==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.2.5': - resolution: {integrity: sha512-Mgj59/HTuYeK9Gz2MA+mBWKnHsAgkBSec15ZMb1st3oIfFbX7gCjOae7GydHhzcyQi9Z/7M1QuN9bR3oFqF0jQ==} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-linux-x64-gnu@1.2.5": + resolution: + { + integrity: sha512-Mgj59/HTuYeK9Gz2MA+mBWKnHsAgkBSec15ZMb1st3oIfFbX7gCjOae7GydHhzcyQi9Z/7M1QuN9bR3oFqF0jQ==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.2.5': - resolution: {integrity: sha512-mY8AP0/ichsbhAxGnLa3d3+MwV0EfgrPND2bplI3Ym8T6R2pJ0N87bvrKVwNXmdy3jnr6eQBecdqx/HMknBmpA==} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-linux-x64-musl@1.2.5": + resolution: + { + integrity: sha512-mY8AP0/ichsbhAxGnLa3d3+MwV0EfgrPND2bplI3Ym8T6R2pJ0N87bvrKVwNXmdy3jnr6eQBecdqx/HMknBmpA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.2.5': - resolution: {integrity: sha512-8SLssA2oweAxyRgDp789ACfRb/3P+zNRJpzZxSizxF9m8NUDQ4+3xjo8ttjhVGGw6Qxb70oZiEtIjaKikCO7Yw==} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-openharmony-arm64@1.2.5": + resolution: + { + integrity: sha512-8SLssA2oweAxyRgDp789ACfRb/3P+zNRJpzZxSizxF9m8NUDQ4+3xjo8ttjhVGGw6Qxb70oZiEtIjaKikCO7Yw==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [openharmony] - '@rolldown/binding-win32-arm64-msvc@1.2.5': - resolution: {integrity: sha512-vGbruD5zquhoc8D9SViXgN2FBJtNdTyQ4DtG+SWiEGlJiAzoKcZ2xp+xuXCffhubVdt0NJlTZqkeRuERy7g8Cw==} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-win32-arm64-msvc@1.2.5": + resolution: + { + integrity: sha512-vGbruD5zquhoc8D9SViXgN2FBJtNdTyQ4DtG+SWiEGlJiAzoKcZ2xp+xuXCffhubVdt0NJlTZqkeRuERy7g8Cw==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.5': - resolution: {integrity: sha512-e/SXpgISz+IoqVcSSI0rx/d/he8zqLex+/rCWpnHpmVfmPIUjag9H6P7zotf0gJHwPUhQxZ/mF8tr6acebT9yw==} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-win32-x64-msvc@1.2.5": + resolution: + { + integrity: sha512-e/SXpgISz+IoqVcSSI0rx/d/he8zqLex+/rCWpnHpmVfmPIUjag9H6P7zotf0gJHwPUhQxZ/mF8tr6acebT9yw==, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.1': - resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + "@rolldown/pluginutils@1.0.1": + resolution: + { + integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==, + } - '@scure/base@2.2.0': - resolution: {integrity: sha512-b8XEupJibegiXV+tDUseI8oLQc8ei3d/4Jkb2RpbHh3MfE054ov3uIz2dhFkB3FI8iwYkEh0gGCApkrYggkPNg==} + "@scure/base@2.2.0": + resolution: + { + integrity: sha512-b8XEupJibegiXV+tDUseI8oLQc8ei3d/4Jkb2RpbHh3MfE054ov3uIz2dhFkB3FI8iwYkEh0gGCApkrYggkPNg==, + } - '@scure/base@2.3.0': - resolution: {integrity: sha512-NsG6Y03tY6R5BUis4FdVtHVkur0U6FOzskgs9ZXNl78CUc9fkZ78HmENUle1nSOkCasDmbubmWD9qwB7mm4PZA==} + "@scure/base@2.3.0": + resolution: + { + integrity: sha512-NsG6Y03tY6R5BUis4FdVtHVkur0U6FOzskgs9ZXNl78CUc9fkZ78HmENUle1nSOkCasDmbubmWD9qwB7mm4PZA==, + } - '@scure/base@2.4.0': - resolution: {integrity: sha512-thZ1TuJwFwBblOhgsjDKvvGirBxNp+wSvY/DR6tJBJOTDhdAAcHJ8Vbr2eFnqaxeca4+t0i9KBf+uHYGWwZORg==} + "@scure/base@2.4.0": + resolution: + { + integrity: sha512-thZ1TuJwFwBblOhgsjDKvvGirBxNp+wSvY/DR6tJBJOTDhdAAcHJ8Vbr2eFnqaxeca4+t0i9KBf+uHYGWwZORg==, + } - '@scure/bip32@2.2.0': - resolution: {integrity: sha512-zFr7t2F+a9+5tB7QbarF2HQNYrgjCNaoLAupZdKkrFMYMozJf5zqH2WJCQibMzm1qQ0QogrxVGO3qXfQDYMaQg==} + "@scure/bip32@2.2.0": + resolution: + { + integrity: sha512-zFr7t2F+a9+5tB7QbarF2HQNYrgjCNaoLAupZdKkrFMYMozJf5zqH2WJCQibMzm1qQ0QogrxVGO3qXfQDYMaQg==, + } - '@scure/bip39@2.2.0': - resolution: {integrity: sha512-T/Bj/YvYMNkIPq6EENO6/rcs2e7qTNuyoUXf0KBFDmp0ZDu0H2X4Lq6yC3i0c8PcWkov5EbW+yQZZbdMmk154A==} + "@scure/bip39@2.2.0": + resolution: + { + integrity: sha512-T/Bj/YvYMNkIPq6EENO6/rcs2e7qTNuyoUXf0KBFDmp0ZDu0H2X4Lq6yC3i0c8PcWkov5EbW+yQZZbdMmk154A==, + } - '@scure/btc-signer@2.3.0': - resolution: {integrity: sha512-05oEjx2l4VhT+CBGKqGqE+4R2n+XN7+z+vC5I0edzymHfmTZ8nrHvl0WGgPVaNPkOg/+elEhIB1gRROkunxCRg==} + "@scure/btc-signer@2.3.0": + resolution: + { + integrity: sha512-05oEjx2l4VhT+CBGKqGqE+4R2n+XN7+z+vC5I0edzymHfmTZ8nrHvl0WGgPVaNPkOg/+elEhIB1gRROkunxCRg==, + } - '@simplewebauthn/server@13.3.3': - resolution: {integrity: sha512-LelX/lcy5cjc15A86i/aNxHhB5eU7dd20QsbP0VLAf9e38+SLlsnqCCyecx3xqfGofhmX05h1J9fKRYWxw+luA==} - engines: {node: '>=20.0.0'} + "@simplewebauthn/server@13.3.3": + resolution: + { + integrity: sha512-LelX/lcy5cjc15A86i/aNxHhB5eU7dd20QsbP0VLAf9e38+SLlsnqCCyecx3xqfGofhmX05h1J9fKRYWxw+luA==, + } + engines: { node: ">=20.0.0" } - '@sinclair/typebox@0.27.12': - resolution: {integrity: sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==} + "@sinclair/typebox@0.27.12": + resolution: + { + integrity: sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==, + } - '@standard-schema/spec@1.1.0': - resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + "@standard-schema/spec@1.1.0": + resolution: + { + integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==, + } - '@turbo/darwin-64@2.10.11': - resolution: {integrity: sha512-v3R+1R/Ysozyo+p7Ri8MCIbndOvYt3DgPFrGLhrhQHfvyvbxyH3WyJj+A/2JTNmNleuAlh3JUyCV0iSVHIONTA==} + "@turbo/darwin-64@2.10.11": + resolution: + { + integrity: sha512-v3R+1R/Ysozyo+p7Ri8MCIbndOvYt3DgPFrGLhrhQHfvyvbxyH3WyJj+A/2JTNmNleuAlh3JUyCV0iSVHIONTA==, + } cpu: [x64] os: [darwin] - '@turbo/darwin-arm64@2.10.11': - resolution: {integrity: sha512-R0a0CvGAeYYsBgPIgFNB3agGXh6qukjduNhFlwVVX1Ss2IdBJLXmgjytNGmo084bLKS0B6UdLRwKhXMHKKaObQ==} + "@turbo/darwin-arm64@2.10.11": + resolution: + { + integrity: sha512-R0a0CvGAeYYsBgPIgFNB3agGXh6qukjduNhFlwVVX1Ss2IdBJLXmgjytNGmo084bLKS0B6UdLRwKhXMHKKaObQ==, + } cpu: [arm64] os: [darwin] - '@turbo/linux-64@2.10.11': - resolution: {integrity: sha512-dGlY2vg7jpsLjGS1bf9sD/cw1sGMAYbeHGQKGRFxd5Zaj+Ufbj8cNXl/vIit8ueCU97zhL/znn60ZV5iSfZAxw==} + "@turbo/linux-64@2.10.11": + resolution: + { + integrity: sha512-dGlY2vg7jpsLjGS1bf9sD/cw1sGMAYbeHGQKGRFxd5Zaj+Ufbj8cNXl/vIit8ueCU97zhL/znn60ZV5iSfZAxw==, + } cpu: [x64] os: [android, linux] - '@turbo/linux-arm64@2.10.11': - resolution: {integrity: sha512-eSP9+jjsSCBs2x0QpJZlp49dSD1EIMwXH7PsMIhdWk7w6IThhuKJ+jL95JQ2IW7tRjRmdh8gKcKQtrHLD5R5lA==} + "@turbo/linux-arm64@2.10.11": + resolution: + { + integrity: sha512-eSP9+jjsSCBs2x0QpJZlp49dSD1EIMwXH7PsMIhdWk7w6IThhuKJ+jL95JQ2IW7tRjRmdh8gKcKQtrHLD5R5lA==, + } cpu: [arm64] os: [android, linux] - '@turbo/windows-64@2.10.11': - resolution: {integrity: sha512-4aD7edogJ8arK8DOyvjTI2KKwmchD5M/WM4BZgidrtFf7aSgn8Ce2rJnDwmriw980c2cKlHnhXtlGy38VtKB8g==} + "@turbo/windows-64@2.10.11": + resolution: + { + integrity: sha512-4aD7edogJ8arK8DOyvjTI2KKwmchD5M/WM4BZgidrtFf7aSgn8Ce2rJnDwmriw980c2cKlHnhXtlGy38VtKB8g==, + } cpu: [x64] os: [win32] - '@turbo/windows-arm64@2.10.11': - resolution: {integrity: sha512-m8tJkIrTrbQ9O1uHxV0GUq623Zg1678xGna8eMsy4KbygUX/wVFgdZDYV/AxyoyaW/U7nyKoBvaDVwm22p9xqA==} + "@turbo/windows-arm64@2.10.11": + resolution: + { + integrity: sha512-m8tJkIrTrbQ9O1uHxV0GUq623Zg1678xGna8eMsy4KbygUX/wVFgdZDYV/AxyoyaW/U7nyKoBvaDVwm22p9xqA==, + } cpu: [arm64] os: [win32] - '@types/chai@5.2.3': - resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + "@types/chai@5.2.3": + resolution: + { + integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==, + } - '@types/chrome@0.2.9': - resolution: {integrity: sha512-6rXrDPkkWv4D2Q23HqT+iED4voODU5CpOSc2VFgKyecSFItuEsIBvz9CY6jUQ3dd+Q7zo1bnCE9pKRMtkYut5g==} + "@types/chrome@0.2.9": + resolution: + { + integrity: sha512-6rXrDPkkWv4D2Q23HqT+iED4voODU5CpOSc2VFgKyecSFItuEsIBvz9CY6jUQ3dd+Q7zo1bnCE9pKRMtkYut5g==, + } - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + "@types/deep-eql@4.0.2": + resolution: + { + integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==, + } - '@types/esrecurse@4.3.1': - resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + "@types/esrecurse@4.3.1": + resolution: + { + integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==, + } - '@types/estree@1.0.9': - resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + "@types/estree@1.0.9": + resolution: + { + integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==, + } - '@types/filesystem@0.0.36': - resolution: {integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==} + "@types/filesystem@0.0.36": + resolution: + { + integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==, + } - '@types/filewriter@0.0.33': - resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==} + "@types/filewriter@0.0.33": + resolution: + { + integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==, + } - '@types/har-format@1.2.16': - resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==} + "@types/har-format@1.2.16": + resolution: + { + integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==, + } - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + "@types/istanbul-lib-coverage@2.0.6": + resolution: + { + integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==, + } - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + "@types/istanbul-lib-report@3.0.3": + resolution: + { + integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==, + } - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + "@types/istanbul-reports@3.0.4": + resolution: + { + integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==, + } - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + "@types/json-schema@7.0.15": + resolution: + { + integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, + } - '@types/node@24.13.3': - resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==} + "@types/node@24.13.3": + resolution: + { + integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==, + } - '@types/node@26.2.0': - resolution: {integrity: sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==} + "@types/node@26.2.0": + resolution: + { + integrity: sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==, + } - '@types/pg@8.23.1': - resolution: {integrity: sha512-fKVHpikPdg4GKks3JuLEhvwSyvwzF23hnabPy6DD8ljVbC7+6J5dQzdv4arV6jqq57djnMgs1HKBxX4P8aBI3A==} + "@types/pg@8.23.1": + resolution: + { + integrity: sha512-fKVHpikPdg4GKks3JuLEhvwSyvwzF23hnabPy6DD8ljVbC7+6J5dQzdv4arV6jqq57djnMgs1HKBxX4P8aBI3A==, + } - '@types/react-dom@19.2.5': - resolution: {integrity: sha512-fMPwH9v7r/pp43yUd2/Mbiex5KouJwwR3dzHkhLREUC6764VyDsqxhAxv6OFEYR1RhjOyD1naqba8ECDBe7ZQg==} + "@types/react-dom@19.2.5": + resolution: + { + integrity: sha512-fMPwH9v7r/pp43yUd2/Mbiex5KouJwwR3dzHkhLREUC6764VyDsqxhAxv6OFEYR1RhjOyD1naqba8ECDBe7ZQg==, + } peerDependencies: - '@types/react': ^19.2.0 + "@types/react": ^19.2.0 - '@types/react@19.2.18': - resolution: {integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==} + "@types/react@19.2.18": + resolution: + { + integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==, + } - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + "@types/yargs-parser@21.0.3": + resolution: + { + integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==, + } - '@types/yargs@17.0.35': - resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + "@types/yargs@17.0.35": + resolution: + { + integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==, + } - '@typescript-eslint/eslint-plugin@8.67.0': - resolution: {integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/eslint-plugin@8.67.0": + resolution: + { + integrity: sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - '@typescript-eslint/parser': ^8.67.0 + "@typescript-eslint/parser": ^8.67.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' + typescript: ">=4.8.4 <6.1.0" - '@typescript-eslint/parser@8.67.0': - resolution: {integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/parser@8.67.0": + resolution: + { + integrity: sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' + typescript: ">=4.8.4 <6.1.0" - '@typescript-eslint/project-service@8.67.0': - resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/project-service@8.67.0": + resolution: + { + integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - typescript: '>=4.8.4 <6.1.0' + typescript: ">=4.8.4 <6.1.0" - '@typescript-eslint/scope-manager@8.67.0': - resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/scope-manager@8.67.0": + resolution: + { + integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@typescript-eslint/tsconfig-utils@8.67.0': - resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/tsconfig-utils@8.67.0": + resolution: + { + integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - typescript: '>=4.8.4 <6.1.0' + typescript: ">=4.8.4 <6.1.0" - '@typescript-eslint/type-utils@8.67.0': - resolution: {integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/type-utils@8.67.0": + resolution: + { + integrity: sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' + typescript: ">=4.8.4 <6.1.0" - '@typescript-eslint/types@8.67.0': - resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/types@8.67.0": + resolution: + { + integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@typescript-eslint/typescript-estree@8.67.0': - resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/typescript-estree@8.67.0": + resolution: + { + integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - typescript: '>=4.8.4 <6.1.0' + typescript: ">=4.8.4 <6.1.0" - '@typescript-eslint/utils@8.67.0': - resolution: {integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/utils@8.67.0": + resolution: + { + integrity: sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' + typescript: ">=4.8.4 <6.1.0" - '@typescript-eslint/visitor-keys@8.67.0': - resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/visitor-keys@8.67.0": + resolution: + { + integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@ungap/structured-clone@1.4.0': - resolution: {integrity: sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==} + "@ungap/structured-clone@1.4.0": + resolution: + { + integrity: sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==, + } - '@vitejs/plugin-react@6.1.1': - resolution: {integrity: sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw==} - engines: {node: ^20.19.0 || >=22.12.0} + "@vitejs/plugin-react@6.1.1": + resolution: + { + integrity: sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw==, + } + engines: { node: ^20.19.0 || >=22.12.0 } peerDependencies: - '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + "@rolldown/plugin-babel": ^0.1.7 || ^0.2.0 babel-plugin-react-compiler: ^1.0.0 oxc-transform-react: ^0.145.0 vite: ^8.0.0 peerDependenciesMeta: - '@rolldown/plugin-babel': + "@rolldown/plugin-babel": optional: true babel-plugin-react-compiler: optional: true oxc-transform-react: optional: true - '@vitest/expect@4.1.11': - resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==} + "@vitest/expect@4.1.11": + resolution: + { + integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==, + } - '@vitest/mocker@4.1.11': - resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==} + "@vitest/mocker@4.1.11": + resolution: + { + integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==, + } peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2061,65 +2953,113 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.11': - resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==} + "@vitest/pretty-format@4.1.11": + resolution: + { + integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==, + } - '@vitest/runner@4.1.11': - resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==} + "@vitest/runner@4.1.11": + resolution: + { + integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==, + } - '@vitest/snapshot@4.1.11': - resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==} + "@vitest/snapshot@4.1.11": + resolution: + { + integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==, + } - '@vitest/spy@4.1.11': - resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==} + "@vitest/spy@4.1.11": + resolution: + { + integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==, + } - '@vitest/utils@4.1.11': - resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} + "@vitest/utils@4.1.11": + resolution: + { + integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==, + } - '@xmldom/xmldom@0.8.15': - resolution: {integrity: sha512-/5NV/vDALVFDXgLmfsy9TRCBlKwO2LNBFzpzvb9iIj+jR+eSc6DLYYvVOdivT/jm7MtU6TebYuRmzEOI7w40UA==} - engines: {node: '>=10.0.0'} + "@xmldom/xmldom@0.8.15": + resolution: + { + integrity: sha512-/5NV/vDALVFDXgLmfsy9TRCBlKwO2LNBFzpzvb9iIj+jR+eSc6DLYYvVOdivT/jm7MtU6TebYuRmzEOI7w40UA==, + } + engines: { node: ">=10.0.0" } - '@xmldom/xmldom@0.9.12': - resolution: {integrity: sha512-5AXjrcMClTryPe9LgZrygpB1lj7s0S9E0+W+AHaVKAVyHanafK86iPSvG5xHVSp/jC+VH1UXu0TAEmY279xH7A==} - engines: {node: '>=14.6'} + "@xmldom/xmldom@0.9.12": + resolution: + { + integrity: sha512-5AXjrcMClTryPe9LgZrygpB1lj7s0S9E0+W+AHaVKAVyHanafK86iPSvG5xHVSp/jC+VH1UXu0TAEmY279xH7A==, + } + engines: { node: ">=14.6" } abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + resolution: + { + integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==, + } + engines: { node: ">=6.5" } abstract-logging@2.0.1: - resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} + resolution: + { + integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==, + } accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==, + } + engines: { node: ">= 0.6" } accepts@2.0.0: - resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==, + } + engines: { node: ">= 0.6" } acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + resolution: + { + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, + } peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 acorn@8.18.0: - resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} - engines: {node: '>=0.4.0'} + resolution: + { + integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==, + } + engines: { node: ">=0.4.0" } hasBin: true agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} - engines: {node: '>= 14'} + resolution: + { + integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==, + } + engines: { node: ">= 14" } agent-cli-detector@0.1.7: - resolution: {integrity: sha512-d8OWDVdZMgjhLUT9ZPgSv/BdFFF9pVuscC0JdUSz3bjwE15gcp6u/o0/JooM2yyAWC49KThFhXlgTXRa9B7yng==} - engines: {node: '>=18.18'} + resolution: + { + integrity: sha512-d8OWDVdZMgjhLUT9ZPgSv/BdFFF9pVuscC0JdUSz3bjwE15gcp6u/o0/JooM2yyAWC49KThFhXlgTXRa9B7yng==, + } + engines: { node: ">=18.18" } hasBin: true ajv-formats@3.0.1: - resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + resolution: + { + integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==, + } peerDependencies: ajv: ^8.0.0 peerDependenciesMeta: @@ -2127,101 +3067,176 @@ packages: optional: true ajv@6.15.0: - resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + resolution: + { + integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==, + } ajv@8.20.0: - resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + resolution: + { + integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==, + } anser@1.4.10: - resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + resolution: + { + integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==, + } ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, + } + engines: { node: ">=8" } ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==, + } + engines: { node: ">=6" } ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, + } + engines: { node: ">=8" } ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, + } + engines: { node: ">=4" } ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, + } + engines: { node: ">=8" } ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, + } + engines: { node: ">=10" } arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + resolution: + { + integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, + } argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + resolution: + { + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, + } asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + resolution: + { + integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==, + } asn1js@3.0.10: - resolution: {integrity: sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==} - engines: {node: '>=12.0.0'} + resolution: + { + integrity: sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==, + } + engines: { node: ">=12.0.0" } assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==, + } + engines: { node: ">=12" } atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} + resolution: + { + integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==, + } + engines: { node: ">=8.0.0" } avvio@9.3.0: - resolution: {integrity: sha512-g2tQ7LE7oOSqDfwEm3M+ZCMTJc7KiZCdJ4UwyZJb5ckTKyYu50OYmvv0mCFXPuYXoM4zkSt8zM9XQ9KCvxA74A==} + resolution: + { + integrity: sha512-g2tQ7LE7oOSqDfwEm3M+ZCMTJc7KiZCdJ4UwyZJb5ckTKyYu50OYmvv0mCFXPuYXoM4zkSt8zM9XQ9KCvxA74A==, + } babel-plugin-polyfill-corejs2@0.4.17: - resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} + resolution: + { + integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==, + } peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-corejs3@0.13.0: - resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} + resolution: + { + integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==, + } peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-regenerator@0.6.8: - resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==} + resolution: + { + integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==, + } peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-react-compiler@1.0.0: - resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==} + resolution: + { + integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==, + } babel-plugin-react-native-web@0.21.2: - resolution: {integrity: sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==} + resolution: + { + integrity: sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==, + } babel-plugin-syntax-hermes-parser@0.36.0: - resolution: {integrity: sha512-LhD0xdoedDw7ansQgXbB2DADLZIK/LRXuWNBPuVzMc5S2WK5GyT89tCM+cQzxFGO0mGyLK6D5TrVOJJzAoDy8Q==} + resolution: + { + integrity: sha512-LhD0xdoedDw7ansQgXbB2DADLZIK/LRXuWNBPuVzMc5S2WK5GyT89tCM+cQzxFGO0mGyLK6D5TrVOJJzAoDy8Q==, + } babel-plugin-syntax-hermes-parser@0.36.1: - resolution: {integrity: sha512-ycduwJbvdvIMmVvlAZqGggS+pm5Eu4Bk9pcV9Sm2Z4PJNRVsKkv0g7vHj+LeuC1gHTeF67sJXFOq61IlqCa2hA==} + resolution: + { + integrity: sha512-ycduwJbvdvIMmVvlAZqGggS+pm5Eu4Bk9pcV9Sm2Z4PJNRVsKkv0g7vHj+LeuC1gHTeF67sJXFOq61IlqCa2hA==, + } babel-plugin-transform-flow-enums@0.0.2: - resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + resolution: + { + integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==, + } babel-preset-expo@57.0.10: - resolution: {integrity: sha512-08bt6bqMZFoQuWO9gkt0EXotbqKHimELFGa1LlKJvY89iKsi4S0FJSFBFJ4pn9NZvofet48HIjYDQ0SZJ7bNrg==} + resolution: + { + integrity: sha512-08bt6bqMZFoQuWO9gkt0EXotbqKHimELFGa1LlKJvY89iKsi4S0FJSFBFJ4pn9NZvofet48HIjYDQ0SZJ7bNrg==, + } peerDependencies: - '@babel/runtime': ^7.20.0 - expo: '*' + "@babel/runtime": ^7.20.0 + expo: "*" expo-widgets: ^57.0.16 - react-refresh: '>=0.14.0 <1.0.0' + react-refresh: ">=0.14.0 <1.0.0" peerDependenciesMeta: - '@babel/runtime': + "@babel/runtime": optional: true expo: optional: true @@ -2229,487 +3244,826 @@ packages: optional: true balanced-match@4.0.4: - resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} - engines: {node: 18 || 20 || >=22} + resolution: + { + integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==, + } + engines: { node: 18 || 20 || >=22 } base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + resolution: + { + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, + } baseline-browser-mapping@2.11.21: - resolution: {integrity: sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ==} - engines: {node: '>=6.0.0'} + resolution: + { + integrity: sha512-uh8vpY/1/YyFkunIDFH/12p7/7VdPKA1hejMVEbdkEaWnUz0Hesvx5EbiU6XxjyHZIOju+ZMbQJkRh+es3/spQ==, + } + engines: { node: ">=6.0.0" } hasBin: true big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} + resolution: + { + integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==, + } + engines: { node: ">=0.6" } boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + resolution: + { + integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, + } bplist-creator@0.1.0: - resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} + resolution: + { + integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==, + } bplist-parser@0.3.1: - resolution: {integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==} - engines: {node: '>= 5.10.0'} + resolution: + { + integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==, + } + engines: { node: ">= 5.10.0" } bplist-parser@0.3.2: - resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==} - engines: {node: '>= 5.10.0'} + resolution: + { + integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==, + } + engines: { node: ">= 5.10.0" } brace-expansion@5.0.9: - resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} - engines: {node: 20 || >=22} + resolution: + { + integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==, + } + engines: { node: 20 || >=22 } braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, + } + engines: { node: ">=8" } browserslist@4.28.9: - resolution: {integrity: sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + resolution: + { + integrity: sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==, + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + resolution: + { + integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, + } buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + resolution: + { + integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, + } bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==, + } + engines: { node: ">= 0.8" } camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, + } + engines: { node: ">=6" } camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, + } + engines: { node: ">=10" } caniuse-lite@1.0.30001810: - resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==} + resolution: + { + integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==, + } chai@6.2.2: - resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==, + } + engines: { node: ">=18" } chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, + } + engines: { node: ">=4" } chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, + } + engines: { node: ">=10" } chrome-launcher@0.15.2: - resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} - engines: {node: '>=12.13.0'} + resolution: + { + integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==, + } + engines: { node: ">=12.13.0" } hasBin: true chromium-edge-launcher@0.3.0: - resolution: {integrity: sha512-p03azHlGjtyRvFEee3cyvtsRYdniSkwjkzmM/KmVnqT5d7QkkwpJBhis/zCLMYdQMVJ5tt140TBNqqrZPaWeFA==} + resolution: + { + integrity: sha512-p03azHlGjtyRvFEee3cyvtsRYdniSkwjkzmM/KmVnqT5d7QkkwpJBhis/zCLMYdQMVJ5tt140TBNqqrZPaWeFA==, + } ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + resolution: + { + integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==, + } ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==, + } + engines: { node: ">=8" } cjs-module-lexer@2.2.1: - resolution: {integrity: sha512-Ca8swihM+/4yKecYHY52kgJd300hi2lADU/a1RxNTRe+RJ9jvqQlESpbz9DnG9mowez8qwXHB8qYdIUw9e+F5Q==} + resolution: + { + integrity: sha512-Ca8swihM+/4yKecYHY52kgJd300hi2lADU/a1RxNTRe+RJ9jvqQlESpbz9DnG9mowez8qwXHB8qYdIUw9e+F5Q==, + } cli-cursor@2.1.0: - resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==, + } + engines: { node: ">=4" } cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==, + } + engines: { node: ">=6" } cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + resolution: + { + integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==, + } cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, + } + engines: { node: ">=12" } clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} + resolution: + { + integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, + } + engines: { node: ">=0.8" } cluster-key-slot@1.1.2: - resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==, + } + engines: { node: ">=0.10.0" } color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + resolution: + { + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, + } color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, + } + engines: { node: ">=7.0.0" } color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + resolution: + { + integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, + } color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, + } commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==, + } + engines: { node: ">=18" } commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + resolution: + { + integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, + } commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==, + } + engines: { node: ">= 10" } compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==, + } + engines: { node: ">= 0.6" } compression@1.8.1: - resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} - engines: {node: '>= 0.8.0'} + resolution: + { + integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==, + } + engines: { node: ">= 0.8.0" } connect@3.7.0: - resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} - engines: {node: '>= 0.10.0'} + resolution: + { + integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==, + } + engines: { node: ">= 0.10.0" } content-type@2.1.0: - resolution: {integrity: sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==, + } + engines: { node: ">=18" } convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + resolution: + { + integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, + } cookie@1.1.1: - resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==, + } + engines: { node: ">=18" } core-js-compat@3.50.0: - resolution: {integrity: sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==} - engines: {node: '>=6.4.0'} + resolution: + { + integrity: sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==, + } + engines: { node: ">=6.4.0" } cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, + } + engines: { node: ">= 8" } css-select@5.2.2: - resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + resolution: + { + integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==, + } css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} + resolution: + { + integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==, + } + engines: { node: ">=8.0.0" } css-what@6.2.2: - resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==, + } + engines: { node: ">= 6" } csstype@3.2.3: - resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + resolution: + { + integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==, + } debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + resolution: + { + integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, + } peerDependencies: - supports-color: '*' + supports-color: "*" peerDependenciesMeta: supports-color: optional: true debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + resolution: + { + integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, + } peerDependencies: - supports-color: '*' + supports-color: "*" peerDependenciesMeta: supports-color: optional: true debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} + resolution: + { + integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, + } + engines: { node: ">=6.0" } peerDependencies: - supports-color: '*' + supports-color: "*" peerDependenciesMeta: supports-color: optional: true decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, + } + engines: { node: ">=0.10.0" } deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + resolution: + { + integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, + } deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, + } + engines: { node: ">=0.10.0" } defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + resolution: + { + integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, + } depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==, + } + engines: { node: ">= 0.8" } dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, + } + engines: { node: ">=6" } destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + resolution: + { + integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==, + } + engines: { node: ">= 0.8", npm: 1.2.8000 || >= 1.4.16 } detect-libc@2.1.2: - resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, + } + engines: { node: ">=8" } dijkstrajs@1.0.3: - resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + resolution: + { + integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==, + } dnssd-advertise@1.1.6: - resolution: {integrity: sha512-Ndrrf6BMPalkQPd/zubL+4YghH2J9NspapQ09uDXwYbvOPkP0oaqf5CkcwJ0b50kS2O3ul6yVu+jz+RY62Cejg==} + resolution: + { + integrity: sha512-Ndrrf6BMPalkQPd/zubL+4YghH2J9NspapQ09uDXwYbvOPkP0oaqf5CkcwJ0b50kS2O3ul6yVu+jz+RY62Cejg==, + } dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + resolution: + { + integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, + } domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + resolution: + { + integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, + } domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} + resolution: + { + integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, + } + engines: { node: ">= 4" } domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + resolution: + { + integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==, + } ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + resolution: + { + integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==, + } electron-to-chromium@1.5.422: - resolution: {integrity: sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA==} + resolution: + { + integrity: sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA==, + } electron@44.2.0: - resolution: {integrity: sha512-oK1icjhapp3xsUZycO9WZaLmd3hJnA7ieobC4mpdtO1pEN+PPGWpA3m1Mgzzuc1wzSD2Wai4zcH4yfpGJqxFMA==} - engines: {node: '>= 22.12.0'} + resolution: + { + integrity: sha512-oK1icjhapp3xsUZycO9WZaLmd3hJnA7ieobC4mpdtO1pEN+PPGWpA3m1Mgzzuc1wzSD2Wai4zcH4yfpGJqxFMA==, + } + engines: { node: ">= 22.12.0" } hasBin: true emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + resolution: + { + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, + } encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==, + } + engines: { node: ">= 0.8" } encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==, + } + engines: { node: ">= 0.8" } entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} + resolution: + { + integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, + } + engines: { node: ">=0.12" } env-paths@3.0.0: - resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + resolution: + { + integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==, + } es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, + } + engines: { node: ">= 0.4" } es-module-lexer@2.3.2: - resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} + resolution: + { + integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==, + } es-module-lexer@3.0.2: - resolution: {integrity: sha512-BuIB67FngDSyQ/dpQNOZybwdEBDUGJQvOqwWr4ha/ufYiqzuEwPkKO2zLhRAgay28tStRIHUeWmszZAJo3GCOg==} + resolution: + { + integrity: sha512-BuIB67FngDSyQ/dpQNOZybwdEBDUGJQvOqwWr4ha/ufYiqzuEwPkKO2zLhRAgay28tStRIHUeWmszZAJo3GCOg==, + } esbuild@0.28.2: - resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==, + } + engines: { node: ">=18" } hasBin: true escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, + } + engines: { node: ">=6" } escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + resolution: + { + integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, + } escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + resolution: + { + integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, + } + engines: { node: ">=0.8.0" } escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, + } + engines: { node: ">=10" } eslint-config-prettier@10.1.8: - resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} + resolution: + { + integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==, + } hasBin: true peerDependencies: - eslint: '>=7.0.0' + eslint: ">=7.0.0" eslint-scope@9.1.2: - resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + resolution: + { + integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + resolution: + { + integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } eslint-visitor-keys@5.0.1: - resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + resolution: + { + integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } eslint@10.8.1: - resolution: {integrity: sha512-wqA7W2jbsC/BnV9Iv1UZpKVFkO1AdNoSmYW8NWG4HNOBbkAMvIqDZ27pI2f07dqn583NcIC44ckjAcOXDL1QbQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + resolution: + { + integrity: sha512-wqA7W2jbsC/BnV9Iv1UZpKVFkO1AdNoSmYW8NWG4HNOBbkAMvIqDZ27pI2f07dqn583NcIC44ckjAcOXDL1QbQ==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } hasBin: true peerDependencies: - jiti: '*' + jiti: "*" peerDependenciesMeta: jiti: optional: true espree@11.2.0: - resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + resolution: + { + integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } esquery@1.7.0: - resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} - engines: {node: '>=0.10'} + resolution: + { + integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==, + } + engines: { node: ">=0.10" } esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + resolution: + { + integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, + } + engines: { node: ">=4.0" } estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} + resolution: + { + integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, + } + engines: { node: ">=4.0" } estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + resolution: + { + integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, + } esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, + } + engines: { node: ">=0.10.0" } etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==, + } + engines: { node: ">= 0.6" } event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==, + } + engines: { node: ">=6" } expect-type@1.4.0: - resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} - engines: {node: '>=12.0.0'} + resolution: + { + integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==, + } + engines: { node: ">=12.0.0" } expo-asset@57.0.16: - resolution: {integrity: sha512-IBRfQdW3iFT+GOBERMZLZM1MUNyrjMgMskuD0elVZ1ae44858UFlTJkHO3f8vi+u5zuv7O7KofsiN8NMG/uWzw==} + resolution: + { + integrity: sha512-IBRfQdW3iFT+GOBERMZLZM1MUNyrjMgMskuD0elVZ1ae44858UFlTJkHO3f8vi+u5zuv7O7KofsiN8NMG/uWzw==, + } peerDependencies: - expo: '*' - react: '*' - react-native: '*' + expo: "*" + react: "*" + react-native: "*" expo-constants@57.0.17: - resolution: {integrity: sha512-cPWYBKN1SEbg2lXg2f8VkePJqGZrJPLvVdQDCTfbFu9sQHO1M31Y1zILReUuGnmt/VKeUz40ze579vR00xGu/A==} + resolution: + { + integrity: sha512-cPWYBKN1SEbg2lXg2f8VkePJqGZrJPLvVdQDCTfbFu9sQHO1M31Y1zILReUuGnmt/VKeUz40ze579vR00xGu/A==, + } peerDependencies: - expo: '*' - react-native: '*' + expo: "*" + react-native: "*" expo-crypto@57.0.2: - resolution: {integrity: sha512-OGLvHK7Hb7qsONMWGB9pJw3n+iY4OnZQmM/KwQEHRMrrOmNg0Lxj9+tp9bj46aAMMzXx0FTVA2jUKoplpXPnkA==} + resolution: + { + integrity: sha512-OGLvHK7Hb7qsONMWGB9pJw3n+iY4OnZQmM/KwQEHRMrrOmNg0Lxj9+tp9bj46aAMMzXx0FTVA2jUKoplpXPnkA==, + } peerDependencies: - expo: '*' + expo: "*" expo-file-system@57.0.6: - resolution: {integrity: sha512-pm8PMYEW6BnVOCBJ7df9FcDmQtE1tqImuYphlfYe1ipQRLYtdCayRczJcbKIsnB3mqEyp4gC2gWmMbsAsAOjVg==} + resolution: + { + integrity: sha512-pm8PMYEW6BnVOCBJ7df9FcDmQtE1tqImuYphlfYe1ipQRLYtdCayRczJcbKIsnB3mqEyp4gC2gWmMbsAsAOjVg==, + } peerDependencies: - expo: '*' - react-native: '*' + expo: "*" + react-native: "*" expo-font@57.0.3: - resolution: {integrity: sha512-kiVUnc2A8vAvO2FfDJTsQa5BwmY+PAkof/1wRb5MOkcX1jtiaSTwz9gCUAyscMBFLundZDmZrLy1P7LZVC+NvA==} + resolution: + { + integrity: sha512-kiVUnc2A8vAvO2FfDJTsQa5BwmY+PAkof/1wRb5MOkcX1jtiaSTwz9gCUAyscMBFLundZDmZrLy1P7LZVC+NvA==, + } peerDependencies: - expo: '*' - react: '*' - react-native: '*' + expo: "*" + react: "*" + react-native: "*" expo-keep-awake@57.0.1: - resolution: {integrity: sha512-28lkFImeXTS+bhAjuCFV7w7tW5bXg27BJVrxv+nC/nyYa86qEa0oFeHwqol6ha5k4pdVDQgBF09GM4A1k76Ssg==} + resolution: + { + integrity: sha512-28lkFImeXTS+bhAjuCFV7w7tW5bXg27BJVrxv+nC/nyYa86qEa0oFeHwqol6ha5k4pdVDQgBF09GM4A1k76Ssg==, + } peerDependencies: - expo: '*' - react: '*' + expo: "*" + react: "*" expo-local-authentication@57.0.2: - resolution: {integrity: sha512-8K4zcrQ5wZkRS1rwEWY8qHbeGVMNh35e9D1VTVKlMHz1O47itW+pW6iBVuqwGFLozN4fRBeEDQH8hu9Gt58YuQ==} + resolution: + { + integrity: sha512-8K4zcrQ5wZkRS1rwEWY8qHbeGVMNh35e9D1VTVKlMHz1O47itW+pW6iBVuqwGFLozN4fRBeEDQH8hu9Gt58YuQ==, + } peerDependencies: - expo: '*' + expo: "*" expo-modules-autolinking@57.0.12: - resolution: {integrity: sha512-Q8KAlq37nLKsQ+HsS9NpQVpd5jCgqtu694TDUNHBUBpV9ViD82mRBh8Uug/h68RG9xnLS+kuL4nYaCuFRghHjg==} + resolution: + { + integrity: sha512-Q8KAlq37nLKsQ+HsS9NpQVpd5jCgqtu694TDUNHBUBpV9ViD82mRBh8Uug/h68RG9xnLS+kuL4nYaCuFRghHjg==, + } hasBin: true expo-modules-core@57.0.16: - resolution: {integrity: sha512-vPbxDOdvG6Ucpws5ucdbQa+nNmdxKONS1fTg92sy0p4TnHX8hBiExtbrtUA/5+1t3FRCUuiy29/1nJEGdt3E4A==} + resolution: + { + integrity: sha512-vPbxDOdvG6Ucpws5ucdbQa+nNmdxKONS1fTg92sy0p4TnHX8hBiExtbrtUA/5+1t3FRCUuiy29/1nJEGdt3E4A==, + } peerDependencies: - react: '*' - react-native: '*' + react: "*" + react-native: "*" react-native-worklets: ^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0 peerDependenciesMeta: react-native-worklets: optional: true expo-modules-jsi@57.0.8: - resolution: {integrity: sha512-MFwvKP0FXLkEET27KsKvOh/L7Dpu2d00UgzAlmKozJgtI23WTKSyKPxu+EOSs9peSgkHzKI0vQOhWjOseGBMkQ==} + resolution: + { + integrity: sha512-MFwvKP0FXLkEET27KsKvOh/L7Dpu2d00UgzAlmKozJgtI23WTKSyKPxu+EOSs9peSgkHzKI0vQOhWjOseGBMkQ==, + } peerDependencies: - react-native: '*' + react-native: "*" expo-screen-capture@57.0.2: - resolution: {integrity: sha512-Ww8LFdSXuW7YeHc6/DwZd5tOEUqHAsOy4hLrfBxu99pbv+14sD9Lh0ueZeutg4QVktI+u2XJqFjMqyJ0b/5yxA==} + resolution: + { + integrity: sha512-Ww8LFdSXuW7YeHc6/DwZd5tOEUqHAsOy4hLrfBxu99pbv+14sD9Lh0ueZeutg4QVktI+u2XJqFjMqyJ0b/5yxA==, + } peerDependencies: - expo: '*' - react: '*' + expo: "*" + react: "*" expo-secure-store@57.0.3: - resolution: {integrity: sha512-w7XkSQeUiYXPoKXo1jSrQqql7pyCSyIzOp2k0apsZZBE+RkoLTQIMjcbqc181y6KgupfNnYxkaKe+4MEg94+SA==} + resolution: + { + integrity: sha512-w7XkSQeUiYXPoKXo1jSrQqql7pyCSyIzOp2k0apsZZBE+RkoLTQIMjcbqc181y6KgupfNnYxkaKe+4MEg94+SA==, + } peerDependencies: - expo: '*' + expo: "*" expo-server@57.0.3: - resolution: {integrity: sha512-aK+LdKzauHSGmsOStZtyxdzv0zWssCkxTw3m4QuOhfDSJsZaMRTd9O41d8ixU/QfELTbaJ0oRNcF7JFV/7O9YQ==} - engines: {node: '>=20.16.0'} + resolution: + { + integrity: sha512-aK+LdKzauHSGmsOStZtyxdzv0zWssCkxTw3m4QuOhfDSJsZaMRTd9O41d8ixU/QfELTbaJ0oRNcF7JFV/7O9YQ==, + } + engines: { node: ">=20.16.0" } expo-standard-web-crypto@57.0.2: - resolution: {integrity: sha512-bjCeUKzptk03X6vbcCOwI80L38nbSyOKKu2IGTrQDgR+4W6mZuyMn7Y+z92rtnyMyIIyyvbEOdcqkPyxJrpAgw==} + resolution: + { + integrity: sha512-bjCeUKzptk03X6vbcCOwI80L38nbSyOKKu2IGTrQDgR+4W6mZuyMn7Y+z92rtnyMyIIyyvbEOdcqkPyxJrpAgw==, + } peerDependencies: expo-crypto: ^57.0.2 expo@57.0.20: - resolution: {integrity: sha512-H57GWLLpNPrltsrjvx6ROsMecoFQza7h9OzujUjBsaY+aDL+bj3GsZaH3T5v5B96R7txuidUwjUh5q5hi3qttg==} + resolution: + { + integrity: sha512-H57GWLLpNPrltsrjvx6ROsMecoFQza7h9OzujUjBsaY+aDL+bj3GsZaH3T5v5B96R7txuidUwjUh5q5hi3qttg==, + } hasBin: true peerDependencies: - '@expo/dom-webview': '*' - '@expo/metro-runtime': '*' - react: '*' - react-dom: '*' - react-native: '*' - react-native-web: '*' - react-native-webview: '*' + "@expo/dom-webview": "*" + "@expo/metro-runtime": "*" + react: "*" + react-dom: "*" + react-native: "*" + react-native-web: "*" + react-native-webview: "*" peerDependenciesMeta: - '@expo/dom-webview': + "@expo/dom-webview": optional: true - '@expo/metro-runtime': + "@expo/metro-runtime": optional: true react-dom: optional: true @@ -2719,49 +4073,91 @@ packages: optional: true exponential-backoff@3.1.3: - resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} + resolution: + { + integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==, + } fast-decode-uri-component@1.0.1: - resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + resolution: + { + integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==, + } fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + resolution: + { + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, + } fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + resolution: + { + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, + } fast-json-stringify@7.0.1: - resolution: {integrity: sha512-eRSayARSbbwlBjpP4vnTTIRD5QPcIrmihPxDeN1DtKnHPg66UuJLx+8hlK1kaFdjvzyQ/dzALoi4vwAQ+T+iZA==} + resolution: + { + integrity: sha512-eRSayARSbbwlBjpP4vnTTIRD5QPcIrmihPxDeN1DtKnHPg66UuJLx+8hlK1kaFdjvzyQ/dzALoi4vwAQ+T+iZA==, + } fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + resolution: + { + integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, + } fast-querystring@1.1.2: - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} + resolution: + { + integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==, + } fast-uri@3.1.6: - resolution: {integrity: sha512-7Ical1vFEMr0onbVzEDIreM22I4khW+fzyQPwvAFWBp1iwdshSZRsL4jjRvPG9JP1uiqMHRto+YU6R2/CzDz5Q==} + resolution: + { + integrity: sha512-7Ical1vFEMr0onbVzEDIreM22I4khW+fzyQPwvAFWBp1iwdshSZRsL4jjRvPG9JP1uiqMHRto+YU6R2/CzDz5Q==, + } fast-uri@4.1.3: - resolution: {integrity: sha512-7+72G6vLt7jjNas8SmSATx2qeyRIjxeqO3i4IkmDTxlqYZRKANhOe1bnovcp4WZmvsYrp60WyqPyHqgRiX0yXw==} + resolution: + { + integrity: sha512-7+72G6vLt7jjNas8SmSATx2qeyRIjxeqO3i4IkmDTxlqYZRKANhOe1bnovcp4WZmvsYrp60WyqPyHqgRiX0yXw==, + } fastify@5.12.1: - resolution: {integrity: sha512-FWi+tQvwxR/PeRX7Z2mhfEF5ozJ3jn9asiiclzKXNSzJRHAYcU924aIOKAdHFJ+YIKieh3cqr1IwCOvTr41B3Q==} + resolution: + { + integrity: sha512-FWi+tQvwxR/PeRX7Z2mhfEF5ozJ3jn9asiiclzKXNSzJRHAYcU924aIOKAdHFJ+YIKieh3cqr1IwCOvTr41B3Q==, + } fastq@1.20.1: - resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + resolution: + { + integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==, + } fb-dotslash@0.5.8: - resolution: {integrity: sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==, + } + engines: { node: ">=20" } hasBin: true fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + resolution: + { + integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, + } fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} - engines: {node: '>=12.0.0'} + resolution: + { + integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, + } + engines: { node: ">=12.0.0" } peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -2769,1340 +4165,2345 @@ packages: optional: true fetch-nodeshim@0.4.10: - resolution: {integrity: sha512-m6I8ALe4L4XpdETy7MJZWs6L1IVMbjs99bwbpIKphxX+0CTns4IKDWJY0LWfr4YsFjfg+z1TjzTMU8lKl8rG0w==} + resolution: + { + integrity: sha512-m6I8ALe4L4XpdETy7MJZWs6L1IVMbjs99bwbpIKphxX+0CTns4IKDWJY0LWfr4YsFjfg+z1TjzTMU8lKl8rG0w==, + } file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} + resolution: + { + integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==, + } + engines: { node: ">=16.0.0" } fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, + } + engines: { node: ">=8" } finalhandler@1.1.2: - resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==, + } + engines: { node: ">= 0.8" } find-my-way@9.8.0: - resolution: {integrity: sha512-JtyUgATO7qxRp2zKhrmWof74Mqxc1ikbwpwMY97p8ipuTj2QtreA4gK2JNAF6SOqqHnYYkwMUvsgQVi2AJxIyw==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-JtyUgATO7qxRp2zKhrmWof74Mqxc1ikbwpwMY97p8ipuTj2QtreA4gK2JNAF6SOqqHnYYkwMUvsgQVi2AJxIyw==, + } + engines: { node: ">=20" } find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, + } + engines: { node: ">=8" } find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, + } + engines: { node: ">=10" } flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} + resolution: + { + integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==, + } + engines: { node: ">=16" } flatted@3.4.4: - resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} + resolution: + { + integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==, + } flow-enums-runtime@0.0.6: - resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} + resolution: + { + integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==, + } fontfaceobserver@2.3.0: - resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} + resolution: + { + integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==, + } fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==, + } + engines: { node: ">= 0.6" } fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + resolution: + { + integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } os: [darwin] function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + resolution: + { + integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, + } gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, + } + engines: { node: ">=6.9.0" } get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} + resolution: + { + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, + } + engines: { node: 6.* || 8.* || >= 10.* } getenv@2.0.0: - resolution: {integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==, + } + engines: { node: ">=6" } glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + resolution: + { + integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, + } + engines: { node: ">=10.13.0" } glob@13.0.6: - resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} - engines: {node: 18 || 20 || >=22} + resolution: + { + integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==, + } + engines: { node: 18 || 20 || >=22 } graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + resolution: + { + integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, + } has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, + } + engines: { node: ">=4" } has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, + } + engines: { node: ">=8" } hasown@2.0.4: - resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==, + } + engines: { node: ">= 0.4" } hermes-compiler@250829098.0.17: - resolution: {integrity: sha512-qG1PXzTEtriF6oQLZF3vyHhSMxOdW5h2TqqLri0rdpstPustd2fSvRZQMVAPdlhgFwBfYnj3OUZtiO6LjYsEFw==} + resolution: + { + integrity: sha512-qG1PXzTEtriF6oQLZF3vyHhSMxOdW5h2TqqLri0rdpstPustd2fSvRZQMVAPdlhgFwBfYnj3OUZtiO6LjYsEFw==, + } hermes-estree@0.35.0: - resolution: {integrity: sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==} + resolution: + { + integrity: sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==, + } hermes-estree@0.36.0: - resolution: {integrity: sha512-A1+8zn5oss2CFP7pKsOaxorQG6FNIz1WU1VDqruLPPZl3LVgeE2C5xfFg8Ow6/Ow4mSslLLtYP1J3n38eKyW9w==} + resolution: + { + integrity: sha512-A1+8zn5oss2CFP7pKsOaxorQG6FNIz1WU1VDqruLPPZl3LVgeE2C5xfFg8Ow6/Ow4mSslLLtYP1J3n38eKyW9w==, + } hermes-estree@0.36.1: - resolution: {integrity: sha512-guv1nQ6IJ7S83NRFPWc3SA7IBZrdNC9kapwOq6uXvF4wP+sDCgjzQbKPCoyYmoyZRzztF/n/c36l/rccCZSiCw==} + resolution: + { + integrity: sha512-guv1nQ6IJ7S83NRFPWc3SA7IBZrdNC9kapwOq6uXvF4wP+sDCgjzQbKPCoyYmoyZRzztF/n/c36l/rccCZSiCw==, + } hermes-parser@0.35.0: - resolution: {integrity: sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==} + resolution: + { + integrity: sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==, + } hermes-parser@0.36.0: - resolution: {integrity: sha512-GdpwMmH5x6IpC1cijvcvYnlPB60Mh6kTSF/NFdYV/j56gYdi+0RIakYs+eqOV+bbO0SW7mgVVGSsTJxyPQfo3w==} + resolution: + { + integrity: sha512-GdpwMmH5x6IpC1cijvcvYnlPB60Mh6kTSF/NFdYV/j56gYdi+0RIakYs+eqOV+bbO0SW7mgVVGSsTJxyPQfo3w==, + } hermes-parser@0.36.1: - resolution: {integrity: sha512-GApNk4zLHi2UWoWZZkx7LNCOSzLSc5lB55pZ/PhK7ycFeg7u5LcF88p/WbpIi1XUDtE0MpHE3uRR3u3KB7TjSQ==} + resolution: + { + integrity: sha512-GApNk4zLHi2UWoWZZkx7LNCOSzLSc5lB55pZ/PhK7ycFeg7u5LcF88p/WbpIi1XUDtE0MpHE3uRR3u3KB7TjSQ==, + } hosted-git-info@7.0.2: - resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} - engines: {node: ^16.14.0 || >=18.0.0} + resolution: + { + integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==, + } + engines: { node: ^16.14.0 || >=18.0.0 } http-errors@2.0.1: - resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==, + } + engines: { node: ">= 0.8" } https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} + resolution: + { + integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==, + } + engines: { node: ">= 14" } ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} + resolution: + { + integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, + } + engines: { node: ">= 4" } ignore@7.0.6: - resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} - engines: {node: '>= 4'} + resolution: + { + integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==, + } + engines: { node: ">= 4" } import-in-the-middle@3.5.0: - resolution: {integrity: sha512-O6wo8l0lhBuytKz3x8S65TvacFtoopji+gCVeEBbjCaRy75gkk4bCBQoVmY7OEZ63cbFK+yf77pDCTWaadV7hQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-O6wo8l0lhBuytKz3x8S65TvacFtoopji+gCVeEBbjCaRy75gkk4bCBQoVmY7OEZ63cbFK+yf77pDCTWaadV7hQ==, + } + engines: { node: ">=18" } imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} + resolution: + { + integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, + } + engines: { node: ">=0.8.19" } inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + } invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + resolution: + { + integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==, + } ipaddr.js@2.5.0: - resolution: {integrity: sha512-aq+t5NAc+cS6rZQQVWC2x98CPqGtKKTMDd4Gaodv0wShnItdKg/51djkGJ1hqH+Oy0ivDftCbSLCQob8zso01w==} - engines: {node: '>= 10'} + resolution: + { + integrity: sha512-aq+t5NAc+cS6rZQQVWC2x98CPqGtKKTMDd4Gaodv0wShnItdKg/51djkGJ1hqH+Oy0ivDftCbSLCQob8zso01w==, + } + engines: { node: ">= 10" } is-core-module@2.16.2: - resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==, + } + engines: { node: ">= 0.4" } is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, + } + engines: { node: ">=8" } hasBin: true is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + } + engines: { node: ">=0.10.0" } is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, + } + engines: { node: ">=8" } is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + } + engines: { node: ">=0.10.0" } is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + resolution: + { + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, + } + engines: { node: ">=0.12.0" } is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, + } + engines: { node: ">=8" } isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + } jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + resolution: + { + integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + resolution: + { + integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + resolution: + { + integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + resolution: + { + integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } jimp-compact@0.16.1: - resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} + resolution: + { + integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==, + } js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + resolution: + { + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, + } js-yaml@4.3.2: - resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} + resolution: + { + integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==, + } hasBin: true jsc-safe-url@0.2.4: - resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + resolution: + { + integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==, + } jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==, + } + engines: { node: ">=6" } hasBin: true json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + resolution: + { + integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, + } json-schema-ref-resolver@3.0.0: - resolution: {integrity: sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==} + resolution: + { + integrity: sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==, + } json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + resolution: + { + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, + } json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + resolution: + { + integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, + } json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + resolution: + { + integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, + } json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, + } + engines: { node: ">=6" } hasBin: true keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + resolution: + { + integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, + } kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, + } + engines: { node: ">=6" } lan-network@0.2.1: - resolution: {integrity: sha512-ONPnazC96VKDntab9j9JKwIWhZ4ZUceB4A9Epu4Ssg0hYFmtHZSeQ+n15nIwTFmcBUKtExOer8WTJ4GF9MO64A==} + resolution: + { + integrity: sha512-ONPnazC96VKDntab9j9JKwIWhZ4ZUceB4A9Epu4Ssg0hYFmtHZSeQ+n15nIwTFmcBUKtExOer8WTJ4GF9MO64A==, + } hasBin: true leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, + } + engines: { node: ">=6" } levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + resolution: + { + integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, + } + engines: { node: ">= 0.8.0" } light-my-request@6.6.0: - resolution: {integrity: sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==} + resolution: + { + integrity: sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==, + } lighthouse-logger@1.4.2: - resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + resolution: + { + integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==, + } lightningcss-android-arm64@1.33.0: - resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==, + } + engines: { node: ">= 12.0.0" } cpu: [arm64] os: [android] lightningcss-darwin-arm64@1.33.0: - resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==, + } + engines: { node: ">= 12.0.0" } cpu: [arm64] os: [darwin] lightningcss-darwin-x64@1.33.0: - resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==, + } + engines: { node: ">= 12.0.0" } cpu: [x64] os: [darwin] lightningcss-freebsd-x64@1.33.0: - resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==, + } + engines: { node: ">= 12.0.0" } cpu: [x64] os: [freebsd] lightningcss-linux-arm-gnueabihf@1.33.0: - resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==, + } + engines: { node: ">= 12.0.0" } cpu: [arm] os: [linux] lightningcss-linux-arm64-gnu@1.33.0: - resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==, + } + engines: { node: ">= 12.0.0" } cpu: [arm64] os: [linux] libc: [glibc] lightningcss-linux-arm64-musl@1.33.0: - resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==, + } + engines: { node: ">= 12.0.0" } cpu: [arm64] os: [linux] libc: [musl] lightningcss-linux-x64-gnu@1.33.0: - resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==, + } + engines: { node: ">= 12.0.0" } cpu: [x64] os: [linux] libc: [glibc] lightningcss-linux-x64-musl@1.33.0: - resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==, + } + engines: { node: ">= 12.0.0" } cpu: [x64] os: [linux] libc: [musl] lightningcss-win32-arm64-msvc@1.33.0: - resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==, + } + engines: { node: ">= 12.0.0" } cpu: [arm64] os: [win32] lightningcss-win32-x64-msvc@1.33.0: - resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==, + } + engines: { node: ">= 12.0.0" } cpu: [x64] os: [win32] lightningcss@1.33.0: - resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==, + } + engines: { node: ">= 12.0.0" } locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, + } + engines: { node: ">=8" } locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, + } + engines: { node: ">=10" } lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + resolution: + { + integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==, + } lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + resolution: + { + integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, + } lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + resolution: + { + integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==, + } log-symbols@2.2.0: - resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==, + } + engines: { node: ">=4" } long@5.3.2: - resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + resolution: + { + integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==, + } loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + resolution: + { + integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, + } hasBin: true lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + resolution: + { + integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, + } lru-cache@11.5.2: - resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} - engines: {node: 20 || >=22} + resolution: + { + integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==, + } + engines: { node: 20 || >=22 } lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + resolution: + { + integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, + } magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + resolution: + { + integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, + } makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + resolution: + { + integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, + } marky@1.3.0: - resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==} + resolution: + { + integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==, + } mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + resolution: + { + integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==, + } memoize-one@5.2.1: - resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + resolution: + { + integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==, + } merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + resolution: + { + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, + } metro-babel-transformer@0.84.5: - resolution: {integrity: sha512-2WbHILKMiJUzfdjmGOQOqU1bWi9//gqiclc/tkk/AIsrrVw3efhZ1uhkOwMTxUEPOzqoo091H0olLmVZH5FHGQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-2WbHILKMiJUzfdjmGOQOqU1bWi9//gqiclc/tkk/AIsrrVw3efhZ1uhkOwMTxUEPOzqoo091H0olLmVZH5FHGQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-babel-transformer@0.84.6: - resolution: {integrity: sha512-B1ozl6KxFHbQjXZ2U8WiTPWXylqiD3V4EXyV5r0fqETOrqIrJlBvbVTD82UxIN+B3Vpe4l8G1tb15ocd2RyOQA==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-B1ozl6KxFHbQjXZ2U8WiTPWXylqiD3V4EXyV5r0fqETOrqIrJlBvbVTD82UxIN+B3Vpe4l8G1tb15ocd2RyOQA==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-cache-key@0.84.5: - resolution: {integrity: sha512-3dPB2TnvGjjf0/9O7AXVQURKXuQNauTZE7WpTGTlR017Gh/B5y0m/2wcqxfveUguHSpu89KhVxCAlr2k/H7uhQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-3dPB2TnvGjjf0/9O7AXVQURKXuQNauTZE7WpTGTlR017Gh/B5y0m/2wcqxfveUguHSpu89KhVxCAlr2k/H7uhQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-cache-key@0.84.6: - resolution: {integrity: sha512-6tyXt1BZ/3U183XV48oif7Nm65TE+pTo0Vs31u4FxMgqiYQR/SiSr3RoXn3pmy4pd280ZmLmct0x3jZpu0pV4A==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-6tyXt1BZ/3U183XV48oif7Nm65TE+pTo0Vs31u4FxMgqiYQR/SiSr3RoXn3pmy4pd280ZmLmct0x3jZpu0pV4A==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-cache@0.84.5: - resolution: {integrity: sha512-WHS0n2OxQqtwEjSeQFPePNrMvEFhmQcUQM9cRJMHByWoi/GMWFBEWOf7hVkAM/0KRutAXNbDlSu/cZB6CyxgQQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-WHS0n2OxQqtwEjSeQFPePNrMvEFhmQcUQM9cRJMHByWoi/GMWFBEWOf7hVkAM/0KRutAXNbDlSu/cZB6CyxgQQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-cache@0.84.6: - resolution: {integrity: sha512-KBJVpb02oKNO+jlWQ1Aax7cd11YP0MClDaMgx6C4MhyZ9g95J/dC1Bo6sCzXaU9L9h/w5cQfT5zDkGW5sOj99A==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-KBJVpb02oKNO+jlWQ1Aax7cd11YP0MClDaMgx6C4MhyZ9g95J/dC1Bo6sCzXaU9L9h/w5cQfT5zDkGW5sOj99A==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-config@0.84.5: - resolution: {integrity: sha512-zie+uN6oohscowi2S7ByU+wUw6CrT4ZxW9uAbONOObSxx86RGmnIAmjXHLkfmcdYoY7jzOPEbqcI6oeVmqyBQA==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-zie+uN6oohscowi2S7ByU+wUw6CrT4ZxW9uAbONOObSxx86RGmnIAmjXHLkfmcdYoY7jzOPEbqcI6oeVmqyBQA==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-config@0.84.6: - resolution: {integrity: sha512-cD2mLEofcuV26kxSV4hfV1Pbuh6igdUhYQriO8ZVeJ7HyZfq4/wqHV0gSR7fEO8NUp9odr60/Kzm5YakmghWwQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-cD2mLEofcuV26kxSV4hfV1Pbuh6igdUhYQriO8ZVeJ7HyZfq4/wqHV0gSR7fEO8NUp9odr60/Kzm5YakmghWwQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-core@0.84.5: - resolution: {integrity: sha512-xwm605hCi5Y6eJTTb8ZWo6pkUcoBEIyiQOfkZh5GwtDwUrP9SNhTQZhzJHrBCwwxlf3Ptl/pxWJgQ1rsNYMnrA==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-xwm605hCi5Y6eJTTb8ZWo6pkUcoBEIyiQOfkZh5GwtDwUrP9SNhTQZhzJHrBCwwxlf3Ptl/pxWJgQ1rsNYMnrA==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-core@0.84.6: - resolution: {integrity: sha512-ZqYskM8+f3PFMosBDJd8DLqRvT1ltRGhWL/ZfTpBvf4SoadO30VVrdhAoHFVGz3G1CJpWa3fgZH7nnnX/ybllA==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-ZqYskM8+f3PFMosBDJd8DLqRvT1ltRGhWL/ZfTpBvf4SoadO30VVrdhAoHFVGz3G1CJpWa3fgZH7nnnX/ybllA==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-file-map@0.84.5: - resolution: {integrity: sha512-mlm/JL8toSbSc2akpKIGmzvrVRSCgZ5vkbycI34oMLoOnLGuLyC8WTyVJ6P0hZG/usDaGwZSl/s9BCRriqjGJA==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-mlm/JL8toSbSc2akpKIGmzvrVRSCgZ5vkbycI34oMLoOnLGuLyC8WTyVJ6P0hZG/usDaGwZSl/s9BCRriqjGJA==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-file-map@0.84.6: - resolution: {integrity: sha512-ov9VywWBsHPt54Zc7/DxWvqjTwxuZvhfeyHg8ZAMGKtf2PcH1wS3EnoBH7In53Rspk/eXVWAO5+avxunPn081w==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-ov9VywWBsHPt54Zc7/DxWvqjTwxuZvhfeyHg8ZAMGKtf2PcH1wS3EnoBH7In53Rspk/eXVWAO5+avxunPn081w==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-minify-terser@0.84.5: - resolution: {integrity: sha512-BJoFwCEDsYnagPqarayInv2+diCDNDdLlaof/p6s9w4gh+gc9HXYM+pDvsKGKKUumpZswNF3Z/ftTMqKl/5IBg==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-BJoFwCEDsYnagPqarayInv2+diCDNDdLlaof/p6s9w4gh+gc9HXYM+pDvsKGKKUumpZswNF3Z/ftTMqKl/5IBg==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-minify-terser@0.84.6: - resolution: {integrity: sha512-SqhB/Kxrw0XfyW0k8mEscqX/CQopm6Fp3EpdSIPzvKfGgQp9bTMahg9PAdVsXUmIWwErbmFw1VqB+VFBOKksUw==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-SqhB/Kxrw0XfyW0k8mEscqX/CQopm6Fp3EpdSIPzvKfGgQp9bTMahg9PAdVsXUmIWwErbmFw1VqB+VFBOKksUw==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-resolver@0.84.5: - resolution: {integrity: sha512-VSSnepg1k6LyCwtb6eirWdAWlpKwBG8Rdtsr1mU38rMelFyWgh3/QuMSiZIZAIjwg/fsa8GhW5/FO54CAUPCEA==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-VSSnepg1k6LyCwtb6eirWdAWlpKwBG8Rdtsr1mU38rMelFyWgh3/QuMSiZIZAIjwg/fsa8GhW5/FO54CAUPCEA==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-resolver@0.84.6: - resolution: {integrity: sha512-PplpGc/OCLxgKeLNsLQO/VHsYDIvkcGGr3zNT7UanHCGRqhxKv245o+naV8cRI4/pcLqyc+9j+J0AJbT3Kp5Sg==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-PplpGc/OCLxgKeLNsLQO/VHsYDIvkcGGr3zNT7UanHCGRqhxKv245o+naV8cRI4/pcLqyc+9j+J0AJbT3Kp5Sg==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-runtime@0.84.5: - resolution: {integrity: sha512-U1m2+d1Pr+JO2/iVXBB2OfXXityz7tqwIorxfrT15IEgaHvpJBq/OHiqnOWPKJbUl3JcxjcdviZZOKk85oK4Qg==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-U1m2+d1Pr+JO2/iVXBB2OfXXityz7tqwIorxfrT15IEgaHvpJBq/OHiqnOWPKJbUl3JcxjcdviZZOKk85oK4Qg==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-runtime@0.84.6: - resolution: {integrity: sha512-47EYO/DOai0PA3GoAyDpyXOgHNMwbl/Z9dQlQineDLHkpD42xOwMrIx1crT0+n6F+aGoEyxZmeFwfMzaIqVqKQ==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-47EYO/DOai0PA3GoAyDpyXOgHNMwbl/Z9dQlQineDLHkpD42xOwMrIx1crT0+n6F+aGoEyxZmeFwfMzaIqVqKQ==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-source-map@0.84.5: - resolution: {integrity: sha512-2BtV5L9uPc49F13Gn5wiP6bX/EncqzqTIk2VL/0F/96Vo0YEOjluT/qktQjFODfqGFsucwnh5mPEAl/2jVEfeg==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-2BtV5L9uPc49F13Gn5wiP6bX/EncqzqTIk2VL/0F/96Vo0YEOjluT/qktQjFODfqGFsucwnh5mPEAl/2jVEfeg==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-source-map@0.84.6: - resolution: {integrity: sha512-4p/EplRbgNxhdqA6kAj1AmIq9qqYXYSAjgxuZ73rYA+p037xDDrxK8CyDKNfbn1k6aMuVt8LV0fpt7NHUTKiZw==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-4p/EplRbgNxhdqA6kAj1AmIq9qqYXYSAjgxuZ73rYA+p037xDDrxK8CyDKNfbn1k6aMuVt8LV0fpt7NHUTKiZw==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-symbolicate@0.84.5: - resolution: {integrity: sha512-rQ40zYDAkaWBN9yvjUuAD0ZpzBMZSoKyGYXnb5JrfbKjun7fTvfoLHL3KXFYenBTYZkQtlp4cKSCv/1utxFyOw==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-rQ40zYDAkaWBN9yvjUuAD0ZpzBMZSoKyGYXnb5JrfbKjun7fTvfoLHL3KXFYenBTYZkQtlp4cKSCv/1utxFyOw==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } hasBin: true metro-symbolicate@0.84.6: - resolution: {integrity: sha512-wJFyyF5ysbVyoYVWGL6GwVMiNnGllwDU2gF096376fl0fc8IFUlADSyNlswj31K9og2sOilXe/FdyWFPczPUYg==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-wJFyyF5ysbVyoYVWGL6GwVMiNnGllwDU2gF096376fl0fc8IFUlADSyNlswj31K9og2sOilXe/FdyWFPczPUYg==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } hasBin: true metro-transform-plugins@0.84.5: - resolution: {integrity: sha512-+InaSVGaOyt0DyRo4Y/zIdPI6CZwnbNho5LAL23tgmuGwv7fyfkF7kKfPjZcfxXBcoYdTLLFnCfCH/dHSiCqNg==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-+InaSVGaOyt0DyRo4Y/zIdPI6CZwnbNho5LAL23tgmuGwv7fyfkF7kKfPjZcfxXBcoYdTLLFnCfCH/dHSiCqNg==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-transform-plugins@0.84.6: - resolution: {integrity: sha512-pROPMFaj25Y9+3LlLqpBRz/7B/2YPnfEQz/z3juYxkh3FGQ+3c/Qh4E+khPSTdwTw0M6LitLYHMqaHMbQmuBJw==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-pROPMFaj25Y9+3LlLqpBRz/7B/2YPnfEQz/z3juYxkh3FGQ+3c/Qh4E+khPSTdwTw0M6LitLYHMqaHMbQmuBJw==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-transform-worker@0.84.5: - resolution: {integrity: sha512-ui1Z8x4s5RL36gMmKLaMMO7O9NNDHNdthEZSCDQHAau3JcAsTaFOK6I+2q4I/kW5u8hSEjJk9L45TXSVJw6g1A==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-ui1Z8x4s5RL36gMmKLaMMO7O9NNDHNdthEZSCDQHAau3JcAsTaFOK6I+2q4I/kW5u8hSEjJk9L45TXSVJw6g1A==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro-transform-worker@0.84.6: - resolution: {integrity: sha512-xLTVrOENaHR9DiuhnHS+zcle0rKsCy2CpXSIx7xD+zhJs+qVRNUyV7Z1zIt/0P/d0cSGVx846R+dIjHEudhcww==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-xLTVrOENaHR9DiuhnHS+zcle0rKsCy2CpXSIx7xD+zhJs+qVRNUyV7Z1zIt/0P/d0cSGVx846R+dIjHEudhcww==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } metro@0.84.5: - resolution: {integrity: sha512-r1liLkyFZMVSEMNjU1CJU5pRzs3NdkxHqXS60O25c0rCIqAR+cGk7rPydw/g0WAIKVXojIBIF45yYBPagJGcgw==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-r1liLkyFZMVSEMNjU1CJU5pRzs3NdkxHqXS60O25c0rCIqAR+cGk7rPydw/g0WAIKVXojIBIF45yYBPagJGcgw==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } hasBin: true metro@0.84.6: - resolution: {integrity: sha512-ty/tx/imE5Ph2gvPU788Ckim6RAC2tyZxLz2hWRgC9U7/fGKV7qY/slADy0qHPEw9cpUgc4BfmV3oUsYwm7oeg==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-ty/tx/imE5Ph2gvPU788Ckim6RAC2tyZxLz2hWRgC9U7/fGKV7qY/slADy0qHPEw9cpUgc4BfmV3oUsYwm7oeg==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } hasBin: true micro-packed@0.11.1: - resolution: {integrity: sha512-agQGBnBCw8OoKQZMUxcaQPaOowdfxyEmBsq4CNAXAXCyB8KxlRG0lTl5GADJIsMEDaFb0trhXBHKYsjTWa5kuw==} - engines: {node: '>= 20.19.0'} + resolution: + { + integrity: sha512-agQGBnBCw8OoKQZMUxcaQPaOowdfxyEmBsq4CNAXAXCyB8KxlRG0lTl5GADJIsMEDaFb0trhXBHKYsjTWa5kuw==, + } + engines: { node: ">= 20.19.0" } micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} + resolution: + { + integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, + } + engines: { node: ">=8.6" } mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, + } + engines: { node: ">= 0.6" } mime-db@1.54.0: - resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==, + } + engines: { node: ">= 0.6" } mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, + } + engines: { node: ">= 0.6" } mime-types@3.0.2: - resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==, + } + engines: { node: ">=18" } mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, + } + engines: { node: ">=4" } hasBin: true mimic-fn@1.2.0: - resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==, + } + engines: { node: ">=4" } minimatch@10.2.6: - resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} - engines: {node: 18 || 20 || >=22} + resolution: + { + integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==, + } + engines: { node: 18 || 20 || >=22 } minipass@7.1.3: - resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} - engines: {node: '>=16 || 14 >=14.17'} + resolution: + { + integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==, + } + engines: { node: ">=16 || 14 >=14.17" } mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, + } + engines: { node: ">=10" } hasBin: true module-details-from-path@1.0.4: - resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} + resolution: + { + integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==, + } ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + resolution: + { + integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, + } ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + resolution: + { + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + } multitars@1.0.2: - resolution: {integrity: sha512-6GwVw5eLi9sThdtlS4PKwC7yRLaf45pYhIEzKBHdKxi+YOXGKFX8acIniH+Uh/+k9mS2lQOupTccjoe5r0/1IQ==} + resolution: + { + integrity: sha512-6GwVw5eLi9sThdtlS4PKwC7yRLaf45pYhIEzKBHdKxi+YOXGKFX8acIniH+Uh/+k9mS2lQOupTccjoe5r0/1IQ==, + } nanoid@3.3.18: - resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + resolution: + { + integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==, + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } hasBin: true natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + resolution: + { + integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, + } negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==, + } + engines: { node: ">= 0.6" } negotiator@0.6.4: - resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==, + } + engines: { node: ">= 0.6" } negotiator@1.1.0: - resolution: {integrity: sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-NMPBRMJgiQHjbd8phG3Vebdx4kZ1H121rbl5IkMqeOsahptB9BKo/d7oJ3zTXqTgagn2bWlNSXkh0QUGM31RYg==, + } + engines: { node: ">=18" } node-forge@1.4.0: - resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} - engines: {node: '>= 6.13.0'} + resolution: + { + integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==, + } + engines: { node: ">= 6.13.0" } node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + resolution: + { + integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, + } node-releases@2.0.54: - resolution: {integrity: sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==, + } + engines: { node: ">=18" } npm-package-arg@11.0.3: - resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} - engines: {node: ^16.14.0 || >=18.0.0} + resolution: + { + integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==, + } + engines: { node: ^16.14.0 || >=18.0.0 } nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + resolution: + { + integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, + } nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + resolution: + { + integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==, + } ob1@0.84.5: - resolution: {integrity: sha512-aH9RkoZc7w/90HBamFxTw8ZLFr05wXS+iOnvmrgo53Ep8Pyrm5FieQSaPIVROkfFVQISeD/zo92fes26TOwe+A==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-aH9RkoZc7w/90HBamFxTw8ZLFr05wXS+iOnvmrgo53Ep8Pyrm5FieQSaPIVROkfFVQISeD/zo92fes26TOwe+A==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } ob1@0.84.6: - resolution: {integrity: sha512-+s+6zjd0X68hfAcn92NsEPXnSYOF3O7exw/Fj4UfRTB+UL+Tdjdkzu5/4WquXlzqgvNm8FWuuW6/0Yd8S2rYxw==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-+s+6zjd0X68hfAcn92NsEPXnSYOF3O7exw/Fj4UfRTB+UL+Tdjdkzu5/4WquXlzqgvNm8FWuuW6/0Yd8S2rYxw==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, + } + engines: { node: ">=0.10.0" } obug@2.1.4: - resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} - engines: {node: '>=12.20.0'} + resolution: + { + integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==, + } + engines: { node: ">=12.20.0" } on-exit-leak-free@2.1.2: - resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} - engines: {node: '>=14.0.0'} + resolution: + { + integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==, + } + engines: { node: ">=14.0.0" } on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==, + } + engines: { node: ">= 0.8" } on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==, + } + engines: { node: ">= 0.8" } on-headers@1.1.0: - resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==, + } + engines: { node: ">= 0.8" } onetime@2.0.1: - resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==, + } + engines: { node: ">=4" } open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==, + } + engines: { node: ">=8" } optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} + resolution: + { + integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, + } + engines: { node: ">= 0.8.0" } ora@3.4.0: - resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==, + } + engines: { node: ">=6" } p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, + } + engines: { node: ">=6" } p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, + } + engines: { node: ">=10" } p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, + } + engines: { node: ">=8" } p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, + } + engines: { node: ">=10" } p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, + } + engines: { node: ">=6" } parse-png@2.1.0: - resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==, + } + engines: { node: ">=10" } parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==, + } + engines: { node: ">= 0.8" } path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, + } + engines: { node: ">=8" } path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, + } + engines: { node: ">=8" } path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + resolution: + { + integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, + } path-scurry@2.0.2: - resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} - engines: {node: 18 || 20 || >=22} + resolution: + { + integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==, + } + engines: { node: 18 || 20 || >=22 } pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + resolution: + { + integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, + } pg-cloudflare@1.4.0: - resolution: {integrity: sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==} + resolution: + { + integrity: sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==, + } pg-connection-string@2.14.0: - resolution: {integrity: sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==} + resolution: + { + integrity: sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==, + } pg-int8@1.0.1: - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} - engines: {node: '>=4.0.0'} + resolution: + { + integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==, + } + engines: { node: ">=4.0.0" } pg-pool@3.14.0: - resolution: {integrity: sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==} + resolution: + { + integrity: sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==, + } peerDependencies: - pg: '>=8.0' + pg: ">=8.0" pg-protocol@1.16.0: - resolution: {integrity: sha512-sILXutLVjCLjcDuOmvhX5e2Z4cS5qG/6Bu3VkpFwdf/633ElGLpEh9bgmuI5I4sqKqkifQiGyiCcx1HdtrK7tg==} + resolution: + { + integrity: sha512-sILXutLVjCLjcDuOmvhX5e2Z4cS5qG/6Bu3VkpFwdf/633ElGLpEh9bgmuI5I4sqKqkifQiGyiCcx1HdtrK7tg==, + } pg-types@2.2.0: - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==, + } + engines: { node: ">=4" } pg@8.23.0: - resolution: {integrity: sha512-Ip2EQCngowJLGOfCwkFhPXU7/ljlhn6Rxlmy4XYfL2Y+vyRM59+8uR2xqRWKdYmbXmxCFOAmKxBuSUCdF34qLg==} - engines: {node: '>= 16.0.0'} + resolution: + { + integrity: sha512-Ip2EQCngowJLGOfCwkFhPXU7/ljlhn6Rxlmy4XYfL2Y+vyRM59+8uR2xqRWKdYmbXmxCFOAmKxBuSUCdF34qLg==, + } + engines: { node: ">= 16.0.0" } peerDependencies: - pg-native: '>=3.0.1' + pg-native: ">=3.0.1" peerDependenciesMeta: pg-native: optional: true pgpass@1.0.5: - resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + resolution: + { + integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==, + } picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + resolution: + { + integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, + } picomatch@2.3.2: - resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} - engines: {node: '>=8.6'} + resolution: + { + integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==, + } + engines: { node: ">=8.6" } picomatch@4.0.5: - resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==, + } + engines: { node: ">=12" } pino-abstract-transport@3.0.0: - resolution: {integrity: sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==} + resolution: + { + integrity: sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==, + } pino-std-serializers@7.1.0: - resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==} + resolution: + { + integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==, + } pino@10.3.1: - resolution: {integrity: sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==} + resolution: + { + integrity: sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==, + } hasBin: true plist@3.1.1: - resolution: {integrity: sha512-ZIfcLJC+7E7FBFnDxm9MPmt7D+DidyQ26lewieO75AdhA2ayMtsJSES0iWzqJQbcVRSrTufQoy0DR94xHue0oA==} - engines: {node: '>=10.4.0'} + resolution: + { + integrity: sha512-ZIfcLJC+7E7FBFnDxm9MPmt7D+DidyQ26lewieO75AdhA2ayMtsJSES0iWzqJQbcVRSrTufQoy0DR94xHue0oA==, + } + engines: { node: ">=10.4.0" } pngjs@3.4.0: - resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} - engines: {node: '>=4.0.0'} + resolution: + { + integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==, + } + engines: { node: ">=4.0.0" } pngjs@5.0.0: - resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} - engines: {node: '>=10.13.0'} + resolution: + { + integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==, + } + engines: { node: ">=10.13.0" } postcss@8.5.26: - resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==} - engines: {node: ^10 || ^12 || >=14} + resolution: + { + integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==, + } + engines: { node: ^10 || ^12 || >=14 } postgres-array@2.0.0: - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==, + } + engines: { node: ">=4" } postgres-bytea@1.0.1: - resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==, + } + engines: { node: ">=0.10.0" } postgres-date@1.0.7: - resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==, + } + engines: { node: ">=0.10.0" } postgres-interval@1.2.0: - resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==, + } + engines: { node: ">=0.10.0" } prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} + resolution: + { + integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, + } + engines: { node: ">= 0.8.0" } prettier@3.9.6: - resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} - engines: {node: '>=14'} + resolution: + { + integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==, + } + engines: { node: ">=14" } hasBin: true pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + resolution: + { + integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==, + } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } proc-log@4.2.0: - resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } process-warning@4.0.1: - resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==} + resolution: + { + integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==, + } process-warning@5.1.0: - resolution: {integrity: sha512-jQSaVHsPgtyw60e1rQ/A+/ArPEj/S8pS/vFnyGa/gYFXrKk/6RuDkoqVDQ5NI5MmS01698ltlAk0NoDBNLujRw==} + resolution: + { + integrity: sha512-jQSaVHsPgtyw60e1rQ/A+/ArPEj/S8pS/vFnyGa/gYFXrKk/6RuDkoqVDQ5NI5MmS01698ltlAk0NoDBNLujRw==, + } progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} + resolution: + { + integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==, + } + engines: { node: ">=0.4.0" } promise@8.3.0: - resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + resolution: + { + integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==, + } prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, + } + engines: { node: ">= 6" } prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + resolution: + { + integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==, + } protobufjs@7.6.6: - resolution: {integrity: sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg==} - engines: {node: '>=12.0.0'} + resolution: + { + integrity: sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg==, + } + engines: { node: ">=12.0.0" } punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, + } + engines: { node: ">=6" } pvtsutils@1.3.6: - resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + resolution: + { + integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==, + } pvutils@1.2.0: - resolution: {integrity: sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg==} - engines: {node: '>=16.0.0'} + resolution: + { + integrity: sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg==, + } + engines: { node: ">=16.0.0" } qrcode.react@4.2.0: - resolution: {integrity: sha512-QpgqWi8rD9DsS9EP3z7BT+5lY5SFhsqGjpgW5DY/i3mK4M9DTBNz3ErMi8BWYEfI3L0d8GIbGmcdFAS1uIRGjA==} + resolution: + { + integrity: sha512-QpgqWi8rD9DsS9EP3z7BT+5lY5SFhsqGjpgW5DY/i3mK4M9DTBNz3ErMi8BWYEfI3L0d8GIbGmcdFAS1uIRGjA==, + } peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 qrcode@1.5.4: - resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==} - engines: {node: '>=10.13.0'} + resolution: + { + integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==, + } + engines: { node: ">=10.13.0" } hasBin: true quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + resolution: + { + integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==, + } range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==, + } + engines: { node: ">= 0.6" } react-devtools-core@6.1.5: - resolution: {integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==} + resolution: + { + integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==, + } react-dom@19.2.8: - resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==} + resolution: + { + integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==, + } peerDependencies: react: ^19.2.8 react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + resolution: + { + integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, + } react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + resolution: + { + integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==, + } react-native-qrcode-svg@6.3.22: - resolution: {integrity: sha512-1r4qTn6axLVuCuDqK4hu0pviOKWkvvAJIk0hKQVkpU6/O9FfbQpA/CsNJz/lBlGKFc0k/SRLGkD0pPTUKn9vtg==} + resolution: + { + integrity: sha512-1r4qTn6axLVuCuDqK4hu0pviOKWkvvAJIk0hKQVkpU6/O9FfbQpA/CsNJz/lBlGKFc0k/SRLGkD0pPTUKn9vtg==, + } peerDependencies: - react: '*' - react-native: '>=0.63.4' - react-native-svg: '>=14.0.0' + react: "*" + react-native: ">=0.63.4" + react-native-svg: ">=14.0.0" react-native-svg@15.15.5: - resolution: {integrity: sha512-L4go5jA+GWutdJ/JucuN20cjAbMg1HmMtAP+wZ+3JLCf6Jd0bhXQHxciRP/AQm/FlrIEZwkMcHNZP+FXAiic0w==} + resolution: + { + integrity: sha512-L4go5jA+GWutdJ/JucuN20cjAbMg1HmMtAP+wZ+3JLCf6Jd0bhXQHxciRP/AQm/FlrIEZwkMcHNZP+FXAiic0w==, + } peerDependencies: - react: '*' - react-native: '*' + react: "*" + react-native: "*" react-native@0.86.3: - resolution: {integrity: sha512-JR5s3bM9ezud+Mw24GlNXNfthqPIKwrQgPPJcam+L97t2sKjjEavhCzBn+fyqZZRcM5+XlhYxpTxVkK7e1n38Q==} - engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} + resolution: + { + integrity: sha512-JR5s3bM9ezud+Mw24GlNXNfthqPIKwrQgPPJcam+L97t2sKjjEavhCzBn+fyqZZRcM5+XlhYxpTxVkK7e1n38Q==, + } + engines: { node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0 } hasBin: true peerDependencies: - '@react-native/jest-preset': 0.86.3 - '@types/react': ^19.1.1 + "@react-native/jest-preset": 0.86.3 + "@types/react": ^19.1.1 react: ^19.2.3 peerDependenciesMeta: - '@react-native/jest-preset': + "@react-native/jest-preset": optional: true - '@types/react': + "@types/react": optional: true react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==, + } + engines: { node: ">=0.10.0" } react@19.2.3: - resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==, + } + engines: { node: ">=0.10.0" } react@19.2.8: - resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==, + } + engines: { node: ">=0.10.0" } real-require@0.2.0: - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} - engines: {node: '>= 12.13.0'} + resolution: + { + integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==, + } + engines: { node: ">= 12.13.0" } real-require@1.0.0: - resolution: {integrity: sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==} + resolution: + { + integrity: sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==, + } redis@5.12.1: - resolution: {integrity: sha512-LDsoVvb/CpoV9EN3FXvgvSHNJWuCIzl9MiO3ppOevuGLpSGJhwfQjpEwfFJcQvNSddHADDdZaWx0HnmMxRXG7g==} - engines: {node: '>= 18.19.0'} + resolution: + { + integrity: sha512-LDsoVvb/CpoV9EN3FXvgvSHNJWuCIzl9MiO3ppOevuGLpSGJhwfQjpEwfFJcQvNSddHADDdZaWx0HnmMxRXG7g==, + } + engines: { node: ">= 18.19.0" } reflect-metadata@0.2.2: - resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + resolution: + { + integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==, + } regenerate-unicode-properties@10.2.2: - resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==, + } + engines: { node: ">=4" } regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + resolution: + { + integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==, + } regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + resolution: + { + integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==, + } regexpu-core@6.4.0: - resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==, + } + engines: { node: ">=4" } regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + resolution: + { + integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==, + } regjsparser@0.13.2: - resolution: {integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==} + resolution: + { + integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==, + } hasBin: true require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, + } + engines: { node: ">=0.10.0" } require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, + } + engines: { node: ">=0.10.0" } require-in-the-middle@8.0.1: - resolution: {integrity: sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==} - engines: {node: '>=9.3.0 || >=8.10.0 <9.0.0'} + resolution: + { + integrity: sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==, + } + engines: { node: ">=9.3.0 || >=8.10.0 <9.0.0" } require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + resolution: + { + integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==, + } resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, + } + engines: { node: ">=8" } resolve-workspace-root@2.0.1: - resolution: {integrity: sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==} + resolution: + { + integrity: sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==, + } resolve@1.22.12: - resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==, + } + engines: { node: ">= 0.4" } hasBin: true restore-cursor@2.0.0: - resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==, + } + engines: { node: ">=4" } ret@0.5.0: - resolution: {integrity: sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==, + } + engines: { node: ">=10" } reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + resolution: + { + integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==, + } + engines: { iojs: ">=1.0.0", node: ">=0.10.0" } rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + resolution: + { + integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==, + } rolldown@1.2.5: - resolution: {integrity: sha512-VD2IE5PUG4Oj8zz2VGykiYd5wbnjdIiSsNQb8Qu5B+noEp+A78mu2iVvpp27g8es14Tk9rofNs5Tku9iQCS4fA==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-VD2IE5PUG4Oj8zz2VGykiYd5wbnjdIiSsNQb8Qu5B+noEp+A78mu2iVvpp27g8es14Tk9rofNs5Tku9iQCS4fA==, + } + engines: { node: ^20.19.0 || >=22.12.0 } hasBin: true safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, + } safe-regex2@5.1.1: - resolution: {integrity: sha512-mOSBvHGDZMuIEZMdOz/aCEYDCv0E7nfcNsIhUF+/P+xC7Hyf3FkvymqgPbg9D1EdSGu+uKbJgy09K/RKKc7kJA==} + resolution: + { + integrity: sha512-mOSBvHGDZMuIEZMdOz/aCEYDCv0E7nfcNsIhUF+/P+xC7Hyf3FkvymqgPbg9D1EdSGu+uKbJgy09K/RKKc7kJA==, + } hasBin: true safe-stable-stringify@2.5.0: - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==, + } + engines: { node: ">=10" } sandbox-cli-detector@0.2.0: - resolution: {integrity: sha512-4lyHX0ZU0AZKwjgZ1InxZAa3PNpyEb8rOQ+Zss1ReYmhNzW0Q+h1zE5nvniXN0HaAWZaZE1zgVNEirb0R7LmNg==} - engines: {node: '>=18.18'} + resolution: + { + integrity: sha512-4lyHX0ZU0AZKwjgZ1InxZAa3PNpyEb8rOQ+Zss1ReYmhNzW0Q+h1zE5nvniXN0HaAWZaZE1zgVNEirb0R7LmNg==, + } + engines: { node: ">=18.18" } hasBin: true sax@1.6.1: - resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==} - engines: {node: '>=11.0.0'} + resolution: + { + integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==, + } + engines: { node: ">=11.0.0" } scheduler@0.27.0: - resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + resolution: + { + integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==, + } secure-json-parse@4.1.0: - resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==} + resolution: + { + integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==, + } semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + resolution: + { + integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, + } hasBin: true semver@7.8.5: - resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==, + } + engines: { node: ">=10" } hasBin: true send@0.19.2: - resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} - engines: {node: '>= 0.8.0'} + resolution: + { + integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==, + } + engines: { node: ">= 0.8.0" } serialize-error@2.1.0: - resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==, + } + engines: { node: ">=0.10.0" } serve-static@1.16.3: - resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} - engines: {node: '>= 0.8.0'} + resolution: + { + integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==, + } + engines: { node: ">= 0.8.0" } set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + resolution: + { + integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==, + } set-cookie-parser@2.7.2: - resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} + resolution: + { + integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==, + } setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + resolution: + { + integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==, + } shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + } + engines: { node: ">=8" } shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + } + engines: { node: ">=8" } shell-quote@1.10.0: - resolution: {integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==, + } + engines: { node: ">= 0.4" } siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + resolution: + { + integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==, + } signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + resolution: + { + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, + } simple-plist@1.3.1: - resolution: {integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==} + resolution: + { + integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==, + } sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + resolution: + { + integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, + } slugify@1.6.9: - resolution: {integrity: sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==} - engines: {node: '>=8.0.0'} + resolution: + { + integrity: sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==, + } + engines: { node: ">=8.0.0" } sonic-boom@4.2.1: - resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==} + resolution: + { + integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==, + } source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, + } + engines: { node: ">=0.10.0" } source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + resolution: + { + integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, + } source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==, + } + engines: { node: ">=0.10.0" } source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, + } + engines: { node: ">=0.10.0" } split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} + resolution: + { + integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==, + } + engines: { node: ">= 10.x" } stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + resolution: + { + integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==, + } stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + resolution: + { + integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==, + } stacktrace-parser@0.1.11: - resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==, + } + engines: { node: ">=6" } statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==, + } + engines: { node: ">= 0.6" } statuses@2.0.2: - resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==, + } + engines: { node: ">= 0.8" } std-env@4.2.0: - resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} + resolution: + { + integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==, + } stream-buffers@2.2.0: - resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} - engines: {node: '>= 0.10.0'} + resolution: + { + integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==, + } + engines: { node: ">= 0.10.0" } string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, + } + engines: { node: ">=8" } strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==, + } + engines: { node: ">=6" } strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, + } + engines: { node: ">=8" } structured-headers@0.4.1: - resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} + resolution: + { + integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==, + } sumchecker@3.0.1: - resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} - engines: {node: '>= 8.0'} + resolution: + { + integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==, + } + engines: { node: ">= 8.0" } supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, + } + engines: { node: ">=4" } supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, + } + engines: { node: ">=8" } supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, + } + engines: { node: ">=10" } supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==, + } + engines: { node: ">=8" } supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, + } + engines: { node: ">= 0.4" } terminal-link@2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==, + } + engines: { node: ">=8" } terser@5.51.2: - resolution: {integrity: sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==, + } + engines: { node: ">=10" } hasBin: true text-encoding@0.7.0: - resolution: {integrity: sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==} + resolution: + { + integrity: sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==, + } deprecated: no longer maintained thread-stream@4.2.0: - resolution: {integrity: sha512-e2zZ96wSChazBsbENf/Pcm/4swHt2cEKQ92rhUjkL9GCKiTDJIaTBenjE/m9DXi0QBmTMDkFDdOomUy20A1tDQ==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-e2zZ96wSChazBsbENf/Pcm/4swHt2cEKQ92rhUjkL9GCKiTDJIaTBenjE/m9DXi0QBmTMDkFDdOomUy20A1tDQ==, + } + engines: { node: ">=20" } throat@5.0.0: - resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + resolution: + { + integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==, + } tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + resolution: + { + integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==, + } tinyexec@1.3.0: - resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==, + } + engines: { node: ">=18" } tinyglobby@0.2.17: - resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} - engines: {node: '>=12.0.0'} + resolution: + { + integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==, + } + engines: { node: ">=12.0.0" } tinyrainbow@3.1.1: - resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} - engines: {node: '>=14.0.0'} + resolution: + { + integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==, + } + engines: { node: ">=14.0.0" } tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + resolution: + { + integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, + } to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + resolution: + { + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, + } + engines: { node: ">=8.0" } toad-cache@3.7.4: - resolution: {integrity: sha512-m1TdR/rvT7kgGJZhspNtXdsdYk0fddFpJJFlG5s+UkPFo6lkLoZ3YLOaovPYjq1R75NP5JfeTlSHaOsE09peCg==} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-m1TdR/rvT7kgGJZhspNtXdsdYk0fddFpJJFlG5s+UkPFo6lkLoZ3YLOaovPYjq1R75NP5JfeTlSHaOsE09peCg==, + } + engines: { node: ">=20" } toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} + resolution: + { + integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==, + } + engines: { node: ">=0.6" } toqr@0.1.1: - resolution: {integrity: sha512-FWAPzCIHZHnrE/5/w9MPk0kK25hSQSH2IKhYh9PyjS3SG/+IEMvlwIHbhz+oF7xl54I+ueZlVnMjyzdSwLmAwA==} + resolution: + { + integrity: sha512-FWAPzCIHZHnrE/5/w9MPk0kK25hSQSH2IKhYh9PyjS3SG/+IEMvlwIHbhz+oF7xl54I+ueZlVnMjyzdSwLmAwA==, + } ts-api-utils@2.5.0: - resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} - engines: {node: '>=18.12'} + resolution: + { + integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==, + } + engines: { node: ">=18.12" } peerDependencies: - typescript: '>=4.8.4' + typescript: ">=4.8.4" tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + resolution: + { + integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, + } tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + resolution: + { + integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, + } tsx@4.23.12: - resolution: {integrity: sha512-FDf4L4sYzKtzWYhU/Xm0AQFdTjdIxNo9ElTf2mxXM6k8YMHXzYUe4yODVaXP4V9uMFbVg8c0qyBccK2OOxb45Q==} - engines: {node: '>=18.0.0'} + resolution: + { + integrity: sha512-FDf4L4sYzKtzWYhU/Xm0AQFdTjdIxNo9ElTf2mxXM6k8YMHXzYUe4yODVaXP4V9uMFbVg8c0qyBccK2OOxb45Q==, + } + engines: { node: ">=18.0.0" } hasBin: true tsyringe@4.10.0: - resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} - engines: {node: '>= 6.0.0'} + resolution: + { + integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==, + } + engines: { node: ">= 6.0.0" } turbo@2.10.11: - resolution: {integrity: sha512-yQfwQVoRXwOuyX1LxiJFBFNg6VfuYh+/RyZLd82+isgyLkBXw3S5XRRzvcck1FAjSCG5sVyLd+O1eDMvYa3J7g==} + resolution: + { + integrity: sha512-yQfwQVoRXwOuyX1LxiJFBFNg6VfuYh+/RyZLd82+isgyLkBXw3S5XRRzvcck1FAjSCG5sVyLd+O1eDMvYa3J7g==, + } hasBin: true type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + resolution: + { + integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, + } + engines: { node: ">= 0.8.0" } type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, + } + engines: { node: ">=10" } type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==, + } + engines: { node: ">=8" } typescript-eslint@8.67.0: - resolution: {integrity: sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: + { + integrity: sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' + typescript: ">=4.8.4 <6.1.0" typescript@6.0.3: - resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} - engines: {node: '>=14.17'} + resolution: + { + integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==, + } + engines: { node: ">=14.17" } hasBin: true undici-types@7.18.2: - resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + resolution: + { + integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==, + } undici-types@8.3.0: - resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + resolution: + { + integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==, + } undici@7.29.1: - resolution: {integrity: sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==} - engines: {node: '>=20.18.1'} + resolution: + { + integrity: sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==, + } + engines: { node: ">=20.18.1" } unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==, + } + engines: { node: ">=4" } unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==, + } + engines: { node: ">=4" } unicode-match-property-value-ecmascript@2.2.1: - resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==, + } + engines: { node: ">=4" } unicode-property-aliases-ecmascript@2.2.0: - resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==, + } + engines: { node: ">=4" } unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==, + } + engines: { node: ">= 0.8" } update-browserslist-db@1.3.2: - resolution: {integrity: sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==} + resolution: + { + integrity: sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==, + } hasBin: true peerDependencies: - browserslist: '>= 4.21.0' + browserslist: ">= 4.21.0" uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + resolution: + { + integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, + } utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} + resolution: + { + integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==, + } + engines: { node: ">= 0.4.0" } uuid@11.1.1: - resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} + resolution: + { + integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==, + } hasBin: true validate-npm-package-name@5.0.1: - resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==, + } + engines: { node: ">= 0.8" } vite@8.2.2: - resolution: {integrity: sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==, + } + engines: { node: ^20.19.0 || >=22.12.0 } hasBin: true peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.4.0 || ^0.5.0 + "@types/node": ^20.19.0 || >=22.12.0 + "@vitejs/devtools": ^0.4.0 || ^0.5.0 esbuild: ^0.27.0 || ^0.28.0 - jiti: '>=1.21.0' + jiti: ">=1.21.0" less: ^4.0.0 sass: ^1.70.0 sass-embedded: ^1.70.0 - stylus: '>=0.54.8' + stylus: ">=0.54.8" sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@vitejs/devtools': + "@vitejs/devtools": optional: true esbuild: optional: true @@ -4126,40 +6527,43 @@ packages: optional: true vitest@4.1.11: - resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + resolution: + { + integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==, + } + engines: { node: ^20.0.0 || ^22.0.0 || >=24.0.0 } hasBin: true peerDependencies: - '@edge-runtime/vm': '*' - '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.11 - '@vitest/browser-preview': 4.1.11 - '@vitest/browser-webdriverio': 4.1.11 - '@vitest/coverage-istanbul': 4.1.11 - '@vitest/coverage-v8': 4.1.11 - '@vitest/ui': 4.1.11 - happy-dom: '*' - jsdom: '*' + "@edge-runtime/vm": "*" + "@opentelemetry/api": ^1.9.0 + "@types/node": ^20.0.0 || ^22.0.0 || >=24.0.0 + "@vitest/browser-playwright": 4.1.11 + "@vitest/browser-preview": 4.1.11 + "@vitest/browser-webdriverio": 4.1.11 + "@vitest/coverage-istanbul": 4.1.11 + "@vitest/coverage-v8": 4.1.11 + "@vitest/ui": 4.1.11 + happy-dom: "*" + jsdom: "*" vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: - '@edge-runtime/vm': + "@edge-runtime/vm": optional: true - '@opentelemetry/api': + "@opentelemetry/api": optional: true - '@types/node': + "@types/node": optional: true - '@vitest/browser-playwright': + "@vitest/browser-playwright": optional: true - '@vitest/browser-preview': + "@vitest/browser-preview": optional: true - '@vitest/browser-webdriverio': + "@vitest/browser-webdriverio": optional: true - '@vitest/coverage-istanbul': + "@vitest/coverage-istanbul": optional: true - '@vitest/coverage-v8': + "@vitest/coverage-v8": optional: true - '@vitest/ui': + "@vitest/ui": optional: true happy-dom: optional: true @@ -4167,48 +6571,84 @@ packages: optional: true vlq@1.0.1: - resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + resolution: + { + integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==, + } walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + resolution: + { + integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, + } wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + resolution: + { + integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, + } whatwg-fetch@3.6.20: - resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + resolution: + { + integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==, + } whatwg-url-minimum@0.1.2: - resolution: {integrity: sha512-XPEm0XFQWNVG292lII1PrRRJl3sItrs7CettZ4ncYxuDVpLyy+NwlGyut2hXI0JswcJUxeCH+CyOJK0ZzAXD6A==} + resolution: + { + integrity: sha512-XPEm0XFQWNVG292lII1PrRRJl3sItrs7CettZ4ncYxuDVpLyy+NwlGyut2hXI0JswcJUxeCH+CyOJK0ZzAXD6A==, + } which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + resolution: + { + integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==, + } which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + } + engines: { node: ">= 8" } hasBin: true why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==, + } + engines: { node: ">=8" } hasBin: true word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, + } + engines: { node: ">=0.10.0" } wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, + } + engines: { node: ">=8" } wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, + } + engines: { node: ">=10" } ws@7.5.13: - resolution: {integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==} - engines: {node: '>=8.3.0'} + resolution: + { + integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==, + } + engines: { node: ">=8.3.0" } peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -4219,11 +6659,14 @@ packages: optional: true ws@8.21.3: - resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==} - engines: {node: '>=10.0.0'} + resolution: + { + integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==, + } + engines: { node: ">=10.0.0" } peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' + utf-8-validate: ">=5.0.2" peerDependenciesMeta: bufferutil: optional: true @@ -4231,88 +6674,135 @@ packages: optional: true xcode@3.0.1: - resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==} - engines: {node: '>=10.0.0'} + resolution: + { + integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==, + } + engines: { node: ">=10.0.0" } xml2js@0.6.0: - resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} - engines: {node: '>=4.0.0'} + resolution: + { + integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==, + } + engines: { node: ">=4.0.0" } xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} + resolution: + { + integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==, + } + engines: { node: ">=4.0" } xmlbuilder@15.1.1: - resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} - engines: {node: '>=8.0'} + resolution: + { + integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==, + } + engines: { node: ">=8.0" } xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} + resolution: + { + integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==, + } + engines: { node: ">=0.4" } y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + resolution: + { + integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==, + } y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, + } + engines: { node: ">=10" } yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + resolution: + { + integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, + } yaml@2.9.0: - resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} - engines: {node: '>= 14.6'} + resolution: + { + integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==, + } + engines: { node: ">= 14.6" } hasBin: true yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==, + } + engines: { node: ">=6" } yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, + } + engines: { node: ">=12" } yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==, + } + engines: { node: ">=8" } yargs@17.7.3: - resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==, + } + engines: { node: ">=12" } yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, + } + engines: { node: ">=10" } zod@3.25.76: - resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + resolution: + { + integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==, + } zod@4.4.3: - resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + resolution: + { + integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==, + } snapshots: - - '@babel/code-frame@7.29.7': + "@babel/code-frame@7.29.7": dependencies: - '@babel/helper-validator-identifier': 7.29.7 + "@babel/helper-validator-identifier": 7.29.7 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.29.7': {} + "@babel/compat-data@7.29.7": {} - '@babel/core@7.29.7(supports-color@8.1.1)': + "@babel/core@7.29.7(supports-color@8.1.1)": dependencies: - '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.8 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/helpers': 7.29.7 - '@babel/parser': 7.29.8 - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@8.1.1) - '@babel/types': 7.29.8 - '@jridgewell/remapping': 2.3.5 + "@babel/code-frame": 7.29.7 + "@babel/generator": 7.29.8 + "@babel/helper-compilation-targets": 7.29.7 + "@babel/helper-module-transforms": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/helpers": 7.29.7 + "@babel/parser": 7.29.8 + "@babel/template": 7.29.7 + "@babel/traverse": 7.29.8(supports-color@8.1.1) + "@babel/types": 7.29.8 + "@jridgewell/remapping": 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -4321,372 +6811,372 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.29.8': + "@babel/generator@7.29.8": dependencies: - '@babel/parser': 7.29.8 - '@babel/types': 7.29.8 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 + "@babel/parser": 7.29.8 + "@babel/types": 7.29.8 + "@jridgewell/gen-mapping": 0.3.13 + "@jridgewell/trace-mapping": 0.3.31 jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.29.7': + "@babel/helper-annotate-as-pure@7.29.7": dependencies: - '@babel/types': 7.29.8 + "@babel/types": 7.29.8 - '@babel/helper-compilation-targets@7.29.7': + "@babel/helper-compilation-targets@7.29.7": dependencies: - '@babel/compat-data': 7.29.7 - '@babel/helper-validator-option': 7.29.7 + "@babel/compat-data": 7.29.7 + "@babel/helper-validator-option": 7.29.7 browserslist: 4.28.9 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-member-expression-to-functions': 7.29.7(supports-color@8.1.1) - '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@8.1.1) - '@babel/traverse': 7.29.8(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-annotate-as-pure": 7.29.7 + "@babel/helper-member-expression-to-functions": 7.29.7(supports-color@8.1.1) + "@babel/helper-optimise-call-expression": 7.29.7 + "@babel/helper-replace-supers": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/helper-skip-transparent-expression-wrappers": 7.29.7(supports-color@8.1.1) + "@babel/traverse": 7.29.8(supports-color@8.1.1) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-annotate-as-pure": 7.29.7 regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-compilation-targets": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 debug: 4.4.3(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.12 transitivePeerDependencies: - supports-color - '@babel/helper-globals@7.29.7': {} + "@babel/helper-globals@7.29.7": {} - '@babel/helper-member-expression-to-functions@7.29.7(supports-color@8.1.1)': + "@babel/helper-member-expression-to-functions@7.29.7(supports-color@8.1.1)": dependencies: - '@babel/traverse': 7.29.8(supports-color@8.1.1) - '@babel/types': 7.29.8 + "@babel/traverse": 7.29.8(supports-color@8.1.1) + "@babel/types": 7.29.8 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.29.7(supports-color@8.1.1)': + "@babel/helper-module-imports@7.29.7(supports-color@8.1.1)": dependencies: - '@babel/traverse': 7.29.8(supports-color@8.1.1) - '@babel/types': 7.29.8 + "@babel/traverse": 7.29.8(supports-color@8.1.1) + "@babel/types": 7.29.8 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-module-imports': 7.29.7(supports-color@8.1.1) - '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-module-imports": 7.29.7(supports-color@8.1.1) + "@babel/helper-validator-identifier": 7.29.7 + "@babel/traverse": 7.29.8(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.29.7': + "@babel/helper-optimise-call-expression@7.29.7": dependencies: - '@babel/types': 7.29.8 + "@babel/types": 7.29.8 - '@babel/helper-plugin-utils@7.29.7': {} + "@babel/helper-plugin-utils@7.29.7": {} - '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-wrap-function': 7.29.7(supports-color@8.1.1) - '@babel/traverse': 7.29.8(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-annotate-as-pure": 7.29.7 + "@babel/helper-wrap-function": 7.29.7(supports-color@8.1.1) + "@babel/traverse": 7.29.8(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-member-expression-to-functions': 7.29.7(supports-color@8.1.1) - '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-member-expression-to-functions": 7.29.7(supports-color@8.1.1) + "@babel/helper-optimise-call-expression": 7.29.7 + "@babel/traverse": 7.29.8(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.29.7(supports-color@8.1.1)': + "@babel/helper-skip-transparent-expression-wrappers@7.29.7(supports-color@8.1.1)": dependencies: - '@babel/traverse': 7.29.8(supports-color@8.1.1) - '@babel/types': 7.29.8 + "@babel/traverse": 7.29.8(supports-color@8.1.1) + "@babel/types": 7.29.8 transitivePeerDependencies: - supports-color - '@babel/helper-string-parser@7.29.7': {} + "@babel/helper-string-parser@7.29.7": {} - '@babel/helper-validator-identifier@7.29.7': {} + "@babel/helper-validator-identifier@7.29.7": {} - '@babel/helper-validator-option@7.29.7': {} + "@babel/helper-validator-option@7.29.7": {} - '@babel/helper-wrap-function@7.29.7(supports-color@8.1.1)': + "@babel/helper-wrap-function@7.29.7(supports-color@8.1.1)": dependencies: - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@8.1.1) - '@babel/types': 7.29.8 + "@babel/template": 7.29.7 + "@babel/traverse": 7.29.8(supports-color@8.1.1) + "@babel/types": 7.29.8 transitivePeerDependencies: - supports-color - '@babel/helpers@7.29.7': + "@babel/helpers@7.29.7": dependencies: - '@babel/template': 7.29.7 - '@babel/types': 7.29.8 + "@babel/template": 7.29.7 + "@babel/types": 7.29.8 - '@babel/parser@7.29.8': + "@babel/parser@7.29.8": dependencies: - '@babel/types': 7.29.8 + "@babel/types": 7.29.8 - '@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-decorators': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 + "@babel/plugin-syntax-decorators": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-export-default-from@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-proposal-export-default-from@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-syntax-decorators@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-syntax-decorators@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-syntax-export-default-from@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-syntax-export-default-from@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-syntax-flow@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-syntax-flow@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/traverse': 7.29.8(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-remap-async-to-generator": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/traverse": 7.29.8(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-module-imports': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-module-imports": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-remap-async-to-generator": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-globals': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/traverse': 7.29.8(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-annotate-as-pure": 7.29.7 + "@babel/helper-compilation-targets": 7.29.7 + "@babel/helper-globals": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-replace-supers": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/traverse": 7.29.8(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 + "@babel/traverse": 7.29.8(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-flow-strip-types@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-transform-flow-strip-types@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-flow': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 + "@babel/plugin-syntax-flow": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-skip-transparent-expression-wrappers": 7.29.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-module-transforms": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-create-regexp-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/traverse': 7.29.8(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-compilation-targets": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/plugin-transform-destructuring": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-parameters": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/traverse": 7.29.8(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-skip-transparent-expression-wrappers": 7.29.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-annotate-as-pure": 7.29.7 + "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-display-name@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-transform-react-display-name@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-react-jsx-development@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-react-jsx-development@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/plugin-transform-react-jsx": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-react-jsx@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-module-imports': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/types': 7.29.8 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-annotate-as-pure": 7.29.7 + "@babel/helper-module-imports": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 + "@babel/plugin-syntax-jsx": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/types": 7.29.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-transform-react-pure-annotations@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-annotate-as-pure": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-module-imports': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-module-imports": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) @@ -4694,62 +7184,62 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@8.1.1) - '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-annotate-as-pure": 7.29.7 + "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-skip-transparent-expression-wrappers": 7.29.7(supports-color@8.1.1) + "@babel/plugin-syntax-typescript": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + "@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-create-regexp-features-plugin": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/preset-typescript@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@babel/preset-typescript@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-validator-option': 7.29.7 - '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-validator-option": 7.29.7 + "@babel/plugin-syntax-jsx": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-transform-modules-commonjs": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-typescript": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/runtime@7.29.7': {} + "@babel/runtime@7.29.7": {} - '@babel/template@7.29.7': + "@babel/template@7.29.7": dependencies: - '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.8 - '@babel/types': 7.29.8 + "@babel/code-frame": 7.29.7 + "@babel/parser": 7.29.8 + "@babel/types": 7.29.8 - '@babel/traverse@7.29.8(supports-color@8.1.1)': + "@babel/traverse@7.29.8(supports-color@8.1.1)": dependencies: - '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.8 - '@babel/helper-globals': 7.29.7 - '@babel/parser': 7.29.8 - '@babel/template': 7.29.7 - '@babel/types': 7.29.8 + "@babel/code-frame": 7.29.7 + "@babel/generator": 7.29.8 + "@babel/helper-globals": 7.29.7 + "@babel/parser": 7.29.8 + "@babel/template": 7.29.7 + "@babel/types": 7.29.8 debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/types@7.29.8': + "@babel/types@7.29.8": dependencies: - '@babel/helper-string-parser': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 + "@babel/helper-string-parser": 7.29.7 + "@babel/helper-validator-identifier": 7.29.7 - '@electron-internal/extract-zip@1.0.5': {} + "@electron-internal/extract-zip@1.0.5": {} - '@electron/get@5.1.0(supports-color@8.1.1)': + "@electron/get@5.1.0(supports-color@8.1.1)": dependencies: debug: 4.4.3(supports-color@8.1.1) env-paths: 3.0.0 @@ -4762,143 +7252,143 @@ snapshots: transitivePeerDependencies: - supports-color - '@esbuild/aix-ppc64@0.28.2': + "@esbuild/aix-ppc64@0.28.2": optional: true - '@esbuild/android-arm64@0.28.2': + "@esbuild/android-arm64@0.28.2": optional: true - '@esbuild/android-arm@0.28.2': + "@esbuild/android-arm@0.28.2": optional: true - '@esbuild/android-x64@0.28.2': + "@esbuild/android-x64@0.28.2": optional: true - '@esbuild/darwin-arm64@0.28.2': + "@esbuild/darwin-arm64@0.28.2": optional: true - '@esbuild/darwin-x64@0.28.2': + "@esbuild/darwin-x64@0.28.2": optional: true - '@esbuild/freebsd-arm64@0.28.2': + "@esbuild/freebsd-arm64@0.28.2": optional: true - '@esbuild/freebsd-x64@0.28.2': + "@esbuild/freebsd-x64@0.28.2": optional: true - '@esbuild/linux-arm64@0.28.2': + "@esbuild/linux-arm64@0.28.2": optional: true - '@esbuild/linux-arm@0.28.2': + "@esbuild/linux-arm@0.28.2": optional: true - '@esbuild/linux-ia32@0.28.2': + "@esbuild/linux-ia32@0.28.2": optional: true - '@esbuild/linux-loong64@0.28.2': + "@esbuild/linux-loong64@0.28.2": optional: true - '@esbuild/linux-mips64el@0.28.2': + "@esbuild/linux-mips64el@0.28.2": optional: true - '@esbuild/linux-ppc64@0.28.2': + "@esbuild/linux-ppc64@0.28.2": optional: true - '@esbuild/linux-riscv64@0.28.2': + "@esbuild/linux-riscv64@0.28.2": optional: true - '@esbuild/linux-s390x@0.28.2': + "@esbuild/linux-s390x@0.28.2": optional: true - '@esbuild/linux-x64@0.28.2': + "@esbuild/linux-x64@0.28.2": optional: true - '@esbuild/netbsd-arm64@0.28.2': + "@esbuild/netbsd-arm64@0.28.2": optional: true - '@esbuild/netbsd-x64@0.28.2': + "@esbuild/netbsd-x64@0.28.2": optional: true - '@esbuild/openbsd-arm64@0.28.2': + "@esbuild/openbsd-arm64@0.28.2": optional: true - '@esbuild/openbsd-x64@0.28.2': + "@esbuild/openbsd-x64@0.28.2": optional: true - '@esbuild/openharmony-arm64@0.28.2': + "@esbuild/openharmony-arm64@0.28.2": optional: true - '@esbuild/sunos-x64@0.28.2': + "@esbuild/sunos-x64@0.28.2": optional: true - '@esbuild/win32-arm64@0.28.2': + "@esbuild/win32-arm64@0.28.2": optional: true - '@esbuild/win32-ia32@0.28.2': + "@esbuild/win32-ia32@0.28.2": optional: true - '@esbuild/win32-x64@0.28.2': + "@esbuild/win32-x64@0.28.2": optional: true - '@eslint-community/eslint-utils@4.10.1(eslint@10.8.1(supports-color@8.1.1))': + "@eslint-community/eslint-utils@4.10.1(eslint@10.8.1(supports-color@8.1.1))": dependencies: eslint: 10.8.1(supports-color@8.1.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.2': {} + "@eslint-community/regexpp@4.12.2": {} - '@eslint/config-array@0.23.5(supports-color@8.1.1)': + "@eslint/config-array@0.23.5(supports-color@8.1.1)": dependencies: - '@eslint/object-schema': 3.0.5 + "@eslint/object-schema": 3.0.5 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.6 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.7.0': + "@eslint/config-helpers@0.7.0": dependencies: - '@eslint/core': 1.2.1 + "@eslint/core": 1.2.1 - '@eslint/core@1.2.1': + "@eslint/core@1.2.1": dependencies: - '@types/json-schema': 7.0.15 + "@types/json-schema": 7.0.15 - '@eslint/js@10.0.1(eslint@10.8.1(supports-color@8.1.1))': + "@eslint/js@10.0.1(eslint@10.8.1(supports-color@8.1.1))": optionalDependencies: eslint: 10.8.1(supports-color@8.1.1) - '@eslint/object-schema@3.0.5': {} + "@eslint/object-schema@3.0.5": {} - '@eslint/plugin-kit@0.7.2': + "@eslint/plugin-kit@0.7.2": dependencies: - '@eslint/core': 1.2.1 + "@eslint/core": 1.2.1 levn: 0.4.1 - '@expo/cli@57.0.22(@expo/dom-webview@57.0.1)(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3)': - dependencies: - '@expo/code-signing-certificates': 0.0.6 - '@expo/config': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - '@expo/config-plugins': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - '@expo/devcert': 1.2.1(supports-color@8.1.1) - '@expo/env': 2.4.3(supports-color@8.1.1) - '@expo/image-utils': 0.11.5(supports-color@8.1.1)(typescript@6.0.3) - '@expo/inline-modules': 0.1.7(supports-color@8.1.1)(typescript@6.0.3) - '@expo/json-file': 11.0.1 - '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) - '@expo/metro': 56.0.2(supports-color@8.1.1) - '@expo/metro-config': 57.0.12(expo@57.0.20)(supports-color@8.1.1)(typescript@6.0.3) - '@expo/metro-file-map': 57.0.2(supports-color@8.1.1) - '@expo/osascript': 2.7.1 - '@expo/package-manager': 1.13.1 - '@expo/plist': 0.8.1 - '@expo/prebuild-config': 57.0.15(supports-color@8.1.1)(typescript@6.0.3) - '@expo/require-utils': 57.0.5(supports-color@8.1.1)(typescript@6.0.3) - '@expo/router-server': 57.0.9(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo-server@57.0.3)(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react@19.2.3)(supports-color@8.1.1) - '@expo/schema-utils': 57.0.2 - '@expo/spawn-async': 1.8.0 - '@expo/ws-tunnel': 2.0.0(ws@8.21.3) - '@expo/xcpretty': 4.4.4 - '@react-native/dev-middleware': 0.86.3(supports-color@8.1.1) + "@expo/cli@57.0.22(@expo/dom-webview@57.0.1)(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3)": + dependencies: + "@expo/code-signing-certificates": 0.0.6 + "@expo/config": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + "@expo/config-plugins": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + "@expo/devcert": 1.2.1(supports-color@8.1.1) + "@expo/env": 2.4.3(supports-color@8.1.1) + "@expo/image-utils": 0.11.5(supports-color@8.1.1)(typescript@6.0.3) + "@expo/inline-modules": 0.1.7(supports-color@8.1.1)(typescript@6.0.3) + "@expo/json-file": 11.0.1 + "@expo/log-box": 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) + "@expo/metro": 56.0.2(supports-color@8.1.1) + "@expo/metro-config": 57.0.12(expo@57.0.20)(supports-color@8.1.1)(typescript@6.0.3) + "@expo/metro-file-map": 57.0.2(supports-color@8.1.1) + "@expo/osascript": 2.7.1 + "@expo/package-manager": 1.13.1 + "@expo/plist": 0.8.1 + "@expo/prebuild-config": 57.0.15(supports-color@8.1.1)(typescript@6.0.3) + "@expo/require-utils": 57.0.5(supports-color@8.1.1)(typescript@6.0.3) + "@expo/router-server": 57.0.9(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo-server@57.0.3)(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react@19.2.3)(supports-color@8.1.1) + "@expo/schema-utils": 57.0.2 + "@expo/spawn-async": 1.8.0 + "@expo/ws-tunnel": 2.0.0(ws@8.21.3) + "@expo/xcpretty": 4.4.4 + "@react-native/dev-middleware": 0.86.3(supports-color@8.1.1) accepts: 1.3.8 agent-cli-detector: 0.1.7 arg: 5.0.2 @@ -4939,8 +7429,8 @@ snapshots: optionalDependencies: react-native: 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1) transitivePeerDependencies: - - '@expo/dom-webview' - - '@expo/metro-runtime' + - "@expo/dom-webview" + - "@expo/metro-runtime" - bufferutil - expo-constants - expo-font @@ -4951,17 +7441,17 @@ snapshots: - typescript - utf-8-validate - '@expo/code-signing-certificates@0.0.6': + "@expo/code-signing-certificates@0.0.6": dependencies: node-forge: 1.4.0 - '@expo/config-plugins@57.0.9(supports-color@8.1.1)(typescript@6.0.3)': + "@expo/config-plugins@57.0.9(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@expo/config-types': 57.0.2 - '@expo/json-file': 11.0.1 - '@expo/plist': 0.8.1 - '@expo/require-utils': 57.0.5(supports-color@8.1.1)(typescript@6.0.3) - '@expo/sdk-runtime-versions': 1.0.0 + "@expo/config-types": 57.0.2 + "@expo/json-file": 11.0.1 + "@expo/plist": 0.8.1 + "@expo/require-utils": 57.0.5(supports-color@8.1.1)(typescript@6.0.3) + "@expo/sdk-runtime-versions": 1.0.0 chalk: 4.1.2 debug: 4.4.3(supports-color@8.1.1) getenv: 2.0.0 @@ -4974,14 +7464,14 @@ snapshots: - supports-color - typescript - '@expo/config-types@57.0.2': {} + "@expo/config-types@57.0.2": {} - '@expo/config@57.0.9(supports-color@8.1.1)(typescript@6.0.3)': + "@expo/config@57.0.9(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@expo/config-plugins': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - '@expo/config-types': 57.0.2 - '@expo/json-file': 11.0.1 - '@expo/require-utils': 57.0.5(supports-color@8.1.1)(typescript@6.0.3) + "@expo/config-plugins": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + "@expo/config-types": 57.0.2 + "@expo/json-file": 11.0.1 + "@expo/require-utils": 57.0.5(supports-color@8.1.1)(typescript@6.0.3) deepmerge: 4.3.1 getenv: 2.0.0 glob: 13.0.6 @@ -4992,27 +7482,27 @@ snapshots: - supports-color - typescript - '@expo/devcert@1.2.1(supports-color@8.1.1)': + "@expo/devcert@1.2.1(supports-color@8.1.1)": dependencies: - '@expo/sudo-prompt': 9.3.2 + "@expo/sudo-prompt": 9.3.2 debug: 3.2.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@expo/devtools@57.0.1(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)': + "@expo/devtools@57.0.1(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)": dependencies: chalk: 4.1.2 optionalDependencies: react: 19.2.3 react-native: 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1) - '@expo/dom-webview@57.0.1(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)': + "@expo/dom-webview@57.0.1(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)": dependencies: expo: 57.0.20(@babel/core@7.29.7(supports-color@8.1.1))(@expo/dom-webview@57.0.1)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) react: 19.2.3 react-native: 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1) - '@expo/env@2.4.3(supports-color@8.1.1)': + "@expo/env@2.4.3(supports-color@8.1.1)": dependencies: chalk: 4.1.2 debug: 4.4.3(supports-color@8.1.1) @@ -5020,12 +7510,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/expo-modules-macros-plugin@0.6.1': {} + "@expo/expo-modules-macros-plugin@0.6.1": {} - '@expo/fingerprint@0.20.12(supports-color@8.1.1)': + "@expo/fingerprint@0.20.12(supports-color@8.1.1)": dependencies: - '@expo/env': 2.4.3(supports-color@8.1.1) - '@expo/spawn-async': 1.8.0 + "@expo/env": 2.4.3(supports-color@8.1.1) + "@expo/spawn-async": 1.8.0 arg: 5.0.2 chalk: 4.1.2 debug: 4.4.3(supports-color@8.1.1) @@ -5038,10 +7528,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/image-utils@0.11.5(supports-color@8.1.1)(typescript@6.0.3)': + "@expo/image-utils@0.11.5(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@expo/require-utils': 57.0.5(supports-color@8.1.1)(typescript@6.0.3) - '@expo/spawn-async': 1.8.0 + "@expo/require-utils": 57.0.5(supports-color@8.1.1)(typescript@6.0.3) + "@expo/spawn-async": 1.8.0 chalk: 4.1.2 getenv: 2.0.0 jimp-compact: 0.16.1 @@ -5051,49 +7541,49 @@ snapshots: - supports-color - typescript - '@expo/inline-modules@0.1.7(supports-color@8.1.1)(typescript@6.0.3)': + "@expo/inline-modules@0.1.7(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@expo/config-plugins': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + "@expo/config-plugins": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) transitivePeerDependencies: - supports-color - typescript - '@expo/json-file@11.0.1': + "@expo/json-file@11.0.1": dependencies: - '@babel/code-frame': 7.29.7 + "@babel/code-frame": 7.29.7 json5: 2.2.3 - '@expo/local-build-cache-provider@57.0.8(supports-color@8.1.1)(typescript@6.0.3)': + "@expo/local-build-cache-provider@57.0.8(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@expo/config': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + "@expo/config": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) chalk: 4.1.2 transitivePeerDependencies: - supports-color - typescript - '@expo/log-box@57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)': + "@expo/log-box@57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)": dependencies: - '@expo/dom-webview': 57.0.1(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) + "@expo/dom-webview": 57.0.1(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) anser: 1.4.10 expo: 57.0.20(@babel/core@7.29.7(supports-color@8.1.1))(@expo/dom-webview@57.0.1)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) react: 19.2.3 react-native: 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1) stacktrace-parser: 0.1.11 - '@expo/metro-config@57.0.12(expo@57.0.20)(supports-color@8.1.1)(typescript@6.0.3)': - dependencies: - '@babel/code-frame': 7.29.7 - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/generator': 7.29.8 - '@expo/config': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - '@expo/env': 2.4.3(supports-color@8.1.1) - '@expo/json-file': 11.0.1 - '@expo/metro': 56.0.2(supports-color@8.1.1) - '@expo/require-utils': 57.0.5(supports-color@8.1.1)(typescript@6.0.3) - '@expo/spawn-async': 1.8.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/remapping': 2.3.5 - '@jridgewell/sourcemap-codec': 1.5.5 + "@expo/metro-config@57.0.12(expo@57.0.20)(supports-color@8.1.1)(typescript@6.0.3)": + dependencies: + "@babel/code-frame": 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/generator": 7.29.8 + "@expo/config": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + "@expo/env": 2.4.3(supports-color@8.1.1) + "@expo/json-file": 11.0.1 + "@expo/metro": 56.0.2(supports-color@8.1.1) + "@expo/require-utils": 57.0.5(supports-color@8.1.1)(typescript@6.0.3) + "@expo/spawn-async": 1.8.0 + "@jridgewell/gen-mapping": 0.3.13 + "@jridgewell/remapping": 2.3.5 + "@jridgewell/sourcemap-codec": 1.5.5 browserslist: 4.28.9 chalk: 4.1.2 debug: 4.4.3(supports-color@8.1.1) @@ -5113,7 +7603,7 @@ snapshots: - typescript - utf-8-validate - '@expo/metro-file-map@57.0.2(supports-color@8.1.1)': + "@expo/metro-file-map@57.0.2(supports-color@8.1.1)": dependencies: debug: 4.4.3(supports-color@8.1.1) fb-watchman: 2.0.2 @@ -5124,7 +7614,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/metro@56.0.2(supports-color@8.1.1)': + "@expo/metro@56.0.2(supports-color@8.1.1)": dependencies: metro: 0.84.5(supports-color@8.1.1) metro-babel-transformer: 0.84.5(supports-color@8.1.1) @@ -5145,33 +7635,33 @@ snapshots: - supports-color - utf-8-validate - '@expo/osascript@2.7.1': + "@expo/osascript@2.7.1": dependencies: - '@expo/spawn-async': 1.8.0 + "@expo/spawn-async": 1.8.0 - '@expo/package-manager@1.13.1': + "@expo/package-manager@1.13.1": dependencies: - '@expo/json-file': 11.0.1 - '@expo/spawn-async': 1.8.0 + "@expo/json-file": 11.0.1 + "@expo/spawn-async": 1.8.0 chalk: 4.1.2 npm-package-arg: 11.0.3 ora: 3.4.0 resolve-workspace-root: 2.0.1 - '@expo/plist@0.8.1': + "@expo/plist@0.8.1": dependencies: - '@xmldom/xmldom': 0.8.15 + "@xmldom/xmldom": 0.8.15 base64-js: 1.5.1 xmlbuilder: 15.1.1 - '@expo/prebuild-config@57.0.15(supports-color@8.1.1)(typescript@6.0.3)': + "@expo/prebuild-config@57.0.15(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@expo/config': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - '@expo/config-plugins': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - '@expo/config-types': 57.0.2 - '@expo/image-utils': 0.11.5(supports-color@8.1.1)(typescript@6.0.3) - '@expo/json-file': 11.0.1 - '@react-native/normalize-colors': 0.86.3 + "@expo/config": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + "@expo/config-plugins": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + "@expo/config-types": 57.0.2 + "@expo/image-utils": 0.11.5(supports-color@8.1.1)(typescript@6.0.3) + "@expo/json-file": 11.0.1 + "@react-native/normalize-colors": 0.86.3 debug: 4.4.3(supports-color@8.1.1) expo-modules-autolinking: 57.0.12(supports-color@8.1.1)(typescript@6.0.3) resolve-from: 5.0.0 @@ -5180,17 +7670,17 @@ snapshots: - supports-color - typescript - '@expo/require-utils@57.0.5(supports-color@8.1.1)(typescript@6.0.3)': + "@expo/require-utils@57.0.5(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@babel/code-frame': 7.29.7 - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/code-frame": 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/plugin-transform-modules-commonjs": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) optionalDependencies: typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@expo/router-server@57.0.9(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo-server@57.0.3)(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react@19.2.3)(supports-color@8.1.1)': + "@expo/router-server@57.0.9(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo-server@57.0.3)(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react@19.2.3)(supports-color@8.1.1)": dependencies: debug: 4.4.3(supports-color@8.1.1) expo: 57.0.20(@babel/core@7.29.7(supports-color@8.1.1))(@expo/dom-webview@57.0.1)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) @@ -5203,511 +7693,511 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/schema-utils@57.0.2': {} + "@expo/schema-utils@57.0.2": {} - '@expo/sdk-runtime-versions@1.0.0': {} + "@expo/sdk-runtime-versions@1.0.0": {} - '@expo/spawn-async@1.8.0': + "@expo/spawn-async@1.8.0": dependencies: cross-spawn: 7.0.6 - '@expo/sudo-prompt@9.3.2': {} + "@expo/sudo-prompt@9.3.2": {} - '@expo/ws-tunnel@2.0.0(ws@8.21.3)': + "@expo/ws-tunnel@2.0.0(ws@8.21.3)": dependencies: ws: 8.21.3 - '@expo/xcpretty@4.4.4': + "@expo/xcpretty@4.4.4": dependencies: - '@babel/code-frame': 7.29.7 + "@babel/code-frame": 7.29.7 chalk: 4.1.2 js-yaml: 4.3.2 - '@fastify/ajv-compiler@4.0.6': + "@fastify/ajv-compiler@4.0.6": dependencies: ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) fast-uri: 4.1.3 - '@fastify/error@4.2.0': {} + "@fastify/error@4.2.0": {} - '@fastify/fast-json-stringify-compiler@5.1.0': + "@fastify/fast-json-stringify-compiler@5.1.0": dependencies: fast-json-stringify: 7.0.1 - '@fastify/forwarded@3.0.2': {} + "@fastify/forwarded@3.0.2": {} - '@fastify/merge-json-schemas@0.2.1': + "@fastify/merge-json-schemas@0.2.1": dependencies: dequal: 2.0.3 - '@fastify/proxy-addr@5.1.0': + "@fastify/proxy-addr@5.1.0": dependencies: - '@fastify/forwarded': 3.0.2 + "@fastify/forwarded": 3.0.2 ipaddr.js: 2.5.0 - '@grpc/grpc-js@1.14.4': + "@grpc/grpc-js@1.14.4": dependencies: - '@grpc/proto-loader': 0.8.1 - '@js-sdsl/ordered-map': 4.4.2 + "@grpc/proto-loader": 0.8.1 + "@js-sdsl/ordered-map": 4.4.2 - '@grpc/proto-loader@0.8.1': + "@grpc/proto-loader@0.8.1": dependencies: lodash.camelcase: 4.3.0 long: 5.3.2 protobufjs: 7.6.6 yargs: 17.7.3 - '@hexagon/base64@1.1.28': {} + "@hexagon/base64@1.1.28": {} - '@humanfs/core@0.19.2': + "@humanfs/core@0.19.2": dependencies: - '@humanfs/types': 0.15.0 + "@humanfs/types": 0.15.0 - '@humanfs/node@0.16.8': + "@humanfs/node@0.16.8": dependencies: - '@humanfs/core': 0.19.2 - '@humanfs/types': 0.15.0 - '@humanwhocodes/retry': 0.4.3 + "@humanfs/core": 0.19.2 + "@humanfs/types": 0.15.0 + "@humanwhocodes/retry": 0.4.3 - '@humanfs/types@0.15.0': {} + "@humanfs/types@0.15.0": {} - '@humanwhocodes/module-importer@1.0.1': {} + "@humanwhocodes/module-importer@1.0.1": {} - '@humanwhocodes/retry@0.4.3': {} + "@humanwhocodes/retry@0.4.3": {} - '@isaacs/ttlcache@1.4.1': {} + "@isaacs/ttlcache@1.4.1": {} - '@jest/schemas@29.6.3': + "@jest/schemas@29.6.3": dependencies: - '@sinclair/typebox': 0.27.12 + "@sinclair/typebox": 0.27.12 - '@jest/types@29.6.3': + "@jest/types@29.6.3": dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 26.2.0 - '@types/yargs': 17.0.35 + "@jest/schemas": 29.6.3 + "@types/istanbul-lib-coverage": 2.0.6 + "@types/istanbul-reports": 3.0.4 + "@types/node": 26.2.0 + "@types/yargs": 17.0.35 chalk: 4.1.2 - '@jridgewell/gen-mapping@0.3.13': + "@jridgewell/gen-mapping@0.3.13": dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 + "@jridgewell/sourcemap-codec": 1.5.5 + "@jridgewell/trace-mapping": 0.3.31 - '@jridgewell/remapping@2.3.5': + "@jridgewell/remapping@2.3.5": dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 + "@jridgewell/gen-mapping": 0.3.13 + "@jridgewell/trace-mapping": 0.3.31 - '@jridgewell/resolve-uri@3.1.2': {} + "@jridgewell/resolve-uri@3.1.2": {} - '@jridgewell/source-map@0.3.11': + "@jridgewell/source-map@0.3.11": dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 + "@jridgewell/gen-mapping": 0.3.13 + "@jridgewell/trace-mapping": 0.3.31 - '@jridgewell/sourcemap-codec@1.5.5': {} + "@jridgewell/sourcemap-codec@1.5.5": {} - '@jridgewell/trace-mapping@0.3.31': + "@jridgewell/trace-mapping@0.3.31": dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + "@jridgewell/resolve-uri": 3.1.2 + "@jridgewell/sourcemap-codec": 1.5.5 - '@js-sdsl/ordered-map@4.4.2': {} + "@js-sdsl/ordered-map@4.4.2": {} - '@levischuck/tiny-cbor@0.2.11': {} + "@levischuck/tiny-cbor@0.2.11": {} - '@noble/curves@2.2.0': + "@noble/curves@2.2.0": dependencies: - '@noble/hashes': 2.2.0 + "@noble/hashes": 2.2.0 - '@noble/curves@2.3.0': + "@noble/curves@2.3.0": dependencies: - '@noble/hashes': 2.3.0 + "@noble/hashes": 2.3.0 - '@noble/curves@2.4.0': + "@noble/curves@2.4.0": dependencies: - '@noble/hashes': 2.4.0 + "@noble/hashes": 2.4.0 - '@noble/hashes@2.2.0': {} + "@noble/hashes@2.2.0": {} - '@noble/hashes@2.3.0': {} + "@noble/hashes@2.3.0": {} - '@noble/hashes@2.4.0': {} + "@noble/hashes@2.4.0": {} - '@opentelemetry/api-logs@0.222.0': + "@opentelemetry/api-logs@0.222.0": dependencies: - '@opentelemetry/api': 1.9.1 + "@opentelemetry/api": 1.9.1 - '@opentelemetry/api@1.9.1': {} + "@opentelemetry/api@1.9.1": {} - '@opentelemetry/configuration@0.222.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/configuration@0.222.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/api": 1.9.1 + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) yaml: 2.9.0 - '@opentelemetry/context-async-hooks@2.11.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/context-async-hooks@2.11.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 + "@opentelemetry/api": 1.9.1 - '@opentelemetry/core@2.11.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/core@2.11.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/semantic-conventions': 1.43.0 + "@opentelemetry/api": 1.9.1 + "@opentelemetry/semantic-conventions": 1.43.0 - '@opentelemetry/exporter-logs-otlp-grpc@0.222.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/exporter-logs-otlp-grpc@0.222.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-grpc-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-logs': 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/api": 1.9.1 + "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-grpc-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-logs": 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-logs-otlp-http@0.222.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/exporter-logs-otlp-http@0.222.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-logs': 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/api": 1.9.1 + "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-logs": 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-logs-otlp-proto@0.222.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/exporter-logs-otlp-proto@0.222.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-logs': 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/api": 1.9.1 + "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-logs": 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-metrics-otlp-grpc@0.222.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/exporter-metrics-otlp-grpc@0.222.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/exporter-metrics-otlp-http': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-grpc-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/api": 1.9.1 + "@opentelemetry/exporter-metrics-otlp-http": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-grpc-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-metrics-otlp-http@0.222.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/exporter-metrics-otlp-http@0.222.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-metrics': 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/api": 1.9.1 + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-metrics": 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-metrics-otlp-proto@0.222.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/exporter-metrics-otlp-proto@0.222.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/exporter-metrics-otlp-http': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/api": 1.9.1 + "@opentelemetry/exporter-metrics-otlp-http": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-prometheus@0.222.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/exporter-prometheus@0.222.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-metrics': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 + "@opentelemetry/api": 1.9.1 + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-metrics": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/semantic-conventions": 1.43.0 - '@opentelemetry/exporter-trace-otlp-grpc@0.222.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/exporter-trace-otlp-grpc@0.222.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-grpc-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace': 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/api": 1.9.1 + "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-grpc-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-trace": 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-trace-otlp-http@0.222.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/exporter-trace-otlp-http@0.222.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace': 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/api": 1.9.1 + "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-trace": 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-trace-otlp-proto@0.222.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/exporter-trace-otlp-proto@0.222.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace': 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/api": 1.9.1 + "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-trace": 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-zipkin@2.11.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/exporter-zipkin@2.11.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 + "@opentelemetry/api": 1.9.1 + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-trace": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/semantic-conventions": 1.43.0 - '@opentelemetry/instrumentation@0.222.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1)': + "@opentelemetry/instrumentation@0.222.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/api-logs': 0.222.0 + "@opentelemetry/api": 1.9.1 + "@opentelemetry/api-logs": 0.222.0 import-in-the-middle: 3.5.0 require-in-the-middle: 8.0.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@opentelemetry/otlp-exporter-base@0.222.0(@opentelemetry/api@1.9.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) - - '@opentelemetry/otlp-grpc-exporter-base@0.222.0(@opentelemetry/api@1.9.1)': - dependencies: - '@grpc/grpc-js': 1.14.4 - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-transformer': 0.222.0(@opentelemetry/api@1.9.1) - - '@opentelemetry/otlp-transformer@0.222.0(@opentelemetry/api@1.9.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/api-logs': 0.222.0 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-logs': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-metrics': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace': 2.11.0(@opentelemetry/api@1.9.1) - - '@opentelemetry/propagator-b3@2.11.0(@opentelemetry/api@1.9.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - - '@opentelemetry/propagator-jaeger@2.11.0(@opentelemetry/api@1.9.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - - '@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 - - '@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/api-logs': 0.222.0 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 - - '@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) - - '@opentelemetry/sdk-node@0.222.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/api-logs': 0.222.0 - '@opentelemetry/configuration': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/context-async-hooks': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-logs-otlp-grpc': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-logs-otlp-http': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-logs-otlp-proto': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-metrics-otlp-grpc': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-metrics-otlp-http': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-metrics-otlp-proto': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-prometheus': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-trace-otlp-grpc': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-trace-otlp-http': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-trace-otlp-proto': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/exporter-zipkin': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.222.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1) - '@opentelemetry/otlp-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/otlp-grpc-exporter-base': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/propagator-b3': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/propagator-jaeger': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-logs': 0.222.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-metrics': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace-base': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace-node': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 + "@opentelemetry/otlp-exporter-base@0.222.0(@opentelemetry/api@1.9.1)": + dependencies: + "@opentelemetry/api": 1.9.1 + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) + + "@opentelemetry/otlp-grpc-exporter-base@0.222.0(@opentelemetry/api@1.9.1)": + dependencies: + "@grpc/grpc-js": 1.14.4 + "@opentelemetry/api": 1.9.1 + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-transformer": 0.222.0(@opentelemetry/api@1.9.1) + + "@opentelemetry/otlp-transformer@0.222.0(@opentelemetry/api@1.9.1)": + dependencies: + "@opentelemetry/api": 1.9.1 + "@opentelemetry/api-logs": 0.222.0 + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-logs": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-metrics": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-trace": 2.11.0(@opentelemetry/api@1.9.1) + + "@opentelemetry/propagator-b3@2.11.0(@opentelemetry/api@1.9.1)": + dependencies: + "@opentelemetry/api": 1.9.1 + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + + "@opentelemetry/propagator-jaeger@2.11.0(@opentelemetry/api@1.9.1)": + dependencies: + "@opentelemetry/api": 1.9.1 + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + + "@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1)": + dependencies: + "@opentelemetry/api": 1.9.1 + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/semantic-conventions": 1.43.0 + + "@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1)": + dependencies: + "@opentelemetry/api": 1.9.1 + "@opentelemetry/api-logs": 0.222.0 + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/semantic-conventions": 1.43.0 + + "@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1)": + dependencies: + "@opentelemetry/api": 1.9.1 + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) + + "@opentelemetry/sdk-node@0.222.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1)": + dependencies: + "@opentelemetry/api": 1.9.1 + "@opentelemetry/api-logs": 0.222.0 + "@opentelemetry/configuration": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/context-async-hooks": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/exporter-logs-otlp-grpc": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/exporter-logs-otlp-http": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/exporter-logs-otlp-proto": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/exporter-metrics-otlp-grpc": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/exporter-metrics-otlp-http": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/exporter-metrics-otlp-proto": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/exporter-prometheus": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/exporter-trace-otlp-grpc": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/exporter-trace-otlp-http": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/exporter-trace-otlp-proto": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/exporter-zipkin": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/instrumentation": 0.222.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1) + "@opentelemetry/otlp-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/otlp-grpc-exporter-base": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/propagator-b3": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/propagator-jaeger": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-logs": 0.222.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-metrics": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-trace": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-trace-base": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-trace-node": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/semantic-conventions": 1.43.0 transitivePeerDependencies: - supports-color - '@opentelemetry/sdk-trace-base@2.11.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/sdk-trace-base@2.11.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 + "@opentelemetry/api": 1.9.1 + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-trace": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/semantic-conventions": 1.43.0 - '@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/context-async-hooks': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace-base': 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/api": 1.9.1 + "@opentelemetry/context-async-hooks": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/sdk-trace-base": 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace@2.11.0(@opentelemetry/api@1.9.1)': + "@opentelemetry/sdk-trace@2.11.0(@opentelemetry/api@1.9.1)": dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 + "@opentelemetry/api": 1.9.1 + "@opentelemetry/core": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/resources": 2.11.0(@opentelemetry/api@1.9.1) + "@opentelemetry/semantic-conventions": 1.43.0 - '@opentelemetry/semantic-conventions@1.43.0': {} + "@opentelemetry/semantic-conventions@1.43.0": {} - '@oxc-project/types@0.146.0': {} + "@oxc-project/types@0.146.0": {} - '@peculiar/asn1-android@2.9.4': + "@peculiar/asn1-android@2.9.4": dependencies: - '@peculiar/asn1-schema': 2.9.4 + "@peculiar/asn1-schema": 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-cms@2.9.4': + "@peculiar/asn1-cms@2.9.4": dependencies: - '@peculiar/asn1-schema': 2.9.4 - '@peculiar/asn1-x509': 2.9.4 - '@peculiar/asn1-x509-attr': 2.9.4 + "@peculiar/asn1-schema": 2.9.4 + "@peculiar/asn1-x509": 2.9.4 + "@peculiar/asn1-x509-attr": 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-csr@2.9.4': + "@peculiar/asn1-csr@2.9.4": dependencies: - '@peculiar/asn1-schema': 2.9.4 - '@peculiar/asn1-x509': 2.9.4 + "@peculiar/asn1-schema": 2.9.4 + "@peculiar/asn1-x509": 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-ecc@2.9.4': + "@peculiar/asn1-ecc@2.9.4": dependencies: - '@peculiar/asn1-schema': 2.9.4 - '@peculiar/asn1-x509': 2.9.4 + "@peculiar/asn1-schema": 2.9.4 + "@peculiar/asn1-x509": 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-pfx@2.9.4': + "@peculiar/asn1-pfx@2.9.4": dependencies: - '@peculiar/asn1-cms': 2.9.4 - '@peculiar/asn1-pkcs8': 2.9.4 - '@peculiar/asn1-rsa': 2.9.4 - '@peculiar/asn1-schema': 2.9.4 + "@peculiar/asn1-cms": 2.9.4 + "@peculiar/asn1-pkcs8": 2.9.4 + "@peculiar/asn1-rsa": 2.9.4 + "@peculiar/asn1-schema": 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-pkcs8@2.9.4': + "@peculiar/asn1-pkcs8@2.9.4": dependencies: - '@peculiar/asn1-schema': 2.9.4 - '@peculiar/asn1-x509': 2.9.4 + "@peculiar/asn1-schema": 2.9.4 + "@peculiar/asn1-x509": 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-pkcs9@2.9.4': + "@peculiar/asn1-pkcs9@2.9.4": dependencies: - '@peculiar/asn1-cms': 2.9.4 - '@peculiar/asn1-pfx': 2.9.4 - '@peculiar/asn1-pkcs8': 2.9.4 - '@peculiar/asn1-schema': 2.9.4 - '@peculiar/asn1-x509': 2.9.4 - '@peculiar/asn1-x509-attr': 2.9.4 + "@peculiar/asn1-cms": 2.9.4 + "@peculiar/asn1-pfx": 2.9.4 + "@peculiar/asn1-pkcs8": 2.9.4 + "@peculiar/asn1-schema": 2.9.4 + "@peculiar/asn1-x509": 2.9.4 + "@peculiar/asn1-x509-attr": 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-rsa@2.9.4': + "@peculiar/asn1-rsa@2.9.4": dependencies: - '@peculiar/asn1-schema': 2.9.4 - '@peculiar/asn1-x509': 2.9.4 + "@peculiar/asn1-schema": 2.9.4 + "@peculiar/asn1-x509": 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-schema@2.9.4': + "@peculiar/asn1-schema@2.9.4": dependencies: - '@peculiar/utils': 2.0.3 + "@peculiar/utils": 2.0.3 asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-x509-attr@2.9.4': + "@peculiar/asn1-x509-attr@2.9.4": dependencies: - '@peculiar/asn1-schema': 2.9.4 - '@peculiar/asn1-x509': 2.9.4 + "@peculiar/asn1-schema": 2.9.4 + "@peculiar/asn1-x509": 2.9.4 asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/asn1-x509@2.9.4': + "@peculiar/asn1-x509@2.9.4": dependencies: - '@peculiar/asn1-schema': 2.9.4 - '@peculiar/utils': 2.0.3 + "@peculiar/asn1-schema": 2.9.4 + "@peculiar/utils": 2.0.3 asn1js: 3.0.10 tslib: 2.8.1 - '@peculiar/utils@2.0.3': + "@peculiar/utils@2.0.3": dependencies: tslib: 2.8.1 - '@peculiar/x509@1.14.3': + "@peculiar/x509@1.14.3": dependencies: - '@peculiar/asn1-cms': 2.9.4 - '@peculiar/asn1-csr': 2.9.4 - '@peculiar/asn1-ecc': 2.9.4 - '@peculiar/asn1-pkcs9': 2.9.4 - '@peculiar/asn1-rsa': 2.9.4 - '@peculiar/asn1-schema': 2.9.4 - '@peculiar/asn1-x509': 2.9.4 + "@peculiar/asn1-cms": 2.9.4 + "@peculiar/asn1-csr": 2.9.4 + "@peculiar/asn1-ecc": 2.9.4 + "@peculiar/asn1-pkcs9": 2.9.4 + "@peculiar/asn1-rsa": 2.9.4 + "@peculiar/asn1-schema": 2.9.4 + "@peculiar/asn1-x509": 2.9.4 pvtsutils: 1.3.6 reflect-metadata: 0.2.2 tslib: 2.8.1 tsyringe: 4.10.0 - '@pinojs/redact@0.4.0': {} + "@pinojs/redact@0.4.0": {} - '@protobufjs/aspromise@1.1.2': {} + "@protobufjs/aspromise@1.1.2": {} - '@protobufjs/base64@1.1.2': {} + "@protobufjs/base64@1.1.2": {} - '@protobufjs/codegen@2.0.5': {} + "@protobufjs/codegen@2.0.5": {} - '@protobufjs/eventemitter@1.1.1': {} + "@protobufjs/eventemitter@1.1.1": {} - '@protobufjs/fetch@1.1.1': + "@protobufjs/fetch@1.1.1": dependencies: - '@protobufjs/aspromise': 1.1.2 + "@protobufjs/aspromise": 1.1.2 - '@protobufjs/float@1.0.2': {} + "@protobufjs/float@1.0.2": {} - '@protobufjs/path@1.1.2': {} + "@protobufjs/path@1.1.2": {} - '@protobufjs/pool@1.1.0': {} + "@protobufjs/pool@1.1.0": {} - '@protobufjs/utf8@1.1.2': {} + "@protobufjs/utf8@1.1.2": {} - '@react-native/assets-registry@0.86.3': {} + "@react-native/assets-registry@0.86.3": {} - '@react-native/babel-plugin-codegen@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': + "@react-native/babel-plugin-codegen@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)": dependencies: - '@babel/traverse': 7.29.8(supports-color@8.1.1) - '@react-native/codegen': 0.86.3(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/traverse": 7.29.8(supports-color@8.1.1) + "@react-native/codegen": 0.86.3(@babel/core@7.29.7(supports-color@8.1.1)) transitivePeerDependencies: - - '@babel/core' + - "@babel/core" - supports-color - '@react-native/codegen@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))': + "@react-native/codegen@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))": dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/parser': 7.29.8 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/parser": 7.29.8 hermes-parser: 0.36.0 invariant: 2.2.4 nullthrows: 1.1.1 tinyglobby: 0.2.17 yargs: 17.7.3 - '@react-native/community-cli-plugin@0.86.3(supports-color@8.1.1)': + "@react-native/community-cli-plugin@0.86.3(supports-color@8.1.1)": dependencies: - '@react-native/dev-middleware': 0.86.3(supports-color@8.1.1) + "@react-native/dev-middleware": 0.86.3(supports-color@8.1.1) debug: 4.4.3(supports-color@8.1.1) invariant: 2.2.4 metro: 0.84.6(supports-color@8.1.1) @@ -5719,9 +8209,9 @@ snapshots: - supports-color - utf-8-validate - '@react-native/debugger-frontend@0.86.3': {} + "@react-native/debugger-frontend@0.86.3": {} - '@react-native/debugger-shell@0.86.3(supports-color@8.1.1)': + "@react-native/debugger-shell@0.86.3(supports-color@8.1.1)": dependencies: cross-spawn: 7.0.6 debug: 4.4.3(supports-color@8.1.1) @@ -5729,11 +8219,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@react-native/dev-middleware@0.86.3(supports-color@8.1.1)': + "@react-native/dev-middleware@0.86.3(supports-color@8.1.1)": dependencies: - '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.86.3 - '@react-native/debugger-shell': 0.86.3(supports-color@8.1.1) + "@isaacs/ttlcache": 1.4.1 + "@react-native/debugger-frontend": 0.86.3 + "@react-native/debugger-shell": 0.86.3(supports-color@8.1.1) chrome-launcher: 0.15.2(supports-color@8.1.1) chromium-edge-launcher: 0.3.0(supports-color@8.1.1) connect: 3.7.0(supports-color@8.1.1) @@ -5748,219 +8238,219 @@ snapshots: - supports-color - utf-8-validate - '@react-native/gradle-plugin@0.86.3': {} + "@react-native/gradle-plugin@0.86.3": {} - '@react-native/js-polyfills@0.86.3': {} + "@react-native/js-polyfills@0.86.3": {} - '@react-native/normalize-colors@0.86.3': {} + "@react-native/normalize-colors@0.86.3": {} - '@react-native/virtualized-lists@0.86.3(@types/react@19.2.18)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)': + "@react-native/virtualized-lists@0.86.3(@types/react@19.2.18)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)": dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 19.2.3 react-native: 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1) optionalDependencies: - '@types/react': 19.2.18 + "@types/react": 19.2.18 - '@redis/bloom@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))': + "@redis/bloom@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))": dependencies: - '@redis/client': 5.12.1(@opentelemetry/api@1.9.1) + "@redis/client": 5.12.1(@opentelemetry/api@1.9.1) - '@redis/client@5.12.1(@opentelemetry/api@1.9.1)': + "@redis/client@5.12.1(@opentelemetry/api@1.9.1)": dependencies: cluster-key-slot: 1.1.2 optionalDependencies: - '@opentelemetry/api': 1.9.1 + "@opentelemetry/api": 1.9.1 - '@redis/json@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))': + "@redis/json@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))": dependencies: - '@redis/client': 5.12.1(@opentelemetry/api@1.9.1) + "@redis/client": 5.12.1(@opentelemetry/api@1.9.1) - '@redis/search@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))': + "@redis/search@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))": dependencies: - '@redis/client': 5.12.1(@opentelemetry/api@1.9.1) + "@redis/client": 5.12.1(@opentelemetry/api@1.9.1) - '@redis/time-series@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))': + "@redis/time-series@5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1))": dependencies: - '@redis/client': 5.12.1(@opentelemetry/api@1.9.1) + "@redis/client": 5.12.1(@opentelemetry/api@1.9.1) - '@rolldown/binding-android-arm-eabi@1.2.5': + "@rolldown/binding-android-arm-eabi@1.2.5": optional: true - '@rolldown/binding-android-arm64@1.2.5': + "@rolldown/binding-android-arm64@1.2.5": optional: true - '@rolldown/binding-darwin-arm64@1.2.5': + "@rolldown/binding-darwin-arm64@1.2.5": optional: true - '@rolldown/binding-darwin-x64@1.2.5': + "@rolldown/binding-darwin-x64@1.2.5": optional: true - '@rolldown/binding-freebsd-x64@1.2.5': + "@rolldown/binding-freebsd-x64@1.2.5": optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.5': + "@rolldown/binding-linux-arm-gnueabihf@1.2.5": optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.5': + "@rolldown/binding-linux-arm64-gnu@1.2.5": optional: true - '@rolldown/binding-linux-arm64-musl@1.2.5': + "@rolldown/binding-linux-arm64-musl@1.2.5": optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.5': + "@rolldown/binding-linux-ppc64-gnu@1.2.5": optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.5': + "@rolldown/binding-linux-s390x-gnu@1.2.5": optional: true - '@rolldown/binding-linux-x64-gnu@1.2.5': + "@rolldown/binding-linux-x64-gnu@1.2.5": optional: true - '@rolldown/binding-linux-x64-musl@1.2.5': + "@rolldown/binding-linux-x64-musl@1.2.5": optional: true - '@rolldown/binding-openharmony-arm64@1.2.5': + "@rolldown/binding-openharmony-arm64@1.2.5": optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.5': + "@rolldown/binding-win32-arm64-msvc@1.2.5": optional: true - '@rolldown/binding-win32-x64-msvc@1.2.5': + "@rolldown/binding-win32-x64-msvc@1.2.5": optional: true - '@rolldown/pluginutils@1.0.1': {} + "@rolldown/pluginutils@1.0.1": {} - '@scure/base@2.2.0': {} + "@scure/base@2.2.0": {} - '@scure/base@2.3.0': {} + "@scure/base@2.3.0": {} - '@scure/base@2.4.0': {} + "@scure/base@2.4.0": {} - '@scure/bip32@2.2.0': + "@scure/bip32@2.2.0": dependencies: - '@noble/curves': 2.2.0 - '@noble/hashes': 2.2.0 - '@scure/base': 2.2.0 + "@noble/curves": 2.2.0 + "@noble/hashes": 2.2.0 + "@scure/base": 2.2.0 - '@scure/bip39@2.2.0': + "@scure/bip39@2.2.0": dependencies: - '@noble/hashes': 2.2.0 - '@scure/base': 2.2.0 + "@noble/hashes": 2.2.0 + "@scure/base": 2.2.0 - '@scure/btc-signer@2.3.0': + "@scure/btc-signer@2.3.0": dependencies: - '@noble/curves': 2.3.0 - '@noble/hashes': 2.3.0 - '@scure/base': 2.3.0 + "@noble/curves": 2.3.0 + "@noble/hashes": 2.3.0 + "@scure/base": 2.3.0 micro-packed: 0.11.1 - '@simplewebauthn/server@13.3.3': + "@simplewebauthn/server@13.3.3": dependencies: - '@hexagon/base64': 1.1.28 - '@levischuck/tiny-cbor': 0.2.11 - '@peculiar/asn1-android': 2.9.4 - '@peculiar/asn1-ecc': 2.9.4 - '@peculiar/asn1-rsa': 2.9.4 - '@peculiar/asn1-schema': 2.9.4 - '@peculiar/asn1-x509': 2.9.4 - '@peculiar/x509': 1.14.3 + "@hexagon/base64": 1.1.28 + "@levischuck/tiny-cbor": 0.2.11 + "@peculiar/asn1-android": 2.9.4 + "@peculiar/asn1-ecc": 2.9.4 + "@peculiar/asn1-rsa": 2.9.4 + "@peculiar/asn1-schema": 2.9.4 + "@peculiar/asn1-x509": 2.9.4 + "@peculiar/x509": 1.14.3 - '@sinclair/typebox@0.27.12': {} + "@sinclair/typebox@0.27.12": {} - '@standard-schema/spec@1.1.0': {} + "@standard-schema/spec@1.1.0": {} - '@turbo/darwin-64@2.10.11': + "@turbo/darwin-64@2.10.11": optional: true - '@turbo/darwin-arm64@2.10.11': + "@turbo/darwin-arm64@2.10.11": optional: true - '@turbo/linux-64@2.10.11': + "@turbo/linux-64@2.10.11": optional: true - '@turbo/linux-arm64@2.10.11': + "@turbo/linux-arm64@2.10.11": optional: true - '@turbo/windows-64@2.10.11': + "@turbo/windows-64@2.10.11": optional: true - '@turbo/windows-arm64@2.10.11': + "@turbo/windows-arm64@2.10.11": optional: true - '@types/chai@5.2.3': + "@types/chai@5.2.3": dependencies: - '@types/deep-eql': 4.0.2 + "@types/deep-eql": 4.0.2 assertion-error: 2.0.1 - '@types/chrome@0.2.9': + "@types/chrome@0.2.9": dependencies: - '@types/filesystem': 0.0.36 - '@types/har-format': 1.2.16 + "@types/filesystem": 0.0.36 + "@types/har-format": 1.2.16 - '@types/deep-eql@4.0.2': {} + "@types/deep-eql@4.0.2": {} - '@types/esrecurse@4.3.1': {} + "@types/esrecurse@4.3.1": {} - '@types/estree@1.0.9': {} + "@types/estree@1.0.9": {} - '@types/filesystem@0.0.36': + "@types/filesystem@0.0.36": dependencies: - '@types/filewriter': 0.0.33 + "@types/filewriter": 0.0.33 - '@types/filewriter@0.0.33': {} + "@types/filewriter@0.0.33": {} - '@types/har-format@1.2.16': {} + "@types/har-format@1.2.16": {} - '@types/istanbul-lib-coverage@2.0.6': {} + "@types/istanbul-lib-coverage@2.0.6": {} - '@types/istanbul-lib-report@3.0.3': + "@types/istanbul-lib-report@3.0.3": dependencies: - '@types/istanbul-lib-coverage': 2.0.6 + "@types/istanbul-lib-coverage": 2.0.6 - '@types/istanbul-reports@3.0.4': + "@types/istanbul-reports@3.0.4": dependencies: - '@types/istanbul-lib-report': 3.0.3 + "@types/istanbul-lib-report": 3.0.3 - '@types/json-schema@7.0.15': {} + "@types/json-schema@7.0.15": {} - '@types/node@24.13.3': + "@types/node@24.13.3": dependencies: undici-types: 7.18.2 - '@types/node@26.2.0': + "@types/node@26.2.0": dependencies: undici-types: 8.3.0 - '@types/pg@8.23.1': + "@types/pg@8.23.1": dependencies: - '@types/node': 26.2.0 + "@types/node": 26.2.0 pg-protocol: 1.16.0 pg-types: 2.2.0 - '@types/react-dom@19.2.5(@types/react@19.2.18)': + "@types/react-dom@19.2.5(@types/react@19.2.18)": dependencies: - '@types/react': 19.2.18 + "@types/react": 19.2.18 - '@types/react@19.2.18': + "@types/react@19.2.18": dependencies: csstype: 3.2.3 - '@types/yargs-parser@21.0.3': {} + "@types/yargs-parser@21.0.3": {} - '@types/yargs@17.0.35': + "@types/yargs@17.0.35": dependencies: - '@types/yargs-parser': 21.0.3 + "@types/yargs-parser": 21.0.3 - '@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': + "@typescript-eslint/eslint-plugin@8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.67.0 - '@typescript-eslint/type-utils': 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) - '@typescript-eslint/utils': 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.67.0 + "@eslint-community/regexpp": 4.12.2 + "@typescript-eslint/parser": 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + "@typescript-eslint/scope-manager": 8.67.0 + "@typescript-eslint/type-utils": 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + "@typescript-eslint/utils": 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + "@typescript-eslint/visitor-keys": 8.67.0 eslint: 10.8.1(supports-color@8.1.1) ignore: 7.0.6 natural-compare: 1.4.0 @@ -5969,41 +8459,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': + "@typescript-eslint/parser@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@typescript-eslint/scope-manager': 8.67.0 - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/typescript-estree': 8.67.0(supports-color@8.1.1)(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.67.0 + "@typescript-eslint/scope-manager": 8.67.0 + "@typescript-eslint/types": 8.67.0 + "@typescript-eslint/typescript-estree": 8.67.0(supports-color@8.1.1)(typescript@6.0.3) + "@typescript-eslint/visitor-keys": 8.67.0 debug: 4.4.3(supports-color@8.1.1) eslint: 10.8.1(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.67.0(supports-color@8.1.1)(typescript@6.0.3)': + "@typescript-eslint/project-service@8.67.0(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3) - '@typescript-eslint/types': 8.67.0 + "@typescript-eslint/tsconfig-utils": 8.67.0(typescript@6.0.3) + "@typescript-eslint/types": 8.67.0 debug: 4.4.3(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.67.0': + "@typescript-eslint/scope-manager@8.67.0": dependencies: - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/visitor-keys': 8.67.0 + "@typescript-eslint/types": 8.67.0 + "@typescript-eslint/visitor-keys": 8.67.0 - '@typescript-eslint/tsconfig-utils@8.67.0(typescript@6.0.3)': + "@typescript-eslint/tsconfig-utils@8.67.0(typescript@6.0.3)": dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': + "@typescript-eslint/type-utils@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/typescript-estree': 8.67.0(supports-color@8.1.1)(typescript@6.0.3) - '@typescript-eslint/utils': 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + "@typescript-eslint/types": 8.67.0 + "@typescript-eslint/typescript-estree": 8.67.0(supports-color@8.1.1)(typescript@6.0.3) + "@typescript-eslint/utils": 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) debug: 4.4.3(supports-color@8.1.1) eslint: 10.8.1(supports-color@8.1.1) ts-api-utils: 2.5.0(typescript@6.0.3) @@ -6011,14 +8501,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.67.0': {} + "@typescript-eslint/types@8.67.0": {} - '@typescript-eslint/typescript-estree@8.67.0(supports-color@8.1.1)(typescript@6.0.3)': + "@typescript-eslint/typescript-estree@8.67.0(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@typescript-eslint/project-service': 8.67.0(supports-color@8.1.1)(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3) - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/visitor-keys': 8.67.0 + "@typescript-eslint/project-service": 8.67.0(supports-color@8.1.1)(typescript@6.0.3) + "@typescript-eslint/tsconfig-utils": 8.67.0(typescript@6.0.3) + "@typescript-eslint/types": 8.67.0 + "@typescript-eslint/visitor-keys": 8.67.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.6 semver: 7.8.5 @@ -6028,75 +8518,75 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': + "@typescript-eslint/utils@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(supports-color@8.1.1)) - '@typescript-eslint/scope-manager': 8.67.0 - '@typescript-eslint/types': 8.67.0 - '@typescript-eslint/typescript-estree': 8.67.0(supports-color@8.1.1)(typescript@6.0.3) + "@eslint-community/eslint-utils": 4.10.1(eslint@10.8.1(supports-color@8.1.1)) + "@typescript-eslint/scope-manager": 8.67.0 + "@typescript-eslint/types": 8.67.0 + "@typescript-eslint/typescript-estree": 8.67.0(supports-color@8.1.1)(typescript@6.0.3) eslint: 10.8.1(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.67.0': + "@typescript-eslint/visitor-keys@8.67.0": dependencies: - '@typescript-eslint/types': 8.67.0 + "@typescript-eslint/types": 8.67.0 eslint-visitor-keys: 5.0.1 - '@ungap/structured-clone@1.4.0': {} + "@ungap/structured-clone@1.4.0": {} - '@vitejs/plugin-react@6.1.1(babel-plugin-react-compiler@1.0.0)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0))': + "@vitejs/plugin-react@6.1.1(babel-plugin-react-compiler@1.0.0)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0))": dependencies: - '@rolldown/pluginutils': 1.0.1 + "@rolldown/pluginutils": 1.0.1 vite: 8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0) optionalDependencies: babel-plugin-react-compiler: 1.0.0 - '@vitest/expect@4.1.11': + "@vitest/expect@4.1.11": dependencies: - '@standard-schema/spec': 1.1.0 - '@types/chai': 5.2.3 - '@vitest/spy': 4.1.11 - '@vitest/utils': 4.1.11 + "@standard-schema/spec": 1.1.0 + "@types/chai": 5.2.3 + "@vitest/spy": 4.1.11 + "@vitest/utils": 4.1.11 chai: 6.2.2 tinyrainbow: 3.1.1 - '@vitest/mocker@4.1.11(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0))': + "@vitest/mocker@4.1.11(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0))": dependencies: - '@vitest/spy': 4.1.11 + "@vitest/spy": 4.1.11 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: vite: 8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0) - '@vitest/pretty-format@4.1.11': + "@vitest/pretty-format@4.1.11": dependencies: tinyrainbow: 3.1.1 - '@vitest/runner@4.1.11': + "@vitest/runner@4.1.11": dependencies: - '@vitest/utils': 4.1.11 + "@vitest/utils": 4.1.11 pathe: 2.0.3 - '@vitest/snapshot@4.1.11': + "@vitest/snapshot@4.1.11": dependencies: - '@vitest/pretty-format': 4.1.11 - '@vitest/utils': 4.1.11 + "@vitest/pretty-format": 4.1.11 + "@vitest/utils": 4.1.11 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.11': {} + "@vitest/spy@4.1.11": {} - '@vitest/utils@4.1.11': + "@vitest/utils@4.1.11": dependencies: - '@vitest/pretty-format': 4.1.11 + "@vitest/pretty-format": 4.1.11 convert-source-map: 2.0.0 tinyrainbow: 3.1.1 - '@xmldom/xmldom@0.8.15': {} + "@xmldom/xmldom@0.8.15": {} - '@xmldom/xmldom@0.9.12': {} + "@xmldom/xmldom@0.9.12": {} abort-controller@3.0.0: dependencies: @@ -6180,36 +8670,36 @@ snapshots: avvio@9.3.0: dependencies: - '@fastify/error': 4.2.0 + "@fastify/error": 4.2.0 fastq: 1.20.1 babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@babel/compat-data': 7.29.7 - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/compat-data": 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-define-polyfill-provider": 0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) semver: 6.3.1 transitivePeerDependencies: - supports-color babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-define-polyfill-provider": 0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) core-js-compat: 3.50.0 transitivePeerDependencies: - supports-color babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/helper-define-polyfill-provider": 0.6.8(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color babel-plugin-react-compiler@1.0.0: dependencies: - '@babel/types': 7.29.8 + "@babel/types": 7.29.8 babel-plugin-react-native-web@0.21.2: {} @@ -6223,49 +8713,49 @@ snapshots: babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.29.7(supports-color@8.1.1)): dependencies: - '@babel/plugin-syntax-flow': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-syntax-flow": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) transitivePeerDependencies: - - '@babel/core' + - "@babel/core" babel-preset-expo@57.0.10(@babel/core@7.29.7(supports-color@8.1.1))(@babel/runtime@7.29.7)(expo@57.0.20)(react-refresh@0.14.2)(supports-color@8.1.1): dependencies: - '@babel/generator': 7.29.8 - '@babel/helper-module-imports': 7.29.7(supports-color@8.1.1) - '@babel/plugin-proposal-decorators': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-proposal-export-default-from': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-syntax-export-default-from': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-class-static-block': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-export-namespace-from': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-flow-strip-types': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-logical-assignment-operators': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-react-pure-annotations': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) - '@react-native/babel-plugin-codegen': 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/generator": 7.29.8 + "@babel/helper-module-imports": 7.29.7(supports-color@8.1.1) + "@babel/plugin-proposal-decorators": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-proposal-export-default-from": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-syntax-dynamic-import": 7.8.3(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-syntax-export-default-from": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-transform-async-generator-functions": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-async-to-generator": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-block-scoping": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-transform-class-properties": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-class-static-block": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-classes": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-destructuring": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-export-namespace-from": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-transform-flow-strip-types": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-transform-for-of": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-logical-assignment-operators": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-transform-modules-commonjs": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-named-capturing-groups-regex": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-transform-nullish-coalescing-operator": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-transform-object-rest-spread": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-optional-catch-binding": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-transform-optional-chaining": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-parameters": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-transform-private-methods": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-private-property-in-object": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-react-display-name": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-transform-react-jsx": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-react-jsx-development": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-react-pure-annotations": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/plugin-transform-runtime": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-typescript": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@babel/plugin-transform-unicode-regex": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + "@babel/preset-typescript": 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + "@react-native/babel-plugin-codegen": 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) babel-plugin-react-compiler: 1.0.0 babel-plugin-react-native-web: 0.21.2 babel-plugin-syntax-hermes-parser: 0.36.1 @@ -6273,10 +8763,10 @@ snapshots: debug: 4.4.3(supports-color@8.1.1) react-refresh: 0.14.2 optionalDependencies: - '@babel/runtime': 7.29.7 + "@babel/runtime": 7.29.7 expo: 57.0.20(@babel/core@7.29.7(supports-color@8.1.1))(@expo/dom-webview@57.0.1)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) transitivePeerDependencies: - - '@babel/core' + - "@babel/core" - supports-color balanced-match@4.0.4: {} @@ -6346,7 +8836,7 @@ snapshots: chrome-launcher@0.15.2(supports-color@8.1.1): dependencies: - '@types/node': 26.2.0 + "@types/node": 26.2.0 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2(supports-color@8.1.1) @@ -6355,7 +8845,7 @@ snapshots: chromium-edge-launcher@0.3.0(supports-color@8.1.1): dependencies: - '@types/node': 26.2.0 + "@types/node": 26.2.0 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2(supports-color@8.1.1) @@ -6531,9 +9021,9 @@ snapshots: electron@44.2.0(supports-color@8.1.1): dependencies: - '@electron-internal/extract-zip': 1.0.5 - '@electron/get': 5.1.0(supports-color@8.1.1) - '@types/node': 24.13.3 + "@electron-internal/extract-zip": 1.0.5 + "@electron/get": 5.1.0(supports-color@8.1.1) + "@types/node": 24.13.3 transitivePeerDependencies: - supports-color @@ -6559,32 +9049,32 @@ snapshots: esbuild@0.28.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.28.2 - '@esbuild/android-arm': 0.28.2 - '@esbuild/android-arm64': 0.28.2 - '@esbuild/android-x64': 0.28.2 - '@esbuild/darwin-arm64': 0.28.2 - '@esbuild/darwin-x64': 0.28.2 - '@esbuild/freebsd-arm64': 0.28.2 - '@esbuild/freebsd-x64': 0.28.2 - '@esbuild/linux-arm': 0.28.2 - '@esbuild/linux-arm64': 0.28.2 - '@esbuild/linux-ia32': 0.28.2 - '@esbuild/linux-loong64': 0.28.2 - '@esbuild/linux-mips64el': 0.28.2 - '@esbuild/linux-ppc64': 0.28.2 - '@esbuild/linux-riscv64': 0.28.2 - '@esbuild/linux-s390x': 0.28.2 - '@esbuild/linux-x64': 0.28.2 - '@esbuild/netbsd-arm64': 0.28.2 - '@esbuild/netbsd-x64': 0.28.2 - '@esbuild/openbsd-arm64': 0.28.2 - '@esbuild/openbsd-x64': 0.28.2 - '@esbuild/openharmony-arm64': 0.28.2 - '@esbuild/sunos-x64': 0.28.2 - '@esbuild/win32-arm64': 0.28.2 - '@esbuild/win32-ia32': 0.28.2 - '@esbuild/win32-x64': 0.28.2 + "@esbuild/aix-ppc64": 0.28.2 + "@esbuild/android-arm": 0.28.2 + "@esbuild/android-arm64": 0.28.2 + "@esbuild/android-x64": 0.28.2 + "@esbuild/darwin-arm64": 0.28.2 + "@esbuild/darwin-x64": 0.28.2 + "@esbuild/freebsd-arm64": 0.28.2 + "@esbuild/freebsd-x64": 0.28.2 + "@esbuild/linux-arm": 0.28.2 + "@esbuild/linux-arm64": 0.28.2 + "@esbuild/linux-ia32": 0.28.2 + "@esbuild/linux-loong64": 0.28.2 + "@esbuild/linux-mips64el": 0.28.2 + "@esbuild/linux-ppc64": 0.28.2 + "@esbuild/linux-riscv64": 0.28.2 + "@esbuild/linux-s390x": 0.28.2 + "@esbuild/linux-x64": 0.28.2 + "@esbuild/netbsd-arm64": 0.28.2 + "@esbuild/netbsd-x64": 0.28.2 + "@esbuild/openbsd-arm64": 0.28.2 + "@esbuild/openbsd-x64": 0.28.2 + "@esbuild/openharmony-arm64": 0.28.2 + "@esbuild/sunos-x64": 0.28.2 + "@esbuild/win32-arm64": 0.28.2 + "@esbuild/win32-ia32": 0.28.2 + "@esbuild/win32-x64": 0.28.2 escalade@3.2.0: {} @@ -6600,8 +9090,8 @@ snapshots: eslint-scope@9.1.2: dependencies: - '@types/esrecurse': 4.3.1 - '@types/estree': 1.0.9 + "@types/esrecurse": 4.3.1 + "@types/estree": 1.0.9 esrecurse: 4.3.0 estraverse: 5.3.0 @@ -6611,16 +9101,16 @@ snapshots: eslint@10.8.1(supports-color@8.1.1): dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(supports-color@8.1.1)) - '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.5(supports-color@8.1.1) - '@eslint/config-helpers': 0.7.0 - '@eslint/core': 1.2.1 - '@eslint/plugin-kit': 0.7.2 - '@humanfs/node': 0.16.8 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.9 + "@eslint-community/eslint-utils": 4.10.1(eslint@10.8.1(supports-color@8.1.1)) + "@eslint-community/regexpp": 4.12.2 + "@eslint/config-array": 0.23.5(supports-color@8.1.1) + "@eslint/config-helpers": 0.7.0 + "@eslint/core": 1.2.1 + "@eslint/plugin-kit": 0.7.2 + "@humanfs/node": 0.16.8 + "@humanwhocodes/module-importer": 1.0.1 + "@humanwhocodes/retry": 0.4.3 + "@types/estree": 1.0.9 ajv: 6.15.0 cross-spawn: 7.0.6 debug: 4.4.3(supports-color@8.1.1) @@ -6662,7 +9152,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.9 + "@types/estree": 1.0.9 esutils@2.0.3: {} @@ -6674,7 +9164,7 @@ snapshots: expo-asset@57.0.16(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3): dependencies: - '@expo/image-utils': 0.11.5(supports-color@8.1.1)(typescript@6.0.3) + "@expo/image-utils": 0.11.5(supports-color@8.1.1)(typescript@6.0.3) expo: 57.0.20(@babel/core@7.29.7(supports-color@8.1.1))(@expo/dom-webview@57.0.1)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) expo-constants: 57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1) react: 19.2.3 @@ -6685,7 +9175,7 @@ snapshots: expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@expo/env': 2.4.3(supports-color@8.1.1) + "@expo/env": 2.4.3(supports-color@8.1.1) expo: 57.0.20(@babel/core@7.29.7(supports-color@8.1.1))(@expo/dom-webview@57.0.1)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) react-native: 0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1) transitivePeerDependencies: @@ -6719,8 +9209,8 @@ snapshots: expo-modules-autolinking@57.0.12(supports-color@8.1.1)(typescript@6.0.3): dependencies: - '@expo/require-utils': 57.0.5(supports-color@8.1.1)(typescript@6.0.3) - '@expo/spawn-async': 1.8.0 + "@expo/require-utils": 57.0.5(supports-color@8.1.1)(typescript@6.0.3) + "@expo/spawn-async": 1.8.0 chalk: 4.1.2 commander: 7.2.0 transitivePeerDependencies: @@ -6729,7 +9219,7 @@ snapshots: expo-modules-core@57.0.16(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3): dependencies: - '@expo/expo-modules-macros-plugin': 0.6.1 + "@expo/expo-modules-macros-plugin": 0.6.1 expo-modules-jsi: 57.0.8(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1)) invariant: 2.2.4 react: 19.2.3 @@ -6756,17 +9246,17 @@ snapshots: expo@57.0.20(@babel/core@7.29.7(supports-color@8.1.1))(@expo/dom-webview@57.0.1)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3): dependencies: - '@babel/runtime': 7.29.7 - '@expo/cli': 57.0.22(@expo/dom-webview@57.0.1)(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) - '@expo/config': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - '@expo/config-plugins': 57.0.9(supports-color@8.1.1)(typescript@6.0.3) - '@expo/devtools': 57.0.1(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) - '@expo/fingerprint': 0.20.12(supports-color@8.1.1) - '@expo/local-build-cache-provider': 57.0.8(supports-color@8.1.1)(typescript@6.0.3) - '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) - '@expo/metro': 56.0.2(supports-color@8.1.1) - '@expo/metro-config': 57.0.12(expo@57.0.20)(supports-color@8.1.1)(typescript@6.0.3) - '@ungap/structured-clone': 1.4.0 + "@babel/runtime": 7.29.7 + "@expo/cli": 57.0.22(@expo/dom-webview@57.0.1)(expo-constants@57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1))(expo-font@57.0.3(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3))(expo@57.0.20)(react-dom@19.2.8(react@19.2.3))(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) + "@expo/config": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + "@expo/config-plugins": 57.0.9(supports-color@8.1.1)(typescript@6.0.3) + "@expo/devtools": 57.0.1(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) + "@expo/fingerprint": 0.20.12(supports-color@8.1.1) + "@expo/local-build-cache-provider": 57.0.8(supports-color@8.1.1)(typescript@6.0.3) + "@expo/log-box": 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) + "@expo/metro": 56.0.2(supports-color@8.1.1) + "@expo/metro-config": 57.0.12(expo@57.0.20)(supports-color@8.1.1)(typescript@6.0.3) + "@ungap/structured-clone": 1.4.0 babel-preset-expo: 57.0.10(@babel/core@7.29.7(supports-color@8.1.1))(@babel/runtime@7.29.7)(expo@57.0.20)(react-refresh@0.14.2)(supports-color@8.1.1) expo-asset: 57.0.16(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3)(supports-color@8.1.1)(typescript@6.0.3) expo-constants: 57.0.17(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(supports-color@8.1.1) @@ -6781,10 +9271,10 @@ snapshots: react-refresh: 0.14.2 whatwg-url-minimum: 0.1.2 optionalDependencies: - '@expo/dom-webview': 57.0.1(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) + "@expo/dom-webview": 57.0.1(expo@57.0.20)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) react-dom: 19.2.8(react@19.2.3) transitivePeerDependencies: - - '@babel/core' + - "@babel/core" - bufferutil - expo-router - expo-widgets @@ -6804,7 +9294,7 @@ snapshots: fast-json-stringify@7.0.1: dependencies: - '@fastify/merge-json-schemas': 0.2.1 + "@fastify/merge-json-schemas": 0.2.1 ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) fast-uri: 4.1.3 @@ -6823,10 +9313,10 @@ snapshots: fastify@5.12.1: dependencies: - '@fastify/ajv-compiler': 4.0.6 - '@fastify/error': 4.2.0 - '@fastify/fast-json-stringify-compiler': 5.1.0 - '@fastify/proxy-addr': 5.1.0 + "@fastify/ajv-compiler": 4.0.6 + "@fastify/error": 4.2.0 + "@fastify/fast-json-stringify-compiler": 5.1.0 + "@fastify/proxy-addr": 5.1.0 abstract-logging: 2.0.1 avvio: 9.3.0 fast-json-stringify: 7.0.1 @@ -7020,8 +9510,8 @@ snapshots: jest-util@29.7.0: dependencies: - '@jest/types': 29.6.3 - '@types/node': 26.2.0 + "@jest/types": 29.6.3 + "@types/node": 26.2.0 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -7029,7 +9519,7 @@ snapshots: jest-validate@29.7.0: dependencies: - '@jest/types': 29.6.3 + "@jest/types": 29.6.3 camelcase: 6.3.0 chalk: 4.1.2 jest-get-type: 29.6.3 @@ -7038,7 +9528,7 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 26.2.0 + "@types/node": 26.2.0 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -7180,7 +9670,7 @@ snapshots: magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + "@jridgewell/sourcemap-codec": 1.5.5 makeerror@1.0.12: dependencies: @@ -7196,7 +9686,7 @@ snapshots: metro-babel-transformer@0.84.5(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) flow-enums-runtime: 0.0.6 hermes-parser: 0.35.0 metro-cache-key: 0.84.5 @@ -7206,7 +9696,7 @@ snapshots: metro-babel-transformer@0.84.6(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) flow-enums-runtime: 0.0.6 hermes-parser: 0.35.0 metro-cache-key: 0.84.6 @@ -7330,18 +9820,18 @@ snapshots: metro-runtime@0.84.5: dependencies: - '@babel/runtime': 7.29.7 + "@babel/runtime": 7.29.7 flow-enums-runtime: 0.0.6 metro-runtime@0.84.6: dependencies: - '@babel/runtime': 7.29.7 + "@babel/runtime": 7.29.7 flow-enums-runtime: 0.0.6 metro-source-map@0.84.5(supports-color@8.1.1): dependencies: - '@babel/traverse': 7.29.8(supports-color@8.1.1) - '@babel/types': 7.29.8 + "@babel/traverse": 7.29.8(supports-color@8.1.1) + "@babel/types": 7.29.8 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.84.5(supports-color@8.1.1) @@ -7354,8 +9844,8 @@ snapshots: metro-source-map@0.84.6(supports-color@8.1.1): dependencies: - '@babel/traverse': 7.29.8(supports-color@8.1.1) - '@babel/types': 7.29.8 + "@babel/traverse": 7.29.8(supports-color@8.1.1) + "@babel/types": 7.29.8 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.84.6(supports-color@8.1.1) @@ -7390,10 +9880,10 @@ snapshots: metro-transform-plugins@0.84.5(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/generator': 7.29.8 - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/generator": 7.29.8 + "@babel/template": 7.29.7 + "@babel/traverse": 7.29.8(supports-color@8.1.1) flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: @@ -7401,10 +9891,10 @@ snapshots: metro-transform-plugins@0.84.6(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/generator': 7.29.8 - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@8.1.1) + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/generator": 7.29.8 + "@babel/template": 7.29.7 + "@babel/traverse": 7.29.8(supports-color@8.1.1) flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: @@ -7412,10 +9902,10 @@ snapshots: metro-transform-worker@0.84.5(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/generator': 7.29.8 - '@babel/parser': 7.29.8 - '@babel/types': 7.29.8 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/generator": 7.29.8 + "@babel/parser": 7.29.8 + "@babel/types": 7.29.8 flow-enums-runtime: 0.0.6 metro: 0.84.5(supports-color@8.1.1) metro-babel-transformer: 0.84.5(supports-color@8.1.1) @@ -7432,10 +9922,10 @@ snapshots: metro-transform-worker@0.84.6(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/generator': 7.29.8 - '@babel/parser': 7.29.8 - '@babel/types': 7.29.8 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/generator": 7.29.8 + "@babel/parser": 7.29.8 + "@babel/types": 7.29.8 flow-enums-runtime: 0.0.6 metro: 0.84.6(supports-color@8.1.1) metro-babel-transformer: 0.84.6(supports-color@8.1.1) @@ -7452,13 +9942,13 @@ snapshots: metro@0.84.5(supports-color@8.1.1): dependencies: - '@babel/code-frame': 7.29.7 - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/generator': 7.29.8 - '@babel/parser': 7.29.8 - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@8.1.1) - '@babel/types': 7.29.8 + "@babel/code-frame": 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/generator": 7.29.8 + "@babel/parser": 7.29.8 + "@babel/template": 7.29.7 + "@babel/traverse": 7.29.8(supports-color@8.1.1) + "@babel/types": 7.29.8 accepts: 2.0.0 ci-info: 2.0.0 connect: 3.7.0(supports-color@8.1.1) @@ -7497,13 +9987,13 @@ snapshots: metro@0.84.6(supports-color@8.1.1): dependencies: - '@babel/code-frame': 7.29.7 - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/generator': 7.29.8 - '@babel/parser': 7.29.8 - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.8(supports-color@8.1.1) - '@babel/types': 7.29.8 + "@babel/code-frame": 7.29.7 + "@babel/core": 7.29.7(supports-color@8.1.1) + "@babel/generator": 7.29.8 + "@babel/parser": 7.29.8 + "@babel/template": 7.29.7 + "@babel/traverse": 7.29.8(supports-color@8.1.1) + "@babel/types": 7.29.8 accepts: 2.0.0 ci-info: 2.0.0 connect: 3.7.0(supports-color@8.1.1) @@ -7542,7 +10032,7 @@ snapshots: micro-packed@0.11.1: dependencies: - '@scure/base': 2.4.0 + "@scure/base": 2.4.0 micromatch@4.0.8: dependencies: @@ -7749,7 +10239,7 @@ snapshots: pino@10.3.1: dependencies: - '@pinojs/redact': 0.4.0 + "@pinojs/redact": 0.4.0 atomic-sleep: 1.0.0 on-exit-leak-free: 2.1.2 pino-abstract-transport: 3.0.0 @@ -7763,7 +10253,7 @@ snapshots: plist@3.1.1: dependencies: - '@xmldom/xmldom': 0.9.12 + "@xmldom/xmldom": 0.9.12 base64-js: 1.5.1 xmlbuilder: 15.1.1 @@ -7793,7 +10283,7 @@ snapshots: pretty-format@29.7.0: dependencies: - '@jest/schemas': 29.6.3 + "@jest/schemas": 29.6.3 ansi-styles: 5.2.0 react-is: 18.3.1 @@ -7822,16 +10312,16 @@ snapshots: protobufjs@7.6.6: dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.5 - '@protobufjs/eventemitter': 1.1.1 - '@protobufjs/fetch': 1.1.1 - '@protobufjs/float': 1.0.2 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.2 - '@types/node': 26.2.0 + "@protobufjs/aspromise": 1.1.2 + "@protobufjs/base64": 1.1.2 + "@protobufjs/codegen": 2.0.5 + "@protobufjs/eventemitter": 1.1.1 + "@protobufjs/fetch": 1.1.1 + "@protobufjs/float": 1.0.2 + "@protobufjs/path": 1.1.2 + "@protobufjs/pool": 1.1.0 + "@protobufjs/utf8": 1.1.2 + "@types/node": 26.2.0 long: 5.3.2 punycode@2.3.1: {} @@ -7897,13 +10387,13 @@ snapshots: react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1): dependencies: - '@react-native/assets-registry': 0.86.3 - '@react-native/codegen': 0.86.3(@babel/core@7.29.7(supports-color@8.1.1)) - '@react-native/community-cli-plugin': 0.86.3(supports-color@8.1.1) - '@react-native/gradle-plugin': 0.86.3 - '@react-native/js-polyfills': 0.86.3 - '@react-native/normalize-colors': 0.86.3 - '@react-native/virtualized-lists': 0.86.3(@types/react@19.2.18)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) + "@react-native/assets-registry": 0.86.3 + "@react-native/codegen": 0.86.3(@babel/core@7.29.7(supports-color@8.1.1)) + "@react-native/community-cli-plugin": 0.86.3(supports-color@8.1.1) + "@react-native/gradle-plugin": 0.86.3 + "@react-native/js-polyfills": 0.86.3 + "@react-native/normalize-colors": 0.86.3 + "@react-native/virtualized-lists": 0.86.3(@types/react@19.2.18)(react-native@0.86.3(@babel/core@7.29.7(supports-color@8.1.1))(@types/react@19.2.18)(react@19.2.3)(supports-color@8.1.1))(react@19.2.3) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -7931,11 +10421,11 @@ snapshots: ws: 7.5.13 yargs: 17.7.3 optionalDependencies: - '@types/react': 19.2.18 + "@types/react": 19.2.18 transitivePeerDependencies: - - '@babel/core' - - '@react-native-community/cli' - - '@react-native/metro-config' + - "@babel/core" + - "@react-native-community/cli" + - "@react-native/metro-config" - bufferutil - supports-color - utf-8-validate @@ -7952,14 +10442,14 @@ snapshots: redis@5.12.1(@opentelemetry/api@1.9.1): dependencies: - '@redis/bloom': 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) - '@redis/client': 5.12.1(@opentelemetry/api@1.9.1) - '@redis/json': 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) - '@redis/search': 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) - '@redis/time-series': 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) + "@redis/bloom": 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) + "@redis/client": 5.12.1(@opentelemetry/api@1.9.1) + "@redis/json": 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) + "@redis/search": 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) + "@redis/time-series": 5.12.1(@redis/client@5.12.1(@opentelemetry/api@1.9.1)) transitivePeerDependencies: - - '@node-rs/xxhash' - - '@opentelemetry/api' + - "@node-rs/xxhash" + - "@opentelemetry/api" reflect-metadata@0.2.2: {} @@ -8023,24 +10513,24 @@ snapshots: rolldown@1.2.5: dependencies: - '@oxc-project/types': 0.146.0 - '@rolldown/pluginutils': 1.0.1 + "@oxc-project/types": 0.146.0 + "@rolldown/pluginutils": 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.5 - '@rolldown/binding-android-arm64': 1.2.5 - '@rolldown/binding-darwin-arm64': 1.2.5 - '@rolldown/binding-darwin-x64': 1.2.5 - '@rolldown/binding-freebsd-x64': 1.2.5 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.5 - '@rolldown/binding-linux-arm64-gnu': 1.2.5 - '@rolldown/binding-linux-arm64-musl': 1.2.5 - '@rolldown/binding-linux-ppc64-gnu': 1.2.5 - '@rolldown/binding-linux-s390x-gnu': 1.2.5 - '@rolldown/binding-linux-x64-gnu': 1.2.5 - '@rolldown/binding-linux-x64-musl': 1.2.5 - '@rolldown/binding-openharmony-arm64': 1.2.5 - '@rolldown/binding-win32-arm64-msvc': 1.2.5 - '@rolldown/binding-win32-x64-msvc': 1.2.5 + "@rolldown/binding-android-arm-eabi": 1.2.5 + "@rolldown/binding-android-arm64": 1.2.5 + "@rolldown/binding-darwin-arm64": 1.2.5 + "@rolldown/binding-darwin-x64": 1.2.5 + "@rolldown/binding-freebsd-x64": 1.2.5 + "@rolldown/binding-linux-arm-gnueabihf": 1.2.5 + "@rolldown/binding-linux-arm64-gnu": 1.2.5 + "@rolldown/binding-linux-arm64-musl": 1.2.5 + "@rolldown/binding-linux-ppc64-gnu": 1.2.5 + "@rolldown/binding-linux-s390x-gnu": 1.2.5 + "@rolldown/binding-linux-x64-gnu": 1.2.5 + "@rolldown/binding-linux-x64-musl": 1.2.5 + "@rolldown/binding-openharmony-arm64": 1.2.5 + "@rolldown/binding-win32-arm64-msvc": 1.2.5 + "@rolldown/binding-win32-x64-msvc": 1.2.5 safe-buffer@5.2.1: {} @@ -8200,7 +10690,7 @@ snapshots: terser@5.51.2: dependencies: - '@jridgewell/source-map': 0.3.11 + "@jridgewell/source-map": 0.3.11 acorn: 8.18.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -8256,12 +10746,12 @@ snapshots: turbo@2.10.11: optionalDependencies: - '@turbo/darwin-64': 2.10.11 - '@turbo/darwin-arm64': 2.10.11 - '@turbo/linux-64': 2.10.11 - '@turbo/linux-arm64': 2.10.11 - '@turbo/windows-64': 2.10.11 - '@turbo/windows-arm64': 2.10.11 + "@turbo/darwin-64": 2.10.11 + "@turbo/darwin-arm64": 2.10.11 + "@turbo/linux-64": 2.10.11 + "@turbo/linux-arm64": 2.10.11 + "@turbo/windows-64": 2.10.11 + "@turbo/windows-arm64": 2.10.11 type-check@0.4.0: dependencies: @@ -8273,10 +10763,10 @@ snapshots: typescript-eslint@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) - '@typescript-eslint/parser': 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.67.0(supports-color@8.1.1)(typescript@6.0.3) - '@typescript-eslint/utils': 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + "@typescript-eslint/eslint-plugin": 8.67.0(@typescript-eslint/parser@8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + "@typescript-eslint/parser": 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + "@typescript-eslint/typescript-estree": 8.67.0(supports-color@8.1.1)(typescript@6.0.3) + "@typescript-eslint/utils": 8.67.0(eslint@10.8.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) eslint: 10.8.1(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: @@ -8330,7 +10820,7 @@ snapshots: rolldown: 1.2.5 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 26.2.0 + "@types/node": 26.2.0 esbuild: 0.28.2 fsevents: 2.3.3 terser: 5.51.2 @@ -8339,13 +10829,13 @@ snapshots: vitest@4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0)): dependencies: - '@vitest/expect': 4.1.11 - '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.11 - '@vitest/runner': 4.1.11 - '@vitest/snapshot': 4.1.11 - '@vitest/spy': 4.1.11 - '@vitest/utils': 4.1.11 + "@vitest/expect": 4.1.11 + "@vitest/mocker": 4.1.11(vite@8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0)) + "@vitest/pretty-format": 4.1.11 + "@vitest/runner": 4.1.11 + "@vitest/snapshot": 4.1.11 + "@vitest/spy": 4.1.11 + "@vitest/utils": 4.1.11 es-module-lexer: 2.3.2 expect-type: 1.4.0 magic-string: 0.30.21 @@ -8360,8 +10850,8 @@ snapshots: vite: 8.2.2(@types/node@26.2.0)(esbuild@0.28.2)(terser@5.51.2)(tsx@4.23.12)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@opentelemetry/api': 1.9.1 - '@types/node': 26.2.0 + "@opentelemetry/api": 1.9.1 + "@types/node": 26.2.0 transitivePeerDependencies: - msw