From 6621237996cb2d4ea3cca7b8533b4fbd4e100fae Mon Sep 17 00:00:00 2001 From: ertemann Date: Mon, 13 Oct 2025 14:41:00 +0200 Subject: [PATCH 01/27] reimplement signers, add crypto utils, add wallet-connectors and account-management packages --- packages/account-management/.eslintrc.js | 7 + packages/account-management/README.md | 3 + packages/account-management/package.json | 35 ++ .../authenticator-utils.test.ts | 279 ++++++++++++++++ .../src/authenticators/index.ts | 6 + .../src/authenticators/interfaces.ts | 113 +++++++ .../src/authenticators/jwt.ts | 13 + .../src/authenticators/utils.ts | 87 +++++ .../account-management/src/grants/authz.ts | 33 ++ .../account-management/src/grants/feegrant.ts | 97 ++++++ .../account-management/src/grants/index.ts | 8 + .../src/grants/query-treasury.ts | 90 +++++ .../composite-treasury-strategy.test.ts | 210 ++++++++++++ .../strategies/composite-treasury-strategy.ts | 42 +++ .../daodao-treasury-strategy.test.ts | 242 ++++++++++++++ .../strategies/daodao-treasury-strategy.ts | 198 +++++++++++ .../direct-query-treasury-strategy.test.ts | 209 ++++++++++++ .../direct-query-treasury-strategy.ts | 99 ++++++ .../src/grants/strategies/factory.ts | 58 ++++ .../src/grants/strategies/index.ts | 9 + .../account-management/src/grants/treasury.ts | 109 ++++++ packages/account-management/src/index.ts | 24 ++ .../src/types/authenticator.ts | 19 ++ .../account-management/src/types/grants.ts | 38 +++ .../account-management/src/types/index.ts | 12 + .../account-management/src/types/indexer.ts | 5 + .../account-management/src/types/treasury.ts | 66 ++++ packages/account-management/tsconfig.json | 13 + packages/account-management/tsup.config.ts | 11 + packages/signers/README.md | 32 +- packages/signers/package.json | 40 +-- packages/signers/src/crypto/address.ts | 36 ++ packages/signers/src/crypto/index.ts | 8 + packages/signers/src/crypto/messages.ts | 315 ++++++++++++++++++ packages/signers/src/crypto/prepare.ts | 142 ++++++++ packages/signers/src/crypto/salt.ts | 53 +++ packages/signers/src/index.ts | 13 +- packages/signers/src/interfaces/AASigner.ts | 12 +- packages/signers/src/interfaces/fragments.ts | 11 - packages/signers/src/interfaces/queries.ts | 131 -------- packages/signers/src/signers/direct-signer.ts | 58 ++-- packages/signers/src/signers/eth-signer.ts | 45 ++- packages/signers/src/signers/jwt-signer.ts | 32 +- .../signers/src/signers/passkey-signer.ts | 84 +++++ .../generated/abstractaccount/v1/feegrant.ts | 303 +++++++++++++++++ packages/wallet-connectors/.eslintrc.js | 7 + packages/wallet-connectors/README.md | 3 + packages/wallet-connectors/package.json | 28 ++ .../wallet-connectors/src/browser/cosmos.ts | 171 ++++++++++ .../src/browser/errors/WalletAccountError.ts | 74 ++++ .../src/browser/errors/index.ts | 5 + .../wallet-connectors/src/browser/ethereum.ts | 96 ++++++ .../wallet-connectors/src/browser/index.ts | 14 + .../src/browser/workflows.ts | 115 +++++++ packages/wallet-connectors/src/index.ts | 26 ++ packages/wallet-connectors/src/types/api.ts | 46 +++ packages/wallet-connectors/src/types/index.ts | 6 + .../wallet-connectors/src/types/wallet.ts | 25 ++ packages/wallet-connectors/tsconfig.json | 10 + packages/wallet-connectors/tsup.config.ts | 11 + 60 files changed, 3804 insertions(+), 283 deletions(-) create mode 100644 packages/account-management/.eslintrc.js create mode 100644 packages/account-management/README.md create mode 100644 packages/account-management/package.json create mode 100644 packages/account-management/src/authenticators/authenticator-utils.test.ts create mode 100644 packages/account-management/src/authenticators/index.ts create mode 100644 packages/account-management/src/authenticators/interfaces.ts create mode 100644 packages/account-management/src/authenticators/jwt.ts create mode 100644 packages/account-management/src/authenticators/utils.ts create mode 100644 packages/account-management/src/grants/authz.ts create mode 100644 packages/account-management/src/grants/feegrant.ts create mode 100644 packages/account-management/src/grants/index.ts create mode 100644 packages/account-management/src/grants/query-treasury.ts create mode 100644 packages/account-management/src/grants/strategies/composite-treasury-strategy.test.ts create mode 100644 packages/account-management/src/grants/strategies/composite-treasury-strategy.ts create mode 100644 packages/account-management/src/grants/strategies/daodao-treasury-strategy.test.ts create mode 100644 packages/account-management/src/grants/strategies/daodao-treasury-strategy.ts create mode 100644 packages/account-management/src/grants/strategies/direct-query-treasury-strategy.test.ts create mode 100644 packages/account-management/src/grants/strategies/direct-query-treasury-strategy.ts create mode 100644 packages/account-management/src/grants/strategies/factory.ts create mode 100644 packages/account-management/src/grants/strategies/index.ts create mode 100644 packages/account-management/src/grants/treasury.ts create mode 100644 packages/account-management/src/index.ts create mode 100644 packages/account-management/src/types/authenticator.ts create mode 100644 packages/account-management/src/types/grants.ts create mode 100644 packages/account-management/src/types/index.ts create mode 100644 packages/account-management/src/types/indexer.ts create mode 100644 packages/account-management/src/types/treasury.ts create mode 100644 packages/account-management/tsconfig.json create mode 100644 packages/account-management/tsup.config.ts create mode 100644 packages/signers/src/crypto/address.ts create mode 100644 packages/signers/src/crypto/index.ts create mode 100644 packages/signers/src/crypto/messages.ts create mode 100644 packages/signers/src/crypto/prepare.ts create mode 100644 packages/signers/src/crypto/salt.ts delete mode 100644 packages/signers/src/interfaces/fragments.ts delete mode 100644 packages/signers/src/interfaces/queries.ts create mode 100644 packages/signers/src/signers/passkey-signer.ts create mode 100644 packages/signers/src/types/generated/abstractaccount/v1/feegrant.ts create mode 100644 packages/wallet-connectors/.eslintrc.js create mode 100644 packages/wallet-connectors/README.md create mode 100644 packages/wallet-connectors/package.json create mode 100644 packages/wallet-connectors/src/browser/cosmos.ts create mode 100644 packages/wallet-connectors/src/browser/errors/WalletAccountError.ts create mode 100644 packages/wallet-connectors/src/browser/errors/index.ts create mode 100644 packages/wallet-connectors/src/browser/ethereum.ts create mode 100644 packages/wallet-connectors/src/browser/index.ts create mode 100644 packages/wallet-connectors/src/browser/workflows.ts create mode 100644 packages/wallet-connectors/src/index.ts create mode 100644 packages/wallet-connectors/src/types/api.ts create mode 100644 packages/wallet-connectors/src/types/index.ts create mode 100644 packages/wallet-connectors/src/types/wallet.ts create mode 100644 packages/wallet-connectors/tsconfig.json create mode 100644 packages/wallet-connectors/tsup.config.ts diff --git a/packages/account-management/.eslintrc.js b/packages/account-management/.eslintrc.js new file mode 100644 index 00000000..98e47589 --- /dev/null +++ b/packages/account-management/.eslintrc.js @@ -0,0 +1,7 @@ +module.exports = { + extends: ["@burnt-labs/eslint-config-custom/library.js"], + parser: "@typescript-eslint/parser", + parserOptions: { + project: true, + }, +}; diff --git a/packages/account-management/README.md b/packages/account-management/README.md new file mode 100644 index 00000000..aaee75c7 --- /dev/null +++ b/packages/account-management/README.md @@ -0,0 +1,3 @@ +# @burnt-labs/account-management + +Smart account management utilities for XION blockchain. diff --git a/packages/account-management/package.json b/packages/account-management/package.json new file mode 100644 index 00000000..9316c04b --- /dev/null +++ b/packages/account-management/package.json @@ -0,0 +1,35 @@ +{ + "name": "@burnt-labs/account-management", + "version": "1.0.0-alpha.1", + "description": "Smart account management utilities for XION - authenticators, grants, and queries", + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "license": "MIT", + "scripts": { + "build": "tsup", + "lint": "eslint src/", + "dev": "tsup --watch", + "check-types": "tsc --noEmit", + "clean": "rimraf ./dist", + "test": "vitest" + }, + "dependencies": { + "@burnt-labs/signers": "workspace:*", + "@cosmjs/cosmwasm-stargate": "^0.36.0", + "@cosmjs/stargate": "^0.36.0", + "camelcase-keys": "^9.1.3", + "cosmjs-types": "^0.9.0" + }, + "devDependencies": { + "@burnt-labs/eslint-config-custom": "workspace:*", + "@burnt-labs/tsconfig": "workspace:*", + "@types/node": "^20", + "eslint": "^8.48.0", + "prettier": "^3.0.3", + "rimraf": "^5.0.5", + "tsup": "^6.0.1", + "typescript": "^5.2.2", + "vitest": "^1.0.0" + } +} diff --git a/packages/account-management/src/authenticators/authenticator-utils.test.ts b/packages/account-management/src/authenticators/authenticator-utils.test.ts new file mode 100644 index 00000000..ff416021 --- /dev/null +++ b/packages/account-management/src/authenticators/authenticator-utils.test.ts @@ -0,0 +1,279 @@ +import { describe, it, expect } from "vitest"; +import { + isDuplicateAuthenticator, + deduplicateAccountsById, + findBestMatchingAuthenticator, + createJwtAuthenticatorIdentifier, + validateNewAuthenticator, +} from "./authenticator-utils"; +import { Authenticator } from "../indexer-strategies/types"; +import { SmartAccountWithCodeId } from "../indexer-strategies/types"; + +describe("authenticator-utils", () => { + describe("isDuplicateAuthenticator", () => { + const mockAuthenticators: Authenticator[] = [ + { + id: "account-0", + authenticator: "project.user123", + authenticatorIndex: 0, + type: "Jwt", + }, + { + id: "account-1", + authenticator: "0x1234567890", + authenticatorIndex: 1, + type: "EthWallet", + }, + ]; + + it("should return true when duplicate JWT authenticator exists", () => { + const result = isDuplicateAuthenticator( + mockAuthenticators, + "project.user123", + "Jwt", + ); + expect(result).toBe(true); + }); + + it("should return false when authenticator does not exist", () => { + const result = isDuplicateAuthenticator( + mockAuthenticators, + "project.user456", + "Jwt", + ); + expect(result).toBe(false); + }); + + it("should return false when identifier matches but type differs", () => { + const result = isDuplicateAuthenticator( + mockAuthenticators, + "project.user123", + "OAuth", + ); + expect(result).toBe(false); + }); + + it("should handle empty authenticators array", () => { + const result = isDuplicateAuthenticator([], "any.identifier", "Jwt"); + expect(result).toBe(false); + }); + }); + + describe("deduplicateAccountsById", () => { + const createMockAccount = (id: string): SmartAccountWithCodeId => ({ + id, + codeId: 1, + authenticators: [], + }); + + it("should remove duplicate accounts with same ID", () => { + const accounts = [ + createMockAccount("account1"), + createMockAccount("account2"), + createMockAccount("account1"), // duplicate + createMockAccount("account3"), + ]; + + const result = deduplicateAccountsById(accounts); + expect(result).toHaveLength(3); + expect(result.map((a) => a.id)).toEqual([ + "account1", + "account2", + "account3", + ]); + }); + + it("should preserve order of first occurrence", () => { + const accounts = [ + createMockAccount("account2"), + createMockAccount("account1"), + createMockAccount("account2"), // duplicate + ]; + + const result = deduplicateAccountsById(accounts); + expect(result.map((a) => a.id)).toEqual(["account2", "account1"]); + }); + + it("should handle undefined input", () => { + const result = deduplicateAccountsById(undefined); + expect(result).toEqual([]); + }); + + it("should handle empty array", () => { + const result = deduplicateAccountsById([]); + expect(result).toEqual([]); + }); + + it("should return same array when no duplicates", () => { + const accounts = [ + createMockAccount("account1"), + createMockAccount("account2"), + createMockAccount("account3"), + ]; + + const result = deduplicateAccountsById(accounts); + expect(result).toEqual(accounts); + }); + }); + + describe("findBestMatchingAuthenticator", () => { + it("should return authenticator with lowest index when multiple matches", () => { + const authenticators: Authenticator[] = [ + { + id: "account-2", + authenticator: "project.user123", + authenticatorIndex: 2, + type: "Jwt", + }, + { + id: "account-0", + authenticator: "project.user123", + authenticatorIndex: 0, + type: "Jwt", + }, + { + id: "account-1", + authenticator: "project.user123", + authenticatorIndex: 1, + type: "Jwt", + }, + ]; + + const result = findBestMatchingAuthenticator( + authenticators, + "project.user123", + ); + expect(result?.authenticatorIndex).toBe(0); + }); + + it("should return single matching authenticator", () => { + const authenticators: Authenticator[] = [ + { + id: "account-0", + authenticator: "project.user123", + authenticatorIndex: 0, + type: "Jwt", + }, + { + id: "account-1", + authenticator: "project.user456", + authenticatorIndex: 1, + type: "Jwt", + }, + ]; + + const result = findBestMatchingAuthenticator( + authenticators, + "project.user456", + ); + expect(result?.authenticatorIndex).toBe(1); + }); + + it("should return null when no matches found", () => { + const authenticators: Authenticator[] = [ + { + id: "account-0", + authenticator: "project.user123", + authenticatorIndex: 0, + type: "Jwt", + }, + ]; + + const result = findBestMatchingAuthenticator( + authenticators, + "project.user999", + ); + expect(result).toBeNull(); + }); + + it("should handle empty authenticators array", () => { + const result = findBestMatchingAuthenticator([], "any.identifier"); + expect(result).toBeNull(); + }); + }); + + describe("createJwtAuthenticatorIdentifier", () => { + it("should format single audience with subject", () => { + const result = createJwtAuthenticatorIdentifier("project-id", "user123"); + expect(result).toBe("project-id.user123"); + }); + + it("should use first audience when array provided", () => { + const result = createJwtAuthenticatorIdentifier( + ["project-id", "other-id"], + "user123", + ); + expect(result).toBe("project-id.user123"); + }); + + it("should handle undefined values", () => { + const result = createJwtAuthenticatorIdentifier(undefined, undefined); + expect(result).toBe("undefined.undefined"); + }); + + it("should handle empty array audience", () => { + const result = createJwtAuthenticatorIdentifier([], "user123"); + expect(result).toBe("undefined.user123"); + }); + }); + + describe("validateNewAuthenticator", () => { + const mockAuthenticators: Authenticator[] = [ + { + id: "account-0", + authenticator: "project.user123", + authenticatorIndex: 0, + type: "Jwt", + }, + ]; + + it("should return valid when authenticator does not exist", () => { + const result = validateNewAuthenticator( + mockAuthenticators, + "project.user456", + "Jwt", + ); + expect(result.isValid).toBe(true); + expect(result.errorMessage).toBeUndefined(); + }); + + it("should return invalid with JWT error message for duplicate JWT", () => { + const result = validateNewAuthenticator( + mockAuthenticators, + "project.user123", + "Jwt", + ); + expect(result.isValid).toBe(false); + expect(result.errorMessage).toBe( + "This email is already added as an authenticator", + ); + }); + + it("should return invalid with generic error for non-JWT duplicate", () => { + const authenticators: Authenticator[] = [ + { + id: "account-0", + authenticator: "0x1234567890", + authenticatorIndex: 0, + type: "EthWallet", + }, + ]; + + const result = validateNewAuthenticator( + authenticators, + "0x1234567890", + "EthWallet", + ); + expect(result.isValid).toBe(false); + expect(result.errorMessage).toBe( + "This authenticator is already added to your account", + ); + }); + + it("should handle empty authenticators array", () => { + const result = validateNewAuthenticator([], "any.identifier", "Jwt"); + expect(result.isValid).toBe(true); + expect(result.errorMessage).toBeUndefined(); + }); + }); +}); diff --git a/packages/account-management/src/authenticators/index.ts b/packages/account-management/src/authenticators/index.ts new file mode 100644 index 00000000..31c9f5fb --- /dev/null +++ b/packages/account-management/src/authenticators/index.ts @@ -0,0 +1,6 @@ +/** + * Authenticator management utilities + */ + +export * from "./utils"; +export * from "./jwt"; diff --git a/packages/account-management/src/authenticators/interfaces.ts b/packages/account-management/src/authenticators/interfaces.ts new file mode 100644 index 00000000..f1266944 --- /dev/null +++ b/packages/account-management/src/authenticators/interfaces.ts @@ -0,0 +1,113 @@ +export type ISmartAccounts = { + id?: string; + latestAuthenticatorId?: number; + nodes: Array; +}; + +export type ISmartAccountAuthenticators = { + authenticators: { + nodes: Array; + }; +}; + +export type ISmartAccountAuthenticator = { + id: string; + type: string; + authenticator: string; + authenticatorId: string; + version: string; +}; + +export type IQueryAAResponse = { + smartAccounts: ISmartAccounts; +}; + +// mapping of index algo type to wallet algo type +export enum AAAlgo { + Secp256K1 = "secp256k1", + secp256k1 = "Secp256K1", + Ed25519 = "ed25519", + ed25519 = "Ed25519", + Sr25519 = "sr25519", + sr25519 = "Sr25519", + jwt = "JWT", + JWT = "jwt", + ethWallet = "ethWallet", + ETHWALLET = "EthWallet", + passkey = "passkey", + PASSKEY = "Passkey", +} + +export interface AddSecp256K1Authenticator { + add_auth_method: { + add_authenticator: { + Secp256K1: { + id: number; + pubkey: string; //base64 encoded + signature: string; //base64 encoded + }; + }; + }; +} + +export interface AddEd25519Authenticator { + add_auth_method: { + add_authenticator: { + Ed25519: { + id: number; + pubkey: string; //base64 encoded + signature: string; //base64 encoded + }; + }; + }; +} + +export interface AddEthWalletAuthenticator { + add_auth_method: { + add_authenticator: { + EthWallet: { + id: number; + address: string; + signature: string; //base64 encoded + }; + }; + }; +} + +export interface AddJwtAuthenticator { + add_auth_method: { + add_authenticator: { + Jwt: { + id: number; + aud: string | string[]; + sub: string; + token: string; //base64 encoded + }; + }; + }; +} + +export interface AddPasskeyAuthenticator { + add_auth_method: { + add_authenticator: { + Passkey: { + id: number; + url: string; + credential: string; //base64 encoded + }; + }; + }; +} + +export interface RemoveAuthenticator { + remove_auth_method: { + id: number; + }; +} + +export type AddAuthenticator = + | AddSecp256K1Authenticator + | AddEd25519Authenticator + | AddEthWalletAuthenticator + | AddJwtAuthenticator + | AddPasskeyAuthenticator; diff --git a/packages/account-management/src/authenticators/jwt.ts b/packages/account-management/src/authenticators/jwt.ts new file mode 100644 index 00000000..88623857 --- /dev/null +++ b/packages/account-management/src/authenticators/jwt.ts @@ -0,0 +1,13 @@ +/** + * Creates a JWT authenticator identifier from audience and subject + * @param aud - The audience claim from JWT + * @param sub - The subject claim from JWT + * @returns Formatted authenticator identifier + */ +export function createJwtAuthenticatorIdentifier( + aud: string | string[] | undefined, + sub: string | undefined, +): string { + const formattedAud = Array.isArray(aud) ? aud[0] : aud; + return `${formattedAud}.${sub}`; +} diff --git a/packages/account-management/src/authenticators/utils.ts b/packages/account-management/src/authenticators/utils.ts new file mode 100644 index 00000000..f1d48348 --- /dev/null +++ b/packages/account-management/src/authenticators/utils.ts @@ -0,0 +1,87 @@ +import { Authenticator } from "../indexer-strategies/types"; +import { SmartAccountWithCodeId } from "../indexer-strategies/types"; + +/** + * Checks if an authenticator already exists in the list + * @param authenticators - List of existing authenticators + * @param identifier - The authenticator identifier to check (e.g., "aud.sub" for JWT) + * @param type - The type of authenticator (e.g., "Jwt") + * @returns true if a duplicate exists, false otherwise + */ +export function isDuplicateAuthenticator( + authenticators: Authenticator[], + identifier: string, + type: string, +): boolean { + return authenticators.some( + (auth) => auth.authenticator === identifier && auth.type === type, + ); +} + +/** + * Deduplicates accounts by their ID + * @param accounts - List of accounts that may contain duplicates + * @returns List of unique accounts + */ +export function deduplicateAccountsById( + accounts: SmartAccountWithCodeId[] | undefined, +): SmartAccountWithCodeId[] { + if (!accounts) return []; + + const seen = new Set(); + return accounts.filter((account) => { + if (seen.has(account.id)) { + return false; + } + seen.add(account.id); + return true; + }); +} + +/** + * Finds the best matching authenticator from a list + * When multiple authenticators match, returns the one with the lowest index + * @param authenticators - List of authenticators to search + * @param loginAuthenticator - The authenticator identifier to match + * @returns The best matching authenticator or null if none found + */ +export function findBestMatchingAuthenticator( + authenticators: Authenticator[], + loginAuthenticator: string, +): Authenticator | null { + const matchingAuthenticators = authenticators.filter( + (auth) => auth.authenticator === loginAuthenticator, + ); + + if (matchingAuthenticators.length === 0) { + return null; + } + + // Return the one with the lowest index (likely the original) + return matchingAuthenticators.reduce((prev, curr) => + prev.authenticatorIndex < curr.authenticatorIndex ? prev : curr, + ); +} + +/** + * Validates if a new authenticator can be added + * @param authenticators - List of existing authenticators + * @param identifier - The new authenticator identifier + * @param type - The type of authenticator + * @returns Object with isValid flag and error message if invalid + */ +export function validateNewAuthenticator( + authenticators: Authenticator[], + identifier: string, + type: string, +): { isValid: boolean; errorMessage?: string } { + if (isDuplicateAuthenticator(authenticators, identifier, type)) { + const errorMessage = + type === "Jwt" + ? "This email is already added as an authenticator" + : "This authenticator is already added to your account"; + return { isValid: false, errorMessage }; + } + + return { isValid: true }; +} diff --git a/packages/account-management/src/grants/authz.ts b/packages/account-management/src/grants/authz.ts new file mode 100644 index 00000000..a934a5db --- /dev/null +++ b/packages/account-management/src/grants/authz.ts @@ -0,0 +1,33 @@ +import { SelectedSmartAccount } from "../indexer-strategies/types"; +import { ContractGrantDescription } from "../components/AbstraxionGrant/generateContractGrant"; + +/** + * Checks if any of the contract grant configurations are the current smart account (granter) + * + * @param {ContractGrantDescription[]} contracts - An array of contract descriptions. + * @param {SelectedSmartAccount} account - The selected smart account (granter in this case) + * @returns {boolean} - Returns `true` if none of the contracts are the selected smart account, otherwise `false`. + */ +export const isContractGrantConfigValid = ( + contracts: ContractGrantDescription[], + account: SelectedSmartAccount, +): boolean => { + try { + for (const contract of contracts) { + const contractAddress = + typeof contract === "string" ? contract : contract.address; + + if (!contractAddress) { + return false; + } + + if (contractAddress === account.id) { + return false; + } + } + + return true; + } catch { + return false; + } +}; diff --git a/packages/account-management/src/grants/feegrant.ts b/packages/account-management/src/grants/feegrant.ts new file mode 100644 index 00000000..f0ec984a --- /dev/null +++ b/packages/account-management/src/grants/feegrant.ts @@ -0,0 +1,97 @@ +import camelcaseKeys from "camelcase-keys"; +import { AllowedMsgAllowance } from "cosmjs-types/cosmos/feegrant/v1beta1/feegrant"; +import { + Allowance, + AllowanceResponse, + ContractsAllowance, + MultiAnyAllowance, +} from "../types/allowance-types"; + +function isAllowedMsgAllowance( + allowance: Allowance, +): allowance is AllowedMsgAllowance { + return allowance["@type"] === "/cosmos.feegrant.v1beta1.AllowedMsgAllowance"; +} + +function isContractsAllowance( + allowance: Allowance, +): allowance is ContractsAllowance { + return allowance["@type"] === "/xion.v1.ContractsAllowance"; +} + +function isMultiAnyAllowance( + allowance: Allowance, +): allowance is MultiAnyAllowance { + return allowance["@type"] === "/xion.v1.MultiAnyAllowance"; +} + +/** + * Validates if a requested set of actions are permitted under a fee grant between a granter and grantee. + * + * @async + * @function + * @param {string} restUrl - The base URL of the Cosmos REST API. + * @param {string} feeGranter - The address of the fee granter (the account providing the allowance). + * @param {string} granter - The address of the grantee (the account receiving the allowance). + * @param {string[]} requestedActions - The array of specific actions to validate, e.g., ["/cosmos.authz.v1beta1.MsgGrant", ...]. + * @param {string} [userAddress] - (Optional) The user's smart contract account address to validate against `ContractsAllowance`. + * @returns {Promise} - A promise that resolves to `true` if all actions are permitted under the fee grant, otherwise `false`. + * + * @throws {Error} - If the API request fails or an unexpected error occurs. + */ +export async function validateFeeGrant( + restUrl: string, + feeGranter: string, + granter: string, + requestedActions: string[], + userAddress?: string, +): Promise { + const baseUrl = `${restUrl}/cosmos/feegrant/v1beta1/allowance/${feeGranter}/${granter}`; + try { + const response = await fetch(baseUrl, { cache: "no-store" }); + if (!response.ok) { + return false; + } + + const data = await response.json(); + const camelCasedData = camelcaseKeys(data, { + deep: true, + }) as AllowanceResponse; + + const { allowance } = camelCasedData.allowance; + return validateActions(requestedActions, allowance, userAddress); + } catch (error) { + console.error("Error validating fee grant:", error); + return false; + } +} + +export function validateActions( + actions: string[], + allowance: Allowance, + userAddress?: string, +): boolean { + if (isAllowedMsgAllowance(allowance)) { + return actions.every((action) => + allowance.allowedMessages.includes(action), + ); + } + + if (isContractsAllowance(allowance)) { + if (userAddress && !allowance.contractAddresses.includes(userAddress)) { + return false; + } + return validateActions(actions, allowance.allowance, userAddress); + } + + if (isMultiAnyAllowance(allowance)) { + for (const subAllowance of allowance.allowances) { + if (validateActions(actions, subAllowance, userAddress)) { + return true; // Grant is true if ANY child grant is true + } + } + return false; + } + + return false; +} diff --git a/packages/account-management/src/grants/index.ts b/packages/account-management/src/grants/index.ts new file mode 100644 index 00000000..56f16ee1 --- /dev/null +++ b/packages/account-management/src/grants/index.ts @@ -0,0 +1,8 @@ +/** + * Grant management utilities + * + */ + +export * from "./feegrant"; +export * from "./authz"; +export * from "./treasury"; diff --git a/packages/account-management/src/grants/query-treasury.ts b/packages/account-management/src/grants/query-treasury.ts new file mode 100644 index 00000000..9887b722 --- /dev/null +++ b/packages/account-management/src/grants/query-treasury.ts @@ -0,0 +1,90 @@ +/** + * Treasury contract querying utilities + * Extracted from dashboard utils/query-treasury-contract.ts + */ + +import type { TreasuryStrategy } from "./strategies/types"; +import type { TreasuryParams } from "../types/treasury"; +import type { AAClient } from "../types/client"; + +export interface GrantConfigWithDescription { + authorization: { + type_url: string; + value: string; // base64 encoded + }; + description: string; + allowance?: { + type_url: string; + value: string; + }; + maxDuration?: number; +} + +export interface TreasuryQueryResult { + grantConfigs: GrantConfigWithDescription[]; + params: TreasuryParams; +} + +/** + * Queries a treasury contract using the provided strategy + * + * @param contractAddress - The treasury contract address + * @param client - CosmWasm client for querying + * @param strategy - Treasury strategy to use for querying + * @returns Treasury configuration with grant configs and params + * @throws Error if required parameters are missing or query fails + */ +export async function queryTreasuryContract( + contractAddress: string, + client: AAClient, + strategy: TreasuryStrategy, +): Promise { + if (!contractAddress) { + throw new Error("Missing contract address"); + } + + if (!client) { + throw new Error("Missing client"); + } + + if (!strategy) { + throw new Error("Missing treasury strategy"); + } + + // Fetch treasury configuration using the strategy + const treasuryConfig = await strategy.fetchTreasuryConfig( + contractAddress, + client, + ); + + if (!treasuryConfig) { + throw new Error( + "Failed to fetch treasury configuration - strategy returned null", + ); + } + + return { + grantConfigs: treasuryConfig.grantConfigs, + params: treasuryConfig.params, + }; +} + +/** + * Queries treasury parameters only (without grant configs) + * + * @param contractAddress - The treasury contract address + * @param client - CosmWasm client for querying + * @returns Treasury parameters (display_url, redirect_url, icon_url) + */ +export async function queryTreasuryParams( + contractAddress: string, + client: AAClient, +): Promise { + const queryParams = { params: {} }; + const params = (await client.queryContractSmart( + contractAddress, + queryParams, + )) as TreasuryParams; + + return params; +} diff --git a/packages/account-management/src/grants/strategies/composite-treasury-strategy.test.ts b/packages/account-management/src/grants/strategies/composite-treasury-strategy.test.ts new file mode 100644 index 00000000..5454a6d7 --- /dev/null +++ b/packages/account-management/src/grants/strategies/composite-treasury-strategy.test.ts @@ -0,0 +1,210 @@ +import { describe, it, expect, vi, beforeEach } from "vitest"; +import { CompositeTreasuryStrategy } from "./composite-treasury-strategy"; +import type { TreasuryStrategy, TreasuryConfig } from "./types"; +import type { AAClient } from "../signers"; + +describe("CompositeTreasuryStrategy", () => { + let mockClient: AAClient; + let mockStrategy1: TreasuryStrategy; + let mockStrategy2: TreasuryStrategy; + let mockStrategy3: TreasuryStrategy; + + const mockTreasuryConfig: TreasuryConfig = { + grantConfigs: [ + { + authorization: { + type_url: "/cosmos.authz.v1beta1.GenericAuthorization", + value: "base64encodedvalue", + }, + description: "Test grant", + allowance: { type_url: "", value: "" }, + }, + ], + params: { + display_url: "https://example.com", + redirect_url: "https://example.com/redirect", + icon_url: "https://example.com/icon.png", + }, + }; + + beforeEach(() => { + mockClient = {} as AAClient; + + mockStrategy1 = { + fetchTreasuryConfig: vi.fn(), + }; + + mockStrategy2 = { + fetchTreasuryConfig: vi.fn(), + }; + + mockStrategy3 = { + fetchTreasuryConfig: vi.fn(), + }; + + vi.clearAllMocks(); + }); + + it("should return result from first successful strategy", async () => { + vi.mocked(mockStrategy1.fetchTreasuryConfig).mockResolvedValueOnce( + mockTreasuryConfig, + ); + + const compositeStrategy = new CompositeTreasuryStrategy( + mockStrategy1, + mockStrategy2, + mockStrategy3, + ); + + const result = await compositeStrategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).toEqual(mockTreasuryConfig); + expect(mockStrategy1.fetchTreasuryConfig).toHaveBeenCalledOnce(); + expect(mockStrategy2.fetchTreasuryConfig).not.toHaveBeenCalled(); + expect(mockStrategy3.fetchTreasuryConfig).not.toHaveBeenCalled(); + }); + + it("should fallback to second strategy when first fails", async () => { + vi.mocked(mockStrategy1.fetchTreasuryConfig).mockRejectedValueOnce( + new Error("First strategy failed"), + ); + vi.mocked(mockStrategy2.fetchTreasuryConfig).mockResolvedValueOnce( + mockTreasuryConfig, + ); + + const compositeStrategy = new CompositeTreasuryStrategy( + mockStrategy1, + mockStrategy2, + mockStrategy3, + ); + + const result = await compositeStrategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).toEqual(mockTreasuryConfig); + expect(mockStrategy1.fetchTreasuryConfig).toHaveBeenCalledOnce(); + expect(mockStrategy2.fetchTreasuryConfig).toHaveBeenCalledOnce(); + expect(mockStrategy3.fetchTreasuryConfig).not.toHaveBeenCalled(); + }); + + it("should fallback when strategy returns null", async () => { + vi.mocked(mockStrategy1.fetchTreasuryConfig).mockResolvedValueOnce(null); + vi.mocked(mockStrategy2.fetchTreasuryConfig).mockResolvedValueOnce( + mockTreasuryConfig, + ); + + const compositeStrategy = new CompositeTreasuryStrategy( + mockStrategy1, + mockStrategy2, + mockStrategy3, + ); + + const result = await compositeStrategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).toEqual(mockTreasuryConfig); + expect(mockStrategy1.fetchTreasuryConfig).toHaveBeenCalledOnce(); + expect(mockStrategy2.fetchTreasuryConfig).toHaveBeenCalledOnce(); + expect(mockStrategy3.fetchTreasuryConfig).not.toHaveBeenCalled(); + }); + + it("should try all strategies before returning null", async () => { + vi.mocked(mockStrategy1.fetchTreasuryConfig).mockRejectedValueOnce( + new Error("Strategy 1 failed"), + ); + vi.mocked(mockStrategy2.fetchTreasuryConfig).mockResolvedValueOnce(null); + vi.mocked(mockStrategy3.fetchTreasuryConfig).mockRejectedValueOnce( + new Error("Strategy 3 failed"), + ); + + const compositeStrategy = new CompositeTreasuryStrategy( + mockStrategy1, + mockStrategy2, + mockStrategy3, + ); + + const result = await compositeStrategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).toBeNull(); + expect(mockStrategy1.fetchTreasuryConfig).toHaveBeenCalledOnce(); + expect(mockStrategy2.fetchTreasuryConfig).toHaveBeenCalledOnce(); + expect(mockStrategy3.fetchTreasuryConfig).toHaveBeenCalledOnce(); + }); + + it("should work with a single strategy", async () => { + vi.mocked(mockStrategy1.fetchTreasuryConfig).mockResolvedValueOnce( + mockTreasuryConfig, + ); + + const compositeStrategy = new CompositeTreasuryStrategy(mockStrategy1); + + const result = await compositeStrategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).toEqual(mockTreasuryConfig); + expect(mockStrategy1.fetchTreasuryConfig).toHaveBeenCalledOnce(); + }); + + it("should throw error when constructed with no strategies", () => { + expect(() => new CompositeTreasuryStrategy()).toThrow( + "CompositeTreasuryStrategy requires at least one strategy", + ); + }); + + it("should pass correct parameters to strategies", async () => { + vi.mocked(mockStrategy1.fetchTreasuryConfig).mockResolvedValueOnce( + mockTreasuryConfig, + ); + + const compositeStrategy = new CompositeTreasuryStrategy(mockStrategy1); + const treasuryAddress = "xion1abc123"; + + await compositeStrategy.fetchTreasuryConfig(treasuryAddress, mockClient); + + expect(mockStrategy1.fetchTreasuryConfig).toHaveBeenCalledWith( + treasuryAddress, + mockClient, + ); + }); + + it("should handle mixed success and failure scenarios", async () => { + // First strategy throws + vi.mocked(mockStrategy1.fetchTreasuryConfig).mockRejectedValueOnce( + new Error("Network error"), + ); + // Second strategy returns null + vi.mocked(mockStrategy2.fetchTreasuryConfig).mockResolvedValueOnce(null); + // Third strategy succeeds + vi.mocked(mockStrategy3.fetchTreasuryConfig).mockResolvedValueOnce( + mockTreasuryConfig, + ); + + const compositeStrategy = new CompositeTreasuryStrategy( + mockStrategy1, + mockStrategy2, + mockStrategy3, + ); + + const result = await compositeStrategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).toEqual(mockTreasuryConfig); + expect(mockStrategy1.fetchTreasuryConfig).toHaveBeenCalledOnce(); + expect(mockStrategy2.fetchTreasuryConfig).toHaveBeenCalledOnce(); + expect(mockStrategy3.fetchTreasuryConfig).toHaveBeenCalledOnce(); + }); +}); diff --git a/packages/account-management/src/grants/strategies/composite-treasury-strategy.ts b/packages/account-management/src/grants/strategies/composite-treasury-strategy.ts new file mode 100644 index 00000000..b2e6c7bc --- /dev/null +++ b/packages/account-management/src/grants/strategies/composite-treasury-strategy.ts @@ -0,0 +1,42 @@ +import type { AAClient } from "../signers"; +import type { TreasuryConfig, TreasuryStrategy } from "./types"; + +/** + * Composite Treasury Strategy + * Tries multiple strategies in order until one succeeds + * Implements the Strategy pattern with fallback behavior + */ +export class CompositeTreasuryStrategy implements TreasuryStrategy { + private readonly strategies: TreasuryStrategy[]; + + constructor(...strategies: TreasuryStrategy[]) { + if (strategies.length === 0) { + throw new Error( + "CompositeTreasuryStrategy requires at least one strategy", + ); + } + this.strategies = strategies; + } + + async fetchTreasuryConfig( + treasuryAddress: string, + client: AAClient, + ): Promise { + for (const strategy of this.strategies) { + try { + const result = await strategy.fetchTreasuryConfig( + treasuryAddress, + client, + ); + + if (result) { + return result; + } + } catch { + // Continue to next strategy + } + } + + return null; + } +} diff --git a/packages/account-management/src/grants/strategies/daodao-treasury-strategy.test.ts b/packages/account-management/src/grants/strategies/daodao-treasury-strategy.test.ts new file mode 100644 index 00000000..3435f946 --- /dev/null +++ b/packages/account-management/src/grants/strategies/daodao-treasury-strategy.test.ts @@ -0,0 +1,242 @@ +import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; +import { DaoDaoTreasuryStrategy } from "./daodao-treasury-strategy"; +import type { AAClient } from "../signers"; +import { treasuryCacheManager } from "../utils/cache"; + +// Mock the cache manager +vi.mock("../utils/cache", () => ({ + treasuryCacheManager: { + get: vi.fn(), + }, +})); + +// Mock fetch +global.fetch = vi.fn(); + +describe("DaoDaoTreasuryStrategy", () => { + let strategy: DaoDaoTreasuryStrategy; + let mockClient: AAClient; + + beforeEach(() => { + strategy = new DaoDaoTreasuryStrategy(); + mockClient = { + getChainId: vi.fn().mockResolvedValue("xion-mainnet-1"), + } as unknown as AAClient; + + vi.clearAllMocks(); + }); + + afterEach(() => { + vi.restoreAllMocks(); + }); + + it("should fetch treasury config from indexer successfully", async () => { + const mockResponse = { + grantConfigs: { + "/cosmos.authz.v1beta1.MsgGrant": { + authorization: { + type_url: "/cosmos.authz.v1beta1.GenericAuthorization", + value: "base64encodedvalue", + }, + description: "Test grant", + }, + }, + params: { + display_url: "https://example.com/", + redirect_url: "https://example.com/redirect", + icon_url: "https://example.com/icon.png", + }, + }; + + // Mock cache miss + vi.mocked(treasuryCacheManager.get).mockImplementation( + async (key, fetcher) => { + const data = await fetcher(); + return { data, fromCache: false }; + }, + ); + + // Mock successful fetch + vi.mocked(global.fetch).mockResolvedValueOnce({ + ok: true, + json: async () => mockResponse, + } as Response); + + const result = await strategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).not.toBeNull(); + expect(result?.grantConfigs).toHaveLength(1); + expect(result?.grantConfigs[0].description).toBe("Test grant"); + expect(result?.params.display_url).toBe("https://example.com/"); + expect(result?.params.redirect_url).toBe("https://example.com/redirect"); + expect(result?.params.icon_url).toBe("https://example.com/icon.png"); + }); + + it("should return cached data on subsequent calls", async () => { + const mockResponse = { + grantConfigs: { + "/cosmos.authz.v1beta1.MsgGrant": { + authorization: { + type_url: "/cosmos.authz.v1beta1.GenericAuthorization", + value: "base64encodedvalue", + }, + description: "Cached grant", + }, + }, + params: { + display_url: "https://cached.com", + redirect_url: "https://cached.com/redirect", + icon_url: "https://cached.com/icon.png", + }, + }; + + // Mock cache hit + vi.mocked(treasuryCacheManager.get).mockResolvedValueOnce({ + data: mockResponse, + fromCache: true, + }); + + const result = await strategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).not.toBeNull(); + expect(result?.grantConfigs[0].description).toBe("Cached grant"); + expect(global.fetch).not.toHaveBeenCalled(); // Should not fetch when cache hit + }); + + it("should handle indexer error responses", async () => { + // Mock cache miss + vi.mocked(treasuryCacheManager.get).mockImplementation( + async (key, fetcher) => { + const data = await fetcher(); + return { data, fromCache: false }; + }, + ); + + // Mock error response + vi.mocked(global.fetch).mockResolvedValueOnce({ + ok: false, + status: 500, + statusText: "Internal Server Error", + } as Response); + + const result = await strategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).toBeNull(); + }); + + it("should handle network errors", async () => { + // Mock cache miss + vi.mocked(treasuryCacheManager.get).mockImplementation( + async (key, fetcher) => { + const data = await fetcher(); + return { data, fromCache: false }; + }, + ); + + // Mock network error + vi.mocked(global.fetch).mockRejectedValueOnce(new Error("Network error")); + + const result = await strategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).toBeNull(); + }); + + it("should handle timeout errors", async () => { + // Mock cache miss + vi.mocked(treasuryCacheManager.get).mockImplementation( + async (key, fetcher) => { + const data = await fetcher(); + return { data, fromCache: false }; + }, + ); + + // Mock abort error (timeout) + const abortError = new Error("The operation was aborted"); + abortError.name = "AbortError"; + vi.mocked(global.fetch).mockRejectedValueOnce(abortError); + + const result = await strategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).toBeNull(); + }); + + it("should validate response structure", async () => { + const invalidResponse = { + // Missing grantConfigs + params: { + display_url: "https://example.com", + }, + }; + + // Mock cache miss + vi.mocked(treasuryCacheManager.get).mockImplementation( + async (key, fetcher) => { + const data = await fetcher(); + return { data, fromCache: false }; + }, + ); + + // Mock invalid response + vi.mocked(global.fetch).mockResolvedValueOnce({ + ok: true, + json: async () => invalidResponse, + } as Response); + + const result = await strategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).toBeNull(); + }); + + it("should handle unsafe URLs in params", async () => { + const mockResponse = { + grantConfigs: {}, + params: { + display_url: "javascript:alert('xss')", + redirect_url: "https://safe.com/", + icon_url: "data:text/html,", + }, + }; + + // Mock cache miss + vi.mocked(treasuryCacheManager.get).mockImplementation( + async (key, fetcher) => { + const data = await fetcher(); + return { data, fromCache: false }; + }, + ); + + // Mock response with unsafe URLs + vi.mocked(global.fetch).mockResolvedValueOnce({ + ok: true, + json: async () => mockResponse, + } as Response); + + const result = await strategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).not.toBeNull(); + expect(result?.params.display_url).toBe(""); // Unsafe URL should be empty + expect(result?.params.redirect_url).toBe("https://safe.com/"); // Safe URL preserved + expect(result?.params.icon_url).toBe(""); // Unsafe URL should be empty + }); +}); diff --git a/packages/account-management/src/grants/strategies/daodao-treasury-strategy.ts b/packages/account-management/src/grants/strategies/daodao-treasury-strategy.ts new file mode 100644 index 00000000..ad842b49 --- /dev/null +++ b/packages/account-management/src/grants/strategies/daodao-treasury-strategy.ts @@ -0,0 +1,198 @@ +import type { AAClient } from "../signers"; +import type { TreasuryConfig, TreasuryStrategy } from "./types"; +import type { + GrantConfigByTypeUrl, + TreasuryParams, +} from "../types/treasury-types"; +import { treasuryCacheManager } from "../utils/cache"; +import { isUrlSafe } from "../utils/url"; + +// DaoDao indexer response formats +interface TreasuryIndexerGrantConfig { + authorization: { + type_url: string; + value: string; // base64 encoded + }; + description: string; + optional?: boolean; + allowance?: { + type_url: string; + value: string; + }; + maxDuration?: number; +} + +interface TreasuryIndexerAllResponse { + grantConfigs: { + [typeUrl: string]: TreasuryIndexerGrantConfig; + }; + params: { + icon_url?: string; + redirect_url?: string; + metadata?: string; + display_url?: string; // might not be in response + }; + feeConfig?: unknown; + admin?: string; + pendingAdmin?: string | null; + balances?: Record; +} + +/** + * DaoDao Treasury Strategy + * Fetches treasury configurations from the DaoDao indexer with caching + */ +export class DaoDaoTreasuryStrategy implements TreasuryStrategy { + private readonly indexerBaseUrl: string; + + constructor(indexerUrl?: string) { + this.indexerBaseUrl = + indexerUrl || + import.meta.env.VITE_DAODAO_TREASURY_INDEXER_URL || + "https://daodaoindexer.burnt.com"; + } + + async fetchTreasuryConfig( + treasuryAddress: string, + client: AAClient, + ): Promise { + try { + const chainId = await client.getChainId(); + + // Create cache key + const cacheKey = `${treasuryAddress}:${chainId}`; + + // Try to fetch grant configs from indexer (with caching) + const cacheResult = await treasuryCacheManager.get(cacheKey, async () => { + // Use the /all endpoint to get everything in one call! + const indexerUrl = `${this.indexerBaseUrl}/${chainId}/contract/${treasuryAddress}/xion/treasury/all`; + + // Add timeout to prevent hanging requests (30 seconds) + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), 30000); + + try { + const response = await fetch(indexerUrl, { + signal: controller.signal, + }); + clearTimeout(timeoutId); + + if (!response.ok) { + throw new Error( + `DaoDao indexer returned ${response.status}: ${response.statusText}`, + ); + } + + const data = await response.json(); + return this.validateAllResponse(data); + } catch (error) { + clearTimeout(timeoutId); + if (error instanceof Error && error.name === "AbortError") { + throw new Error( + "DaoDao indexer request timed out after 30 seconds", + ); + } + throw error; + } + }); + + const allData = cacheResult.data as TreasuryIndexerAllResponse; + + // Transform grant configs from the response + const grantConfigs = this.transformAllResponseGrants( + allData.grantConfigs, + ); + + // Extract and validate params from the response - no separate query needed! + const params: TreasuryParams = { + display_url: isUrlSafe(allData.params.display_url) + ? allData.params.display_url || "" + : "", + redirect_url: isUrlSafe(allData.params.redirect_url) + ? allData.params.redirect_url || "" + : "", + icon_url: isUrlSafe(allData.params.icon_url) + ? allData.params.icon_url || "" + : "", + }; + + return { + grantConfigs, + params, + }; + } catch (error) { + console.debug("DaoDao treasury strategy failed:", error); + return null; + } + } + + /** + * Validates the /all endpoint response structure + */ + private validateAllResponse(data: unknown): TreasuryIndexerAllResponse { + if (!data || typeof data !== "object") { + throw new Error("Invalid indexer response: not an object"); + } + + const response = data as Record; + + // Validate the top-level structure + if (!response.grantConfigs || typeof response.grantConfigs !== "object") { + throw new Error("Invalid indexer response: missing grantConfigs"); + } + + if (!response.params || typeof response.params !== "object") { + throw new Error("Invalid indexer response: missing params"); + } + + // Validate each grant config + const grantConfigs = response.grantConfigs as Record; + for (const [typeUrl, config] of Object.entries(grantConfigs)) { + if (!config || typeof config !== "object") { + throw new Error(`Invalid grant config for ${typeUrl}`); + } + + const grantConfig = config as Record; + + // Check required fields + if ( + !grantConfig.authorization || + typeof grantConfig.authorization !== "object" + ) { + throw new Error(`Missing authorization for ${typeUrl}`); + } + + const auth = grantConfig.authorization as Record; + if (typeof auth.type_url !== "string" || typeof auth.value !== "string") { + throw new Error(`Invalid authorization format for ${typeUrl}`); + } + + if (typeof grantConfig.description !== "string") { + throw new Error(`Missing description for ${typeUrl}`); + } + } + + // We've validated the structure, so we can safely return it + return data as TreasuryIndexerAllResponse; + } + + /** + * Transform grant configs from /all response to our format + */ + private transformAllResponseGrants( + grantConfigs: Record, + ): GrantConfigByTypeUrl[] { + const result: GrantConfigByTypeUrl[] = []; + + for (const config of Object.values(grantConfigs)) { + result.push({ + authorization: config.authorization, + description: config.description, + allowance: config.allowance || { type_url: "", value: "" }, + maxDuration: config.maxDuration, + }); + } + + return result; + } +} diff --git a/packages/account-management/src/grants/strategies/direct-query-treasury-strategy.test.ts b/packages/account-management/src/grants/strategies/direct-query-treasury-strategy.test.ts new file mode 100644 index 00000000..0e005936 --- /dev/null +++ b/packages/account-management/src/grants/strategies/direct-query-treasury-strategy.test.ts @@ -0,0 +1,209 @@ +import { describe, it, expect, vi, beforeEach } from "vitest"; +import { DirectQueryTreasuryStrategy } from "./direct-query-treasury-strategy"; +import type { AAClient } from "../signers"; + +describe("DirectQueryTreasuryStrategy", () => { + let strategy: DirectQueryTreasuryStrategy; + let mockClient: AAClient; + + beforeEach(() => { + strategy = new DirectQueryTreasuryStrategy(); + mockClient = { + queryContractSmart: vi.fn(), + } as unknown as AAClient; + + vi.clearAllMocks(); + }); + + it("should fetch treasury config from contract successfully", async () => { + const mockTypeUrls = [ + "/cosmos.authz.v1beta1.MsgGrant", + "/cosmos.bank.v1beta1.MsgSend", + ]; + + const mockGrantConfigs = [ + { + authorization: { + type_url: "/cosmos.authz.v1beta1.GenericAuthorization", + value: "base64encodedvalue1", + }, + description: "Grant 1", + allowance: { type_url: "", value: "" }, + }, + { + authorization: { + type_url: "/cosmos.bank.v1beta1.SendAuthorization", + value: "base64encodedvalue2", + }, + description: "Grant 2", + allowance: { type_url: "", value: "" }, + }, + ]; + + const mockParams = { + display_url: "https://example.com/", + redirect_url: "https://example.com/redirect", + icon_url: "https://example.com/icon.png", + }; + + // Mock contract queries + vi.mocked(mockClient.queryContractSmart) + .mockResolvedValueOnce(mockTypeUrls) // grant_config_type_urls query + .mockResolvedValueOnce(mockGrantConfigs[0]) // first grant config + .mockResolvedValueOnce(mockGrantConfigs[1]) // second grant config + .mockResolvedValueOnce(mockParams); // params query + + const result = await strategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).not.toBeNull(); + expect(result?.grantConfigs).toHaveLength(2); + expect(result?.grantConfigs[0].description).toBe("Grant 1"); + expect(result?.grantConfigs[1].description).toBe("Grant 2"); + expect(result?.params.display_url).toBe("https://example.com/"); + expect(result?.params.redirect_url).toBe("https://example.com/redirect"); + expect(result?.params.icon_url).toBe("https://example.com/icon.png"); + + // Verify correct queries were made + expect(mockClient.queryContractSmart).toHaveBeenCalledTimes(4); + expect(mockClient.queryContractSmart).toHaveBeenNthCalledWith( + 1, + "xion1abc123", + { grant_config_type_urls: {} }, + ); + }); + + it("should handle empty grant configs", async () => { + const mockParams = { + display_url: "", + redirect_url: "", + icon_url: "", + }; + + // Mock empty type URLs response + vi.mocked(mockClient.queryContractSmart) + .mockResolvedValueOnce([]) // No grant configs + .mockResolvedValueOnce(mockParams); // params query + + const result = await strategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).toBeNull(); + expect(mockClient.queryContractSmart).toHaveBeenCalledTimes(1); + }); + + it("should handle invalid grant config responses", async () => { + const mockTypeUrls = ["/cosmos.authz.v1beta1.MsgGrant"]; + + // Mock invalid grant config (missing description) + vi.mocked(mockClient.queryContractSmart) + .mockResolvedValueOnce(mockTypeUrls) + .mockResolvedValueOnce({ + authorization: { + type_url: "/cosmos.authz.v1beta1.GenericAuthorization", + value: "base64encodedvalue", + }, + // Missing description field + }); + + const result = await strategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).toBeNull(); + }); + + it("should handle contract query errors", async () => { + // Mock query error + vi.mocked(mockClient.queryContractSmart).mockRejectedValueOnce( + new Error("Contract not found"), + ); + + const result = await strategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).toBeNull(); + }); + + it("should handle params query failure gracefully", async () => { + const mockTypeUrls = ["/cosmos.authz.v1beta1.MsgGrant"]; + const mockGrantConfig = { + authorization: { + type_url: "/cosmos.authz.v1beta1.GenericAuthorization", + value: "base64encodedvalue", + }, + description: "Grant 1", + allowance: { type_url: "", value: "" }, + }; + + // Mock successful grant config but failed params query + vi.mocked(mockClient.queryContractSmart) + .mockResolvedValueOnce(mockTypeUrls) + .mockResolvedValueOnce(mockGrantConfig) + .mockRejectedValueOnce(new Error("Params query failed")); + + const result = await strategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).not.toBeNull(); + expect(result?.grantConfigs).toHaveLength(1); + // Should return safe defaults for params + expect(result?.params.display_url).toBe(""); + expect(result?.params.redirect_url).toBe(""); + expect(result?.params.icon_url).toBe(""); + }); + + it("should validate URLs in params", async () => { + const mockTypeUrls = ["/cosmos.authz.v1beta1.MsgGrant"]; + const mockGrantConfig = { + authorization: { + type_url: "/cosmos.authz.v1beta1.GenericAuthorization", + value: "base64encodedvalue", + }, + description: "Grant 1", + allowance: { type_url: "", value: "" }, + }; + + const mockParams = { + display_url: "javascript:alert('xss')", + redirect_url: "https://safe.com/", + icon_url: "data:text/html,", + }; + + vi.mocked(mockClient.queryContractSmart) + .mockResolvedValueOnce(mockTypeUrls) + .mockResolvedValueOnce(mockGrantConfig) + .mockResolvedValueOnce(mockParams); + + const result = await strategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).not.toBeNull(); + expect(result?.params.display_url).toBe(""); // Unsafe URL should be empty + expect(result?.params.redirect_url).toBe("https://safe.com/"); // Safe URL preserved + expect(result?.params.icon_url).toBe(""); // Unsafe URL should be empty + }); + + it("should handle null or undefined responses", async () => { + // Mock null response + vi.mocked(mockClient.queryContractSmart).mockResolvedValueOnce(null); + + const result = await strategy.fetchTreasuryConfig( + "xion1abc123", + mockClient, + ); + + expect(result).toBeNull(); + }); +}); diff --git a/packages/account-management/src/grants/strategies/direct-query-treasury-strategy.ts b/packages/account-management/src/grants/strategies/direct-query-treasury-strategy.ts new file mode 100644 index 00000000..cbe57bea --- /dev/null +++ b/packages/account-management/src/grants/strategies/direct-query-treasury-strategy.ts @@ -0,0 +1,99 @@ +import type { AAClient } from "../signers"; +import type { TreasuryConfig, TreasuryStrategy } from "./types"; +import type { + GrantConfigByTypeUrl, + GrantConfigTypeUrlsResponse, + TreasuryParams, +} from "../types/treasury-types"; +import { isUrlSafe } from "../utils/url"; + +/** + * Direct Query Treasury Strategy + * Fetches treasury configurations directly from the smart contract + * This is the legacy/fallback approach + */ +export class DirectQueryTreasuryStrategy implements TreasuryStrategy { + async fetchTreasuryConfig( + treasuryAddress: string, + client: AAClient, + ): Promise { + try { + // Query all grant config type URLs + const queryTreasuryContractMsg = { + grant_config_type_urls: {}, + }; + + const queryAllTypeUrlsResponse = (await client.queryContractSmart( + treasuryAddress, + queryTreasuryContractMsg, + )) as GrantConfigTypeUrlsResponse; + + if (!queryAllTypeUrlsResponse || queryAllTypeUrlsResponse.length === 0) { + console.debug("No grant configs found in treasury contract"); + return null; + } + + // Query each grant config by type URL + const grantConfigs: GrantConfigByTypeUrl[] = await Promise.all( + queryAllTypeUrlsResponse.map(async (typeUrl) => { + const queryByMsg = { + grant_config_by_type_url: { + msg_type_url: typeUrl, + }, + }; + + const grantConfig: GrantConfigByTypeUrl = + await client.queryContractSmart(treasuryAddress, queryByMsg); + + if (!grantConfig || !grantConfig.description) { + throw new Error(`Invalid grant config for type URL: ${typeUrl}`); + } + + return grantConfig; + }), + ); + + // Query params + const params = await this.fetchTreasuryParams(client, treasuryAddress); + + return { + grantConfigs, + params, + }; + } catch (error) { + console.error("Direct query treasury strategy failed:", error); + return null; + } + } + + /** + * Fetch treasury params directly from contract + */ + private async fetchTreasuryParams( + client: AAClient, + treasuryAddress: string, + ): Promise { + try { + const queryParams = { params: {} }; + const params = (await client.queryContractSmart( + treasuryAddress, + queryParams, + )) as TreasuryParams; + + // Validate URLs for security + return { + display_url: isUrlSafe(params.display_url) ? params.display_url : "", + redirect_url: isUrlSafe(params.redirect_url) ? params.redirect_url : "", + icon_url: isUrlSafe(params.icon_url) ? params.icon_url : "", + }; + } catch (error) { + console.warn("Error querying treasury params:", error); + // Return safe defaults + return { + display_url: "", + redirect_url: "", + icon_url: "", + }; + } + } +} diff --git a/packages/account-management/src/grants/strategies/factory.ts b/packages/account-management/src/grants/strategies/factory.ts new file mode 100644 index 00000000..34f4cbc2 --- /dev/null +++ b/packages/account-management/src/grants/strategies/factory.ts @@ -0,0 +1,58 @@ +/** + * Treasury strategy factory + * Extracted from dashboard hooks/useTreasuryStrategy.ts (pure logic only) + */ + +import { DaoDaoTreasuryStrategy } from "./daodao-treasury-strategy"; +import { DirectQueryTreasuryStrategy } from "./direct-query-treasury-strategy"; +import { CompositeTreasuryStrategy } from "./composite-treasury-strategy"; +import type { TreasuryStrategy } from "./types"; + +/** + * Available treasury strategy options + */ +export enum TreasuryStrategyType { + DAODAO = "daodao", + DIRECT = "direct", + COMPOSITE = "composite", +} + +/** + * Get a treasury strategy instance + * + * @param strategyType - Which strategy to use (defaults to COMPOSITE) + * @param daodaoIndexerUrl - Optional custom DaoDao indexer URL + * @returns TreasuryStrategy instance + */ +export function getTreasuryStrategy( + strategyType: TreasuryStrategyType = TreasuryStrategyType.COMPOSITE, + daodaoIndexerUrl?: string, +): TreasuryStrategy { + switch (strategyType) { + case TreasuryStrategyType.DAODAO: + return new DaoDaoTreasuryStrategy(daodaoIndexerUrl); + + case TreasuryStrategyType.DIRECT: + return new DirectQueryTreasuryStrategy(); + + case TreasuryStrategyType.COMPOSITE: + default: + // Use DaoDao as primary, direct query as fallback + return new CompositeTreasuryStrategy( + new DaoDaoTreasuryStrategy(daodaoIndexerUrl), + new DirectQueryTreasuryStrategy(), + ); + } +} + +/** + * Create a custom composite strategy with specific strategies + * + * @param strategies - Array of strategies to try in order + * @returns CompositeTreasuryStrategy instance + */ +export function createCompositeStrategy( + ...strategies: TreasuryStrategy[] +): CompositeTreasuryStrategy { + return new CompositeTreasuryStrategy(...strategies); +} diff --git a/packages/account-management/src/grants/strategies/index.ts b/packages/account-management/src/grants/strategies/index.ts new file mode 100644 index 00000000..e2aa8621 --- /dev/null +++ b/packages/account-management/src/grants/strategies/index.ts @@ -0,0 +1,9 @@ +/** + * Treasury strategy implementations + */ + +export * from "./types"; +export * from "./daodao-treasury-strategy"; +export * from "./direct-query-treasury-strategy"; +export * from "./composite-treasury-strategy"; +export * from "./factory"; diff --git a/packages/account-management/src/grants/treasury.ts b/packages/account-management/src/grants/treasury.ts new file mode 100644 index 00000000..2ad1729f --- /dev/null +++ b/packages/account-management/src/grants/treasury.ts @@ -0,0 +1,109 @@ +import { MsgGrant } from "cosmjs-types/cosmos/authz/v1beta1/tx"; +import type { + GeneratedAuthzGrantMessage, + GrantConfigByTypeUrl, + GrantConfigTypeUrlsResponse, +} from "../types/treasury-types"; +import type { AAClient } from "../signers"; + +/** + * Utility function to construct authz grant message + * @param {GrantConfigByTypeUrl} grantConfig - The grant config from the treasury contract + * @param {string} granter - The granter address + * @param {string} grantee - The grantee address + * @returns {GeneratedAuthzGrantMessage} - The constructed authz grant message + */ +const constructGrantMessage = ( + grantConfig: GrantConfigByTypeUrl, + granter: string, + grantee: string, +): GeneratedAuthzGrantMessage => { + const authorizationByteArray = new Uint8Array( + Buffer.from(grantConfig.authorization.value, "base64"), + ); + const authorization = { + typeUrl: grantConfig.authorization.type_url, + value: authorizationByteArray, + }; + + const grantValue = MsgGrant.fromPartial({ + grant: { + authorization, + expiration: { + seconds: BigInt( + Math.floor( + new Date(new Date().setMonth(new Date().getMonth() + 3)).getTime() / + 1000, + ), + ), + nanos: 0, + }, + }, + grantee, + granter, + }); + + return { + typeUrl: MsgGrant.typeUrl, + value: grantValue, + }; +}; + +/** + * Queries the DAPP treasury contract to construct authz grant messages + * @param {string} contractAddress - The address for the deployed treasury contract instance + * @param {AAClient} client - Client to query RPC + * @param {string} granter - The granter address + * @param {string} grantee - The grantee address + * @returns {GeneratedAuthzGrantMessage[]} - Array of authz grant messages to pass into tx + */ +export const generateTreasuryGrants = async ( + contractAddress: string, + client: AAClient, + granter: string, + grantee: string, +): Promise => { + if (!contractAddress) { + throw new Error("Missing contract address"); + } + + if (!client) { + throw new Error("Missing client"); + } + + const queryTreasuryContractMsg = { + grant_config_type_urls: {}, + }; + + const queryResponse: GrantConfigTypeUrlsResponse = + await client.queryContractSmart(contractAddress, queryTreasuryContractMsg); + + if (!queryResponse) { + throw new Error( + "Something went wrong querying the treasury contract for grants", + ); + } + + const grantMsgs: GeneratedAuthzGrantMessage[] = await Promise.all( + queryResponse.map(async (grant) => { + const queryByMsg = { + grant_config_by_type_url: { + msg_type_url: grant, + }, + }; + + const queryByResponse: GrantConfigByTypeUrl = + await client.queryContractSmart(contractAddress, queryByMsg); + + if (!queryByResponse || !queryByResponse.description) { + throw new Error( + "Something went wrong querying the treasury contract by type url", + ); + } + + return constructGrantMessage(queryByResponse, granter, grantee); + }), + ); + + return grantMsgs; +}; diff --git a/packages/account-management/src/index.ts b/packages/account-management/src/index.ts new file mode 100644 index 00000000..85a5956a --- /dev/null +++ b/packages/account-management/src/index.ts @@ -0,0 +1,24 @@ +/** + * @burnt-labs/account-management + * + * Smart account management utilities for XION blockchain + * + * This package provides utilities for: + * - Managing authenticators (add, remove, validate) + * - Fee grant validation + * - Authz grant generation + * - Treasury contract interaction + * - Smart account queries + */ + +// Authenticator utilities +export * from "./authenticators"; + +// Grant utilities +export * from "./grants"; + +// Query utilities +export * from "./queries"; + +// Types +export * from "./types"; diff --git a/packages/account-management/src/types/authenticator.ts b/packages/account-management/src/types/authenticator.ts new file mode 100644 index 00000000..22028197 --- /dev/null +++ b/packages/account-management/src/types/authenticator.ts @@ -0,0 +1,19 @@ +export interface Authenticator { + id: string; + type: string; + authenticator: string; + authenticatorIndex: number; +} + +export interface SmartAccount { + id: string; + authenticators: Authenticator[]; +} + +export interface SmartAccountWithCodeId extends SmartAccount { + codeId: number; +} + +export interface SelectedSmartAccount extends SmartAccountWithCodeId { + currentAuthenticatorIndex: number; +} diff --git a/packages/account-management/src/types/grants.ts b/packages/account-management/src/types/grants.ts new file mode 100644 index 00000000..cbc730a0 --- /dev/null +++ b/packages/account-management/src/types/grants.ts @@ -0,0 +1,38 @@ +import type { + AllowedMsgAllowance, + PeriodicAllowance, +} from "cosmjs-types/cosmos/feegrant/v1beta1/feegrant"; + +export interface BaseAllowance { + "@type": string; +} + +// ContractsAllowance Interface +export interface ContractsAllowance extends BaseAllowance { + "@type": "/xion.v1.ContractsAllowance"; + allowance: PeriodicAllowance | BaseAllowance; + contractAddresses: string[]; +} + +// MultiAnyAllowance Interface +export interface MultiAnyAllowance extends BaseAllowance { + "@type": "/xion.v1.MultiAnyAllowance"; + allowances: (ContractsAllowance | AllowedMsgAllowance | BaseAllowance)[]; +} + +// Generic Allowance Type +export type Allowance = + | PeriodicAllowance + | AllowedMsgAllowance + | ContractsAllowance + | MultiAnyAllowance + | BaseAllowance; + +// Top-Level Allowance Response Interface +export interface AllowanceResponse { + allowance: { + granter: string; + grantee: string; + allowance: Allowance; + }; +} diff --git a/packages/account-management/src/types/index.ts b/packages/account-management/src/types/index.ts new file mode 100644 index 00000000..3ce71933 --- /dev/null +++ b/packages/account-management/src/types/index.ts @@ -0,0 +1,12 @@ +/** + * Type definitions for account management + * + * Extract from dashboard: + * - src/types/allowance-types.ts + * - src/types/treasury-types.ts + * - src/indexer-strategies/types.ts + */ + +export * from "./authenticator"; +export * from "./grants"; +export * from "./indexer"; diff --git a/packages/account-management/src/types/indexer.ts b/packages/account-management/src/types/indexer.ts new file mode 100644 index 00000000..1e8f7a85 --- /dev/null +++ b/packages/account-management/src/types/indexer.ts @@ -0,0 +1,5 @@ +export interface IndexerStrategy { + fetchSmartAccounts( + loginAuthenticator: string, + ): Promise; +} diff --git a/packages/account-management/src/types/treasury.ts b/packages/account-management/src/types/treasury.ts new file mode 100644 index 00000000..cff79034 --- /dev/null +++ b/packages/account-management/src/types/treasury.ts @@ -0,0 +1,66 @@ +import type { + GrantConfigByTypeUrl, + TreasuryParams, +} from "../types/treasury-types"; +import type { AAClient } from "../signers"; + +/** + * Represents the complete treasury configuration including grant configs and parameters + */ +export interface TreasuryConfig { + grantConfigs: GrantConfigByTypeUrl[]; + params: TreasuryParams; +} + +/** + * Strategy interface for fetching treasury configurations + * Different strategies can fetch from different sources (indexer, direct query, etc.) + */ +export interface TreasuryStrategy { + /** + * Fetch treasury configuration for a given contract address + * @param treasuryAddress The treasury contract address + * @param client The Cosmos client for querying chain data + * @returns Treasury configuration or null if not found/failed + */ + fetchTreasuryConfig( + treasuryAddress: string, + client: AAClient, + ): Promise; +} + +export type GrantConfigTypeUrlsResponse = string[]; + +export interface TreasuryParams { + display_url: string; + redirect_url: string; + icon_url: string; +} + +export interface GrantConfigByTypeUrl { + allowance: Any; + authorization: Any; + description: string; + maxDuration?: number; +} + +export interface PermissionDescription { + authorizationDescription: string; + dappDescription?: string; + contracts?: string[]; +} + +export interface FormattedDescriptions { + parsedDescription: string; + dappDescription: string; +} + +export interface GeneratedAuthzGrantMessage { + typeUrl: string; + value: MsgGrant; +} + +export interface Any { + type_url: string; + value: string; +} diff --git a/packages/account-management/tsconfig.json b/packages/account-management/tsconfig.json new file mode 100644 index 00000000..f48be7fc --- /dev/null +++ b/packages/account-management/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "@burnt-labs/tsconfig/base.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + } + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "**/*.test.ts"] +} diff --git a/packages/account-management/tsup.config.ts b/packages/account-management/tsup.config.ts new file mode 100644 index 00000000..4dff9109 --- /dev/null +++ b/packages/account-management/tsup.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + format: ["cjs", "esm"], + dts: true, + splitting: false, + sourcemap: true, + clean: true, + treeshake: true, +}); diff --git a/packages/signers/README.md b/packages/signers/README.md index 2f6ad532..b7966c45 100644 --- a/packages/signers/README.md +++ b/packages/signers/README.md @@ -1,28 +1,16 @@ -# @burnt-labs/signers [DEPRECATED] +# @burnt-labs/signers -> ⚠️ **DEPRECATED**: This package is deprecated and will no longer receive updates or maintenance. +Smart account signing implementations and authenticator interfaces for XION blockchain. -## Deprecation Notice +> ⚠️ **INTERNAL ONLY**: This package provides utillities for the creation of the abstraxionSigningClient. If you want to use Smart accounts through Xion in your application then please use Abstraxion and the useAbstraxionSigningClient directly. -The `@burnt-labs/signers` package has been deprecated and is no longer under active development. Users of this package should prepare to migrate to alternative solutions. +## Overview -## Migration +This package provides signing implementations for XION smart accounts, supporting multiple authenticator types: -If you are currently using this package, please contact the Burnt Labs team for guidance on the recommended migration path and alternative solutions. +- **JWT Signer** - Email/social authentication via JWT tokens +- **Ethereum Signer** - MetaMask and other Ethereum wallets +- **Direct Signer** - Cosmos wallets (Keplr, Leap, OKX) +- **Passkey Signer** - WebAuthn/FIDO2 passkeys -## Exported Components - -This package previously exported the following components: - -- `AAClient` -- `AADirectSigner` -- `AbstractAccountJWTSigner` -- `AAEthSigner` -- `AASigner` -- `AADefaultSigner` -- `AAAlgo` -- `customAccountFromAny` - -## Support - -For any questions or assistance with migration, please reach out to the Burnt Labs team. +it also has references to needed Crypto operations for the creation of Smart accounts. diff --git a/packages/signers/package.json b/packages/signers/package.json index 478c75f7..c790aafc 100644 --- a/packages/signers/package.json +++ b/packages/signers/package.json @@ -1,44 +1,46 @@ { "name": "@burnt-labs/signers", - "version": "0.1.0-alpha.14", + "version": "1.0.0-alpha.1", + "description": "Smart account signing implementations and authenticator interfaces for XION", "main": "./dist/index.js", "module": "./dist/index.mjs", "types": "./dist/index.d.ts", "license": "MIT", - "deprecated": "This package is deprecated and will no longer receive updates. Please contact the Burnt Labs team for alternative solutions.", "scripts": { "build": "tsup", "lint": "eslint src/", "dev": "tsup --watch", "check-types": "tsc --noEmit", - "clean": "rimraf ./dist" + "clean": "rimraf ./dist", + "test": "vitest" }, "dependencies": { - "@apollo/client": "^3.8.8", - "@cosmjs/amino": "^0.32.4", - "@cosmjs/cosmwasm-stargate": "^0.32.4", - "@cosmjs/crypto": "^0.32.4", - "@cosmjs/encoding": "^0.32.4", - "@cosmjs/math": "^0.32.4", - "@cosmjs/proto-signing": "^0.32.4", - "@cosmjs/stargate": "^0.32.4", - "@cosmjs/tendermint-rpc": "^0.32.4", - "@cosmjs/utils": "^0.32.4", - "@protobuf-ts/runtime": "^2.9.3", + "@burnt-labs/constants": "workspace:*", + "@cosmjs/amino": "^0.36.0", + "@cosmjs/cosmwasm-stargate": "^0.36.0", + "@cosmjs/crypto": "^0.36.0", + "@cosmjs/encoding": "^0.36.0", + "@cosmjs/math": "^0.36.0", + "@cosmjs/proto-signing": "^0.36.0", + "@cosmjs/stargate": "^0.36.0", + "@cosmjs/tendermint-rpc": "^0.36.0", + "@cosmjs/utils": "^0.36.0", + "@protobuf-ts/runtime": "^2.9.4", "bech32": "^2.0.0", + "buffer": "^6.0.3", "cosmjs-types": "^0.9.0", - "stytch": "^9.0.6" + "long": "^5.2.3", + "protobufjs": "^7.2.4" }, "devDependencies": { - "@burnt-labs/constants": "workspace:*", "@burnt-labs/eslint-config-custom": "workspace:*", + "@burnt-labs/tsconfig": "workspace:*", "@types/node": "^20", "eslint": "^8.48.0", - "long": "^5.2.3", "prettier": "^3.0.3", - "protobufjs": "^7.2.5", "rimraf": "^5.0.5", "tsup": "^6.0.1", - "typescript": "^5.2.2" + "typescript": "^5.2.2", + "vitest": "^1.0.0" } } diff --git a/packages/signers/src/crypto/address.ts b/packages/signers/src/crypto/address.ts new file mode 100644 index 00000000..8290ce1f --- /dev/null +++ b/packages/signers/src/crypto/address.ts @@ -0,0 +1,36 @@ +/** + * Smart account address prediction + * Extracted from AA API prepare.ts + */ + +import { instantiate2Address } from "@cosmjs/cosmwasm-stargate"; +import { Buffer } from "buffer"; + +/** + * Predict the smart account address using instantiate2 + * + * This uses the same deterministic address calculation as the smart contract + * + * @param config - Configuration for address calculation + * @param config.checksum - Contract checksum as hex string + * @param config.creator - Creator address (fee granter) + * @param config.salt - Salt as hex string + * @param config.prefix - Address prefix (e.g., "xion") + * @returns Predicted bech32 address + */ +export function predictSmartAccountAddress(config: { + checksum: string; + creator: string; + salt: string; + prefix: string; +}): string { + const checksumBytes = Uint8Array.from(Buffer.from(config.checksum, "hex")); + const saltBytes = Uint8Array.from(Buffer.from(config.salt, "hex")); + + return instantiate2Address( + checksumBytes, + config.creator, + saltBytes, + config.prefix, + ); +} diff --git a/packages/signers/src/crypto/index.ts b/packages/signers/src/crypto/index.ts new file mode 100644 index 00000000..667045b2 --- /dev/null +++ b/packages/signers/src/crypto/index.ts @@ -0,0 +1,8 @@ +/** + * Pure cryptographic utilities for wallet account creation + * Extracted from AA API - can be used without calling the API + */ + +export * from "./salt"; +export * from "./address"; +export * from "./prepare"; diff --git a/packages/signers/src/crypto/messages.ts b/packages/signers/src/crypto/messages.ts new file mode 100644 index 00000000..60cdb13a --- /dev/null +++ b/packages/signers/src/crypto/messages.ts @@ -0,0 +1,315 @@ +/** + * Smart account transaction message builders + * Extracted from AA API xion/accounts.ts + * + * These functions build the CosmWasm messages needed to: + * 1. Register a new smart account (MsgRegisterAccount) + * 2. Create fee grants for the account + * 3. Create authz grants for the account + * + * Use these for direct on-chain account creation without the AA API. + */ + +import { EncodeObject } from "@cosmjs/proto-signing"; +import { Buffer } from "buffer"; +import Long from "long"; +import { MsgExec } from "cosmjs-types/cosmos/authz/v1beta1/tx"; +import { MsgGrant } from "cosmjs-types/cosmos/authz/v1beta1/tx"; +import { MsgGrantAllowance } from "cosmjs-types/cosmos/feegrant/v1beta1/tx"; +import { + AllowedMsgAllowance, + PeriodicAllowance, +} from "cosmjs-types/cosmos/feegrant/v1beta1/feegrant"; +import { + MsgExecuteContract, + MsgMigrateContract, +} from "cosmjs-types/cosmwasm/wasm/v1/tx"; +import { MsgRegisterAccount } from "../types/generated/abstractaccount/v1/tx"; +import { + ContractsAllowance, + MultiAnyAllowance, +} from "../types/generated/abstractaccount/v1/feegrant"; + +const typeUrlMsgRegisterAccount = "/abstractaccount.v1.MsgRegisterAccount"; + +/** + * Configuration for building smart account messages + */ +export interface MessageConfig { + /** Contract code ID */ + codeId: number; + /** Fee granter address (creator/funder) */ + feeGranter: string; + /** Predicted smart account address */ + smartAccountAddress: string; + /** Salt as Uint8Array */ + salt: Uint8Array; +} + +/** + * Authenticator data for EthWallet + */ +export interface EthWalletAuthenticator { + /** Ethereum address (0x..., lowercase) */ + address: string; + /** Signature from personal_sign (base64) */ + signature: string; +} + +/** + * Authenticator data for Secp256k1 + */ +export interface Secp256k1Authenticator { + /** Public key (base64, 33 or 65 bytes) */ + pubkey: string; + /** Signature from signArbitrary (base64, 64 bytes) */ + signature: string; +} + +/** + * Build the contract init message for EthWallet authenticator + * + * @param auth - EthWallet authenticator data + * @returns Contract init message + */ +export function buildEthWalletInitMsg(auth: EthWalletAuthenticator): any { + // Normalize address to lowercase with 0x prefix + let normalizedAddress = auth.address.toLowerCase(); + if (!normalizedAddress.startsWith("0x")) { + normalizedAddress = "0x" + normalizedAddress; + } + + // Validate address format (must be 42 chars: "0x" + 40 hex chars) + if (normalizedAddress.length !== 42) { + throw new Error( + `EthWallet address must be 42 characters (0x + 40 hex), got ${normalizedAddress.length}`, + ); + } + + return { + id: 0, + authenticator: { + EthWallet: { + id: 0, + address: normalizedAddress, + signature: auth.signature, + }, + }, + }; +} + +/** + * Build the contract init message for Secp256k1 authenticator + * + * @param auth - Secp256k1 authenticator data + * @returns Contract init message + */ +export function buildSecp256k1InitMsg(auth: Secp256k1Authenticator): any { + return { + id: 0, + authenticator: { + Secp256K1: { + id: 0, + pubkey: auth.pubkey, + signature: auth.signature, + }, + }, + }; +} + +/** + * Build MsgRegisterAccount for creating a smart account + * + * This is wrapped in MsgExec so it can be executed by a worker account + * on behalf of the fee granter. + * + * @param config - Message configuration + * @param initMsg - Contract init message (from buildEthWalletInitMsg or buildSecp256k1InitMsg) + * @param workerAddress - Address that will execute the transaction + * @returns EncodeObject ready for signAndBroadcast + */ +export function buildMsgRegisterAccount( + config: MessageConfig, + initMsg: any, + workerAddress: string, +): EncodeObject { + return { + typeUrl: MsgExec.typeUrl, + value: MsgExec.fromPartial({ + grantee: workerAddress, + msgs: [ + { + typeUrl: typeUrlMsgRegisterAccount, + value: MsgRegisterAccount.encode( + MsgRegisterAccount.fromPartial({ + sender: config.feeGranter, + codeId: Long.fromNumber(config.codeId), + msg: Buffer.from(JSON.stringify(initMsg)), + funds: [], + salt: config.salt, + }), + ).finish(), + }, + ], + }), + }; +} + +/** + * Build fee grant message for the smart account + * + * This creates a MultiAnyAllowance with: + * - ContractsAllowance for the smart account + * - AllowedMsgAllowance for specific message types + * + * @param config - Message configuration + * @param workerAddress - Address that will execute the transaction + * @returns EncodeObject ready for signAndBroadcast + */ +export function buildFeeGrantMessage( + config: MessageConfig, + workerAddress: string, +): EncodeObject { + const oneDayInSeconds = BigInt(24 * 60 * 60); + const periodSpendLimit = [{ denom: "uxion", amount: "100000" }]; + + return { + typeUrl: MsgExec.typeUrl, + value: MsgExec.fromPartial({ + grantee: workerAddress, + msgs: [ + { + typeUrl: MsgGrantAllowance.typeUrl, + value: MsgGrantAllowance.encode( + MsgGrantAllowance.fromPartial({ + granter: config.feeGranter, + grantee: config.smartAccountAddress, + allowance: { + typeUrl: "/xion.v1.MultiAnyAllowance", + value: MultiAnyAllowance.encode( + MultiAnyAllowance.fromPartial({ + allowances: [ + { + typeUrl: "/xion.v1.ContractsAllowance", + value: ContractsAllowance.encode( + ContractsAllowance.fromPartial({ + contractAddresses: [config.smartAccountAddress], + allowance: { + typeUrl: PeriodicAllowance.typeUrl, + value: PeriodicAllowance.encode( + PeriodicAllowance.fromPartial({ + period: { seconds: oneDayInSeconds }, + periodSpendLimit, + }), + ).finish(), + }, + }), + ).finish(), + }, + { + typeUrl: AllowedMsgAllowance.typeUrl, + value: AllowedMsgAllowance.encode( + AllowedMsgAllowance.fromPartial({ + allowance: { + typeUrl: PeriodicAllowance.typeUrl, + value: PeriodicAllowance.encode( + PeriodicAllowance.fromPartial({ + period: { seconds: oneDayInSeconds }, + periodSpendLimit, + }), + ).finish(), + }, + // MsgExecuteContract.typeUrl is needed to support paying for the Treasury contract msg execute call. Will eventually be a proxy. + // MsgGrantAllowance.typeUrl is needed to support meta accounts fee granting for the staking dashboard (Since it will happen in the same tx as the authz grants) + allowedMessages: [ + MsgGrant.typeUrl, + MsgGrantAllowance.typeUrl, + MsgExecuteContract.typeUrl, + MsgMigrateContract.typeUrl, + ], + }), + ).finish(), + }, + ], + }), + ).finish(), + }, + }), + ).finish(), + }, + ], + }), + }; +} + +/** + * Helper to convert hex signature to base64 + * + * @param signatureHex - Signature as hex string (with or without 0x) + * @returns Signature as base64 string + */ +export function hexSignatureToBase64(signatureHex: string): string { + const hex = signatureHex.replace(/^0x/, ""); + return Buffer.from(hex, "hex").toString("base64"); +} + +/** + * Helper to convert hex pubkey to base64 + * + * @param pubkeyHex - Public key as hex string (with or without 0x) + * @returns Public key as base64 string + */ +export function hexPubkeyToBase64(pubkeyHex: string): string { + const hex = pubkeyHex.replace(/^0x/, ""); + return Buffer.from(hex, "hex").toString("base64"); +} + +/** + * Complete workflow: Build all messages needed to create a smart account with EthWallet + * + * @param config - Message configuration + * @param auth - EthWallet authenticator (address + signature in hex) + * @param workerAddress - Address that will execute the transaction + * @returns Array of EncodeObjects ready for signAndBroadcast + */ +export function buildEthWalletAccountMessages( + config: MessageConfig, + auth: { address: string; signatureHex: string }, + workerAddress: string, +): EncodeObject[] { + const authenticator: EthWalletAuthenticator = { + address: auth.address, + signature: hexSignatureToBase64(auth.signatureHex), + }; + + const initMsg = buildEthWalletInitMsg(authenticator); + const registerMsg = buildMsgRegisterAccount(config, initMsg, workerAddress); + const feeGrantMsg = buildFeeGrantMessage(config, workerAddress); + + return [registerMsg, feeGrantMsg]; +} + +/** + * Complete workflow: Build all messages needed to create a smart account with Secp256k1 + * + * @param config - Message configuration + * @param auth - Secp256k1 authenticator (pubkey + signature in hex) + * @param workerAddress - Address that will execute the transaction + * @returns Array of EncodeObjects ready for signAndBroadcast + */ +export function buildSecp256k1AccountMessages( + config: MessageConfig, + auth: { pubkeyHex: string; signatureHex: string }, + workerAddress: string, +): EncodeObject[] { + const authenticator: Secp256k1Authenticator = { + pubkey: hexPubkeyToBase64(auth.pubkeyHex), + signature: hexSignatureToBase64(auth.signatureHex), + }; + + const initMsg = buildSecp256k1InitMsg(authenticator); + const registerMsg = buildMsgRegisterAccount(config, initMsg, workerAddress); + const feeGrantMsg = buildFeeGrantMessage(config, workerAddress); + + return [registerMsg, feeGrantMsg]; +} diff --git a/packages/signers/src/crypto/prepare.ts b/packages/signers/src/crypto/prepare.ts new file mode 100644 index 00000000..1a3bbe69 --- /dev/null +++ b/packages/signers/src/crypto/prepare.ts @@ -0,0 +1,142 @@ +/** + * Signature preparation utilities + * Extracted from AA API prepare.ts + * + * These functions replicate the AA API /prepare endpoint logic + * for use in environments where calling the API is not desired + */ + +import { calculateSalt } from "./salt"; +import { predictSmartAccountAddress } from "./address"; + +export interface PrepareConfig { + /** Contract checksum as hex string */ + checksum: string; + /** Fee granter address (creator) */ + feeGranter: string; + /** Address prefix (e.g., "xion") */ + addressPrefix: string; +} + +export interface PrepareResult { + /** The message that should be signed by the user */ + messageToSign: string; + /** The predicted smart account address */ + predictedAddress: string; + /** The salt used for address calculation (hex) */ + salt: string; + /** Metadata for the create request */ + metadata: { + action: string; + wallet_type: string; + address?: string; + pubkey?: string; + timestamp: number; + }; +} + +/** + * Prepare signature message for EthWallet authenticator + * + * This replicates the AA API /prepare endpoint logic locally + * + * @param address - Ethereum address (with or without 0x prefix) + * @param config - Configuration for preparation + * @returns Preparation result with message to sign + */ +export function prepareEthWalletSignature( + address: string, + config: PrepareConfig, +): PrepareResult { + // Calculate salt + const salt = calculateSalt("EthWallet", address); + + // Predict account address + const predictedAddress = predictSmartAccountAddress({ + checksum: config.checksum, + creator: config.feeGranter, + salt, + prefix: config.addressPrefix, + }); + + // The message to sign is the predicted smart account address + const messageToSign = predictedAddress; + + // Build metadata + const metadata = { + action: "create_abstraxion_account", + wallet_type: "EthWallet", + address, + timestamp: Date.now(), + }; + + return { + messageToSign, + predictedAddress, + salt, + metadata, + }; +} + +/** + * Prepare signature message for Secp256k1 authenticator + * + * This replicates the AA API /prepare endpoint logic locally + * + * @param pubkey - Secp256k1 public key as hex string + * @param config - Configuration for preparation + * @returns Preparation result with message to sign + */ +export function prepareSecp256k1Signature( + pubkey: string, + config: PrepareConfig, +): PrepareResult { + // Calculate salt + const salt = calculateSalt("Secp256K1", pubkey); + + // Predict account address + const predictedAddress = predictSmartAccountAddress({ + checksum: config.checksum, + creator: config.feeGranter, + salt, + prefix: config.addressPrefix, + }); + + // The message to sign is the predicted smart account address + const messageToSign = predictedAddress; + + // Build metadata + const metadata = { + action: "create_abstraxion_account", + wallet_type: "Secp256K1", + pubkey, + timestamp: Date.now(), + }; + + return { + messageToSign, + predictedAddress, + salt, + metadata, + }; +} + +/** + * Prepare signature message based on wallet type + * + * @param walletType - Type of wallet authenticator + * @param credential - Address (for EthWallet) or pubkey (for Secp256K1) + * @param config - Configuration for preparation + * @returns Preparation result with message to sign + */ +export function prepareSignatureMessage( + walletType: "EthWallet" | "Secp256K1", + credential: string, + config: PrepareConfig, +): PrepareResult { + if (walletType === "EthWallet") { + return prepareEthWalletSignature(credential, config); + } else { + return prepareSecp256k1Signature(credential, config); + } +} diff --git a/packages/signers/src/crypto/salt.ts b/packages/signers/src/crypto/salt.ts new file mode 100644 index 00000000..937a03c5 --- /dev/null +++ b/packages/signers/src/crypto/salt.ts @@ -0,0 +1,53 @@ +/** + * Salt calculation utilities + * Extracted from AA API prepare.ts + */ + +import { sha256 } from "@cosmjs/crypto"; +import { Buffer } from "buffer"; + +/** + * Calculate salt for EthWallet authenticator + * + * Salt is sha256(address_bytes) where address is the hex Ethereum address + * + * @param address - Ethereum address (with or without 0x prefix) + * @returns Salt as hex string + */ +export function calculateEthWalletSalt(address: string): string { + const addressHex = address.replace(/^0x/, ""); + const addressBinary = Buffer.from(addressHex, "hex"); + const saltBytes = sha256(addressBinary); + return Buffer.from(saltBytes).toString("hex"); +} + +/** + * Calculate salt for Secp256k1 authenticator + * + * Salt is sha256(pubkey_string) where pubkey is the hex public key + * + * @param pubkey - Secp256k1 public key as hex string + * @returns Salt as hex string + */ +export function calculateSecp256k1Salt(pubkey: string): string { + const saltBytes = sha256(Buffer.from(pubkey)); + return Buffer.from(saltBytes).toString("hex"); +} + +/** + * Calculate salt based on wallet type + * + * @param walletType - Type of wallet authenticator + * @param credential - Address (for EthWallet) or pubkey (for Secp256K1) + * @returns Salt as hex string + */ +export function calculateSalt( + walletType: "EthWallet" | "Secp256K1", + credential: string, +): string { + if (walletType === "EthWallet") { + return calculateEthWalletSalt(credential); + } else { + return calculateSecp256k1Salt(credential); + } +} diff --git a/packages/signers/src/index.ts b/packages/signers/src/index.ts index e4c10244..3d583f95 100644 --- a/packages/signers/src/index.ts +++ b/packages/signers/src/index.ts @@ -1,16 +1,8 @@ -/** - * @deprecated This package is deprecated and will no longer be maintained. - * Please contact the Burnt Labs team for alternative solutions and migration guidance. - */ - -console.warn( - "Warning: @burnt-labs/signers package is deprecated and will no longer be maintained. Please contact the Burnt Labs team for alternative solutions and migration guidance.", -); - export { GasPrice } from "@cosmjs/stargate"; export { AAClient } from "./signers/utils/client"; export { AADirectSigner } from "./signers/direct-signer"; export { AbstractAccountJWTSigner } from "./signers/jwt-signer"; +export { AAPasskeySigner } from "./signers/passkey-signer"; export { AAEthSigner } from "./signers/eth-signer"; export { AASigner, @@ -19,3 +11,6 @@ export { type AAccountData, } from "./interfaces"; export { customAccountFromAny } from "./signers/utils"; + +// Crypto utilities for smart account creation +export * from "./crypto"; diff --git a/packages/signers/src/interfaces/AASigner.ts b/packages/signers/src/interfaces/AASigner.ts index b6913be6..5f557fcc 100644 --- a/packages/signers/src/interfaces/AASigner.ts +++ b/packages/signers/src/interfaces/AASigner.ts @@ -3,8 +3,6 @@ import { SignDoc } from "cosmjs-types/cosmos/tx/v1beta1/tx"; import { AAAlgo } from "./smartAccount"; /** - * @deprecated This interface is deprecated and will no longer be maintained. - * Please contact the Burnt Labs team for alternative solutions. * @extends AccountData */ export interface AAccountData extends AccountData { @@ -15,11 +13,6 @@ export interface AAccountData extends AccountData { // The AA algorithm type readonly aaalgo?: AAAlgo; } - -/** - * @deprecated This class is deprecated and will no longer be maintained. - * Please contact the Burnt Labs team for alternative solutions. - */ export abstract class AASigner { /// The abstract account address of the signer /// must be set by implementing class @@ -66,10 +59,7 @@ export abstract class AASigner { abstract getAccounts(): Promise; } -/** - * @deprecated This class is deprecated and will no longer be maintained. - * Please contact the Burnt Labs team for alternative solutions. - */ +// Default implementation for a signer class export class AADefaultSigner extends AASigner { constructor(abstractAccount: string) { super(abstractAccount); diff --git a/packages/signers/src/interfaces/fragments.ts b/packages/signers/src/interfaces/fragments.ts deleted file mode 100644 index 2a39a2f8..00000000 --- a/packages/signers/src/interfaces/fragments.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { gql } from "@apollo/client"; - -export const SMART_ACCOUNT_FRAGMENT = gql` - fragment SmartAccountFragment on SmartAccountAuthenticator { - id - type - authenticator - authenticatorIndex - version - } -`; diff --git a/packages/signers/src/interfaces/queries.ts b/packages/signers/src/interfaces/queries.ts deleted file mode 100644 index de9fb20d..00000000 --- a/packages/signers/src/interfaces/queries.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { gql } from "@apollo/client"; -import { SMART_ACCOUNT_FRAGMENT } from "./fragments"; - -export const AllSmartWalletQuery = gql` - ${SMART_ACCOUNT_FRAGMENT} - query ($authenticator: String!) { - smartAccounts( - filter: { - authenticators: { some: { authenticator: { equalTo: $authenticator } } } - } - ) { - nodes { - authenticators { - nodes { - ...SmartAccountFragment - } - } - } - } - } -`; - -export const SingleSmartWalletQuery = gql` - ${SMART_ACCOUNT_FRAGMENT} - query ($id: String!) { - smartAccount(id: $id) { - id - latestAuthenticatorId - authenticators { - nodes { - ...SmartAccountFragment - } - } - } - } -`; - -export const AllSmartWalletQueryByAccountId = gql` - ${SMART_ACCOUNT_FRAGMENT} - query ($id: String!) { - smartAccounts(filter: { id: { equalTo: $id } }) { - nodes { - authenticators { - nodes { - ...SmartAccountFragment - } - } - } - } - } -`; - -export const SmartWalletIndexQueryByAccountId = gql` - ${SMART_ACCOUNT_FRAGMENT} - query ($id: String!, $index: Int!) { - smartAccounts(filter: { id: { equalTo: $id } }) { - nodes { - authenticators(filter: { authenticatorIndex: { equalTo: $index } }) { - nodes { - ...SmartAccountFragment - } - } - } - } - } -`; - -export const AllSmartWalletQueryByIdAndAuthenticator = gql` - ${SMART_ACCOUNT_FRAGMENT} - query ($id: String!, $authenticator: String!) { - smartAccounts( - filter: { - id: { equalTo: $id } - authenticators: { some: { authenticator: { equalTo: $authenticator } } } - } - ) { - nodes { - authenticators { - nodes { - ...SmartAccountFragment - } - } - } - } - } -`; - -export const AllSmartWalletQueryByIdAndType = gql` - ${SMART_ACCOUNT_FRAGMENT} - query ($id: String!, $type: String!) { - smartAccounts( - filter: { - id: { equalTo: $id } - authenticators: { some: { type: { equalTo: $type } } } - } - ) { - nodes { - authenticators { - nodes { - ...SmartAccountFragment - } - } - } - } - } -`; - -export const AllSmartWalletQueryByIdAndTypeAndAuthenticator = gql` - ${SMART_ACCOUNT_FRAGMENT} - query ($id: String!, $type: String!, $authenticator: String!) { - smartAccounts( - filter: { - id: { equalTo: $id } - authenticators: { - some: { - authenticator: { equalTo: $authenticator } - type: { equalTo: $type } - } - } - } - ) { - nodes { - authenticators { - nodes { - ...SmartAccountFragment - } - } - } - } - } -`; diff --git a/packages/signers/src/signers/direct-signer.ts b/packages/signers/src/signers/direct-signer.ts index 98d80a55..df79f9c2 100644 --- a/packages/signers/src/signers/direct-signer.ts +++ b/packages/signers/src/signers/direct-signer.ts @@ -1,17 +1,12 @@ import { DirectSignResponse, - OfflineDirectSigner, makeSignBytes, + OfflineDirectSigner, } from "@cosmjs/proto-signing"; import { SignDoc } from "cosmjs-types/cosmos/tx/v1beta1/tx"; -import { AAccountData, AASigner } from "../interfaces/AASigner"; -import { getAAccounts } from "./utils"; +import { AAAlgo, AAccountData, AASigner } from "../interfaces"; import { StdSignature } from "@cosmjs/amino"; -/** - * @deprecated This type is deprecated and will no longer be maintained. - * Please contact the Burnt Labs team for alternative solutions. - */ export type SignArbitraryFn = ( chainId: string, signer: string, @@ -19,9 +14,6 @@ export type SignArbitraryFn = ( ) => Promise; /** - * @deprecated This class is deprecated and will no longer be maintained. - * Please contact the Burnt Labs team for alternative solutions. - * * This class is an implementation of the AASigner interface using the DirectSecp256k1HdWallet * or any other signer that implements the AASigner interface * This class use would generally be with a wallet since it's method of signing is the same as the @@ -34,24 +26,13 @@ export type SignArbitraryFn = ( * @implements AASigner */ export class AADirectSigner extends AASigner { - signer: OfflineDirectSigner; - accountAuthenticatorIndex: number; - indexerUrl: string; - signArbFn: SignArbitraryFn; - constructor( - initializedSigner: OfflineDirectSigner, + public signer: Pick, abstractAccount: string, - accountAuthenticatorIndex: number, - signArbFn: SignArbitraryFn, - indexerUrl?: string, + public accountAuthenticatorIndex: number, + public signArbFn: SignArbitraryFn, ) { super(abstractAccount); - this.signer = initializedSigner; - this.accountAuthenticatorIndex = accountAuthenticatorIndex; - this.signArbFn = signArbFn; - this.indexerUrl = - indexerUrl || "https://api.subquery.network/sq/burnt-labs/xion-indexer"; } async signDirect( @@ -77,20 +58,27 @@ export class AADirectSigner extends AASigner { } async getAccounts(): Promise { + if (this.abstractAccount === undefined) { + return []; + } + const accounts = await this.signer.getAccounts(); if (accounts.length === 0) { return []; + } else if (accounts.length > 1) { + // @TODO How to handle this case? + console.log("Signer returned more than 1 account"); } - if (this.abstractAccount === undefined) { - // we treat this class a a normal signer not an AA signer - return accounts.map((account) => { - return { - ...account, - authenticatorId: 0, - accountAddress: account.address, - }; - }); - } - return await getAAccounts(accounts, this.abstractAccount, this.indexerUrl); + + return [ + { + address: this.abstractAccount, + algo: "secp256k1", // we don't really care about this + pubkey: new Uint8Array(), + authenticatorId: this.accountAuthenticatorIndex, + accountAddress: accounts[0].address, + aaalgo: AAAlgo.Secp256K1, + }, + ]; } } diff --git a/packages/signers/src/signers/eth-signer.ts b/packages/signers/src/signers/eth-signer.ts index 9f51f3ab..09e96cc7 100644 --- a/packages/signers/src/signers/eth-signer.ts +++ b/packages/signers/src/signers/eth-signer.ts @@ -1,13 +1,24 @@ import { DirectSignResponse, makeSignBytes } from "@cosmjs/proto-signing"; import { SignDoc } from "cosmjs-types/cosmos/tx/v1beta1/tx"; import { AAccountData, AASigner } from "../interfaces/AASigner"; -import { encodeHex, getAuthenticatorIdByAuthenticatorIndex } from "./utils"; +import { encodeHex } from "./utils"; import { AAAlgo } from "../interfaces"; /** - * @deprecated This class is deprecated and will no longer be maintained. - * Please contact the Burnt Labs team for alternative solutions. - * + * Interface for a personalSign function. + * This function signs a message using an Ethereum account's private key and returns a signature. + */ +export interface PersonalSignFn { + /** + * Signs a given message with the provided address. + * + * @param message - The message to be signed as a hex string. + * @returns A promise that resolves to the signature as a hex string. + */ + (message: string): Promise; +} + +/** * This class is an implementation of the AASigner interface using the DirectSecp256k1HdWallet * or any other signer that implements the AASigner interface * This class use would generally be with a wallet since it's method of signing is the same as the @@ -20,22 +31,14 @@ import { AAAlgo } from "../interfaces"; * @personalSign callback to the Ethereum signing function * @implements AASigner */ -export class AAEthSigner extends AASigner { - accountAuthenticatorIndex: number; - indexerUrl: string; - personalSign: any; +export class AAEthSigner extends AASigner { constructor( abstractAccount: string, - accountAuthenticatorIndex: number, - personalSign: any, - indexerUrl?: string, + public accountAuthenticatorIndex: number, + public personalSign: PersonalSignFn, ) { super(abstractAccount); - this.accountAuthenticatorIndex = accountAuthenticatorIndex; - this.personalSign = personalSign; - this.indexerUrl = - indexerUrl || "https://api.subquery.network/sq/burnt-labs/xion-indexer"; } async signDirect( @@ -47,11 +50,9 @@ export class AAEthSigner extends AASigner { const signature = await this.personalSign(signBytesHex); const byteArray = new Uint8Array( - signature.match(/[\da-f]{2}/gi).map((hex: any) => parseInt(hex, 16)), - ); - const base64String = btoa( - String.fromCharCode.apply(null, byteArray as any), + signature.match(/[\da-f]{2}/gi).map((hex) => parseInt(hex, 16)), ); + const base64String = btoa(String.fromCharCode.apply(null, byteArray)); return { signed: signDoc, @@ -75,11 +76,7 @@ export class AAEthSigner extends AASigner { address: this.abstractAccount, algo: "secp256k1", // we don't really care about this pubkey: new Uint8Array(), - authenticatorId: await getAuthenticatorIdByAuthenticatorIndex( - this.abstractAccount, - this.accountAuthenticatorIndex, - this.indexerUrl, - ), + authenticatorId: this.accountAuthenticatorIndex, accountAddress: this.abstractAccount, aaalgo: AAAlgo.ETHWALLET, }, diff --git a/packages/signers/src/signers/jwt-signer.ts b/packages/signers/src/signers/jwt-signer.ts index ee09a3de..8f05e311 100644 --- a/packages/signers/src/signers/jwt-signer.ts +++ b/packages/signers/src/signers/jwt-signer.ts @@ -3,30 +3,21 @@ import { SignDoc } from "cosmjs-types/cosmos/tx/v1beta1/tx"; import { sha256 } from "@cosmjs/crypto"; import { AAccountData, AASigner } from "../interfaces/AASigner"; import { AAAlgo } from "../interfaces/smartAccount"; -import { getAuthenticatorIdByAuthenticatorIndex } from "./utils"; -/** - * @deprecated This class is deprecated and will no longer be maintained. - * Please contact the Burnt Labs team for alternative solutions. - */ export class AbstractAccountJWTSigner extends AASigner { // requires a session token already created sessionToken: string | undefined; accountAuthenticatorIndex: number; - indexerUrl: string; apiUrl: string; constructor( abstractAccount: string, accountAuthenticatorIndex: number, sessionToken?: string, - indexerUrl?: string, apiUrl?: string, ) { super(abstractAccount); this.sessionToken = sessionToken; this.accountAuthenticatorIndex = accountAuthenticatorIndex; - this.indexerUrl = - indexerUrl || "https://api.subquery.network/sq/burnt-labs/xion-indexer"; this.apiUrl = apiUrl || "https://aa.xion-testnet-1.burnt.com"; } @@ -44,11 +35,7 @@ export class AbstractAccountJWTSigner extends AASigner { address: this.abstractAccount, algo: "secp256k1", // we don't really care about this pubkey: new Uint8Array(), - authenticatorId: await getAuthenticatorIdByAuthenticatorIndex( - this.abstractAccount, - this.accountAuthenticatorIndex, - this.indexerUrl, - ), + authenticatorId: this.accountAuthenticatorIndex, accountAddress: this.abstractAccount, aaalgo: AAAlgo.JWT, }, @@ -110,13 +97,17 @@ export class AbstractAccountJWTSigner extends AASigner { * property of the session claims property to the hash of the passed msg * @param signerAddress * @param message Arbitrary message to be signed + * @param customToken Custom JWT token to be used for signing * @returns */ - async signDirectArb(message: string): Promise<{ signature: string }> { + async signDirectArb( + message: string, + customToken?: string, + ): Promise<{ signature: string }> { if (this.sessionToken === undefined) { throw new Error("stytch session token is undefined"); } - const hashSignBytes = sha256(Buffer.from(message, "utf-8")); + const hashSignBytes = new Uint8Array(Buffer.from(message, "utf-8")); const hashedMessage = Buffer.from(hashSignBytes).toString("base64"); const authResponse = await fetch( @@ -127,7 +118,7 @@ export class AbstractAccountJWTSigner extends AASigner { "content-type": "application/json", }, body: JSON.stringify({ - session_token: this.sessionToken, + session_token: customToken || this.sessionToken, session_duration_minutes: 60 * 24 * 30, session_custom_claims: { transaction_hash: hashedMessage, @@ -143,10 +134,9 @@ export class AbstractAccountJWTSigner extends AASigner { const authResponseData = await authResponse.json(); return { - signature: Buffer.from( - authResponseData.data.session_jwt, - "utf-8", - ).toString("base64"), + signature: Buffer.from(authResponseData.data.session_jwt).toString( + "base64", + ), }; } } diff --git a/packages/signers/src/signers/passkey-signer.ts b/packages/signers/src/signers/passkey-signer.ts new file mode 100644 index 00000000..02f1bdad --- /dev/null +++ b/packages/signers/src/signers/passkey-signer.ts @@ -0,0 +1,84 @@ +import { DirectSignResponse, makeSignBytes } from "@cosmjs/proto-signing"; +import { SignDoc } from "cosmjs-types/cosmos/tx/v1beta1/tx"; +import { sha256 } from "@cosmjs/crypto"; +import { get } from "@github/webauthn-json/browser-ponyfill"; +import { AAccountData, AASigner } from "../interfaces/AASigner"; +import { AAAlgo } from "../interfaces"; +import { registeredCredentials } from "../../utils/webauthn-utils"; + +/** + * This class is an implementation of the AASigner interface using WebAuthn. + * This class is designed to be used with WebAuthn authenticators for signing transactions. + * It ensures that the signer address is replaced with a valid wallet address + * (as to the abstract account address) before signing the transaction. + * + * Note: instance variable abstractAccount must be set before any signing. + * @abstractAccount the abstract account address of the signer + * @accountAuthenticatorIndex the index of the abstract account authenticator + * @implements AASigner + */ +export class AAPasskeySigner extends AASigner { + constructor( + abstractAccount: string, + public accountAuthenticatorIndex: number, + ) { + super(abstractAccount); + } + + async signDirect( + signerAddress: string, + signDoc: SignDoc, + ): Promise { + if (!this.abstractAccount) { + throw new Error("No abstract account"); + } + + const signBytes = makeSignBytes(signDoc); + const hashSignBytes = sha256(signBytes); + const challenge = new Uint8Array(hashSignBytes); + const challengeString = Buffer.from(challenge).toString("base64"); + + const options: CredentialRequestOptions = { + publicKey: { + challenge: Buffer.from(challengeString), + allowCredentials: registeredCredentials(), + userVerification: "preferred", + }, + }; + + const publicKeyCredential = await get(options); + const pubKeyJson = publicKeyCredential.toJSON(); + const pubKeyCredArray = new TextEncoder().encode( + JSON.stringify(pubKeyJson), + ); + const pubKeyB64 = Buffer.from(pubKeyCredArray).toString("base64"); + + return { + signed: signDoc, + signature: { + pub_key: { + type: "tendermint/PubKeySecp256k1", + value: "", // This doesn't matter. All we need is the signature below + }, + signature: pubKeyB64, + }, + }; + } + + async getAccounts(): Promise { + if (this.abstractAccount === undefined) { + return []; + } + + return [ + { + address: this.abstractAccount, + algo: "secp256k1", // This doesn't matter + pubkey: new Uint8Array(), + authenticatorId: this.accountAuthenticatorIndex, + accountAddress: this.abstractAccount, + aaalgo: AAAlgo.Passkey, + }, + ]; + } +} diff --git a/packages/signers/src/types/generated/abstractaccount/v1/feegrant.ts b/packages/signers/src/types/generated/abstractaccount/v1/feegrant.ts new file mode 100644 index 00000000..4232546e --- /dev/null +++ b/packages/signers/src/types/generated/abstractaccount/v1/feegrant.ts @@ -0,0 +1,303 @@ +/* eslint-disable */ +import * as _m0 from "protobufjs/minimal"; +import { Any } from "../../google/protobuf/any"; + +export const protobufPackage = "xion.v1"; + +/** AuthzAllowance creates allowance only authz message for a specific grantee */ +export interface AuthzAllowance { + /** allowance can be any of basic and periodic fee allowance. */ + allowance: Any | undefined; + authzGrantee: string; +} + +/** ContractsAllowance creates allowance only for specific contracts */ +export interface ContractsAllowance { + /** allowance can be any allowance interface type. */ + allowance: Any | undefined; + contractAddresses: string[]; +} + +/** MultiAnyAllowance creates an allowance that pays if any of the internal allowances are met */ +export interface MultiAnyAllowance { + /** allowance can be any allowance interface type. */ + allowances: Any[]; +} + +function createBaseAuthzAllowance(): AuthzAllowance { + return { allowance: undefined, authzGrantee: "" }; +} + +export const AuthzAllowance = { + encode( + message: AuthzAllowance, + writer: _m0.Writer = _m0.Writer.create(), + ): _m0.Writer { + if (message.allowance !== undefined) { + Any.encode(message.allowance, writer.uint32(10).fork()).ldelim(); + } + if (message.authzGrantee !== "") { + writer.uint32(18).string(message.authzGrantee); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): AuthzAllowance { + const reader = + input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseAuthzAllowance(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.allowance = Any.decode(reader, reader.uint32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.authzGrantee = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + fromJSON(object: any): AuthzAllowance { + return { + allowance: isSet(object.allowance) + ? Any.fromJSON(object.allowance) + : undefined, + authzGrantee: isSet(object.authzGrantee) + ? globalThis.String(object.authzGrantee) + : "", + }; + }, + + toJSON(message: AuthzAllowance): unknown { + const obj: any = {}; + if (message.allowance !== undefined) { + obj.allowance = Any.toJSON(message.allowance); + } + if (message.authzGrantee !== "") { + obj.authzGrantee = message.authzGrantee; + } + return obj; + }, + + create, I>>( + base?: I, + ): AuthzAllowance { + return AuthzAllowance.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): AuthzAllowance { + const message = createBaseAuthzAllowance(); + message.allowance = + object.allowance !== undefined && object.allowance !== null + ? Any.fromPartial(object.allowance) + : undefined; + message.authzGrantee = object.authzGrantee ?? ""; + return message; + }, +}; + +function createBaseContractsAllowance(): ContractsAllowance { + return { allowance: undefined, contractAddresses: [] }; +} + +export const ContractsAllowance = { + encode( + message: ContractsAllowance, + writer: _m0.Writer = _m0.Writer.create(), + ): _m0.Writer { + if (message.allowance !== undefined) { + Any.encode(message.allowance, writer.uint32(10).fork()).ldelim(); + } + for (const v of message.contractAddresses) { + writer.uint32(18).string(v!); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ContractsAllowance { + const reader = + input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseContractsAllowance(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.allowance = Any.decode(reader, reader.uint32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.contractAddresses.push(reader.string()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + fromJSON(object: any): ContractsAllowance { + return { + allowance: isSet(object.allowance) + ? Any.fromJSON(object.allowance) + : undefined, + contractAddresses: globalThis.Array.isArray(object?.contractAddresses) + ? object.contractAddresses.map((e: any) => globalThis.String(e)) + : [], + }; + }, + + toJSON(message: ContractsAllowance): unknown { + const obj: any = {}; + if (message.allowance !== undefined) { + obj.allowance = Any.toJSON(message.allowance); + } + if (message.contractAddresses?.length) { + obj.contractAddresses = message.contractAddresses; + } + return obj; + }, + + create, I>>( + base?: I, + ): ContractsAllowance { + return ContractsAllowance.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): ContractsAllowance { + const message = createBaseContractsAllowance(); + message.allowance = + object.allowance !== undefined && object.allowance !== null + ? Any.fromPartial(object.allowance) + : undefined; + message.contractAddresses = object.contractAddresses?.map((e) => e) || []; + return message; + }, +}; + +function createBaseMultiAnyAllowance(): MultiAnyAllowance { + return { allowances: [] }; +} + +export const MultiAnyAllowance = { + encode( + message: MultiAnyAllowance, + writer: _m0.Writer = _m0.Writer.create(), + ): _m0.Writer { + for (const v of message.allowances) { + Any.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MultiAnyAllowance { + const reader = + input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseMultiAnyAllowance(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.allowances.push(Any.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + fromJSON(object: any): MultiAnyAllowance { + return { + allowances: globalThis.Array.isArray(object?.allowances) + ? object.allowances.map((e: any) => Any.fromJSON(e)) + : [], + }; + }, + + toJSON(message: MultiAnyAllowance): unknown { + const obj: any = {}; + if (message.allowances?.length) { + obj.allowances = message.allowances.map((e) => Any.toJSON(e)); + } + return obj; + }, + + create, I>>( + base?: I, + ): MultiAnyAllowance { + return MultiAnyAllowance.fromPartial(base ?? ({} as any)); + }, + fromPartial, I>>( + object: I, + ): MultiAnyAllowance { + const message = createBaseMultiAnyAllowance(); + message.allowances = + object.allowances?.map((e) => Any.fromPartial(e)) || []; + return message; + }, +}; + +type Builtin = + | Date + | Function + | Uint8Array + | string + | number + | boolean + | undefined; + +export type DeepPartial = T extends Builtin + ? T + : T extends globalThis.Array + ? globalThis.Array> + : T extends ReadonlyArray + ? ReadonlyArray> + : T extends {} + ? { [K in keyof T]?: DeepPartial } + : Partial; + +type KeysOfUnion = T extends T ? keyof T : never; +export type Exact = P extends Builtin + ? P + : P & { [K in keyof P]: Exact } & { + [K in Exclude>]: never; + }; + +function isSet(value: any): boolean { + return value !== null && value !== undefined; +} diff --git a/packages/wallet-connectors/.eslintrc.js b/packages/wallet-connectors/.eslintrc.js new file mode 100644 index 00000000..101c1fc9 --- /dev/null +++ b/packages/wallet-connectors/.eslintrc.js @@ -0,0 +1,7 @@ +module.exports = { + extends: ['../../.eslintrc.js'], + parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: __dirname, + }, +}; diff --git a/packages/wallet-connectors/README.md b/packages/wallet-connectors/README.md new file mode 100644 index 00000000..0dc2d6b9 --- /dev/null +++ b/packages/wallet-connectors/README.md @@ -0,0 +1,3 @@ +# @burnt-labs/wallet-connectors + +External wallet connection utilities for XION smart accounts. diff --git a/packages/wallet-connectors/package.json b/packages/wallet-connectors/package.json new file mode 100644 index 00000000..25189209 --- /dev/null +++ b/packages/wallet-connectors/package.json @@ -0,0 +1,28 @@ +{ + "name": "@burnt-labs/wallet-connectors", + "version": "1.0.0-alpha.1", + "description": "Browser wallet connectors for XION smart accounts (MetaMask, Keplr, Leap, OKX)", + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "license": "MIT", + "scripts": { + "build": "tsup", + "lint": "eslint src/", + "dev": "tsup --watch", + "check-types": "tsc --noEmit", + "clean": "rimraf ./dist", + "test": "vitest" + }, + "dependencies": { + "@burnt-labs/signers": "workspace:*", + "@cosmjs/amino": "^0.36.0", + "@cosmjs/crypto": "^0.36.0", + "@cosmjs/encoding": "^0.36.0", + "@cosmjs/proto-signing": "^0.36.0", + "buffer": "^6.0.3" + }, + "devDependencies": { + "@types/node": "^20.0.0" + } +} diff --git a/packages/wallet-connectors/src/browser/cosmos.ts b/packages/wallet-connectors/src/browser/cosmos.ts new file mode 100644 index 00000000..fd2c2c9f --- /dev/null +++ b/packages/wallet-connectors/src/browser/cosmos.ts @@ -0,0 +1,171 @@ +/** + * Cosmos wallet (Keplr/Leap/OKX) connection and signing utilities + * Extracted from dashboard utils/wallet-utils.ts + */ + +import { Buffer } from "buffer"; +import { WalletAccountError, getErrorMessageForUI } from "./errors"; + +/** + * Gets Secp256k1 public key from Cosmos wallets (Keplr/Leap/OKX) + * + * This function connects to the specified wallet and retrieves + * the public key and bech32 address for the given chain. + * + * @param chainId - The chain ID to connect to (e.g., "xion-testnet-1") + * @param walletName - Which wallet to use: "keplr", "leap", or "okx" + * @returns Promise resolving to pubkey (hex) and bech32 address + * @throws WalletAccountError if wallet is not installed or connection fails + */ +export async function getSecp256k1Pubkey( + chainId: string, + walletName: "keplr" | "leap" | "okx" = "keplr", +): Promise<{ pubkeyHex: string; address: string }> { + try { + let wallet: NonNullable; + + switch (walletName) { + case "keplr": + if (!window.keplr) { + throw new WalletAccountError( + "Keplr not installed", + "Keplr wallet not found. Please install Keplr and try again.", + ); + } + wallet = window.keplr; + break; + case "leap": + if (!window.leap) { + throw new WalletAccountError( + "Leap not installed", + "Leap wallet not found. Please install Leap and try again.", + ); + } + wallet = window.leap; + break; + case "okx": + if (!window.okxwallet) { + throw new WalletAccountError( + "OKX not installed", + "OKX wallet not found. Please install OKX Wallet and try again.", + ); + } + if (window.okxwallet?.keplr) { + await window.okxwallet.keplr.enable(chainId); + wallet = window.okxwallet.keplr; + } else { + throw new WalletAccountError( + "OKX Keplr integration not found", + "OKX Wallet configuration error. Please try again.", + ); + } + break; + } + + const key = await wallet.getKey(chainId); + + if (!key || !key.pubKey) { + throw new WalletAccountError( + "No public key found", + "Could not get wallet public key. Please try again.", + ); + } + + // Convert Uint8Array to hex string + const pubkeyHex = Array.from(key.pubKey as Uint8Array) + .map((b: number) => b.toString(16).padStart(2, "0")) + .join(""); + + return { + pubkeyHex, + address: key.bech32Address, + }; + } catch (error) { + if (error instanceof WalletAccountError) { + throw error; + } + throw new WalletAccountError( + "Failed to get public key", + getErrorMessageForUI(error), + error, + ); + } +} + +/** + * Signs a message with Cosmos wallet (Keplr/Leap/OKX) + * + * Uses the wallet's signArbitrary method for signing. + * The signature is returned as a hex string for compatibility with smart contracts. + * + * @param message - The message to sign + * @param chainId - The chain ID (e.g., "xion-testnet-1") + * @param userAddress - The bech32 address to sign with + * @param walletName - Which wallet to use: "keplr", "leap", or "okx" + * @returns Promise resolving to the signature (hex string) + * @throws WalletAccountError if signing fails or is rejected + */ +export async function signWithSecp256k1Wallet( + message: string, + chainId: string, + userAddress: string, + walletName: "keplr" | "leap" | "okx" = "keplr", +): Promise { + try { + let wallet: NonNullable; + + switch (walletName) { + case "keplr": + if (!window.keplr) { + throw new WalletAccountError( + "Keplr not installed", + "Keplr wallet not found.", + ); + } + wallet = window.keplr; + break; + case "leap": + if (!window.leap) { + throw new WalletAccountError( + "Leap not installed", + "Leap wallet not found.", + ); + } + wallet = window.leap; + break; + case "okx": + if (!window.okxwallet?.keplr) { + throw new WalletAccountError( + "OKX not installed", + "OKX wallet not found.", + ); + } + wallet = window.okxwallet.keplr; + break; + } + + const response = await wallet.signArbitrary(chainId, userAddress, message); + + if (!response || !response.signature) { + throw new WalletAccountError( + "No signature returned", + "Failed to get signature from wallet.", + ); + } + + // Convert base64 signature to hex + const signatureBytes = Buffer.from(response.signature, "base64"); + const signatureHex = signatureBytes.toString("hex"); + + return signatureHex; + } catch (error) { + if (error instanceof WalletAccountError) { + throw error; + } + throw new WalletAccountError( + "Failed to sign with Cosmos wallet", + getErrorMessageForUI(error), + error, + ); + } +} diff --git a/packages/wallet-connectors/src/browser/errors/WalletAccountError.ts b/packages/wallet-connectors/src/browser/errors/WalletAccountError.ts new file mode 100644 index 00000000..5130a490 --- /dev/null +++ b/packages/wallet-connectors/src/browser/errors/WalletAccountError.ts @@ -0,0 +1,74 @@ +/** + * Wallet account error handling + * Extracted from dashboard utils/wallet-utils.ts + */ + +/** + * Custom error class for wallet-related operations + * + * This error includes both a technical message (for logging) + * and a user-friendly message (for display in UI). + */ +export class WalletAccountError extends Error { + constructor( + message: string, + public userMessage: string, + public originalError?: unknown, + ) { + super(message); + this.name = "WalletAccountError"; + } +} + +/** + * Converts technical errors to simple user-friendly messages + * + * This function analyzes error messages and returns appropriate + * user-facing text for common wallet operation failures. + * + * @param error - The error to convert + * @returns User-friendly error message + */ +export function getErrorMessageForUI(error: unknown): string { + if (error instanceof WalletAccountError) { + return error.userMessage; + } + + if (error instanceof Error) { + const message = error.message.toLowerCase(); + + if (message.includes("user rejected") || message.includes("user denied")) { + return "Signature cancelled"; + } + + if (message.includes("not installed")) { + return "Wallet not found"; + } + + if (message.includes("pubkey recovered from signature does not match")) { + return "Signature verification failed"; + } + + if (message.includes("signature is invalid")) { + return "Invalid signature"; + } + + if (message.includes("authorization not found")) { + return "Service error. Please contact support"; + } + + if (message.includes("fee-grant not found")) { + return "Fee grant not found. Please contact support"; + } + + if (message.includes("account already exists")) { + return "Account already exists"; + } + + if (message.includes("network") || message.includes("fetch")) { + return "Network error. Check your connection"; + } + } + + return "Something went wrong. Please try again"; +} diff --git a/packages/wallet-connectors/src/browser/errors/index.ts b/packages/wallet-connectors/src/browser/errors/index.ts new file mode 100644 index 00000000..68e1ceb4 --- /dev/null +++ b/packages/wallet-connectors/src/browser/errors/index.ts @@ -0,0 +1,5 @@ +/** + * Error classes for wallet operations + */ + +export * from "./WalletAccountError"; diff --git a/packages/wallet-connectors/src/browser/ethereum.ts b/packages/wallet-connectors/src/browser/ethereum.ts new file mode 100644 index 00000000..89e4e58e --- /dev/null +++ b/packages/wallet-connectors/src/browser/ethereum.ts @@ -0,0 +1,96 @@ +/** + * Ethereum wallet (MetaMask) connection and signing utilities + * Extracted from dashboard utils/wallet-utils.ts + */ + +import { WalletAccountError, getErrorMessageForUI } from "./errors"; + +/** + * Gets Ethereum wallet address from MetaMask + * + * This function prompts the user to connect their MetaMask wallet + * and returns the first account address. + * + * @returns Promise resolving to the Ethereum address (0x...) + * @throws WalletAccountError if MetaMask is not installed or connection fails + */ +export async function getEthWalletAddress(): Promise { + try { + if (!window.ethereum) { + throw new WalletAccountError( + "MetaMask not installed", + "MetaMask wallet not found. Please install MetaMask and try again.", + ); + } + + const accounts = (await window.ethereum.request({ + method: "eth_requestAccounts", + })) as string[]; + + if (!accounts || accounts.length === 0) { + throw new WalletAccountError( + "No accounts found", + "No MetaMask accounts found. Please unlock your wallet and try again.", + ); + } + + return accounts[0]; + } catch (error) { + if (error instanceof WalletAccountError) { + throw error; + } + throw new WalletAccountError( + "Failed to get Ethereum address", + getErrorMessageForUI(error), + error, + ); + } +} + +/** + * Signs a message with Ethereum wallet (MetaMask) + * + * Uses EIP-191 personal_sign method to sign arbitrary data. + * The signature can be verified on-chain or off-chain. + * + * @param message - The message to sign (will be prefixed with "\x19Ethereum Signed Message:\n") + * @param userAddress - The Ethereum address to sign with + * @returns Promise resolving to the signature (hex string) + * @throws WalletAccountError if signing fails or is rejected + */ +export async function signWithEthWallet( + message: string, + userAddress: string, +): Promise { + try { + if (!window.ethereum) { + throw new WalletAccountError( + "MetaMask not installed", + "MetaMask wallet not found.", + ); + } + + const signature = (await window.ethereum.request({ + method: "personal_sign", + params: [message, userAddress], + })) as string; + + if (!signature) { + throw new WalletAccountError( + "No signature returned", + "Failed to get signature from wallet.", + ); + } + + return signature; + } catch (error) { + if (error instanceof WalletAccountError) { + throw error; + } + throw new WalletAccountError( + "Failed to sign with Ethereum wallet", + getErrorMessageForUI(error), + error, + ); + } +} diff --git a/packages/wallet-connectors/src/browser/index.ts b/packages/wallet-connectors/src/browser/index.ts new file mode 100644 index 00000000..9271e923 --- /dev/null +++ b/packages/wallet-connectors/src/browser/index.ts @@ -0,0 +1,14 @@ +/** + * Browser-specific wallet interaction utilities + * + * IMPORTANT: These functions use window.ethereum, window.keplr, etc. + * and are ONLY for browser environments. + * + * For server-side or non-browser use cases, use the crypto utilities + * from ../crypto and provide signatures externally. + */ + +export * from "./ethereum"; +export * from "./cosmos"; +export * from "./errors"; +export * from "./workflows"; diff --git a/packages/wallet-connectors/src/browser/workflows.ts b/packages/wallet-connectors/src/browser/workflows.ts new file mode 100644 index 00000000..3d1be1ff --- /dev/null +++ b/packages/wallet-connectors/src/browser/workflows.ts @@ -0,0 +1,115 @@ +/** + * Browser wallet connection workflows + * + * These functions handle: + * 1. Connect to wallet (MetaMask, Keplr, Leap, OKX) + * 2. Get credentials (address/pubkey) + * 3. Sign messages with the wallet + * + * IMPORTANT: These workflows use browser-specific wallet connections (window.ethereum, window.keplr). + * For non-browser environments, use @burnt-labs/signers crypto utilities directly. + * + * These workflows return prepared data - the consuming app (dashboard, abstraxion) + * decides whether to: + * - Call the AA API to create the account + * - Build and broadcast transactions directly using crypto utilities from @burnt-labs/signers + */ + +import { Buffer } from "buffer"; +import { getEthWalletAddress, signWithEthWallet } from "./ethereum"; +import { getSecp256k1Pubkey, signWithSecp256k1Wallet } from "./cosmos"; +import type { WalletConnectionInfo } from "../types"; + +/** + * Connect to MetaMask and prepare signature data + * + * This function: + * - Connects to MetaMask and gets the Ethereum address + * - Signs a provided message with MetaMask + * + * The consuming app should: + * 1. Call prepareSignatureMessage() from @burnt-labs/signers to get the message to sign + * 2. Call this function to get the signature + * 3. Either call AA API or use buildEthWalletAccountMessages() from @burnt-labs/signers + * + * @param messageToSign - The message to sign (from prepareSignatureMessage) + * @returns Ethereum address, signature (hex), and wallet info + */ +export async function connectMetaMaskAndSign(messageToSign: string): Promise<{ + address: string; + signatureHex: string; + walletInfo: WalletConnectionInfo; +}> { + // 1. Get Ethereum address + const ethAddress = await getEthWalletAddress(); + + // 2. Get user signature + const signatureHex = await signWithEthWallet(messageToSign, ethAddress); + + return { + address: ethAddress, + signatureHex, + walletInfo: { + type: "EthWallet", + address: ethAddress, + identifier: ethAddress, + }, + }; +} + +/** + * Connect to Cosmos wallet (Keplr/Leap/OKX) and prepare signature data + * + * This function: + * - Connects to the specified Cosmos wallet and gets the public key + * - Signs a provided message with the wallet + * + * The consuming app should: + * 1. Call prepareSignatureMessage() from @burnt-labs/signers to get the message to sign + * 2. Call this function to get the signature + * 3. Either call AA API or use buildSecp256k1AccountMessages() from @burnt-labs/signers + * + * @param messageToSign - The message to sign (from prepareSignatureMessage) + * @param chainId - Chain ID to connect to (e.g., "xion-testnet-1") + * @param walletName - Which wallet to use: "keplr", "leap", or "okx" + * @returns Public key (hex), signature (hex), wallet address, and wallet info + */ +export async function connectCosmosWalletAndSign( + messageToSign: string, + chainId: string, + walletName: "keplr" | "leap" | "okx", +): Promise<{ + pubkeyHex: string; + signatureHex: string; + address: string; + walletInfo: WalletConnectionInfo; +}> { + // 1. Get public key + const { pubkeyHex, address: walletAddress } = await getSecp256k1Pubkey( + chainId, + walletName, + ); + + // 2. Get user signature + const signatureHex = await signWithSecp256k1Wallet( + messageToSign, + chainId, + walletAddress, + walletName, + ); + + // Convert hex pubkey to base64 for authenticator identifier (matches on-chain format) + const pubkeyBase64 = Buffer.from(pubkeyHex, "hex").toString("base64"); + + return { + pubkeyHex, + signatureHex, + address: walletAddress, + walletInfo: { + type: "Secp256K1", + address: walletAddress, + pubkey: pubkeyHex, + identifier: pubkeyBase64, // Use base64 pubkey for indexer queries + }, + }; +} diff --git a/packages/wallet-connectors/src/index.ts b/packages/wallet-connectors/src/index.ts new file mode 100644 index 00000000..a054a552 --- /dev/null +++ b/packages/wallet-connectors/src/index.ts @@ -0,0 +1,26 @@ +/** + * @burnt-labs/wallet-connectors + * + * Browser wallet connectors for XION smart accounts + * + * Supports: + * - MetaMask (window.ethereum) + * - Keplr (window.keplr) + * - Leap (window.leap) + * - OKX Wallet (window.okxwallet) + * + * This package is BROWSER-ONLY. For platform-agnostic utilities: + * - Import crypto utilities from @burnt-labs/signers + * - Use prepareSignatureMessage, buildMessages, etc. + * + * Usage: + * 1. Call prepareSignatureMessage() from @burnt-labs/signers + * 2. Call connectMetaMaskAndSign() or connectCosmosWalletAndSign() to get signature + * 3. Either call AA API or use buildEthWalletAccountMessages() from @burnt-labs/signers + */ + +// Browser-specific wallet connectors +export * from "./browser"; + +// Types +export * from "./types"; diff --git a/packages/wallet-connectors/src/types/api.ts b/packages/wallet-connectors/src/types/api.ts new file mode 100644 index 00000000..d9637a34 --- /dev/null +++ b/packages/wallet-connectors/src/types/api.ts @@ -0,0 +1,46 @@ +/** + * Copy from: _extract_from/xion-dashboard-app/src/types/ + * + * Types to copy: + * - AA API request types (PrepareRequest, CreateRequest, etc.) + * - AA API response types (PrepareResponse, CreateResponse, etc.) + * - Error response types + * - Any API-specific type definitions + */ + +// Placeholder - copy types from dashboard + +export interface PrepareSignatureRequest { + wallet_type: WalletType; + address?: string; // Required for EthWallet + pubkey?: string; // Required for Secp256K1 +} + +export interface PrepareSignatureResponse { + message_to_sign: string; + predicted_address: string; + salt: string; + wallet_type: string; + metadata: { + action: string; + wallet_type: string; + address?: string; + pubkey?: string; + timestamp: number; + }; +} + +export interface CreateWalletAccountRequest { + salt: string; + wallet_type: WalletType; + address?: string; // Required for EthWallet + pubkey?: string; // Required for Secp256K1 + signature: string; + message: string; // JSON stringified metadata +} + +export interface CreateWalletAccountResponse { + account_address: string; + code_id: number; + transaction_hash: string; +} diff --git a/packages/wallet-connectors/src/types/index.ts b/packages/wallet-connectors/src/types/index.ts new file mode 100644 index 00000000..4282a0f1 --- /dev/null +++ b/packages/wallet-connectors/src/types/index.ts @@ -0,0 +1,6 @@ +/** + * Type definitions for wallet connectors and AA API + */ + +export * from "./wallet"; +export * from "./api"; diff --git a/packages/wallet-connectors/src/types/wallet.ts b/packages/wallet-connectors/src/types/wallet.ts new file mode 100644 index 00000000..757cab79 --- /dev/null +++ b/packages/wallet-connectors/src/types/wallet.ts @@ -0,0 +1,25 @@ +/** + * Copy from: _extract_from/xion-dashboard-app/src/types/ + * + * Types to copy: + * - WalletType enum/union + * - WalletConnection interface + * - EthereumProvider interface + * - Keplr/Leap/OKX wallet interfaces + * - Any wallet-specific type definitions + */ + +// Placeholder - copy types from dashboard + +/** + * Types for wallet-based smart account creation + */ + +export type WalletType = "EthWallet" | "Secp256K1"; + +export interface WalletConnectionInfo { + type: WalletType; + address?: string; // Wallet address (for display) + pubkey?: string; // Public key hex + identifier: string; // What gets stored as authenticator +} diff --git a/packages/wallet-connectors/tsconfig.json b/packages/wallet-connectors/tsconfig.json new file mode 100644 index 00000000..f62f42c1 --- /dev/null +++ b/packages/wallet-connectors/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src", + "composite": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts"] +} diff --git a/packages/wallet-connectors/tsup.config.ts b/packages/wallet-connectors/tsup.config.ts new file mode 100644 index 00000000..4dff9109 --- /dev/null +++ b/packages/wallet-connectors/tsup.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + format: ["cjs", "esm"], + dts: true, + splitting: false, + sourcemap: true, + clean: true, + treeshake: true, +}); From 08b69e83680e003b2d706919ff1e044381cb85bd Mon Sep 17 00:00:00 2001 From: ertemann Date: Mon, 13 Oct 2025 21:16:41 +0200 Subject: [PATCH 02/27] more cleanup of the moved code --- packages/abstraxion/package.json | 3 + .../src/components/Abstraxion/index.tsx | 67 +- .../components/AbstraxionContext/index.tsx | 51 +- packages/abstraxion/utils/queries.ts | 126 - .../src/authenticators/utils.ts | 3 +- .../account-management/src/grants/authz.ts | 4 +- .../account-management/src/grants/feegrant.ts | 2 +- .../account-management/src/grants/treasury.ts | 7 +- .../account-management/src/types/grants.ts | 9 + .../account-management/src/types/indexer.ts | 2 + .../account-management/src/types/treasury.ts | 50 +- packages/signers/package.json | 1 + packages/signers/src/interfaces/index.ts | 5 +- .../signers/src/interfaces/smartAccount.ts | 2 + packages/signers/src/signers/eth-signer.ts | 10 +- .../signers/src/signers/passkey-signer.ts | 2 +- packages/signers/src/signers/utils/index.ts | 404 +- .../src/signers/utils/webauthn-utils.ts | 100 + packages/wallet-connectors/package.json | 8 +- .../wallet-connectors/src/browser/cosmos.ts | 9 +- .../wallet-connectors/src/browser/ethereum.ts | 2 +- packages/wallet-connectors/src/global.d.ts | 78 + packages/wallet-connectors/src/types/api.ts | 2 + packages/wallet-connectors/tsconfig.json | 11 +- packages/wallet-connectors/tsup.config.ts | 5 +- pnpm-lock.yaml | 28003 ++++++---------- 26 files changed, 11296 insertions(+), 17670 deletions(-) delete mode 100644 packages/abstraxion/utils/queries.ts create mode 100644 packages/signers/src/signers/utils/webauthn-utils.ts create mode 100644 packages/wallet-connectors/src/global.d.ts diff --git a/packages/abstraxion/package.json b/packages/abstraxion/package.json index 99777d34..99764446 100644 --- a/packages/abstraxion/package.json +++ b/packages/abstraxion/package.json @@ -43,7 +43,9 @@ "dependencies": { "@burnt-labs/abstraxion-core": "workspace:*", "@burnt-labs/constants": "workspace:*", + "@burnt-labs/signers": "workspace:*", "@burnt-labs/ui": "workspace:*", + "@burnt-labs/wallet-connectors": "workspace:*", "@cosmjs/amino": "^0.36.0", "@cosmjs/cosmwasm-stargate": "^0.36.0", "@cosmjs/crypto": "^0.36.0", @@ -53,6 +55,7 @@ "@cosmjs/tendermint-rpc": "^0.36.0", "@cosmjs/utils": "^0.36.0", "@types/react-dom": "^18.2.18", + "buffer": "^6.0.3", "cosmjs-types": "^0.9.0", "jose": "^5.1.3" } diff --git a/packages/abstraxion/src/components/Abstraxion/index.tsx b/packages/abstraxion/src/components/Abstraxion/index.tsx index db4ce6b6..6ef06615 100644 --- a/packages/abstraxion/src/components/Abstraxion/index.tsx +++ b/packages/abstraxion/src/components/Abstraxion/index.tsx @@ -10,6 +10,7 @@ import { import { ErrorDisplay } from "../ErrorDisplay"; import { AbstraxionSignin } from "../AbstraxionSignin"; import { Connected } from "@/src/components/Connected/Connected.tsx"; +import { WalletSelect } from "../WalletSelect"; import { AbstraxionAuth } from "@burnt-labs/abstraxion-core"; import { BrowserRedirectStrategy, @@ -32,6 +33,7 @@ export function Abstraxion({ onClose }: ModalProps): JSX.Element | null { isConnected, showModal, setShowModal, + walletAuthMode, } = useContext(AbstraxionContext); const closeOnEscKey = useCallback( @@ -53,21 +55,68 @@ export function Abstraxion({ onClose }: ModalProps): JSX.Element | null { if (!showModal) return null; + // Determine what to show based on auth mode and connection state + const renderContent = () => { + if (abstraxionError) { + return ; + } + + if (abstraxionAccount || isConnected) { + return ; + } + + // Not connected - show signin flow + if (walletAuthMode === 'redirect') { + // Existing OAuth flow via dashboard + return ; + } else { + // Direct mode - show wallet selection + return ; + } + }; + return ( - {abstraxionError ? ( - - ) : abstraxionAccount || isConnected ? ( - - ) : !abstraxionAccount ? ( - - ) : null} + {renderContent()} ); } +/** + * Custom signer interface for Turnkey, Privy, etc. + */ +export interface CustomSigner { + type: 'Secp256K1' | 'EthWallet'; + sign: (message: string) => Promise; + getPubkey?: () => Promise; // For Secp256K1 + getAddress?: () => Promise; // For EthWallet +} + +/** + * Wallet authentication configuration + */ +export interface WalletAuthConfig { + /** Authentication mode: redirect (default), direct (in-app), or local (no AA API) */ + mode?: 'redirect' | 'direct' | 'local'; + + /** Custom AA API URL (for direct mode) */ + aaApiUrl?: string; + + /** Custom signer (Turnkey, Privy, etc.) */ + customSigner?: CustomSigner; + + /** Local mode configuration (for building transactions without AA API) */ + localConfig?: { + codeId: number; + checksum: string; + feeGranter: string; + workerAddress?: string; + addressPrefix?: string; + }; +} + export interface AbstraxionConfig { contracts?: ContractGrantDescription[]; rpcUrl?: string; @@ -76,6 +125,9 @@ export interface AbstraxionConfig { callbackUrl?: string; treasury?: string; gasPrice?: string; + + /** NEW: Wallet authentication configuration */ + walletAuth?: WalletAuthConfig; } export function AbstraxionProvider({ @@ -94,6 +146,7 @@ export function AbstraxionProvider({ callbackUrl={config.callbackUrl} treasury={config.treasury} gasPrice={config.gasPrice} + walletAuth={config.walletAuth} > {children} diff --git a/packages/abstraxion/src/components/AbstraxionContext/index.tsx b/packages/abstraxion/src/components/AbstraxionContext/index.tsx index 251d28c8..1666ab70 100644 --- a/packages/abstraxion/src/components/AbstraxionContext/index.tsx +++ b/packages/abstraxion/src/components/AbstraxionContext/index.tsx @@ -4,6 +4,8 @@ import { testnetChainInfo, xionGasValues } from "@burnt-labs/constants"; import { GasPrice } from "@cosmjs/stargate"; import { SignArbSecp256k1HdWallet } from "@burnt-labs/abstraxion-core"; import { abstraxionAuth } from "../Abstraxion"; +import { useWalletAuth, type WalletAuthState } from "../../hooks/useWalletAuth"; +import type { WalletAuthConfig } from "../Abstraxion"; export type SpendLimit = { denom: string; amount: string }; @@ -41,6 +43,10 @@ export interface AbstraxionContextProps { gasPrice: GasPrice; logout: () => void; login: () => Promise; + + // NEW: Wallet authentication state + walletAuthMode: 'redirect' | 'direct' | 'local'; + walletAuthState: WalletAuthState | null; } export const AbstraxionContext = createContext( @@ -57,6 +63,7 @@ export function AbstraxionContextProvider({ treasury, indexerUrl, gasPrice, + walletAuth, }: { children: ReactNode; contracts?: ContractGrantDescription[]; @@ -68,6 +75,7 @@ export function AbstraxionContextProvider({ treasury?: string; indexerUrl?: string; gasPrice?: string; + walletAuth?: WalletAuthConfig; }): JSX.Element { // Initialize all loading states as false for consistent hydration, then detect OAuth in useEffect const [isConnected, setIsConnected] = useState(false); @@ -91,6 +99,24 @@ export function AbstraxionContextProvider({ gasPriceDefault = GasPrice.fromString("0.001uxion"); } + // Determine wallet auth mode + const walletAuthMode = walletAuth?.mode || 'redirect'; + + // Initialize wallet auth hook only for direct/local modes + const walletAuthState = useWalletAuth({ + config: walletAuth || {}, + onSuccess: (smartAccountAddress, walletInfo) => { + // Direct mode connection successful + setGranterAddress(smartAccountAddress); + setIsConnected(true); + setShowModal(false); + }, + onError: (error) => { + setAbstraxionError(error); + setIsConnecting(false); + }, + }); + const configureInstance = useCallback(() => { abstraxionAuth.configureAbstraxionInstance( rpcUrl, @@ -205,10 +231,25 @@ export function AbstraxionContextProvider({ try { await abstraxionAuth.login(); + try { + setIsConnecting(true); + + // Check wallet auth mode + if (walletAuthMode === 'redirect') { + // Existing OAuth flow via dashboard redirect + await abstraxionAuth.login(); + } else { + // Direct or local mode - show modal with wallet selection + setShowModal(true); + setIsConnecting(false); // Reset since wallet selection is async + } } catch (error) { throw error; // Re-throw to allow handling by the caller } finally { // Keep isLoggingIn true until auth state change sets isConnecting (only for manual login) + if (walletAuthMode === 'redirect') { + setIsConnecting(false); + } } } @@ -237,8 +278,14 @@ export function AbstraxionContextProvider({ setIsInitializing(false); setIsConnecting(false); setIsReturningFromAuth(false); + + // Clear wallet auth state if in direct mode + if (walletAuthMode !== 'redirect') { + walletAuthState.disconnect(); + } + abstraxionAuth?.logout(); - }, [abstraxionAuth]); + }, [abstraxionAuth, walletAuthMode, walletAuthState]); return ( {children} diff --git a/packages/abstraxion/utils/queries.ts b/packages/abstraxion/utils/queries.ts deleted file mode 100644 index a5a42b20..00000000 --- a/packages/abstraxion/utils/queries.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { gql } from "@apollo/client"; - -export const SMART_ACCOUNT_FRAGMENT = gql` - fragment SmartAccountFragment on SmartAccountAuthenticator { - id - type - authenticator - authenticatorIndex - version - } -`; - -export const AllSmartWalletQuery = gql` - ${SMART_ACCOUNT_FRAGMENT} - query ($authenticator: String!) { - smartAccounts( - filter: { - authenticators: { some: { authenticator: { equalTo: $authenticator } } } - } - ) { - nodes { - id - authenticators { - nodes { - ...SmartAccountFragment - } - } - } - } - } -`; - -export const SingleSmartWalletQuery = gql` - ${SMART_ACCOUNT_FRAGMENT} - query ($id: String!) { - smartAccount(id: $id) { - id - latestAuthenticatorId - authenticators { - nodes { - ...SmartAccountFragment - } - } - } - } -`; - -export const AllSmartWalletQueryByAccountId = gql` - ${SMART_ACCOUNT_FRAGMENT} - query ($id: String!) { - smartAccounts(filter: { id: { equalTo: $id } }) { - nodes { - authenticators { - nodes { - ...SmartAccountFragment - } - } - } - } - } -`; - -export const AllSmartWalletQueryByIdAndAuthenticator = gql` - ${SMART_ACCOUNT_FRAGMENT} - query ($id: String!, $authenticator: String!) { - smartAccounts( - filter: { - id: { equalTo: $id } - authenticators: { some: { authenticator: { equalTo: $authenticator } } } - } - ) { - nodes { - authenticators { - nodes { - ...SmartAccountFragment - } - } - } - } - } -`; - -export const AllSmartWalletQueryByIdAndType = gql` - ${SMART_ACCOUNT_FRAGMENT} - query ($id: String!, $type: String!) { - smartAccounts( - filter: { - id: { equalTo: $id } - authenticators: { some: { type: { equalTo: $type } } } - } - ) { - nodes { - authenticators { - nodes { - ...SmartAccountFragment - } - } - } - } - } -`; - -export const AllSmartWalletQueryByIdAndTypeAndAuthenticator = gql` - ${SMART_ACCOUNT_FRAGMENT} - query ($id: String!, $type: String!, $authenticator: String!) { - smartAccounts( - filter: { - id: { equalTo: $id } - authenticators: { - some: { - authenticator: { equalTo: $authenticator } - type: { equalTo: $type } - } - } - } - ) { - nodes { - authenticators { - nodes { - ...SmartAccountFragment - } - } - } - } - } -`; diff --git a/packages/account-management/src/authenticators/utils.ts b/packages/account-management/src/authenticators/utils.ts index f1d48348..3f3e4f29 100644 --- a/packages/account-management/src/authenticators/utils.ts +++ b/packages/account-management/src/authenticators/utils.ts @@ -1,5 +1,4 @@ -import { Authenticator } from "../indexer-strategies/types"; -import { SmartAccountWithCodeId } from "../indexer-strategies/types"; +import { Authenticator, SmartAccountWithCodeId } from "../types/authenticator"; /** * Checks if an authenticator already exists in the list diff --git a/packages/account-management/src/grants/authz.ts b/packages/account-management/src/grants/authz.ts index a934a5db..a0b5de7a 100644 --- a/packages/account-management/src/grants/authz.ts +++ b/packages/account-management/src/grants/authz.ts @@ -1,5 +1,5 @@ -import { SelectedSmartAccount } from "../indexer-strategies/types"; -import { ContractGrantDescription } from "../components/AbstraxionGrant/generateContractGrant"; +import { SelectedSmartAccount } from "../types/authenticator"; +import { ContractGrantDescription } from "../types/grants"; /** * Checks if any of the contract grant configurations are the current smart account (granter) diff --git a/packages/account-management/src/grants/feegrant.ts b/packages/account-management/src/grants/feegrant.ts index f0ec984a..dcb78dc7 100644 --- a/packages/account-management/src/grants/feegrant.ts +++ b/packages/account-management/src/grants/feegrant.ts @@ -5,7 +5,7 @@ import { AllowanceResponse, ContractsAllowance, MultiAnyAllowance, -} from "../types/allowance-types"; +} from "../types/grants"; function isAllowedMsgAllowance( allowance: Allowance, diff --git a/packages/account-management/src/grants/treasury.ts b/packages/account-management/src/grants/treasury.ts index 2ad1729f..762b6ce3 100644 --- a/packages/account-management/src/grants/treasury.ts +++ b/packages/account-management/src/grants/treasury.ts @@ -3,8 +3,7 @@ import type { GeneratedAuthzGrantMessage, GrantConfigByTypeUrl, GrantConfigTypeUrlsResponse, -} from "../types/treasury-types"; -import type { AAClient } from "../signers"; +} from "../types/treasury"; /** * Utility function to construct authz grant message @@ -52,14 +51,14 @@ const constructGrantMessage = ( /** * Queries the DAPP treasury contract to construct authz grant messages * @param {string} contractAddress - The address for the deployed treasury contract instance - * @param {AAClient} client - Client to query RPC + * @param {any} client - Client to query RPC (must have queryContractSmart method) * @param {string} granter - The granter address * @param {string} grantee - The grantee address * @returns {GeneratedAuthzGrantMessage[]} - Array of authz grant messages to pass into tx */ export const generateTreasuryGrants = async ( contractAddress: string, - client: AAClient, + client: any, // AAClient from @burnt-labs/signers granter: string, grantee: string, ): Promise => { diff --git a/packages/account-management/src/types/grants.ts b/packages/account-management/src/types/grants.ts index cbc730a0..310b34f0 100644 --- a/packages/account-management/src/types/grants.ts +++ b/packages/account-management/src/types/grants.ts @@ -3,6 +3,15 @@ import type { PeriodicAllowance, } from "cosmjs-types/cosmos/feegrant/v1beta1/feegrant"; +export type SpendLimit = { denom: string; amount: string }; + +export type ContractGrantDescription = + | string + | { + address: string; + amounts: SpendLimit[]; + }; + export interface BaseAllowance { "@type": string; } diff --git a/packages/account-management/src/types/indexer.ts b/packages/account-management/src/types/indexer.ts index 1e8f7a85..a18eba66 100644 --- a/packages/account-management/src/types/indexer.ts +++ b/packages/account-management/src/types/indexer.ts @@ -1,3 +1,5 @@ +import { SmartAccountWithCodeId } from "./authenticator"; + export interface IndexerStrategy { fetchSmartAccounts( loginAuthenticator: string, diff --git a/packages/account-management/src/types/treasury.ts b/packages/account-management/src/types/treasury.ts index cff79034..29057799 100644 --- a/packages/account-management/src/types/treasury.ts +++ b/packages/account-management/src/types/treasury.ts @@ -1,8 +1,22 @@ -import type { - GrantConfigByTypeUrl, - TreasuryParams, -} from "../types/treasury-types"; -import type { AAClient } from "../signers"; +export type GrantConfigTypeUrlsResponse = string[]; + +export interface TreasuryParams { + display_url: string; + redirect_url: string; + icon_url: string; +} + +export interface Any { + type_url: string; + value: string; +} + +export interface GrantConfigByTypeUrl { + allowance: Any; + authorization: Any; + description: string; + maxDuration?: number; +} /** * Represents the complete treasury configuration including grant configs and parameters @@ -20,30 +34,15 @@ export interface TreasuryStrategy { /** * Fetch treasury configuration for a given contract address * @param treasuryAddress The treasury contract address - * @param client The Cosmos client for querying chain data + * @param client The Cosmos client for querying chain data (must have queryContractSmart method) * @returns Treasury configuration or null if not found/failed */ fetchTreasuryConfig( treasuryAddress: string, - client: AAClient, + client: any, // AAClient from @burnt-labs/signers (avoiding circular dependency) ): Promise; } -export type GrantConfigTypeUrlsResponse = string[]; - -export interface TreasuryParams { - display_url: string; - redirect_url: string; - icon_url: string; -} - -export interface GrantConfigByTypeUrl { - allowance: Any; - authorization: Any; - description: string; - maxDuration?: number; -} - export interface PermissionDescription { authorizationDescription: string; dappDescription?: string; @@ -57,10 +56,5 @@ export interface FormattedDescriptions { export interface GeneratedAuthzGrantMessage { typeUrl: string; - value: MsgGrant; -} - -export interface Any { - type_url: string; - value: string; + value: any; // MsgGrant from cosmjs-types } diff --git a/packages/signers/package.json b/packages/signers/package.json index c790aafc..54554aee 100644 --- a/packages/signers/package.json +++ b/packages/signers/package.json @@ -25,6 +25,7 @@ "@cosmjs/stargate": "^0.36.0", "@cosmjs/tendermint-rpc": "^0.36.0", "@cosmjs/utils": "^0.36.0", + "@github/webauthn-json": "^2.1.1", "@protobuf-ts/runtime": "^2.9.4", "bech32": "^2.0.0", "buffer": "^6.0.3", diff --git a/packages/signers/src/interfaces/index.ts b/packages/signers/src/interfaces/index.ts index da13e414..fb2569d9 100644 --- a/packages/signers/src/interfaces/index.ts +++ b/packages/signers/src/interfaces/index.ts @@ -1,4 +1,5 @@ export * from "./AASigner"; -export * from "./fragments"; -export * from "./queries"; +// TODO: fragments and queries were moved to dashboard - remove if not needed +// export * from "./fragments"; +// export * from "./queries"; export * from "./smartAccount"; diff --git a/packages/signers/src/interfaces/smartAccount.ts b/packages/signers/src/interfaces/smartAccount.ts index 8f2ef816..c2bb85a3 100644 --- a/packages/signers/src/interfaces/smartAccount.ts +++ b/packages/signers/src/interfaces/smartAccount.ts @@ -34,6 +34,8 @@ export enum AAAlgo { JWT = "jwt", ethWallet = "ethWallet", ETHWALLET = "EthWallet", + passkey = "Passkey", + Passkey = "passkey", } export interface AddSecp256K1Authenticator { diff --git a/packages/signers/src/signers/eth-signer.ts b/packages/signers/src/signers/eth-signer.ts index 09e96cc7..139855dc 100644 --- a/packages/signers/src/signers/eth-signer.ts +++ b/packages/signers/src/signers/eth-signer.ts @@ -49,10 +49,14 @@ export class AAEthSigner extends AASigner { const signBytesHex = "0x" + encodeHex(signBytes); const signature = await this.personalSign(signBytesHex); + const matches = signature.match(/[\da-f]{2}/gi); + if (!matches) { + throw new Error("Invalid signature format"); + } const byteArray = new Uint8Array( - signature.match(/[\da-f]{2}/gi).map((hex) => parseInt(hex, 16)), + matches.map((hex) => parseInt(hex, 16)), ); - const base64String = btoa(String.fromCharCode.apply(null, byteArray)); + const base64String = btoa(String.fromCharCode(...Array.from(byteArray))); return { signed: signDoc, @@ -82,4 +86,4 @@ export class AAEthSigner extends AASigner { }, ]; } -} +} \ No newline at end of file diff --git a/packages/signers/src/signers/passkey-signer.ts b/packages/signers/src/signers/passkey-signer.ts index 02f1bdad..dcd5ad11 100644 --- a/packages/signers/src/signers/passkey-signer.ts +++ b/packages/signers/src/signers/passkey-signer.ts @@ -4,7 +4,7 @@ import { sha256 } from "@cosmjs/crypto"; import { get } from "@github/webauthn-json/browser-ponyfill"; import { AAccountData, AASigner } from "../interfaces/AASigner"; import { AAAlgo } from "../interfaces"; -import { registeredCredentials } from "../../utils/webauthn-utils"; +import { registeredCredentials } from "./utils/webauthn-utils"; /** * This class is an implementation of the AASigner interface using WebAuthn. diff --git a/packages/signers/src/signers/utils/index.ts b/packages/signers/src/signers/utils/index.ts index fae2e56d..4b266f19 100644 --- a/packages/signers/src/signers/utils/index.ts +++ b/packages/signers/src/signers/utils/index.ts @@ -17,30 +17,42 @@ import { ISmartAccountAuthenticator, ISmartAccounts, } from "../../interfaces/smartAccount"; -import { - AllSmartWalletQueryByIdAndTypeAndAuthenticator, - SingleSmartWalletQuery, - SmartWalletIndexQueryByAccountId, -} from "../../interfaces/queries"; -import { OTPsAuthenticateResponse } from "stytch"; -import { - ApolloClient, - InMemoryCache, - NormalizedCacheObject, -} from "@apollo/client"; +// TODO: These imports are dashboard-specific and should be moved to dashboard +// They are not exported from the signers package, only used internally +// import { +// AllSmartWalletQueryByIdAndTypeAndAuthenticator, +// SingleSmartWalletQuery, +// SmartWalletIndexQueryByAccountId, +// } from "../../interfaces/queries"; +// import { OTPsAuthenticateResponse } from "stytch"; +// import { +// ApolloClient, +// InMemoryCache, +// NormalizedCacheObject, +// } from "@apollo/client"; -let apolloClientInstance: ApolloClient; +// Placeholder types for commented functions +type AllSmartWalletQueryByIdAndTypeAndAuthenticator = any; +type SingleSmartWalletQuery = any; +type SmartWalletIndexQueryByAccountId = any; +type OTPsAuthenticateResponse = any; +type ApolloClient = any; +type InMemoryCache = any; +type NormalizedCacheObject = any; -export const getApolloClient = (url?: string) => { - if (!apolloClientInstance) { - apolloClientInstance = new ApolloClient({ - uri: url || "https://api.subquery.network/sq/burnt-labs/xion-indexer", - cache: new InMemoryCache(), - assumeImmutableResults: true, - }); - } - return apolloClientInstance; -}; +// TODO: Dashboard-specific functions - commented out to allow build +// let apolloClientInstance: ApolloClient; +// +// export const getApolloClient = (url?: string) => { +// if (!apolloClientInstance) { +// apolloClientInstance = new ApolloClient({ +// uri: url || "https://api.subquery.network/sq/burnt-labs/xion-indexer", +// cache: new InMemoryCache(), +// assumeImmutableResults: true, +// }); +// } +// return apolloClientInstance; +// }; export type INodes = { nodes: Array; @@ -122,181 +134,185 @@ export function makeAAuthInfo( }); } -/** - * This method gets all the AA accounts in which the signers in the accountData - * are authenticators for - * @param accounts the account data of the signer - * @param abstractAccount the abstract account address - **/ -export async function getAAccounts( - accounts: readonly AccountData[], - abstractAccount: string, - indexerUrl: string, -): Promise { - const defaultData: AAccountData = { - address: "", - accountAddress: "", - algo: AAAlgo.Secp256K1, - pubkey: new Uint8Array(), - authenticatorId: 0, - }; - const allAAAcounts: AAccountData[] = []; - // here we get all the accounts of the super DirectSecp256k1HdWallet - // class then we use the public key and algo type to query the xion-indexer - // for the abstract account authenticators matching the public key and algo type - const apolloClient = getApolloClient(indexerUrl); - if (!apolloClient || !accounts || accounts.length === 0) { - return [defaultData]; - } - for (const account of accounts) { - const { data } = await apolloClient.query({ - query: AllSmartWalletQueryByIdAndTypeAndAuthenticator, - variables: { - id: abstractAccount, - type: AAAlgo[account.algo], - authenticator: Buffer.from(account.pubkey).toString("base64"), - }, - }); - if (data) { - const smartAccounts: ISmartAccounts = data.smartAccounts; - if (!smartAccounts.nodes.length) { - // No smart account found for this account - continue; - } - for (const node of smartAccounts.nodes) { - const smartAccountAuthenticators: INodes = - node.authenticators; - if (!smartAccountAuthenticators.nodes.length) { - // No authenticator found for this account - continue; - } - for (const authenticator of smartAccountAuthenticators.nodes) { - const splitAuthenticatorId = authenticator.id.split("-"); - allAAAcounts.push({ - address: splitAuthenticatorId[0], - accountAddress: account.address, - algo: authenticator.type.toLowerCase() as Algo, - pubkey: new Uint8Array(), // to signify an AA account - authenticatorId: Number(splitAuthenticatorId[1]), - }); - } - } - } - } - return allAAAcounts; -} - -/** - * Get the last authenticator id of the abstract account - * @param abstractAccount - * @returns - */ -export async function getAALastAuthenticatorId( - abstractAccount: string, - indexerUrl: string, -): Promise { - const apolloClient = getApolloClient(indexerUrl); - const { data } = await apolloClient.query<{ - smartAccount: { id: string; latestAuthenticatorId: number }; - }>({ - query: SingleSmartWalletQuery, - variables: { - id: abstractAccount, - }, - }); - if (!data || !data.smartAccount || !data.smartAccount.latestAuthenticatorId) { - return 0; - } - return data.smartAccount.latestAuthenticatorId; -} - -/** - * Get the last authenticator id of the abstract account - * @param abstractAccount - * @returns - */ -export async function getAuthenticatorIdByAuthenticatorIndex( - abstractAccount: string, - authenticatorIndex: number, - indexerUrl: string, -): Promise { - const apolloClient = getApolloClient(indexerUrl); - const { data } = await apolloClient.query<{ - smartAccounts: { - nodes: { - authenticators: { - nodes: { - authenticator: string; - authenticatorIndex: number; - id: string; - type: string; - version: string; - }[]; - }; - id: string; - }[]; - }; - }>({ - query: SmartWalletIndexQueryByAccountId, - variables: { - id: abstractAccount, - index: authenticatorIndex, - }, - }); - if (!data || !data.smartAccounts) { - return 0; - } - - if (data.smartAccounts.nodes.length > 1) { - console.warn( - "Unexpected behavior. Indexer returned multiple smart accounts", - ); - } +// TODO: Dashboard-specific function - commented out to allow build +// /** +// * This method gets all the AA accounts in which the signers in the accountData +// * are authenticators for +// * @param accounts the account data of the signer +// * @param abstractAccount the abstract account address +// **/ +// export async function getAAccounts( +// accounts: readonly AccountData[], +// abstractAccount: string, +// indexerUrl: string, +// ): Promise { +// const defaultData: AAccountData = { +// address: "", +// accountAddress: "", +// algo: AAAlgo.Secp256K1, +// pubkey: new Uint8Array(), +// authenticatorId: 0, +// }; +// const allAAAcounts: AAccountData[] = []; +// // here we get all the accounts of the super DirectSecp256k1HdWallet +// // class then we use the public key and algo type to query the xion-indexer +// // for the abstract account authenticators matching the public key and algo type +// const apolloClient = getApolloClient(indexerUrl); +// if (!apolloClient || !accounts || accounts.length === 0) { +// return [defaultData]; +// } +// for (const account of accounts) { +// const { data } = await apolloClient.query({ +// query: AllSmartWalletQueryByIdAndTypeAndAuthenticator, +// variables: { +// id: abstractAccount, +// type: AAAlgo[account.algo], +// authenticator: Buffer.from(account.pubkey).toString("base64"), +// }, +// }); +// if (data) { +// const smartAccounts: ISmartAccounts = data.smartAccounts; +// if (!smartAccounts.nodes.length) { +// // No smart account found for this account +// continue; +// } +// for (const node of smartAccounts.nodes) { +// const smartAccountAuthenticators: INodes = +// node.authenticators; +// if (!smartAccountAuthenticators.nodes.length) { +// // No authenticator found for this account +// continue; +// } +// for (const authenticator of smartAccountAuthenticators.nodes) { +// const splitAuthenticatorId = authenticator.id.split("-"); +// allAAAcounts.push({ +// address: splitAuthenticatorId[0], +// accountAddress: account.address, +// algo: authenticator.type.toLowerCase() as Algo, +// pubkey: new Uint8Array(), // to signify an AA account +// authenticatorId: Number(splitAuthenticatorId[1]), +// }); +// } +// } +// } +// } +// return allAAAcounts; +// } - if (data.smartAccounts.nodes[0].authenticators.nodes.length > 1) { - console.warn( - "Unexpected behavior. Indexer returned multiple authenticators", - ); - } +// TODO: Dashboard-specific function - commented out to allow build +// /** +// * Get the last authenticator id of the abstract account +// * @param abstractAccount +// * @returns +// */ +// export async function getAALastAuthenticatorId( +// abstractAccount: string, +// indexerUrl: string, +// ): Promise { +// const apolloClient = getApolloClient(indexerUrl); +// const { data } = await apolloClient.query<{ +// smartAccount: { id: string; latestAuthenticatorId: number }; +// }>({ +// query: SingleSmartWalletQuery, +// variables: { +// id: abstractAccount, +// }, +// }); +// if (!data || !data.smartAccount || !data.smartAccount.latestAuthenticatorId) { +// return 0; +// } +// return data.smartAccount.latestAuthenticatorId; +// } - // Always returning the first one found because this query should only return an array of 1 - return ( - data.smartAccounts.nodes[0].authenticators.nodes[0].authenticatorIndex || 0 - ); -} +// TODO: Dashboard-specific function - commented out to allow build +// /** +// * Get the last authenticator id of the abstract account +// * @param abstractAccount +// * @returns +// */ +// export async function getAuthenticatorIdByAuthenticatorIndex( +// abstractAccount: string, +// authenticatorIndex: number, +// indexerUrl: string, +// ): Promise { +// const apolloClient = getApolloClient(indexerUrl); +// const { data } = await apolloClient.query<{ +// smartAccounts: { +// nodes: { +// authenticators: { +// nodes: { +// authenticator: string; +// authenticatorIndex: number; +// id: string; +// type: string; +// version: string; +// }[]; +// }; +// id: string; +// }[]; +// }; +// }>({ +// query: SmartWalletIndexQueryByAccountId, +// variables: { +// id: abstractAccount, +// index: authenticatorIndex, +// }, +// }); +// if (!data || !data.smartAccounts) { +// return 0; +// } +// +// if (data.smartAccounts.nodes.length > 1) { +// console.warn( +// "Unexpected behavior. Indexer returned multiple smart accounts", +// ); +// } +// +// if (data.smartAccounts.nodes[0].authenticators.nodes.length > 1) { +// console.warn( +// "Unexpected behavior. Indexer returned multiple authenticators", +// ); +// } +// +// // Always returning the first one found because this query should only return an array of 1 +// return ( +// data.smartAccounts.nodes[0].authenticators.nodes[0].authenticatorIndex || 0 +// ); +// } -/** - * Build an add authenticator message for the abstract account - * @param authType - * @param abstractAccount the abstract account address - * @param authData - * @returns - */ -export async function buildAddJWTAuthenticatorMsg( - abstractAccount: string, - session: OTPsAuthenticateResponse, // this is the extra data required for the authenticator, - indexerUrl: string, - aud: string, -): Promise { - // get the AA lastAuthenticatorId - const lastAuthenticatorId = await getAALastAuthenticatorId( - abstractAccount, - indexerUrl, - ); - let addAuthMsg: AddAuthenticator = { - add_auth_method: { - add_authenticator: { - Jwt: { - id: lastAuthenticatorId + 1, - aud, - sub: session.user.user_id, - token: session.session_token, - }, - }, - }, - }; - return addAuthMsg; -} +// TODO: Dashboard-specific function - commented out to allow build +// /** +// * Build an add authenticator message for the abstract account +// * @param authType +// * @param abstractAccount the abstract account address +// * @param authData +// * @returns +// */ +// export async function buildAddJWTAuthenticatorMsg( +// abstractAccount: string, +// session: OTPsAuthenticateResponse, // this is the extra data required for the authenticator, +// indexerUrl: string, +// aud: string, +// ): Promise { +// // get the AA lastAuthenticatorId +// const lastAuthenticatorId = await getAALastAuthenticatorId( +// abstractAccount, +// indexerUrl, +// ); +// let addAuthMsg: AddAuthenticator = { +// add_auth_method: { +// add_authenticator: { +// Jwt: { +// id: lastAuthenticatorId + 1, +// aud, +// sub: session.user.user_id, +// token: session.session_token, +// }, +// }, +// }, +// }; +// return addAuthMsg; +// } export function encodeHex(bytes: Uint8Array) { return [...bytes].map((byte) => byte.toString(16).padStart(2, "0")).join(""); diff --git a/packages/signers/src/signers/utils/webauthn-utils.ts b/packages/signers/src/signers/utils/webauthn-utils.ts new file mode 100644 index 00000000..661a05f4 --- /dev/null +++ b/packages/signers/src/signers/utils/webauthn-utils.ts @@ -0,0 +1,100 @@ +import type { RegistrationPublicKeyCredential } from "@github/webauthn-json/browser-ponyfill"; + +type PasskeyStorage = Record; // Map of address -> registrations + +const STORAGE_KEY = "xionStoredPasskeys"; + +// Retrieve the entire passkey storage object from localStorage +function getPasskeyStorage(): PasskeyStorage { + const storedData = localStorage.getItem(STORAGE_KEY); + return storedData ? JSON.parse(storedData) : {}; +} + +// Save the entire passkey storage object back to localStorage +function setPasskeyStorage(storage: PasskeyStorage): void { + localStorage.setItem(STORAGE_KEY, JSON.stringify(storage, null, 2)); +} + +// Get registrations for a specific address +export function getRegistrations( + address: string, +): RegistrationPublicKeyCredential[] { + const storage = getPasskeyStorage(); + return storage[address] || []; +} + +// Save a new registration for a specific address +export function saveRegistration( + address: string, + registration: RegistrationPublicKeyCredential, +): void { + const storage = getPasskeyStorage(); + const registrations = storage[address] || []; + registrations.push(registration); + storage[address] = registrations; // Update the storage object + setPasskeyStorage(storage); +} + +// Convert a URL-safe Base64 string to a Buffer +function getBufferFromId(base64Url: string): ArrayBuffer { + const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); + const paddedBase64 = base64.padEnd( + base64.length + ((4 - (base64.length % 4)) % 4), + "=", + ); + return Buffer.from(paddedBase64, "base64").buffer; +} + +// Retrieve registered credentials for a specific address to exclude during registration +export function registeredCredentials( + address?: string, +): PublicKeyCredentialDescriptor[] { + const storage = getPasskeyStorage(); + + // If an address is provided, get credentials for that address only + const registrations = address + ? getRegistrations(address) + : Object.values(storage).flat(); // Get all registrations across all addresses + + return registrations.map((reg) => ({ + id: getBufferFromId(reg.id), + type: reg.type as PublicKeyCredentialType, + })); +} + +// Utility to convert a URL-safe Base64 string to standard Base64 +export function convertToStandardBase64(urlSafeBase64: string): string { + let base64 = urlSafeBase64.replace(/-/g, "+").replace(/_/g, "/"); + while (base64.length % 4 !== 0) { + base64 += "="; + } + return base64; +} + +// Utility to convert a standard Base64 string to a URL-safe Base64 string +export function toUrlSafeBase64(base64: string): string { + return base64.replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); +} + +// Removes a specific registration for a given address +export function removeRegistration( + address: string, + credentialId: string, +): void { + const storage = getPasskeyStorage(); + const registrations = storage[address] || []; + + // Filter out the credential with the matching id + const updatedRegistrations = registrations.filter( + (reg) => reg.id !== toUrlSafeBase64(credentialId), + ); + + // If there are no registrations left, delete the address key; otherwise, update it + if (updatedRegistrations.length === 0) { + delete storage[address]; + } else { + storage[address] = updatedRegistrations; + } + + setPasskeyStorage(storage); +} diff --git a/packages/wallet-connectors/package.json b/packages/wallet-connectors/package.json index 25189209..686d773e 100644 --- a/packages/wallet-connectors/package.json +++ b/packages/wallet-connectors/package.json @@ -23,6 +23,12 @@ "buffer": "^6.0.3" }, "devDependencies": { - "@types/node": "^20.0.0" + "@burnt-labs/eslint-config-custom": "workspace:*", + "@burnt-labs/tsconfig": "workspace:*", + "@types/node": "^20.0.0", + "eslint": "^8.48.0", + "rimraf": "^5.0.5", + "tsup": "^6.0.1", + "typescript": "^5.2.2" } } diff --git a/packages/wallet-connectors/src/browser/cosmos.ts b/packages/wallet-connectors/src/browser/cosmos.ts index fd2c2c9f..d3fa3980 100644 --- a/packages/wallet-connectors/src/browser/cosmos.ts +++ b/packages/wallet-connectors/src/browser/cosmos.ts @@ -4,7 +4,7 @@ */ import { Buffer } from "buffer"; -import { WalletAccountError, getErrorMessageForUI } from "./errors"; +import { WalletAccountError, getErrorMessageForUI } from "./errors/WalletAccountError"; /** * Gets Secp256k1 public key from Cosmos wallets (Keplr/Leap/OKX) @@ -153,9 +153,10 @@ export async function signWithSecp256k1Wallet( ); } - // Convert base64 signature to hex - const signatureBytes = Buffer.from(response.signature, "base64"); - const signatureHex = signatureBytes.toString("hex"); + // Convert signature to hex (response.signature is a Uint8Array) + const signatureHex = Array.from(response.signature as Uint8Array) + .map((b: number) => b.toString(16).padStart(2, "0")) + .join(""); return signatureHex; } catch (error) { diff --git a/packages/wallet-connectors/src/browser/ethereum.ts b/packages/wallet-connectors/src/browser/ethereum.ts index 89e4e58e..0f316e6a 100644 --- a/packages/wallet-connectors/src/browser/ethereum.ts +++ b/packages/wallet-connectors/src/browser/ethereum.ts @@ -3,7 +3,7 @@ * Extracted from dashboard utils/wallet-utils.ts */ -import { WalletAccountError, getErrorMessageForUI } from "./errors"; +import { WalletAccountError, getErrorMessageForUI } from "./errors/WalletAccountError"; /** * Gets Ethereum wallet address from MetaMask diff --git a/packages/wallet-connectors/src/global.d.ts b/packages/wallet-connectors/src/global.d.ts new file mode 100644 index 00000000..f0f77999 --- /dev/null +++ b/packages/wallet-connectors/src/global.d.ts @@ -0,0 +1,78 @@ +/** + * Global type declarations for browser wallet extensions + */ + +interface EthereumProvider { + request: (args: { method: string; params?: unknown[] }) => Promise; + on?: (event: string, handler: (...args: unknown[]) => void) => void; + removeListener?: ( + event: string, + handler: (...args: unknown[]) => void, + ) => void; + selectedAddress?: string; + chainId?: string; + isMetaMask?: boolean; +} + +interface KeplrKey { + name: string; + algo: string; + pubKey: Uint8Array; + address: Uint8Array; + bech32Address: string; + isNanoLedger?: boolean; + isKeystone?: boolean; +} + +interface KeplrIntereactionOptions { + readonly sign?: { + readonly preferNoSetFee?: boolean; + readonly preferNoSetMemo?: boolean; + readonly disableBalanceCheck?: boolean; + }; +} + +interface Keplr { + readonly version: string; + enable(chainIds: string | string[]): Promise; + getKey(chainId: string): Promise; + signArbitrary( + chainId: string, + signer: string, + data: string | Uint8Array, + ): Promise<{ pubKey: Uint8Array; signature: Uint8Array }>; + experimentalSuggestChain(chainInfo: unknown): Promise; + getOfflineSigner( + chainId: string, + options?: KeplrIntereactionOptions, + ): unknown; + getOfflineSignerOnlyAmino( + chainId: string, + options?: KeplrIntereactionOptions, + ): unknown; + getOfflineSignerAuto( + chainId: string, + options?: KeplrIntereactionOptions, + ): Promise; + signDirect( + chainId: string, + signer: string, + signDoc: { + bodyBytes?: Uint8Array | null; + authInfoBytes?: Uint8Array | null; + chainId?: string | null; + accountNumber?: string | null; + }, + ): Promise; +} + +interface OKXWallet { + keplr?: Keplr; +} + +interface Window { + ethereum?: EthereumProvider; + keplr?: Keplr; + leap?: Keplr; + okxwallet?: OKXWallet; +} \ No newline at end of file diff --git a/packages/wallet-connectors/src/types/api.ts b/packages/wallet-connectors/src/types/api.ts index d9637a34..742c857f 100644 --- a/packages/wallet-connectors/src/types/api.ts +++ b/packages/wallet-connectors/src/types/api.ts @@ -10,6 +10,8 @@ // Placeholder - copy types from dashboard +import { WalletType } from "./wallet"; + export interface PrepareSignatureRequest { wallet_type: WalletType; address?: string; // Required for EthWallet diff --git a/packages/wallet-connectors/tsconfig.json b/packages/wallet-connectors/tsconfig.json index f62f42c1..f8326519 100644 --- a/packages/wallet-connectors/tsconfig.json +++ b/packages/wallet-connectors/tsconfig.json @@ -1,9 +1,16 @@ { - "extends": "../../tsconfig.json", "compilerOptions": { + "target": "ES2020", + "module": "ESNext", + "lib": ["ES2020", "DOM"], + "moduleResolution": "node", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, "outDir": "./dist", "rootDir": "./src", - "composite": true + "declaration": true, + "declarationMap": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts"] diff --git a/packages/wallet-connectors/tsup.config.ts b/packages/wallet-connectors/tsup.config.ts index 4dff9109..8e2ebcf1 100644 --- a/packages/wallet-connectors/tsup.config.ts +++ b/packages/wallet-connectors/tsup.config.ts @@ -3,9 +3,12 @@ import { defineConfig } from "tsup"; export default defineConfig({ entry: ["src/index.ts"], format: ["cjs", "esm"], - dts: true, + dts: { + resolve: true, + }, splitting: false, sourcemap: true, clean: true, treeshake: true, + tsconfig: "./tsconfig.json", }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 97059255..b48d2e3f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,3 +1,4 @@ +lockfileVersion: '6.0' lockfileVersion: "9.0" settings: @@ -19,7 +20,7 @@ importers: version: 0.5.1 "@changesets/cli": specifier: ^2.27.1 - version: 2.29.6(@types/node@20.19.11) + version: 2.29.7 eslint: specifier: ^8.48.0 version: 8.57.1 @@ -67,7 +68,7 @@ importers: version: 0.9.0 next: specifier: ^14.0.3 - version: 14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.32(react-dom@18.3.1)(react@18.3.1) react: specifier: ^18.2.0 version: 18.3.1 @@ -89,16 +90,16 @@ importers: version: 13.5.11 "@opennextjs/cloudflare": specifier: ^1.0.4 - version: 1.7.1(wrangler@4.33.2) - "@types/node": + version: 1.8.2(wrangler@4.37.1) + '@types/node': specifier: ^20 - version: 20.19.11 - "@types/react": + version: 20.19.16 + '@types/react': specifier: ^18.2.47 - version: 18.3.23 - "@types/react-dom": + version: 18.3.24 + '@types/react-dom': specifier: ^18.2.18 - version: 18.3.7(@types/react@18.3.23) + version: 18.3.7(@types/react@18.3.24) autoprefixer: specifier: ^10.4.13 version: 10.4.21(postcss@8.5.6) @@ -110,13 +111,13 @@ importers: version: 8.5.6 tailwindcss: specifier: ^3.2.4 - version: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)) + version: 3.4.17 typescript: specifier: ^5.2.2 version: 5.9.2 wrangler: specifier: ^4.16.0 - version: 4.33.2 + version: 4.37.1 packages/abstraxion: dependencies: @@ -126,10 +127,16 @@ importers: "@burnt-labs/constants": specifier: workspace:* version: link:../constants - "@burnt-labs/ui": + '@burnt-labs/signers': + specifier: workspace:* + version: link:../signers + '@burnt-labs/ui': specifier: workspace:* version: link:../ui - "@cosmjs/amino": + '@burnt-labs/wallet-connectors': + specifier: workspace:* + version: link:../wallet-connectors + '@cosmjs/amino': specifier: ^0.36.0 version: 0.36.0 "@cosmjs/cosmwasm-stargate": @@ -155,7 +162,10 @@ importers: version: 0.36.0 "@types/react-dom": specifier: ^18.2.18 - version: 18.3.7(@types/react@18.3.23) + version: 18.3.7(@types/react@18.3.24) + buffer: + specifier: ^6.0.3 + version: 6.0.3 cosmjs-types: specifier: ^0.9.0 version: 0.9.0 @@ -174,25 +184,25 @@ importers: version: link:../tsconfig "@testing-library/jest-dom": specifier: ^6.4.2 - version: 6.7.0 - "@testing-library/react": + version: 6.8.0 + '@testing-library/react': specifier: ^14.2.1 - version: 14.3.1(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@types/jest": + version: 14.3.1(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@types/jest': specifier: ^29.5.12 version: 29.5.14 "@types/node": specifier: ^20 - version: 20.19.11 - "@types/react": + version: 20.19.16 + '@types/react': specifier: ^18.2.47 - version: 18.3.23 + version: 18.3.24 autoprefixer: specifier: ^10.4.13 version: 10.4.21(postcss@8.5.6) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) + version: 29.7.0(@types/node@20.19.16)(ts-node@10.9.2) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -210,13 +220,13 @@ importers: version: 5.0.10 tailwindcss: specifier: ^3.2.4 - version: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)) + version: 3.4.17 ts-jest: specifier: ^29.1.2 - version: 29.4.1(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.17.19)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(typescript@5.9.2) + version: 29.4.2(@babel/core@7.28.4)(esbuild@0.17.19)(jest@29.7.0)(typescript@5.9.2) tsup: specifier: ^6.0.1 - version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2))(typescript@5.9.2) + version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2)(typescript@5.9.2) typescript: specifier: ^5.2.2 version: 5.9.2 @@ -263,22 +273,22 @@ importers: specifier: ^5.1.3 version: 5.10.0 react-native-get-random-values: - specifier: "*" - version: 1.11.0(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) + specifier: ^1.11.0 + version: 1.11.0(react-native@0.76.7) react-native-quick-crypto: - specifier: "*" - version: 0.7.17(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + specifier: ^0.7.0 + version: 0.7.17(react-native@0.76.7)(react@18.3.1) devDependencies: "@babel/core": specifier: ^7.24.5 - version: 7.28.3 - "@babel/preset-env": + version: 7.28.4 + '@babel/preset-env': specifier: ^7.24.5 - version: 7.28.3(@babel/core@7.28.3) - "@babel/preset-typescript": + version: 7.28.3(@babel/core@7.28.4) + '@babel/preset-typescript': specifier: ^7.26.0 - version: 7.27.1(@babel/core@7.28.3) - "@burnt-labs/eslint-config-custom": + version: 7.27.1(@babel/core@7.28.4) + '@burnt-labs/eslint-config-custom': specifier: workspace:* version: link:../eslint-config-custom "@burnt-labs/tailwind-config": @@ -292,8 +302,8 @@ importers: version: 29.5.14 "@types/node": specifier: ^20 - version: 20.19.11 - "@types/text-encoding": + version: 20.19.16 + '@types/text-encoding': specifier: ^0.0.39 version: 0.0.39 autoprefixer: @@ -301,13 +311,13 @@ importers: version: 10.4.21(postcss@8.5.6) babel-jest: specifier: ^29.7.0 - version: 29.7.0(@babel/core@7.28.3) + version: 29.7.0(@babel/core@7.28.4) buffer: specifier: ^6.0.3 version: 6.0.3 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) + version: 29.7.0(@types/node@20.19.16)(ts-node@10.9.2) rimraf: specifier: ^5.0.5 version: 5.0.10 @@ -316,10 +326,10 @@ importers: version: 0.7.0 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.19.11)(typescript@5.9.2) + version: 10.9.2(@types/node@20.19.16)(typescript@5.9.2) tsup: specifier: ^6.0.1 - version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2))(typescript@5.9.2) + version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2)(typescript@5.9.2) typescript: specifier: ^5.2.2 version: 5.9.2 @@ -340,22 +350,22 @@ importers: version: 0.36.0 "@react-native-async-storage/async-storage": specifier: 1.23.1 - version: 1.23.1(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) + version: 1.23.1(react-native@0.76.7) expo-linking: specifier: ~7.0.5 - version: 7.0.5(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + version: 7.0.5(expo@54.0.8)(react-native@0.76.7)(react@18.3.1) expo-web-browser: specifier: ~14.0.2 - version: 14.0.2(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) + version: 14.0.2(expo@54.0.8)(react-native@0.76.7) jose: specifier: ^5.1.3 version: 5.10.0 react-native-get-random-values: - specifier: "*" - version: 1.11.0(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) + specifier: ^1.11.0 + version: 1.11.0(react-native@0.76.7) react-native-quick-crypto: - specifier: "*" - version: 0.7.17(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + specifier: ^0.7.0 + version: 0.7.17(react-native@0.76.7)(react@18.3.1) devDependencies: "@burnt-labs/eslint-config-custom": specifier: workspace:* @@ -368,46 +378,101 @@ importers: version: 29.5.14 "@types/react": specifier: ^18.2.47 - version: 18.3.23 - "@types/react-native": + version: 18.3.24 + '@types/react-native': specifier: ^0.72.2 - version: 0.72.8(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) + version: 0.72.8(react-native@0.76.7) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) + version: 29.7.0(@types/node@20.19.16)(ts-node@10.9.2) react: specifier: ^18.2.0 version: 18.3.1 react-native: specifier: 0.76.7 - version: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) + version: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) rimraf: specifier: ^5.0.5 version: 5.0.10 ts-jest: specifier: ^29.1.2 - version: 29.4.1(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.17.19)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(typescript@5.9.2) + version: 29.4.2(@babel/core@7.28.4)(esbuild@0.17.19)(jest@29.7.0)(typescript@5.9.2) + tsup: + specifier: ^6.0.1 + version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2)(typescript@5.9.2) + typescript: + specifier: ^5.2.2 + version: 5.9.2 + + packages/account-management: + dependencies: + '@burnt-labs/signers': + specifier: workspace:* + version: link:../signers + '@cosmjs/cosmwasm-stargate': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/stargate': + specifier: ^0.36.0 + version: 0.36.0 + camelcase-keys: + specifier: ^9.1.3 + version: 9.1.3 + cosmjs-types: + specifier: ^0.9.0 + version: 0.9.0 + devDependencies: + '@burnt-labs/eslint-config-custom': + specifier: workspace:* + version: link:../eslint-config-custom + '@burnt-labs/tsconfig': + specifier: workspace:* + version: link:../tsconfig + '@types/node': + specifier: ^20 + version: 20.19.16 + eslint: + specifier: ^8.48.0 + version: 8.57.1 + prettier: + specifier: ^3.0.3 + version: 3.6.2 + rimraf: + specifier: ^5.0.5 + version: 5.0.10 tsup: specifier: ^6.0.1 - version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2))(typescript@5.9.2) + version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2)(typescript@5.9.2) typescript: specifier: ^5.2.2 version: 5.9.2 + vitest: + specifier: ^1.0.0 + version: 1.6.1(@types/node@20.19.16) packages/constants: devDependencies: - "@burnt-labs/eslint-config-custom": + '@burnt-labs/eslint-config-custom': specifier: workspace:* version: link:../eslint-config-custom - "@burnt-labs/tsconfig": + '@burnt-labs/tsconfig': specifier: workspace:* version: link:../tsconfig + '@types/node': + specifier: ^20 + version: 20.19.16 + eslint: + specifier: ^8.48.0 + version: 8.57.1 + prettier: + specifier: ^3.0.3 + version: 3.6.2 rimraf: specifier: ^5.0.5 version: 5.0.10 tsup: specifier: ^6.0.1 - version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2))(typescript@5.9.2) + version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2)(typescript@5.9.2) typescript: specifier: ^5.2.2 version: 5.9.2 @@ -416,7 +481,7 @@ importers: devDependencies: "@vercel/style-guide": specifier: ^5.1.0 - version: 5.2.0(@next/eslint-plugin-next@14.0.4)(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11))(prettier@3.6.2)(typescript@5.9.2) + version: 5.2.0(eslint@8.57.1)(prettier@3.6.2)(typescript@5.9.2) eslint-config-turbo: specifier: ^1.10.12 version: 1.13.4(eslint@8.57.1) @@ -426,79 +491,85 @@ importers: packages/signers: dependencies: - "@apollo/client": - specifier: ^3.8.8 - version: 3.13.9(@types/react@18.3.23)(graphql@16.11.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@cosmjs/amino": - specifier: ^0.32.4 - version: 0.32.4 - "@cosmjs/cosmwasm-stargate": - specifier: ^0.32.4 - version: 0.32.4 - "@cosmjs/crypto": - specifier: ^0.32.4 - version: 0.32.4 - "@cosmjs/encoding": - specifier: ^0.32.4 - version: 0.32.4 - "@cosmjs/math": - specifier: ^0.32.4 - version: 0.32.4 - "@cosmjs/proto-signing": - specifier: ^0.32.4 - version: 0.32.4 - "@cosmjs/stargate": - specifier: ^0.32.4 - version: 0.32.4 - "@cosmjs/tendermint-rpc": - specifier: ^0.32.4 - version: 0.32.4 - "@cosmjs/utils": - specifier: ^0.32.4 - version: 0.32.4 - "@protobuf-ts/runtime": - specifier: ^2.9.3 + '@burnt-labs/constants': + specifier: workspace:* + version: link:../constants + '@cosmjs/amino': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/cosmwasm-stargate': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/crypto': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/encoding': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/math': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/proto-signing': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/stargate': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/tendermint-rpc': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/utils': + specifier: ^0.36.0 + version: 0.36.0 + '@github/webauthn-json': + specifier: ^2.1.1 + version: 2.1.1 + '@protobuf-ts/runtime': + specifier: ^2.9.4 version: 2.11.1 bech32: specifier: ^2.0.0 version: 2.0.0 + buffer: + specifier: ^6.0.3 + version: 6.0.3 cosmjs-types: specifier: ^0.9.0 version: 0.9.0 - stytch: - specifier: ^9.0.6 - version: 9.1.0 + long: + specifier: ^5.2.3 + version: 5.3.2 + protobufjs: + specifier: ^7.2.4 + version: 7.5.4 devDependencies: - "@burnt-labs/constants": - specifier: workspace:* - version: link:../constants - "@burnt-labs/eslint-config-custom": + '@burnt-labs/eslint-config-custom': specifier: workspace:* version: link:../eslint-config-custom - "@types/node": + '@burnt-labs/tsconfig': + specifier: workspace:* + version: link:../tsconfig + '@types/node': specifier: ^20 - version: 20.19.11 + version: 20.19.16 eslint: specifier: ^8.48.0 version: 8.57.1 - long: - specifier: ^5.2.3 - version: 5.3.2 prettier: specifier: ^3.0.3 version: 3.6.2 - protobufjs: - specifier: ^7.2.5 - version: 7.5.4 rimraf: specifier: ^5.0.5 version: 5.0.10 tsup: specifier: ^6.0.1 - version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2))(typescript@5.9.2) + version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2)(typescript@5.9.2) typescript: specifier: ^5.2.2 version: 5.9.2 + vitest: + specifier: ^1.0.0 + version: 1.6.1(@types/node@20.19.16) packages/tailwind-config: devDependencies: @@ -507,10 +578,10 @@ importers: version: 5.0.10 tailwindcss: specifier: ^3.2.4 - version: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)) + version: 3.4.17 tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@20.19.11))) + version: 1.0.7(tailwindcss@3.4.17) packages/tsconfig: devDependencies: @@ -522,16 +593,16 @@ importers: dependencies: "@radix-ui/react-dialog": specifier: ^1.0.5 - version: 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-popover": + version: 1.1.15(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-popover': specifier: ^1.0.7 - version: 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-visually-hidden": + version: 1.1.15(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-visually-hidden': specifier: ^1.1.0 - version: 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@types/react-dom": + version: 1.2.3(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@types/react-dom': specifier: ^18.2.18 - version: 18.3.7(@types/react@18.3.23) + version: 18.3.7(@types/react@18.3.24) devDependencies: "@burnt-labs/eslint-config-custom": specifier: workspace:* @@ -544,7 +615,7 @@ importers: version: link:../tsconfig "@types/react": specifier: ^18.2.47 - version: 18.3.23 + version: 18.3.24 autoprefixer: specifier: ^10.4.13 version: 10.4.21(postcss@8.5.6) @@ -568,13249 +639,280 @@ importers: version: 2.6.0 tailwindcss: specifier: ^3.2.4 - version: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)) + version: 3.4.17 + tsup: + specifier: ^6.0.1 + version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2)(typescript@5.9.2) + typescript: + specifier: ^5.2.2 + version: 5.9.2 + + packages/wallet-connectors: + dependencies: + '@burnt-labs/signers': + specifier: workspace:* + version: link:../signers + '@cosmjs/amino': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/crypto': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/encoding': + specifier: ^0.36.0 + version: 0.36.0 + '@cosmjs/proto-signing': + specifier: ^0.36.0 + version: 0.36.0 + buffer: + specifier: ^6.0.3 + version: 6.0.3 + devDependencies: + '@burnt-labs/eslint-config-custom': + specifier: workspace:* + version: link:../eslint-config-custom + '@burnt-labs/tsconfig': + specifier: workspace:* + version: link:../tsconfig + '@types/node': + specifier: ^20.0.0 + version: 20.19.16 + eslint: + specifier: ^8.48.0 + version: 8.57.1 + rimraf: + specifier: ^5.0.5 + version: 5.0.10 tsup: specifier: ^6.0.1 - version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2))(typescript@5.9.2) + version: 6.7.0(postcss@8.5.6)(ts-node@10.9.2)(typescript@5.9.2) typescript: specifier: ^5.2.2 version: 5.9.2 packages: - "@0no-co/graphql.web@1.2.0": - resolution: - { - integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==, - } + + /@0no-co/graphql.web@1.2.0: + resolution: {integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 peerDependenciesMeta: graphql: optional: true + dev: false - "@adobe/css-tools@4.4.4": - resolution: - { - integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==, - } - - "@alloc/quick-lru@5.2.0": - resolution: - { - integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==, - } - engines: { node: ">=10" } - - "@ampproject/remapping@2.3.0": - resolution: - { - integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==, - } - engines: { node: ">=6.0.0" } - - "@apollo/client@3.13.9": - resolution: - { - integrity: sha512-RStSzQfL1XwL6/NWd7W8avhGQYTgPCtJ+qHkkTTSj9Upp3VVm6Oppv81YWdXG1FgEpDPW4hvCrTUELdcC4inCQ==, - } - peerDependencies: - graphql: ^15.0.0 || ^16.0.0 - graphql-ws: ^5.5.5 || ^6.0.3 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc - subscriptions-transport-ws: ^0.9.0 || ^0.11.0 - peerDependenciesMeta: - graphql-ws: - optional: true - react: - optional: true - react-dom: - optional: true - subscriptions-transport-ws: - optional: true + /@adobe/css-tools@4.4.4: + resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} + dev: true - "@ast-grep/napi-darwin-arm64@0.35.0": - resolution: - { - integrity: sha512-T+MN4Oinc+sXjXCIHzfxDDWY7r2pKgPxM6zVeVlkMTrJV2mJtyKYBIS+CABhRM6kflps2T2I6l4DGaKV/8Ym9w==, - } - engines: { node: ">= 10" } + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + dev: true + + /@ast-grep/napi-darwin-arm64@0.35.0: + resolution: {integrity: sha512-T+MN4Oinc+sXjXCIHzfxDDWY7r2pKgPxM6zVeVlkMTrJV2mJtyKYBIS+CABhRM6kflps2T2I6l4DGaKV/8Ym9w==} + engines: {node: '>= 10'} cpu: [arm64] os: [darwin] + requiresBuild: true + dev: true + optional: true - "@ast-grep/napi-darwin-x64@0.35.0": - resolution: - { - integrity: sha512-pEYiN6JI1HY2uWhMYJ9+3yIMyVYKuYdFzeD+dL7odA3qzK0o9N9AM3/NOt4ynU2EhufaWCJr0P5NoQ636qN6MQ==, - } - engines: { node: ">= 10" } + /@ast-grep/napi-darwin-x64@0.35.0: + resolution: {integrity: sha512-pEYiN6JI1HY2uWhMYJ9+3yIMyVYKuYdFzeD+dL7odA3qzK0o9N9AM3/NOt4ynU2EhufaWCJr0P5NoQ636qN6MQ==} + engines: {node: '>= 10'} cpu: [x64] os: [darwin] + requiresBuild: true + dev: true + optional: true - "@ast-grep/napi-linux-arm64-gnu@0.35.0": - resolution: - { - integrity: sha512-NBuzQngABGKz7lhG08IQb+7nPqUx81Ol37xmS3ZhVSdSgM0mtp93rCbgFTkJcAFE8IMfCHQSg7G4g0Iotz4ABQ==, - } - engines: { node: ">= 10" } + /@ast-grep/napi-linux-arm64-gnu@0.35.0: + resolution: {integrity: sha512-NBuzQngABGKz7lhG08IQb+7nPqUx81Ol37xmS3ZhVSdSgM0mtp93rCbgFTkJcAFE8IMfCHQSg7G4g0Iotz4ABQ==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] + requiresBuild: true + dev: true + optional: true - "@ast-grep/napi-linux-arm64-musl@0.35.0": - resolution: - { - integrity: sha512-1EcvHPwyWpCL/96LuItBYGfeI5FaMTRvL+dHbO/hL5q1npqbb5qn+ppJwtNOjTPz8tayvgggxVk9T4C2O7taYA==, - } - engines: { node: ">= 10" } + /@ast-grep/napi-linux-arm64-musl@0.35.0: + resolution: {integrity: sha512-1EcvHPwyWpCL/96LuItBYGfeI5FaMTRvL+dHbO/hL5q1npqbb5qn+ppJwtNOjTPz8tayvgggxVk9T4C2O7taYA==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] + requiresBuild: true + dev: true + optional: true - "@ast-grep/napi-linux-x64-gnu@0.35.0": - resolution: - { - integrity: sha512-FDzNdlqmQnsiWXhnLxusw5AOfEcEM+5xtmrnAf3SBRFr86JyWD9qsynnFYC2pnP9hlMfifNH2TTmMpyGJW49Xw==, - } - engines: { node: ">= 10" } + /@ast-grep/napi-linux-x64-gnu@0.35.0: + resolution: {integrity: sha512-FDzNdlqmQnsiWXhnLxusw5AOfEcEM+5xtmrnAf3SBRFr86JyWD9qsynnFYC2pnP9hlMfifNH2TTmMpyGJW49Xw==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] + requiresBuild: true + dev: true + optional: true - "@ast-grep/napi-linux-x64-musl@0.35.0": - resolution: - { - integrity: sha512-wlmndjfBafT8u5p4DBnoRQyoCSGNuVSz7rT3TqhvlHcPzUouRWMn95epU9B1LNLyjXvr9xHeRjSktyCN28w57Q==, - } - engines: { node: ">= 10" } + /@ast-grep/napi-linux-x64-musl@0.35.0: + resolution: {integrity: sha512-wlmndjfBafT8u5p4DBnoRQyoCSGNuVSz7rT3TqhvlHcPzUouRWMn95epU9B1LNLyjXvr9xHeRjSktyCN28w57Q==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] + requiresBuild: true + dev: true + optional: true - "@ast-grep/napi-win32-arm64-msvc@0.35.0": - resolution: - { - integrity: sha512-gkhJeYc4rrZLX2icLxalPikTLMR57DuIYLwLr9g+StHYXIsGHrbfrE6Nnbdd8Izfs34ArFCrcwdaMrGlvOPSeg==, - } - engines: { node: ">= 10" } + /@ast-grep/napi-win32-arm64-msvc@0.35.0: + resolution: {integrity: sha512-gkhJeYc4rrZLX2icLxalPikTLMR57DuIYLwLr9g+StHYXIsGHrbfrE6Nnbdd8Izfs34ArFCrcwdaMrGlvOPSeg==} + engines: {node: '>= 10'} cpu: [arm64] os: [win32] + requiresBuild: true + dev: true + optional: true - "@ast-grep/napi-win32-ia32-msvc@0.35.0": - resolution: - { - integrity: sha512-OdUuRa3chHCZ65y+qALfkUjz0W0Eg21YZ9TyPquV5why07M6HAK38mmYGzLxFH6294SvRQhs+FA/rAfbKeH0jA==, - } - engines: { node: ">= 10" } + /@ast-grep/napi-win32-ia32-msvc@0.35.0: + resolution: {integrity: sha512-OdUuRa3chHCZ65y+qALfkUjz0W0Eg21YZ9TyPquV5why07M6HAK38mmYGzLxFH6294SvRQhs+FA/rAfbKeH0jA==} + engines: {node: '>= 10'} cpu: [ia32] os: [win32] + requiresBuild: true + dev: true + optional: true - "@ast-grep/napi-win32-x64-msvc@0.35.0": - resolution: - { - integrity: sha512-pcQRUHqbroTN1oQ56V982a7IZTUUySQYWa2KEyksiifHGuBuitlzcyzFGjT96ThcqD9XW0UVJMvpoF2Qjh006Q==, - } - engines: { node: ">= 10" } + /@ast-grep/napi-win32-x64-msvc@0.35.0: + resolution: {integrity: sha512-pcQRUHqbroTN1oQ56V982a7IZTUUySQYWa2KEyksiifHGuBuitlzcyzFGjT96ThcqD9XW0UVJMvpoF2Qjh006Q==} + engines: {node: '>= 10'} cpu: [x64] os: [win32] + requiresBuild: true + dev: true + optional: true - "@ast-grep/napi@0.35.0": - resolution: - { - integrity: sha512-3ucaaSxV6fxXoqHrE/rxAvP1THnDdY5jNzGlnvx+JvnY9C/dSRKc0jlRMRz59N3El572+/yNRUUpAV1T9aBJug==, - } - engines: { node: ">= 10" } - - "@aws-crypto/crc32@5.2.0": - resolution: - { - integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==, - } - engines: { node: ">=16.0.0" } - - "@aws-crypto/crc32c@5.2.0": - resolution: - { - integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==, - } - - "@aws-crypto/ie11-detection@3.0.0": - resolution: - { - integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==, - } - - "@aws-crypto/sha1-browser@5.2.0": - resolution: - { - integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==, - } - - "@aws-crypto/sha256-browser@3.0.0": - resolution: - { - integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==, - } - - "@aws-crypto/sha256-browser@5.2.0": - resolution: - { - integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==, - } - - "@aws-crypto/sha256-js@3.0.0": - resolution: - { - integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==, - } - - "@aws-crypto/sha256-js@5.2.0": - resolution: - { - integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==, - } - engines: { node: ">=16.0.0" } - - "@aws-crypto/supports-web-crypto@3.0.0": - resolution: - { - integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==, - } - - "@aws-crypto/supports-web-crypto@5.2.0": - resolution: - { - integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==, - } - - "@aws-crypto/util@3.0.0": - resolution: - { - integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==, - } - - "@aws-crypto/util@5.2.0": - resolution: - { - integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==, - } - - "@aws-sdk/client-cloudfront@3.398.0": - resolution: - { - integrity: sha512-kISKhqN1k48TaMPbLgq9jj7mO2jvbJdhirvfu4JW3jhFhENnkY0oCwTPvR4Q6Ne2as6GFAMo2XZDZq4rxC7YDw==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/client-dynamodb@3.868.0": - resolution: - { - integrity: sha512-a2uKLRplH3vTHgTHr+MaZ1YH0Sy0yVHK9rhM/drktxgXehMf4p7dZtt783c9SEupZvo46LxXryvwifoUdL4nRg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/client-lambda@3.865.0": - resolution: - { - integrity: sha512-ncCEW/kNRV8yJA/45z5HO6WEeihADzFY7RISfezDbvP3/X4dZb2gycRVPmJIE6CBqf01jwTkbG36qO+/iHIELg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/client-s3@3.864.0": - resolution: - { - integrity: sha512-QGYi9bWliewxumsvbJLLyx9WC0a4DP4F+utygBcq0zwPxaM0xDfBspQvP1dsepi7mW5aAjZmJ2+Xb7X0EhzJ/g==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/client-sqs@3.864.0": - resolution: - { - integrity: sha512-SxEdQW/g2hb7/O4juAQL0kOD86/QBUSNkdJ5rN3Nd04rJmYTCxe38iCJBT637n+hiedxThLuj8H9ZmY1/OSg7Q==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/client-sso@3.398.0": - resolution: - { - integrity: sha512-CygL0jhfibw4kmWXG/3sfZMFNjcXo66XUuPC4BqZBk8Rj5vFoxp1vZeMkDLzTIk97Nvo5J5Bh+QnXKhub6AckQ==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/client-sso@3.864.0": - resolution: - { - integrity: sha512-THiOp0OpQROEKZ6IdDCDNNh3qnNn/kFFaTSOiugDpgcE5QdsOxh1/RXq7LmHpTJum3cmnFf8jG59PHcz9Tjnlw==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/client-sts@3.398.0": - resolution: - { - integrity: sha512-/3Pa9wLMvBZipKraq3AtbmTfXW6q9kyvhwOno64f1Fz7kFb8ijQFMGoATS70B2pGEZTlxkUqJFWDiisT6Q6dFg==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/core@3.864.0": - resolution: - { - integrity: sha512-LFUREbobleHEln+Zf7IG83lAZwvHZG0stI7UU0CtwyuhQy5Yx0rKksHNOCmlM7MpTEbSCfntEhYi3jUaY5e5lg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/credential-provider-env@3.398.0": - resolution: - { - integrity: sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/credential-provider-env@3.864.0": - resolution: - { - integrity: sha512-StJPOI2Rt8UE6lYjXUpg6tqSZaM72xg46ljPg8kIevtBAAfdtq9K20qT/kSliWGIBocMFAv0g2mC0hAa+ECyvg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/credential-provider-http@3.864.0": - resolution: - { - integrity: sha512-E/RFVxGTuGnuD+9pFPH2j4l6HvrXzPhmpL8H8nOoJUosjx7d4v93GJMbbl1v/fkDLqW9qN4Jx2cI6PAjohA6OA==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/credential-provider-ini@3.398.0": - resolution: - { - integrity: sha512-AsK1lStK3nB9Cn6S6ODb1ktGh7SRejsNVQVKX3t5d3tgOaX+aX1Iwy8FzM/ZEN8uCloeRifUGIY9uQFygg5mSw==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/credential-provider-ini@3.864.0": - resolution: - { - integrity: sha512-PlxrijguR1gxyPd5EYam6OfWLarj2MJGf07DvCx9MAuQkw77HBnsu6+XbV8fQriFuoJVTBLn9ROhMr/ROAYfUg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/credential-provider-node@3.398.0": - resolution: - { - integrity: sha512-odmI/DSKfuWUYeDnGTCEHBbC8/MwnF6yEq874zl6+owoVv0ZsYP8qBHfiJkYqrwg7wQ7Pi40sSAPC1rhesGwzg==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/credential-provider-node@3.864.0": - resolution: - { - integrity: sha512-2BEymFeXURS+4jE9tP3vahPwbYRl0/1MVaFZcijj6pq+nf5EPGvkFillbdBRdc98ZI2NedZgSKu3gfZXgYdUhQ==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/credential-provider-process@3.398.0": - resolution: - { - integrity: sha512-WrkBL1W7TXN508PA9wRXPFtzmGpVSW98gDaHEaa8GolAPHMPa5t2QcC/z/cFpglzrcVv8SA277zu9Z8tELdZhg==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/credential-provider-process@3.864.0": - resolution: - { - integrity: sha512-Zxnn1hxhq7EOqXhVYgkF4rI9MnaO3+6bSg/tErnBQ3F8kDpA7CFU24G1YxwaJXp2X4aX3LwthefmSJHwcVP/2g==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/credential-provider-sso@3.398.0": - resolution: - { - integrity: sha512-2Dl35587xbnzR/GGZqA2MnFs8+kS4wbHQO9BioU0okA+8NRueohNMdrdQmQDdSNK4BfIpFspiZmFkXFNyEAfgw==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/credential-provider-sso@3.864.0": - resolution: - { - integrity: sha512-UPyPNQbxDwHVGmgWdGg9/9yvzuedRQVF5jtMkmP565YX9pKZ8wYAcXhcYdNPWFvH0GYdB0crKOmvib+bmCuwkw==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/credential-provider-web-identity@3.398.0": - resolution: - { - integrity: sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/credential-provider-web-identity@3.864.0": - resolution: - { - integrity: sha512-nNcjPN4SYg8drLwqK0vgVeSvxeGQiD0FxOaT38mV2H8cu0C5NzpvA+14Xy+W6vT84dxgmJYKk71Cr5QL2Oz+rA==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/endpoint-cache@3.804.0": - resolution: - { - integrity: sha512-TQVDkA/lV6ua75ELZaichMzlp6x7tDa1bqdy/+0ZftmODPtKXuOOEcJxmdN7Ui/YRo1gkRz2D9txYy7IlNg1Og==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-bucket-endpoint@3.862.0": - resolution: - { - integrity: sha512-Wcsc7VPLjImQw+CP1/YkwyofMs9Ab6dVq96iS8p0zv0C6YTaMjvillkau4zFfrrrTshdzFWKptIFhKK8Zsei1g==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-endpoint-discovery@3.862.0": - resolution: - { - integrity: sha512-43KnrSlzsa6/locegW9SLe/kMv51PPPAslDbBuLVtLcFUNWuCE7wgKTTzMPeA+NJQHKuJTFRR2TLKPYEs+4VJA==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-expect-continue@3.862.0": - resolution: - { - integrity: sha512-oG3AaVUJ+26p0ESU4INFn6MmqqiBFZGrebST66Or+YBhteed2rbbFl7mCfjtPWUFgquQlvT1UP19P3LjQKeKpw==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-flexible-checksums@3.864.0": - resolution: - { - integrity: sha512-MvakvzPZi9uyP3YADuIqtk/FAcPFkyYFWVVMf5iFs/rCdk0CUzn02Qf4CSuyhbkS6Y0KrAsMgKR4MgklPU79Wg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-host-header@3.398.0": - resolution: - { - integrity: sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/middleware-host-header@3.862.0": - resolution: - { - integrity: sha512-jDje8dCFeFHfuCAxMDXBs8hy8q9NCTlyK4ThyyfAj3U4Pixly2mmzY2u7b7AyGhWsjJNx8uhTjlYq5zkQPQCYw==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-location-constraint@3.862.0": - resolution: - { - integrity: sha512-MnwLxCw7Cc9OngEH3SHFhrLlDI9WVxaBkp3oTsdY9JE7v8OE38wQ9vtjaRsynjwu0WRtrctSHbpd7h/QVvtjyA==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-logger@3.398.0": - resolution: - { - integrity: sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/middleware-logger@3.862.0": - resolution: - { - integrity: sha512-N/bXSJznNBR/i7Ofmf9+gM6dx/SPBK09ZWLKsW5iQjqKxAKn/2DozlnE54uiEs1saHZWoNDRg69Ww4XYYSlG1Q==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-recursion-detection@3.398.0": - resolution: - { - integrity: sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/middleware-recursion-detection@3.862.0": - resolution: - { - integrity: sha512-KVoo3IOzEkTq97YKM4uxZcYFSNnMkhW/qj22csofLegZi5fk90ztUnnaeKfaEJHfHp/tm1Y3uSoOXH45s++kKQ==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-sdk-s3@3.864.0": - resolution: - { - integrity: sha512-GjYPZ6Xnqo17NnC8NIQyvvdzzO7dm+Ks7gpxD/HsbXPmV2aEfuFveJXneGW9e1BheSKFff6FPDWu8Gaj2Iu1yg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-sdk-sqs@3.862.0": - resolution: - { - integrity: sha512-DBX+xTAd3uhMYUFI3wIoSQYBmVFmq918Ah2t/NhTtkNmiuHAFxCy4fSzSklt9qS0i1WzccJEqOZNmqxGEFtolA==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-sdk-sts@3.398.0": - resolution: - { - integrity: sha512-+JH76XHEgfVihkY+GurohOQ5Z83zVN1nYcQzwCFnCDTh4dG4KwhnZKG+WPw6XJECocY0R+H0ivofeALHvVWJtQ==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/middleware-signing@3.398.0": - resolution: - { - integrity: sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/middleware-ssec@3.862.0": - resolution: - { - integrity: sha512-72VtP7DZC8lYTE2L3Efx2BrD98oe9WTK8X6hmd3WTLkbIjvgWQWIdjgaFXBs8WevsXkewIctfyA3KEezvL5ggw==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/middleware-user-agent@3.398.0": - resolution: - { - integrity: sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/middleware-user-agent@3.864.0": - resolution: - { - integrity: sha512-wrddonw4EyLNSNBrApzEhpSrDwJiNfjxDm5E+bn8n32BbAojXASH8W8jNpxz/jMgNkkJNxCfyqybGKzBX0OhbQ==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/nested-clients@3.864.0": - resolution: - { - integrity: sha512-H1C+NjSmz2y8Tbgh7Yy89J20yD/hVyk15hNoZDbCYkXg0M358KS7KVIEYs8E2aPOCr1sK3HBE819D/yvdMgokA==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/region-config-resolver@3.862.0": - resolution: - { - integrity: sha512-VisR+/HuVFICrBPY+q9novEiE4b3mvDofWqyvmxHcWM7HumTz9ZQSuEtnlB/92GVM3KDUrR9EmBHNRrfXYZkcQ==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/signature-v4-multi-region@3.864.0": - resolution: - { - integrity: sha512-w2HIn/WIcUyv1bmyCpRUKHXB5KdFGzyxPkp/YK5g+/FuGdnFFYWGfcO8O+How4jwrZTarBYsAHW9ggoKvwr37w==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/token-providers@3.398.0": - resolution: - { - integrity: sha512-nrYgjzavGCKJL/48Vt0EL+OlIc5UZLfNGpgyUW9cv3XZwl+kXV0QB+HH0rHZZLfpbBgZ2RBIJR9uD5ieu/6hpQ==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/token-providers@3.864.0": - resolution: - { - integrity: sha512-gTc2QHOBo05SCwVA65dUtnJC6QERvFaPiuppGDSxoF7O5AQNK0UR/kMSenwLqN8b5E1oLYvQTv3C1idJLRX0cg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/types@3.398.0": - resolution: - { - integrity: sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/types@3.862.0": - resolution: - { - integrity: sha512-Bei+RL0cDxxV+lW2UezLbCYYNeJm6Nzee0TpW0FfyTRBhH9C1XQh4+x+IClriXvgBnRquTMMYsmJfvx8iyLKrg==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/util-arn-parser@3.804.0": - resolution: - { - integrity: sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/util-endpoints@3.398.0": - resolution: - { - integrity: sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/util-endpoints@3.862.0": - resolution: - { - integrity: sha512-eCZuScdE9MWWkHGM2BJxm726MCmWk/dlHjOKvkM0sN1zxBellBMw5JohNss1Z8/TUmnW2gb9XHTOiHuGjOdksA==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/util-locate-window@3.804.0": - resolution: - { - integrity: sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==, - } - engines: { node: ">=18.0.0" } - - "@aws-sdk/util-user-agent-browser@3.398.0": - resolution: - { - integrity: sha512-A3Tzx1tkDHlBT+IgxmsMCHbV8LM7SwwCozq2ZjJRx0nqw3MCrrcxQFXldHeX/gdUMO+0Oocb7HGSnVODTq+0EA==, - } - - "@aws-sdk/util-user-agent-browser@3.862.0": - resolution: - { - integrity: sha512-BmPTlm0r9/10MMr5ND9E92r8KMZbq5ltYXYpVcUbAsnB1RJ8ASJuRoLne5F7mB3YMx0FJoOTuSq7LdQM3LgW3Q==, - } - - "@aws-sdk/util-user-agent-node@3.398.0": - resolution: - { - integrity: sha512-RTVQofdj961ej4//fEkppFf4KXqKGMTCqJYghx3G0C/MYXbg7MGl7LjfNGtJcboRE8pfHHQ/TUWBDA7RIAPPlQ==, - } - engines: { node: ">=14.0.0" } - peerDependencies: - aws-crt: ">=1.0.0" - peerDependenciesMeta: - aws-crt: - optional: true - - "@aws-sdk/util-user-agent-node@3.864.0": - resolution: - { - integrity: sha512-d+FjUm2eJEpP+FRpVR3z6KzMdx1qwxEYDz8jzNKwxYLBBquaBaP/wfoMtMQKAcbrR7aT9FZVZF7zDgzNxUvQlQ==, - } - engines: { node: ">=18.0.0" } - peerDependencies: - aws-crt: ">=1.0.0" - peerDependenciesMeta: - aws-crt: - optional: true - - "@aws-sdk/util-utf8-browser@3.259.0": - resolution: - { - integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==, - } - - "@aws-sdk/xml-builder@3.310.0": - resolution: - { - integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==, - } - engines: { node: ">=14.0.0" } - - "@aws-sdk/xml-builder@3.862.0": - resolution: - { - integrity: sha512-6Ed0kmC1NMbuFTEgNmamAUU1h5gShgxL1hBVLbEzUa3trX5aJBz1vU4bXaBTvOYUAnOHtiy1Ml4AMStd6hJnFA==, - } - engines: { node: ">=18.0.0" } - - "@babel/code-frame@7.10.4": - resolution: - { - integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==, - } - - "@babel/code-frame@7.27.1": - resolution: - { - integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==, - } - engines: { node: ">=6.9.0" } - - "@babel/compat-data@7.28.0": - resolution: - { - integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==, - } - engines: { node: ">=6.9.0" } - - "@babel/core@7.28.3": - resolution: - { - integrity: sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/eslint-parser@7.28.0": - resolution: - { - integrity: sha512-N4ntErOlKvcbTt01rr5wj3y55xnIdx1ymrfIr8C2WnM1Y9glFgWaGDEULJIazOX3XM9NRzhfJ6zZnQ1sBNWU+w==, - } - engines: { node: ^10.13.0 || ^12.13.0 || >=14.0.0 } - peerDependencies: - "@babel/core": ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - - "@babel/generator@7.28.3": - resolution: - { - integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-annotate-as-pure@7.27.3": - resolution: - { - integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-compilation-targets@7.27.2": - resolution: - { - integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-create-class-features-plugin@7.28.3": - resolution: - { - integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/helper-create-regexp-features-plugin@7.27.1": - resolution: - { - integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/helper-define-polyfill-provider@0.6.5": - resolution: - { - integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==, - } - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - - "@babel/helper-globals@7.28.0": - resolution: - { - integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-member-expression-to-functions@7.27.1": - resolution: - { - integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-module-imports@7.27.1": - resolution: - { - integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-module-transforms@7.28.3": - resolution: - { - integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/helper-optimise-call-expression@7.27.1": - resolution: - { - integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-plugin-utils@7.27.1": - resolution: - { - integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-remap-async-to-generator@7.27.1": - resolution: - { - integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/helper-replace-supers@7.27.1": - resolution: - { - integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/helper-skip-transparent-expression-wrappers@7.27.1": - resolution: - { - integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-string-parser@7.27.1": - resolution: - { - integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-validator-identifier@7.27.1": - resolution: - { - integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-validator-option@7.27.1": - resolution: - { - integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==, - } - engines: { node: ">=6.9.0" } - - "@babel/helper-wrap-function@7.28.3": - resolution: - { - integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==, - } - engines: { node: ">=6.9.0" } - - "@babel/helpers@7.28.3": - resolution: - { - integrity: sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==, - } - engines: { node: ">=6.9.0" } - - "@babel/highlight@7.25.9": - resolution: - { - integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==, - } - engines: { node: ">=6.9.0" } - - "@babel/parser@7.28.3": - resolution: - { - integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==, - } - engines: { node: ">=6.0.0" } - hasBin: true - - "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1": - resolution: - { - integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1": - resolution: - { - integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1": - resolution: - { - integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1": - resolution: - { - integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.13.0 - - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3": - resolution: - { - integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-proposal-class-properties@7.18.6": - resolution: - { - integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==, - } - engines: { node: ">=6.9.0" } - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-proposal-decorators@7.28.0": - resolution: - { - integrity: sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-proposal-export-default-from@7.27.1": - resolution: - { - integrity: sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-proposal-nullish-coalescing-operator@7.18.6": - resolution: - { - integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==, - } - engines: { node: ">=6.9.0" } - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-proposal-optional-chaining@7.21.0": - resolution: - { - integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==, - } - engines: { node: ">=6.9.0" } - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - resolution: - { - integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-async-generators@7.8.4": - resolution: - { - integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@ast-grep/napi@0.35.0: + resolution: {integrity: sha512-3ucaaSxV6fxXoqHrE/rxAvP1THnDdY5jNzGlnvx+JvnY9C/dSRKc0jlRMRz59N3El572+/yNRUUpAV1T9aBJug==} + engines: {node: '>= 10'} + optionalDependencies: + '@ast-grep/napi-darwin-arm64': 0.35.0 + '@ast-grep/napi-darwin-x64': 0.35.0 + '@ast-grep/napi-linux-arm64-gnu': 0.35.0 + '@ast-grep/napi-linux-arm64-musl': 0.35.0 + '@ast-grep/napi-linux-x64-gnu': 0.35.0 + '@ast-grep/napi-linux-x64-musl': 0.35.0 + '@ast-grep/napi-win32-arm64-msvc': 0.35.0 + '@ast-grep/napi-win32-ia32-msvc': 0.35.0 + '@ast-grep/napi-win32-x64-msvc': 0.35.0 + dev: true + + /@aws-crypto/crc32@5.2.0: + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.887.0 + tslib: 2.8.1 + dev: true - "@babel/plugin-syntax-bigint@7.8.3": - resolution: - { - integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@aws-crypto/crc32c@5.2.0: + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.887.0 + tslib: 2.8.1 + dev: true - "@babel/plugin-syntax-class-properties@7.12.13": - resolution: - { - integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-class-static-block@7.14.5": - resolution: - { - integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-decorators@7.27.1": - resolution: - { - integrity: sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@aws-crypto/ie11-detection@3.0.0: + resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} + dependencies: + tslib: 1.14.1 + dev: true - "@babel/plugin-syntax-dynamic-import@7.8.3": - resolution: - { - integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-export-default-from@7.27.1": - resolution: - { - integrity: sha512-eBC/3KSekshx19+N40MzjWqJd7KTEdOoLesAfa4IDFI8eRz5a47i5Oszus6zG/cwIXN63YhgLOMSSNJx49sENg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-flow@7.27.1": - resolution: - { - integrity: sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-import-assertions@7.27.1": - resolution: - { - integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-import-attributes@7.27.1": - resolution: - { - integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@aws-crypto/sha1-browser@5.2.0: + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-locate-window': 3.873.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + dev: true + + /@aws-crypto/sha256-browser@3.0.0: + resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} + dependencies: + '@aws-crypto/ie11-detection': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-crypto/supports-web-crypto': 3.0.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-locate-window': 3.873.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + dev: true - "@babel/plugin-syntax-import-meta@7.10.4": - resolution: - { - integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@aws-crypto/sha256-browser@5.2.0: + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-locate-window': 3.873.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + dev: true - "@babel/plugin-syntax-json-strings@7.8.3": - resolution: - { - integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-jsx@7.27.1": - resolution: - { - integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@aws-crypto/sha256-js@3.0.0: + resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.398.0 + tslib: 1.14.1 + dev: true - "@babel/plugin-syntax-logical-assignment-operators@7.10.4": - resolution: - { - integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@aws-crypto/sha256-js@5.2.0: + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.887.0 + tslib: 2.8.1 + dev: true - "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3": - resolution: - { - integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@aws-crypto/supports-web-crypto@3.0.0: + resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} + dependencies: + tslib: 1.14.1 + dev: true - "@babel/plugin-syntax-numeric-separator@7.10.4": - resolution: - { - integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@aws-crypto/supports-web-crypto@5.2.0: + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + dependencies: + tslib: 2.8.1 + dev: true - "@babel/plugin-syntax-object-rest-spread@7.8.3": - resolution: - { - integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@aws-crypto/util@3.0.0: + resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} + dependencies: + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + dev: true - "@babel/plugin-syntax-optional-catch-binding@7.8.3": - resolution: - { - integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 + /@aws-crypto/util@5.2.0: + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + dependencies: + '@aws-sdk/types': 3.887.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + dev: true - "@babel/plugin-syntax-optional-chaining@7.8.3": - resolution: - { - integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-private-property-in-object@7.14.5": - resolution: - { - integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-top-level-await@7.14.5": - resolution: - { - integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-typescript@7.27.1": - resolution: - { - integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-syntax-unicode-sets-regex@7.18.6": - resolution: - { - integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-transform-arrow-functions@7.27.1": - resolution: - { - integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-async-generator-functions@7.28.0": - resolution: - { - integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-async-to-generator@7.27.1": - resolution: - { - integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-block-scoped-functions@7.27.1": - resolution: - { - integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-block-scoping@7.28.0": - resolution: - { - integrity: sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-class-properties@7.27.1": - resolution: - { - integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-class-static-block@7.28.3": - resolution: - { - integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.12.0 - - "@babel/plugin-transform-classes@7.28.3": - resolution: - { - integrity: sha512-DoEWC5SuxuARF2KdKmGUq3ghfPMO6ZzR12Dnp5gubwbeWJo4dbNWXJPVlwvh4Zlq6Z7YVvL8VFxeSOJgjsx4Sg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-computed-properties@7.27.1": - resolution: - { - integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-destructuring@7.28.0": - resolution: - { - integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-dotall-regex@7.27.1": - resolution: - { - integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-duplicate-keys@7.27.1": - resolution: - { - integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1": - resolution: - { - integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-transform-dynamic-import@7.27.1": - resolution: - { - integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-explicit-resource-management@7.28.0": - resolution: - { - integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-exponentiation-operator@7.27.1": - resolution: - { - integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-export-namespace-from@7.27.1": - resolution: - { - integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-flow-strip-types@7.27.1": - resolution: - { - integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-for-of@7.27.1": - resolution: - { - integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-function-name@7.27.1": - resolution: - { - integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-json-strings@7.27.1": - resolution: - { - integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-literals@7.27.1": - resolution: - { - integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-logical-assignment-operators@7.27.1": - resolution: - { - integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-member-expression-literals@7.27.1": - resolution: - { - integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-modules-amd@7.27.1": - resolution: - { - integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-modules-commonjs@7.27.1": - resolution: - { - integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-modules-systemjs@7.27.1": - resolution: - { - integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-modules-umd@7.27.1": - resolution: - { - integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-named-capturing-groups-regex@7.27.1": - resolution: - { - integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-transform-new-target@7.27.1": - resolution: - { - integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-nullish-coalescing-operator@7.27.1": - resolution: - { - integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-numeric-separator@7.27.1": - resolution: - { - integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-object-rest-spread@7.28.0": - resolution: - { - integrity: sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-object-super@7.27.1": - resolution: - { - integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-optional-catch-binding@7.27.1": - resolution: - { - integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-optional-chaining@7.27.1": - resolution: - { - integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-parameters@7.27.7": - resolution: - { - integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-private-methods@7.27.1": - resolution: - { - integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-private-property-in-object@7.27.1": - resolution: - { - integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-property-literals@7.27.1": - resolution: - { - integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-react-display-name@7.28.0": - resolution: - { - integrity: sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-react-jsx-development@7.27.1": - resolution: - { - integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-react-jsx-self@7.27.1": - resolution: - { - integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-react-jsx-source@7.27.1": - resolution: - { - integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-react-jsx@7.27.1": - resolution: - { - integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-react-pure-annotations@7.27.1": - resolution: - { - integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-regenerator@7.28.3": - resolution: - { - integrity: sha512-K3/M/a4+ESb5LEldjQb+XSrpY0nF+ZBFlTCbSnKaYAMfD8v33O6PMs4uYnOk19HlcsI8WMu3McdFPTiQHF/1/A==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-regexp-modifiers@7.27.1": - resolution: - { - integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/plugin-transform-reserved-words@7.27.1": - resolution: - { - integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-runtime@7.28.3": - resolution: - { - integrity: sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-shorthand-properties@7.27.1": - resolution: - { - integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-spread@7.27.1": - resolution: - { - integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-sticky-regex@7.27.1": - resolution: - { - integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-template-literals@7.27.1": - resolution: - { - integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-typeof-symbol@7.27.1": - resolution: - { - integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-typescript@7.28.0": - resolution: - { - integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-unicode-escapes@7.27.1": - resolution: - { - integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-unicode-property-regex@7.27.1": - resolution: - { - integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-unicode-regex@7.27.1": - resolution: - { - integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/plugin-transform-unicode-sets-regex@7.27.1": - resolution: - { - integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - - "@babel/preset-env@7.28.3": - resolution: - { - integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/preset-flow@7.27.1": - resolution: - { - integrity: sha512-ez3a2it5Fn6P54W8QkbfIyyIbxlXvcxyWHHvno1Wg0Ej5eiJY5hBb8ExttoIOJJk7V2dZE6prP7iby5q2aQ0Lg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/preset-modules@0.1.6-no-external-plugins": - resolution: - { - integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - "@babel/preset-react@7.27.1": - resolution: - { - integrity: sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/preset-typescript@7.27.1": - resolution: - { - integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/register@7.28.3": - resolution: - { - integrity: sha512-CieDOtd8u208eI49bYl4z1J22ySFw87IGwE+IswFEExH7e3rLgKb0WNQeumnacQ1+VoDJLYI5QFA3AJZuyZQfA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - - "@babel/runtime@7.28.3": - resolution: - { - integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==, - } - engines: { node: ">=6.9.0" } - - "@babel/template@7.27.2": - resolution: - { - integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==, - } - engines: { node: ">=6.9.0" } - - "@babel/traverse@7.28.3": - resolution: - { - integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==, - } - engines: { node: ">=6.9.0" } - - "@babel/types@7.28.2": - resolution: - { - integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==, - } - engines: { node: ">=6.9.0" } - - "@bcoe/v8-coverage@0.2.3": - resolution: - { - integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, - } - - "@changesets/apply-release-plan@7.0.12": - resolution: - { - integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==, - } - - "@changesets/assemble-release-plan@6.0.9": - resolution: - { - integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==, - } - - "@changesets/changelog-git@0.2.1": - resolution: - { - integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==, - } - - "@changesets/changelog-github@0.5.1": - resolution: - { - integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==, - } - - "@changesets/cli@2.29.6": - resolution: - { - integrity: sha512-6qCcVsIG1KQLhpQ5zE8N0PckIx4+9QlHK3z6/lwKnw7Tir71Bjw8BeOZaxA/4Jt00pcgCnCSWZnyuZf5Il05QQ==, - } - hasBin: true - - "@changesets/config@3.1.1": - resolution: - { - integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==, - } - - "@changesets/errors@0.2.0": - resolution: - { - integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==, - } - - "@changesets/get-dependents-graph@2.1.3": - resolution: - { - integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==, - } - - "@changesets/get-github-info@0.6.0": - resolution: - { - integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==, - } - - "@changesets/get-release-plan@4.0.13": - resolution: - { - integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==, - } - - "@changesets/get-version-range-type@0.4.0": - resolution: - { - integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==, - } - - "@changesets/git@3.0.4": - resolution: - { - integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==, - } - - "@changesets/logger@0.1.1": - resolution: - { - integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==, - } - - "@changesets/parse@0.4.1": - resolution: - { - integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==, - } - - "@changesets/pre@2.0.2": - resolution: - { - integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==, - } - - "@changesets/read@0.6.5": - resolution: - { - integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==, - } - - "@changesets/should-skip-package@0.1.2": - resolution: - { - integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==, - } - - "@changesets/types@4.1.0": - resolution: - { - integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==, - } - - "@changesets/types@6.1.0": - resolution: - { - integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==, - } - - "@changesets/write@0.4.0": - resolution: - { - integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==, - } - - "@cloudflare/kv-asset-handler@0.4.0": - resolution: - { - integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==, - } - engines: { node: ">=18.0.0" } - - "@cloudflare/unenv-preset@2.7.1": - resolution: - { - integrity: sha512-b0YHedns1FHEdalv9evlydfc/hLPs+LqCbPatmiJ99ScI5QTK0NXqqBhgvQ9qch73tsYfOpdpwtBl1GOcb1C9A==, - } - peerDependencies: - unenv: 2.0.0-rc.19 - workerd: ^1.20250828.1 - peerDependenciesMeta: - workerd: - optional: true - - "@cloudflare/workerd-darwin-64@1.20250829.0": - resolution: - { - integrity: sha512-IkB5gaLz3gzBg9hIsC/bVvOMDaRiWA5anaPK0ERDXXXJnMiBkLnA009O5Mp0x7j0fpxbw05xaiYXcFdGPdUt3A==, - } - engines: { node: ">=16" } - cpu: [x64] - os: [darwin] - - "@cloudflare/workerd-darwin-arm64@1.20250829.0": - resolution: - { - integrity: sha512-gFYC+w0jznCweKmrv63inEYduGj6crOskgZrn5zHI8S7c3ynC1LSW6LR8E9A2mSOwuDWKM1hHypwctwGUKlikg==, - } - engines: { node: ">=16" } - cpu: [arm64] - os: [darwin] - - "@cloudflare/workerd-linux-64@1.20250829.0": - resolution: - { - integrity: sha512-JS699jk+Bn7j4QF7tdF+Sqhy4EUHM2NGVLF/vOIbpPWQnBVvP6Z+vmxi5MuVUwpAH48kpqbtMx380InNvT5f1Q==, - } - engines: { node: ">=16" } - cpu: [x64] - os: [linux] - - "@cloudflare/workerd-linux-arm64@1.20250829.0": - resolution: - { - integrity: sha512-9Ic/VwcrCEQiIzynmpFQnS8N3uXm8evxUxFe37r6OC8/MGcXZTcp0/lmEk+cjjz+2aw5CfPMP82IdQyRKVZ+Og==, - } - engines: { node: ">=16" } - cpu: [arm64] - os: [linux] - - "@cloudflare/workerd-windows-64@1.20250829.0": - resolution: - { - integrity: sha512-6uETqeeMciRSA00GRGzH1nnz0egDP2bqMOJtTBWlLzFs88GbLe2RXECJxo4E3eVr8yvAMyqwd0WUR4dDBjO7Rg==, - } - engines: { node: ">=16" } - cpu: [x64] - os: [win32] - - "@confio/ics23@0.6.8": - resolution: - { - integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==, - } - deprecated: Unmaintained. The codebase for this package was moved to https://github.com/cosmos/ics23 but then the JS implementation was removed in https://github.com/cosmos/ics23/pull/353. Please consult the maintainers of https://github.com/cosmos for further assistance. - - "@cosmjs/amino@0.32.4": - resolution: - { - integrity: sha512-zKYOt6hPy8obIFtLie/xtygCkH9ZROiQ12UHfKsOkWaZfPQUvVbtgmu6R4Kn1tFLI/SRkw7eqhaogmW/3NYu/Q==, - } - - "@cosmjs/amino@0.36.0": - resolution: - { - integrity: sha512-PxK3+1smz5N1dxJjSSsvvZdHdSM2zuUAIP6ppYLGBcYmAKlK6hJ1vR1Ity+HLKusqo22bj0CY9m3QaeLNsSPww==, - } - - "@cosmjs/cosmwasm-stargate@0.32.4": - resolution: - { - integrity: sha512-Fuo9BGEiB+POJ5WeRyBGuhyKR1ordvxZGLPuPosFJOH9U0gKMgcjwKMCgAlWFkMlHaTB+tNdA8AifWiHrI7VgA==, - } - - "@cosmjs/cosmwasm-stargate@0.36.0": - resolution: - { - integrity: sha512-hzzT4YRMt2cRdAILzGSNSmWr1IRpN3aWxL5ceMrZaaJyVa9nD4AUeR80yPB6mzkBpHuMwbSGWz8nus0psyonRQ==, - } - - "@cosmjs/crypto@0.32.4": - resolution: - { - integrity: sha512-zicjGU051LF1V9v7bp8p7ovq+VyC91xlaHdsFOTo2oVry3KQikp8L/81RkXmUIT8FxMwdx1T7DmFwVQikcSDIw==, - } - - "@cosmjs/crypto@0.36.0": - resolution: - { - integrity: sha512-IdzJETWBfMlJIpWmcAi4wiAa0sdHKZDbxKdhasrpSLvhwIItXBYMvApCFx6zr+V/Hby4KnsWduI7HomiRDFr+g==, - } - - "@cosmjs/encoding@0.32.4": - resolution: - { - integrity: sha512-tjvaEy6ZGxJchiizzTn7HVRiyTg1i4CObRRaTRPknm5EalE13SV+TCHq38gIDfyUeden4fCuaBVEdBR5+ti7Hw==, - } - - "@cosmjs/encoding@0.36.0": - resolution: - { - integrity: sha512-xFJNd1096EqNxTsdOJN+DODC5HxKmqY0L2iWEnvPFq9UD/W2olYnv0bxV0S+XTs5tF/8/NAZHU3KXxeHTZ97DA==, - } - - "@cosmjs/json-rpc@0.32.4": - resolution: - { - integrity: sha512-/jt4mBl7nYzfJ2J/VJ+r19c92mUKF0Lt0JxM3MXEJl7wlwW5haHAWtzRujHkyYMXOwIR+gBqT2S0vntXVBRyhQ==, - } - - "@cosmjs/json-rpc@0.36.0": - resolution: - { - integrity: sha512-7cGE8cBFGrtAHsadYWFOWv0bNaK0VPNzquzU/Naj+3twgnppaGbRBrTLw3iwhqrg+Cvb9KwSYPHzaUsavojUWQ==, - } - - "@cosmjs/math@0.32.4": - resolution: - { - integrity: sha512-++dqq2TJkoB8zsPVYCvrt88oJWsy1vMOuSOKcdlnXuOA/ASheTJuYy4+oZlTQ3Fr8eALDLGGPhJI02W2HyAQaw==, - } - - "@cosmjs/math@0.36.0": - resolution: - { - integrity: sha512-vLXHInZA87QXgOxGJDc2nJa4/4oPFOdQtuxD6BL5xrYI1T0G/dk06hu4gXu4Tn3YuB8R5dWGS0u5AnlNv9LeYw==, - } - - "@cosmjs/proto-signing@0.32.4": - resolution: - { - integrity: sha512-QdyQDbezvdRI4xxSlyM1rSVBO2st5sqtbEIl3IX03uJ7YiZIQHyv6vaHVf1V4mapusCqguiHJzm4N4gsFdLBbQ==, - } - - "@cosmjs/proto-signing@0.36.0": - resolution: - { - integrity: sha512-RoZOQGG9njlzArNeAfYYQ136tdi5hNBleC/r7V8HPkROpMfSuQZF3yP6ukBvt5KkNzNge4YZKqFkwINBR/Vyew==, - } - - "@cosmjs/socket@0.32.4": - resolution: - { - integrity: sha512-davcyYziBhkzfXQTu1l5NrpDYv0K9GekZCC9apBRvL1dvMc9F/ygM7iemHjUA+z8tJkxKxrt/YPjJ6XNHzLrkw==, - } - - "@cosmjs/socket@0.36.0": - resolution: - { - integrity: sha512-rAeGDyQjIFWsP6DPSTJKUP9RDW6ZM5Cm074xKG/0Tdghn0kkOaQCzwJru4SSPWi7MOlOkoZHyEMATQiNA/cQ6Q==, - } - - "@cosmjs/stargate@0.32.4": - resolution: - { - integrity: sha512-usj08LxBSsPRq9sbpCeVdyLx2guEcOHfJS9mHGCLCXpdAPEIEQEtWLDpEUc0LEhWOx6+k/ChXTc5NpFkdrtGUQ==, - } - - "@cosmjs/stargate@0.36.0": - resolution: - { - integrity: sha512-FMRPF72WyLXGTU8qWpN2ZoxOY4gfRmg7vZoO99Ru8Gt21GS95JYO+RJFTfYlP9pT7Ni6S74rxCPNqkeHMqKp6w==, - } - - "@cosmjs/stream@0.32.4": - resolution: - { - integrity: sha512-Gih++NYHEiP+oyD4jNEUxU9antoC0pFSg+33Hpp0JlHwH0wXhtD3OOKnzSfDB7OIoEbrzLJUpEjOgpCp5Z+W3A==, - } - - "@cosmjs/stream@0.36.0": - resolution: - { - integrity: sha512-gMezM+symoCWnJlrOJ5lxB+tVNUm9JUwFR3dpHzdccGTh1Sb7oVCf6VFias85O1j0fLkCIfQR2BI/RoX97+CGQ==, - } - - "@cosmjs/tendermint-rpc@0.32.4": - resolution: - { - integrity: sha512-MWvUUno+4bCb/LmlMIErLypXxy7ckUuzEmpufYYYd9wgbdCXaTaO08SZzyFM5PI8UJ/0S2AmUrgWhldlbxO8mw==, - } - - "@cosmjs/tendermint-rpc@0.36.0": - resolution: - { - integrity: sha512-dTh4L1RR22JszFbZqM3i0ITPTHhrs5mUqyyeP7lEebgtLrKgzCAqsWPnqfsC6ALFhMzbeApWebG2YR9W2W68zg==, - } - - "@cosmjs/utils@0.32.4": - resolution: - { - integrity: sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w==, - } - - "@cosmjs/utils@0.36.0": - resolution: - { - integrity: sha512-QXyHnxDHdkj+qZZDk+CSOeEXpkPRBvMPKQ7EiEO7wuJQpMIlF3F4CSuEBuYPQOPRDP6qsKS+rj47pXoE2Kr4dw==, - } - - "@craftzdog/react-native-buffer@6.1.0": - resolution: - { - integrity: sha512-lJXdjZ7fTllLbzDrwg/FrJLjQ5sBcAgwcqgAB6OPpXTHdCenEhHZblQpfmBLLe7/S7m0yKXL3kN3jpwOEkpjGg==, - } - - "@cspotcode/source-map-support@0.8.1": - resolution: - { - integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==, - } - engines: { node: ">=12" } - - "@dotenvx/dotenvx@1.31.0": - resolution: - { - integrity: sha512-GeDxvtjiRuoyWVU9nQneId879zIyNdL05bS7RKiqMkfBSKpHMWHLoRyRqjYWLaXmX/llKO1hTlqHDmatkQAjPA==, - } - hasBin: true - - "@ecies/ciphers@0.2.4": - resolution: - { - integrity: sha512-t+iX+Wf5nRKyNzk8dviW3Ikb/280+aEJAnw9YXvCp2tYGPSkMki+NRY+8aNLmVFv3eNtMdvViPNOPxS8SZNP+w==, - } - engines: { bun: ">=1", deno: ">=2", node: ">=16" } - peerDependencies: - "@noble/ciphers": ^1.0.0 - - "@emnapi/core@1.4.5": - resolution: - { - integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==, - } - - "@emnapi/runtime@1.4.5": - resolution: - { - integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==, - } - - "@emnapi/wasi-threads@1.0.4": - resolution: - { - integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==, - } - - "@esbuild/aix-ppc64@0.25.4": - resolution: - { - integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==, - } - engines: { node: ">=18" } - cpu: [ppc64] - os: [aix] - - "@esbuild/android-arm64@0.17.19": - resolution: - { - integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [android] - - "@esbuild/android-arm64@0.25.4": - resolution: - { - integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==, - } - engines: { node: ">=18" } - cpu: [arm64] - os: [android] - - "@esbuild/android-arm@0.17.19": - resolution: - { - integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==, - } - engines: { node: ">=12" } - cpu: [arm] - os: [android] - - "@esbuild/android-arm@0.25.4": - resolution: - { - integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==, - } - engines: { node: ">=18" } - cpu: [arm] - os: [android] - - "@esbuild/android-x64@0.17.19": - resolution: - { - integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [android] - - "@esbuild/android-x64@0.25.4": - resolution: - { - integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==, - } - engines: { node: ">=18" } - cpu: [x64] - os: [android] - - "@esbuild/darwin-arm64@0.17.19": - resolution: - { - integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [darwin] - - "@esbuild/darwin-arm64@0.25.4": - resolution: - { - integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==, - } - engines: { node: ">=18" } - cpu: [arm64] - os: [darwin] - - "@esbuild/darwin-x64@0.17.19": - resolution: - { - integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [darwin] - - "@esbuild/darwin-x64@0.25.4": - resolution: - { - integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==, - } - engines: { node: ">=18" } - cpu: [x64] - os: [darwin] - - "@esbuild/freebsd-arm64@0.17.19": - resolution: - { - integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [freebsd] - - "@esbuild/freebsd-arm64@0.25.4": - resolution: - { - integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==, - } - engines: { node: ">=18" } - cpu: [arm64] - os: [freebsd] - - "@esbuild/freebsd-x64@0.17.19": - resolution: - { - integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [freebsd] - - "@esbuild/freebsd-x64@0.25.4": - resolution: - { - integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==, - } - engines: { node: ">=18" } - cpu: [x64] - os: [freebsd] - - "@esbuild/linux-arm64@0.17.19": - resolution: - { - integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [linux] - - "@esbuild/linux-arm64@0.25.4": - resolution: - { - integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==, - } - engines: { node: ">=18" } - cpu: [arm64] - os: [linux] - - "@esbuild/linux-arm@0.17.19": - resolution: - { - integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==, - } - engines: { node: ">=12" } - cpu: [arm] - os: [linux] - - "@esbuild/linux-arm@0.25.4": - resolution: - { - integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==, - } - engines: { node: ">=18" } - cpu: [arm] - os: [linux] - - "@esbuild/linux-ia32@0.17.19": - resolution: - { - integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==, - } - engines: { node: ">=12" } - cpu: [ia32] - os: [linux] - - "@esbuild/linux-ia32@0.25.4": - resolution: - { - integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==, - } - engines: { node: ">=18" } - cpu: [ia32] - os: [linux] - - "@esbuild/linux-loong64@0.17.19": - resolution: - { - integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==, - } - engines: { node: ">=12" } - cpu: [loong64] - os: [linux] - - "@esbuild/linux-loong64@0.25.4": - resolution: - { - integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==, - } - engines: { node: ">=18" } - cpu: [loong64] - os: [linux] - - "@esbuild/linux-mips64el@0.17.19": - resolution: - { - integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==, - } - engines: { node: ">=12" } - cpu: [mips64el] - os: [linux] - - "@esbuild/linux-mips64el@0.25.4": - resolution: - { - integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==, - } - engines: { node: ">=18" } - cpu: [mips64el] - os: [linux] - - "@esbuild/linux-ppc64@0.17.19": - resolution: - { - integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==, - } - engines: { node: ">=12" } - cpu: [ppc64] - os: [linux] - - "@esbuild/linux-ppc64@0.25.4": - resolution: - { - integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==, - } - engines: { node: ">=18" } - cpu: [ppc64] - os: [linux] - - "@esbuild/linux-riscv64@0.17.19": - resolution: - { - integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==, - } - engines: { node: ">=12" } - cpu: [riscv64] - os: [linux] - - "@esbuild/linux-riscv64@0.25.4": - resolution: - { - integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==, - } - engines: { node: ">=18" } - cpu: [riscv64] - os: [linux] - - "@esbuild/linux-s390x@0.17.19": - resolution: - { - integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==, - } - engines: { node: ">=12" } - cpu: [s390x] - os: [linux] - - "@esbuild/linux-s390x@0.25.4": - resolution: - { - integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==, - } - engines: { node: ">=18" } - cpu: [s390x] - os: [linux] - - "@esbuild/linux-x64@0.17.19": - resolution: - { - integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [linux] - - "@esbuild/linux-x64@0.25.4": - resolution: - { - integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==, - } - engines: { node: ">=18" } - cpu: [x64] - os: [linux] - - "@esbuild/netbsd-arm64@0.25.4": - resolution: - { - integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==, - } - engines: { node: ">=18" } - cpu: [arm64] - os: [netbsd] - - "@esbuild/netbsd-x64@0.17.19": - resolution: - { - integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [netbsd] - - "@esbuild/netbsd-x64@0.25.4": - resolution: - { - integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==, - } - engines: { node: ">=18" } - cpu: [x64] - os: [netbsd] - - "@esbuild/openbsd-arm64@0.25.4": - resolution: - { - integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==, - } - engines: { node: ">=18" } - cpu: [arm64] - os: [openbsd] - - "@esbuild/openbsd-x64@0.17.19": - resolution: - { - integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [openbsd] - - "@esbuild/openbsd-x64@0.25.4": - resolution: - { - integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==, - } - engines: { node: ">=18" } - cpu: [x64] - os: [openbsd] - - "@esbuild/sunos-x64@0.17.19": - resolution: - { - integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [sunos] - - "@esbuild/sunos-x64@0.25.4": - resolution: - { - integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==, - } - engines: { node: ">=18" } - cpu: [x64] - os: [sunos] - - "@esbuild/win32-arm64@0.17.19": - resolution: - { - integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==, - } - engines: { node: ">=12" } - cpu: [arm64] - os: [win32] - - "@esbuild/win32-arm64@0.25.4": - resolution: - { - integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==, - } - engines: { node: ">=18" } - cpu: [arm64] - os: [win32] - - "@esbuild/win32-ia32@0.17.19": - resolution: - { - integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==, - } - engines: { node: ">=12" } - cpu: [ia32] - os: [win32] - - "@esbuild/win32-ia32@0.25.4": - resolution: - { - integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==, - } - engines: { node: ">=18" } - cpu: [ia32] - os: [win32] - - "@esbuild/win32-x64@0.17.19": - resolution: - { - integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==, - } - engines: { node: ">=12" } - cpu: [x64] - os: [win32] - - "@esbuild/win32-x64@0.25.4": - resolution: - { - integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==, - } - engines: { node: ">=18" } - cpu: [x64] - os: [win32] - - "@eslint-community/eslint-utils@4.7.0": - resolution: - { - integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==, - } - 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.1": - resolution: - { - integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==, - } - engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - - "@eslint/eslintrc@2.1.4": - resolution: - { - integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - "@eslint/js@8.57.1": - resolution: - { - integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - "@expo/cli@0.24.20": - resolution: - { - integrity: sha512-uF1pOVcd+xizNtVTuZqNGzy7I6IJon5YMmQidsURds1Ww96AFDxrR/NEACqeATNAmY60m8wy1VZZpSg5zLNkpw==, - } - hasBin: true - - "@expo/code-signing-certificates@0.0.5": - resolution: - { - integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==, - } - - "@expo/config-plugins@10.1.2": - resolution: - { - integrity: sha512-IMYCxBOcnuFStuK0Ay+FzEIBKrwW8OVUMc65+v0+i7YFIIe8aL342l7T4F8lR4oCfhXn7d6M5QPgXvjtc/gAcw==, - } - - "@expo/config-plugins@9.0.17": - resolution: - { - integrity: sha512-m24F1COquwOm7PBl5wRbkT9P9DviCXe0D7S7nQsolfbhdCWuvMkfXeoWmgjtdhy7sDlOyIgBrAdnB6MfsWKqIg==, - } - - "@expo/config-types@52.0.5": - resolution: - { - integrity: sha512-AMDeuDLHXXqd8W+0zSjIt7f37vUd/BP8p43k68NHpyAvQO+z8mbQZm3cNQVAMySeayK2XoPigAFB1JF2NFajaA==, - } - - "@expo/config-types@53.0.5": - resolution: - { - integrity: sha512-kqZ0w44E+HEGBjy+Lpyn0BVL5UANg/tmNixxaRMLS6nf37YsDrLk2VMAmeKMMk5CKG0NmOdVv3ngeUjRQMsy9g==, - } - - "@expo/config@10.0.11": - resolution: - { - integrity: sha512-nociJ4zr/NmbVfMNe9j/+zRlt7wz/siISu7PjdWE4WE+elEGxWWxsGzltdJG0llzrM+khx8qUiFK5aiVcdMBww==, - } - - "@expo/config@11.0.13": - resolution: - { - integrity: sha512-TnGb4u/zUZetpav9sx/3fWK71oCPaOjZHoVED9NaEncktAd0Eonhq5NUghiJmkUGt3gGSjRAEBXiBbbY9/B1LA==, - } - - "@expo/devcert@1.2.0": - resolution: - { - integrity: sha512-Uilcv3xGELD5t/b0eM4cxBFEKQRIivB3v7i+VhWLV/gL98aw810unLKKJbGAxAIhY6Ipyz8ChWibFsKFXYwstA==, - } - - "@expo/env@0.4.2": - resolution: - { - integrity: sha512-TgbCgvSk0Kq0e2fLoqHwEBL4M0ztFjnBEz0YCDm5boc1nvkV1VMuIMteVdeBwnTh8Z0oPJTwHCD49vhMEt1I6A==, - } - - "@expo/env@1.0.7": - resolution: - { - integrity: sha512-qSTEnwvuYJ3umapO9XJtrb1fAqiPlmUUg78N0IZXXGwQRt+bkp0OBls+Y5Mxw/Owj8waAM0Z3huKKskRADR5ow==, - } - - "@expo/fingerprint@0.13.4": - resolution: - { - integrity: sha512-MYfPYBTMfrrNr07DALuLhG6EaLVNVrY/PXjEzsjWdWE4ZFn0yqI0IdHNkJG7t1gePT8iztHc7qnsx+oo/rDo6w==, - } - hasBin: true - - "@expo/image-utils@0.7.6": - resolution: - { - integrity: sha512-GKnMqC79+mo/1AFrmAcUcGfbsXXTRqOMNS1umebuevl3aaw+ztsYEFEiuNhHZW7PQ3Xs3URNT513ZxKhznDscw==, - } - - "@expo/json-file@9.0.2": - resolution: - { - integrity: sha512-yAznIUrybOIWp3Uax7yRflB0xsEpvIwIEqIjao9SGi2Gaa+N0OamWfe0fnXBSWF+2zzF4VvqwT4W5zwelchfgw==, - } - - "@expo/json-file@9.1.5": - resolution: - { - integrity: sha512-prWBhLUlmcQtvN6Y7BpW2k9zXGd3ySa3R6rAguMJkp1z22nunLN64KYTUWfijFlprFoxm9r2VNnGkcbndAlgKA==, - } - - "@expo/metro-config@0.20.17": - resolution: - { - integrity: sha512-lpntF2UZn5bTwrPK6guUv00Xv3X9mkN3YYla+IhEHiYXWyG7WKOtDU0U4KR8h3ubkZ6SPH3snDyRyAzMsWtZFA==, - } - - "@expo/osascript@2.2.5": - resolution: - { - integrity: sha512-Bpp/n5rZ0UmpBOnl7Li3LtM7la0AR3H9NNesqL+ytW5UiqV/TbonYW3rDZY38u4u/lG7TnYflVIVQPD+iqZJ5w==, - } - engines: { node: ">=12" } - - "@expo/package-manager@1.8.6": - resolution: - { - integrity: sha512-gcdICLuL+nHKZagPIDC5tX8UoDDB8vNA5/+SaQEqz8D+T2C4KrEJc2Vi1gPAlDnKif834QS6YluHWyxjk0yZlQ==, - } - - "@expo/plist@0.2.2": - resolution: - { - integrity: sha512-ZZGvTO6vEWq02UAPs3LIdja+HRO18+LRI5QuDl6Hs3Ps7KX7xU6Y6kjahWKY37Rx2YjNpX07dGpBFzzC+vKa2g==, - } - - "@expo/plist@0.3.5": - resolution: - { - integrity: sha512-9RYVU1iGyCJ7vWfg3e7c/NVyMFs8wbl+dMWZphtFtsqyN9zppGREU3ctlD3i8KUE0sCUTVnLjCWr+VeUIDep2g==, - } - - "@expo/prebuild-config@9.0.11": - resolution: - { - integrity: sha512-0DsxhhixRbCCvmYskBTq8czsU0YOBsntYURhWPNpkl0IPVpeP9haE5W4OwtHGzXEbmHdzaoDwNmVcWjS/mqbDw==, - } - - "@expo/sdk-runtime-versions@1.0.0": - resolution: - { - integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==, - } - - "@expo/spawn-async@1.7.2": - resolution: - { - integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==, - } - engines: { node: ">=12" } - - "@expo/sudo-prompt@9.3.2": - resolution: - { - integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==, - } - - "@expo/vector-icons@14.1.0": - resolution: - { - integrity: sha512-7T09UE9h8QDTsUeMGymB4i+iqvtEeaO5VvUjryFB4tugDTG/bkzViWA74hm5pfjjDEhYMXWaX112mcvhccmIwQ==, - } - peerDependencies: - expo-font: "*" - react: "*" - react-native: "*" - - "@expo/ws-tunnel@1.0.6": - resolution: - { - integrity: sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==, - } - - "@expo/xcpretty@4.3.2": - resolution: - { - integrity: sha512-ReZxZ8pdnoI3tP/dNnJdnmAk7uLT4FjsKDGW7YeDdvdOMz2XCQSmSCM9IWlrXuWtMF9zeSB6WJtEhCQ41gQOfw==, - } - hasBin: true - - "@fastify/busboy@2.1.1": - resolution: - { - integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==, - } - engines: { node: ">=14" } - - "@floating-ui/core@1.7.3": - resolution: - { - integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==, - } - - "@floating-ui/dom@1.7.3": - resolution: - { - integrity: sha512-uZA413QEpNuhtb3/iIKoYMSK07keHPYeXF02Zhd6e213j+d1NamLix/mCLxBUDW/Gx52sPH2m+chlUsyaBs/Ag==, - } - - "@floating-ui/react-dom@2.1.5": - resolution: - { - integrity: sha512-HDO/1/1oH9fjj4eLgegrlH3dklZpHtUYYFiVwMUwfGvk9jWDRWqkklA2/NFScknrcNSspbV868WjXORvreDX+Q==, - } - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - - "@floating-ui/utils@0.2.10": - resolution: - { - integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==, - } - - "@graphql-typed-document-node/core@3.2.0": - resolution: - { - integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==, - } - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - "@heroicons/react@2.2.0": - resolution: - { - integrity: sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==, - } - peerDependencies: - react: ">= 16 || ^19.0.0-rc" - - "@humanwhocodes/config-array@0.13.0": - resolution: - { - integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==, - } - engines: { node: ">=10.10.0" } - deprecated: Use @eslint/config-array instead - - "@humanwhocodes/module-importer@1.0.1": - resolution: - { - integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, - } - engines: { node: ">=12.22" } - - "@humanwhocodes/object-schema@2.0.3": - resolution: - { - integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==, - } - deprecated: Use @eslint/object-schema instead - - "@img/sharp-darwin-arm64@0.33.5": - resolution: - { - integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - cpu: [arm64] - os: [darwin] - - "@img/sharp-darwin-x64@0.33.5": - resolution: - { - integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - cpu: [x64] - os: [darwin] - - "@img/sharp-libvips-darwin-arm64@1.0.4": - resolution: - { - integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==, - } - cpu: [arm64] - os: [darwin] - - "@img/sharp-libvips-darwin-x64@1.0.4": - resolution: - { - integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==, - } - cpu: [x64] - os: [darwin] - - "@img/sharp-libvips-linux-arm64@1.0.4": - resolution: - { - integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==, - } - cpu: [arm64] - os: [linux] - - "@img/sharp-libvips-linux-arm@1.0.5": - resolution: - { - integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==, - } - cpu: [arm] - os: [linux] - - "@img/sharp-libvips-linux-s390x@1.0.4": - resolution: - { - integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==, - } - cpu: [s390x] - os: [linux] - - "@img/sharp-libvips-linux-x64@1.0.4": - resolution: - { - integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==, - } - cpu: [x64] - os: [linux] - - "@img/sharp-libvips-linuxmusl-arm64@1.0.4": - resolution: - { - integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==, - } - cpu: [arm64] - os: [linux] - - "@img/sharp-libvips-linuxmusl-x64@1.0.4": - resolution: - { - integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==, - } - cpu: [x64] - os: [linux] - - "@img/sharp-linux-arm64@0.33.5": - resolution: - { - integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - cpu: [arm64] - os: [linux] - - "@img/sharp-linux-arm@0.33.5": - resolution: - { - integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - cpu: [arm] - os: [linux] - - "@img/sharp-linux-s390x@0.33.5": - resolution: - { - integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - cpu: [s390x] - os: [linux] - - "@img/sharp-linux-x64@0.33.5": - resolution: - { - integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - cpu: [x64] - os: [linux] - - "@img/sharp-linuxmusl-arm64@0.33.5": - resolution: - { - integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - cpu: [arm64] - os: [linux] - - "@img/sharp-linuxmusl-x64@0.33.5": - resolution: - { - integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - cpu: [x64] - os: [linux] - - "@img/sharp-wasm32@0.33.5": - resolution: - { - integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - cpu: [wasm32] - - "@img/sharp-win32-ia32@0.33.5": - resolution: - { - integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - cpu: [ia32] - os: [win32] - - "@img/sharp-win32-x64@0.33.5": - resolution: - { - integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - cpu: [x64] - os: [win32] - - "@inquirer/external-editor@1.0.1": - resolution: - { - integrity: sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==, - } - engines: { node: ">=18" } - peerDependencies: - "@types/node": ">=18" - peerDependenciesMeta: - "@types/node": - optional: true - - "@isaacs/balanced-match@4.0.1": - resolution: - { - integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==, - } - engines: { node: 20 || >=22 } - - "@isaacs/brace-expansion@5.0.0": - resolution: - { - integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==, - } - engines: { node: 20 || >=22 } - - "@isaacs/cliui@8.0.2": - resolution: - { - integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, - } - engines: { node: ">=12" } - - "@isaacs/fs-minipass@4.0.1": - resolution: - { - integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==, - } - engines: { node: ">=18.0.0" } - - "@isaacs/ttlcache@1.4.1": - resolution: - { - integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==, - } - engines: { node: ">=12" } - - "@istanbuljs/load-nyc-config@1.1.0": - resolution: - { - integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==, - } - engines: { node: ">=8" } - - "@istanbuljs/schema@0.1.3": - resolution: - { - integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==, - } - engines: { node: ">=8" } - - "@jest/console@29.7.0": - resolution: - { - integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/core@29.7.0": - resolution: - { - integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - "@jest/create-cache-key-function@29.7.0": - resolution: - { - integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/environment@29.7.0": - resolution: - { - integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/expect-utils@29.7.0": - resolution: - { - integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/expect@29.7.0": - resolution: - { - integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/fake-timers@29.7.0": - resolution: - { - integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/globals@29.7.0": - resolution: - { - integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/reporters@29.7.0": - resolution: - { - integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - "@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/source-map@29.6.3": - resolution: - { - integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/test-result@29.7.0": - resolution: - { - integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/test-sequencer@29.7.0": - resolution: - { - integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/transform@29.7.0": - resolution: - { - integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jest/types@29.6.3": - resolution: - { - integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - "@jridgewell/gen-mapping@0.3.13": - resolution: - { - integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, - } - - "@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/sourcemap-codec@1.5.5": - resolution: - { - integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, - } - - "@jridgewell/trace-mapping@0.3.30": - resolution: - { - integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==, - } - - "@jridgewell/trace-mapping@0.3.9": - resolution: - { - integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, - } - - "@manypkg/find-root@1.1.0": - resolution: - { - integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==, - } - - "@manypkg/get-packages@1.1.3": - resolution: - { - integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==, - } - - "@microsoft/tsdoc-config@0.16.2": - resolution: - { - integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==, - } - - "@microsoft/tsdoc@0.14.2": - resolution: - { - integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==, - } - - "@napi-rs/wasm-runtime@0.2.12": - resolution: - { - integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==, - } - - "@next/env@14.2.31": - resolution: - { - integrity: sha512-X8VxxYL6VuezrG82h0pUA1V+DuTSJp7Nv15bxq3ivrFqZLjx81rfeHMWOE9T0jm1n3DtHGv8gdn6B0T0kr0D3Q==, - } - - "@next/eslint-plugin-next@13.5.11": - resolution: - { - integrity: sha512-0qjDhes9UTSxirt/dYzrv20hs8SUhcIOvlEioj5+XucVrBHihnAk6Om7Vzk+VZ2nRE7tcShm/6lH1xSkJ3XMpg==, - } - - "@next/eslint-plugin-next@14.0.4": - resolution: - { - integrity: sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==, - } - - "@next/swc-darwin-arm64@14.2.31": - resolution: - { - integrity: sha512-dTHKfaFO/xMJ3kzhXYgf64VtV6MMwDs2viedDOdP+ezd0zWMOQZkxcwOfdcQeQCpouTr9b+xOqMCUXxgLizl8Q==, - } - engines: { node: ">= 10" } - cpu: [arm64] - os: [darwin] - - "@next/swc-darwin-x64@14.2.31": - resolution: - { - integrity: sha512-iSavebQgeMukUAfjfW8Fi2Iz01t95yxRl2w2wCzjD91h5In9la99QIDKcKSYPfqLjCgwz3JpIWxLG6LM/sxL4g==, - } - engines: { node: ">= 10" } - cpu: [x64] - os: [darwin] - - "@next/swc-linux-arm64-gnu@14.2.31": - resolution: - { - integrity: sha512-XJb3/LURg1u1SdQoopG6jDL2otxGKChH2UYnUTcby4izjM0il7ylBY5TIA7myhvHj9lG5pn9F2nR2s3i8X9awQ==, - } - engines: { node: ">= 10" } - cpu: [arm64] - os: [linux] - - "@next/swc-linux-arm64-musl@14.2.31": - resolution: - { - integrity: sha512-IInDAcchNCu3BzocdqdCv1bKCmUVO/bKJHnBFTeq3svfaWpOPewaLJ2Lu3GL4yV76c/86ZvpBbG/JJ1lVIs5MA==, - } - engines: { node: ">= 10" } - cpu: [arm64] - os: [linux] - - "@next/swc-linux-x64-gnu@14.2.31": - resolution: - { - integrity: sha512-YTChJL5/9e4NXPKW+OJzsQa42RiWUNbE+k+ReHvA+lwXk+bvzTsVQboNcezWOuCD+p/J+ntxKOB/81o0MenBhw==, - } - engines: { node: ">= 10" } - cpu: [x64] - os: [linux] - - "@next/swc-linux-x64-musl@14.2.31": - resolution: - { - integrity: sha512-A0JmD1y4q/9ufOGEAhoa60Sof++X10PEoiWOH0gZ2isufWZeV03NnyRlRmJpRQWGIbRkJUmBo9I3Qz5C10vx4w==, - } - engines: { node: ">= 10" } - cpu: [x64] - os: [linux] - - "@next/swc-win32-arm64-msvc@14.2.31": - resolution: - { - integrity: sha512-nowJ5GbMeDOMzbTm29YqrdrD6lTM8qn2wnZfGpYMY7SZODYYpaJHH1FJXE1l1zWICHR+WfIMytlTDBHu10jb8A==, - } - engines: { node: ">= 10" } - cpu: [arm64] - os: [win32] - - "@next/swc-win32-ia32-msvc@14.2.31": - resolution: - { - integrity: sha512-pk9Bu4K0015anTS1OS9d/SpS0UtRObC+xe93fwnm7Gvqbv/W1ZbzhK4nvc96RURIQOux3P/bBH316xz8wjGSsA==, - } - engines: { node: ">= 10" } - cpu: [ia32] - os: [win32] - - "@next/swc-win32-x64-msvc@14.2.31": - resolution: - { - integrity: sha512-LwFZd4JFnMHGceItR9+jtlMm8lGLU/IPkgjBBgYmdYSfalbHCiDpjMYtgDQ2wtwiAOSJOCyFI4m8PikrsDyA6Q==, - } - engines: { node: ">= 10" } - cpu: [x64] - os: [win32] - - "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - resolution: - { - integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==, - } - - "@noble/ciphers@1.3.0": - resolution: - { - integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==, - } - engines: { node: ^14.21.3 || >=16 } - - "@noble/curves@1.9.7": - resolution: - { - integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==, - } - engines: { node: ^14.21.3 || >=16 } - - "@noble/hashes@1.8.0": - resolution: - { - integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==, - } - engines: { node: ^14.21.3 || >=16 } - - "@node-minify/core@8.0.6": - resolution: - { - integrity: sha512-/vxN46ieWDLU67CmgbArEvOb41zlYFOkOtr9QW9CnTrBLuTyGgkyNWC2y5+khvRw3Br58p2B5ZVSx/PxCTru6g==, - } - engines: { node: ">=16.0.0" } - - "@node-minify/terser@8.0.6": - resolution: - { - integrity: sha512-grQ1ipham743ch2c3++C8Isk6toJnxJSyDiwUI/IWUCh4CZFD6aYVw6UAY40IpCnjrq5aXGwiv5OZJn6Pr0hvg==, - } - engines: { node: ">=16.0.0" } - - "@node-minify/utils@8.0.6": - resolution: - { - integrity: sha512-csY4qcR7jUwiZmkreNTJhcypQfts2aY2CK+a+rXgXUImZiZiySh0FvwHjRnlqWKvg+y6ae9lHFzDRjBTmqlTIQ==, - } - engines: { node: ">=16.0.0" } - - "@nodelib/fs.scandir@2.1.5": - resolution: - { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, - } - engines: { node: ">= 8" } - - "@nodelib/fs.stat@2.0.5": - resolution: - { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, - } - engines: { node: ">= 8" } - - "@nodelib/fs.walk@1.2.8": - resolution: - { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, - } - engines: { node: ">= 8" } - - "@nolyfill/is-core-module@1.0.39": - resolution: - { - integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==, - } - engines: { node: ">=12.4.0" } - - "@opennextjs/aws@3.7.6": - resolution: - { - integrity: sha512-l4UGkmaZaAjWER+PuZ/zNziMnrbf6oA9B1RUDKcyKsX+hEES1b7h6kLgpo4a4maf01M+k0yJUZQyF4sf+vI+Iw==, - } - hasBin: true - - "@opennextjs/cloudflare@1.7.1": - resolution: - { - integrity: sha512-g3d8LSpGGJzuCLuLYHAs7nGWFKK57qSOgxhpn3wwk6t/tXxsneXA3D5nbf6zLsAQQo8b6A8LDcT732U3rUXUeA==, - } - hasBin: true - peerDependencies: - wrangler: ^4.24.4 - - "@pkgjs/parseargs@0.11.0": - resolution: - { - integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, - } - engines: { node: ">=14" } - - "@pkgr/core@0.2.9": - resolution: - { - integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==, - } - engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } - - "@poppinss/colors@4.1.5": - resolution: - { - integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==, - } - - "@poppinss/dumper@0.6.4": - resolution: - { - integrity: sha512-iG0TIdqv8xJ3Lt9O8DrPRxw1MRLjNpoqiSGU03P/wNLP/s0ra0udPJ1J2Tx5M0J3H/cVyEgpbn8xUKRY9j59kQ==, - } - - "@poppinss/exception@1.2.2": - resolution: - { - integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==, - } - - "@protobuf-ts/runtime@2.11.1": - resolution: - { - integrity: sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ==, - } - - "@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/codegen@2.0.4": - resolution: - { - integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==, - } - - "@protobufjs/eventemitter@1.1.0": - resolution: - { - integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==, - } - - "@protobufjs/fetch@1.1.0": - resolution: - { - integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==, - } - - "@protobufjs/float@1.0.2": - resolution: - { - integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==, - } - - "@protobufjs/inquire@1.1.0": - resolution: - { - integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==, - } - - "@protobufjs/path@1.1.2": - resolution: - { - integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==, - } - - "@protobufjs/pool@1.1.0": - resolution: - { - integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==, - } - - "@protobufjs/utf8@1.1.0": - resolution: - { - integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==, - } - - "@radix-ui/primitive@1.1.3": - resolution: - { - integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==, - } - - "@radix-ui/react-arrow@1.1.7": - resolution: - { - integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==, - } - peerDependencies: - "@types/react": ^18.2.47 - "@types/react-dom": ^18.2.18 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - - "@radix-ui/react-compose-refs@1.1.2": - resolution: - { - integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==, - } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - "@radix-ui/react-context@1.1.2": - resolution: - { - integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==, - } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - "@radix-ui/react-dialog@1.1.15": - resolution: - { - integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==, - } - peerDependencies: - "@types/react": ^18.2.47 - "@types/react-dom": ^18.2.18 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - - "@radix-ui/react-dismissable-layer@1.1.11": - resolution: - { - integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==, - } - peerDependencies: - "@types/react": ^18.2.47 - "@types/react-dom": ^18.2.18 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - - "@radix-ui/react-focus-guards@1.1.3": - resolution: - { - integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==, - } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - "@radix-ui/react-focus-scope@1.1.7": - resolution: - { - integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==, - } - peerDependencies: - "@types/react": ^18.2.47 - "@types/react-dom": ^18.2.18 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - - "@radix-ui/react-id@1.1.1": - resolution: - { - integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==, - } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - "@radix-ui/react-popover@1.1.15": - resolution: - { - integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==, - } - peerDependencies: - "@types/react": ^18.2.47 - "@types/react-dom": ^18.2.18 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - - "@radix-ui/react-popper@1.2.8": - resolution: - { - integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==, - } - peerDependencies: - "@types/react": ^18.2.47 - "@types/react-dom": ^18.2.18 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - - "@radix-ui/react-portal@1.1.9": - resolution: - { - integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==, - } - peerDependencies: - "@types/react": ^18.2.47 - "@types/react-dom": ^18.2.18 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - - "@radix-ui/react-presence@1.1.5": - resolution: - { - integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==, - } - peerDependencies: - "@types/react": ^18.2.47 - "@types/react-dom": ^18.2.18 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - - "@radix-ui/react-primitive@2.1.3": - resolution: - { - integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==, - } - peerDependencies: - "@types/react": ^18.2.47 - "@types/react-dom": ^18.2.18 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - - "@radix-ui/react-slot@1.2.3": - resolution: - { - integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==, - } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - "@radix-ui/react-use-callback-ref@1.1.1": - resolution: - { - integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==, - } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - "@radix-ui/react-use-controllable-state@1.2.2": - resolution: - { - integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==, - } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - "@radix-ui/react-use-effect-event@0.0.2": - resolution: - { - integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==, - } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - "@radix-ui/react-use-escape-keydown@1.1.1": - resolution: - { - integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==, - } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - "@radix-ui/react-use-layout-effect@1.1.1": - resolution: - { - integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==, - } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - "@radix-ui/react-use-rect@1.1.1": - resolution: - { - integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==, - } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - "@radix-ui/react-use-size@1.1.1": - resolution: - { - integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==, - } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - "@radix-ui/react-visually-hidden@1.2.3": - resolution: - { - integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==, - } - peerDependencies: - "@types/react": ^18.2.47 - "@types/react-dom": ^18.2.18 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - - "@radix-ui/rect@1.1.1": - resolution: - { - integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==, - } - - "@react-native-async-storage/async-storage@1.23.1": - resolution: - { - integrity: sha512-Qd2kQ3yi6Y3+AcUlrHxSLlnBvpdCEMVGFlVBneVOjaFaPU61g1huc38g339ysXspwY1QZA2aNhrk/KlHGO+ewA==, - } - peerDependencies: - react-native: ^0.0.0-0 || >=0.60 <1.0 - - "@react-native/assets-registry@0.76.7": - resolution: - { - integrity: sha512-o79whsqL5fbPTUQO9w1FptRd4cw1TaeOrXtQSLQeDrMVAenw/wmsjyPK10VKtvqxa1KNMtWEyfgxcM8CVZVFmg==, - } - engines: { node: ">=18" } - - "@react-native/babel-plugin-codegen@0.76.7": - resolution: - { - integrity: sha512-+8H4DXJREM4l/pwLF/wSVMRzVhzhGDix5jLezNrMD9J1U1AMfV2aSkWA1XuqR7pjPs/Vqf6TaPL7vJMZ4LU05Q==, - } - engines: { node: ">=18" } - - "@react-native/babel-plugin-codegen@0.79.5": - resolution: - { - integrity: sha512-Rt/imdfqXihD/sn0xnV4flxxb1aLLjPtMF1QleQjEhJsTUPpH4TFlfOpoCvsrXoDl4OIcB1k4FVM24Ez92zf5w==, - } - engines: { node: ">=18" } - - "@react-native/babel-preset@0.76.7": - resolution: - { - integrity: sha512-/c5DYZ6y8tyg+g8tgXKndDT7mWnGmkZ9F+T3qNDfoE3Qh7ucrNeC2XWvU9h5pk8eRtj9l4SzF4aO1phzwoibyg==, - } - engines: { node: ">=18" } - peerDependencies: - "@babel/core": "*" - - "@react-native/babel-preset@0.79.5": - resolution: - { - integrity: sha512-GDUYIWslMLbdJHEgKNfrOzXk8EDKxKzbwmBXUugoiSlr6TyepVZsj3GZDLEFarOcTwH1EXXHJsixihk8DCRQDA==, - } - engines: { node: ">=18" } - peerDependencies: - "@babel/core": "*" - - "@react-native/codegen@0.76.7": - resolution: - { - integrity: sha512-FAn585Ll65YvkSrKDyAcsdjHhhAGiMlSTUpHh0x7J5ntudUns+voYms0xMP+pEPt0XuLdjhD7zLIIlAWP407+g==, - } - engines: { node: ">=18" } - peerDependencies: - "@babel/preset-env": ^7.1.6 - - "@react-native/codegen@0.79.5": - resolution: - { - integrity: sha512-FO5U1R525A1IFpJjy+KVznEinAgcs3u7IbnbRJUG9IH/MBXi2lEU2LtN+JarJ81MCfW4V2p0pg6t/3RGHFRrlQ==, - } - engines: { node: ">=18" } - peerDependencies: - "@babel/core": "*" - - "@react-native/community-cli-plugin@0.76.7": - resolution: - { - integrity: sha512-lrcsY2WPLCEWU1pjdNV9+Ccj8vCEwCCURZiPa5aqi7lKB4C++1hPrxA8/CWWnTNcQp76DsBKGYqTFj7Ud4aupw==, - } - engines: { node: ">=18" } - peerDependencies: - "@react-native-community/cli-server-api": "*" - peerDependenciesMeta: - "@react-native-community/cli-server-api": - optional: true - - "@react-native/debugger-frontend@0.76.7": - resolution: - { - integrity: sha512-89ZtZXt7ZxE94i7T94qzZMhp4Gfcpr/QVpGqEaejAxZD+gvDCH21cYSF+/Rz2ttBazm0rk5MZ0mFqb0Iqp1jmw==, - } - engines: { node: ">=18" } - - "@react-native/debugger-frontend@0.79.5": - resolution: - { - integrity: sha512-WQ49TRpCwhgUYo5/n+6GGykXmnumpOkl4Lr2l2o2buWU9qPOwoiBqJAtmWEXsAug4ciw3eLiVfthn5ufs0VB0A==, - } - engines: { node: ">=18" } - - "@react-native/dev-middleware@0.76.7": - resolution: - { - integrity: sha512-Jsw8g9DyLPnR9yHEGuT09yHZ7M88/GL9CtU9WmyChlBwdXSeE3AmRqLegsV3XcgULQ1fqdemokaOZ/MwLYkjdA==, - } - engines: { node: ">=18" } - - "@react-native/dev-middleware@0.79.5": - resolution: - { - integrity: sha512-U7r9M/SEktOCP/0uS6jXMHmYjj4ESfYCkNAenBjFjjsRWekiHE+U/vRMeO+fG9gq4UCcBAUISClkQCowlftYBw==, - } - engines: { node: ">=18" } - - "@react-native/gradle-plugin@0.76.7": - resolution: - { - integrity: sha512-gQI6RcrJbigU8xk7F960C5xQIgvbBj20TUvGecD+N2PHfbLpqR+92cj7hz3UcbrCONmTP40WHnbMMJ8P+kLsrA==, - } - engines: { node: ">=18" } - - "@react-native/js-polyfills@0.76.7": - resolution: - { - integrity: sha512-+iEikj6c6Zvrg1c3cYMeiPB+5nS8EaIC3jCtP6Muk3qc7c386IymEPM2xycIlfg04DPZvO3D4P2/vaO9/TCnUg==, - } - engines: { node: ">=18" } - - "@react-native/metro-babel-transformer@0.76.7": - resolution: - { - integrity: sha512-jDS1wR7q46xY5ah+jF714Mvss9l7+lmwW/tplahZgLKozkYDC8Td5o9TOCgKlv18acw9H1V7zv8ivuRSj8ICPg==, - } - engines: { node: ">=18" } - peerDependencies: - "@babel/core": "*" - - "@react-native/normalize-colors@0.76.7": - resolution: - { - integrity: sha512-ST1xxBuYVIXPdD81dR6+tzIgso7m3pa9+6rOBXTh5Xm7KEEFik7tnQX+GydXYMp3wr1gagJjragdXkPnxK6WNg==, - } - - "@react-native/normalize-colors@0.79.5": - resolution: - { - integrity: sha512-nGXMNMclZgzLUxijQQ38Dm3IAEhgxuySAWQHnljFtfB0JdaMwpe0Ox9H7Tp2OgrEA+EMEv+Od9ElKlHwGKmmvQ==, - } - - "@react-native/virtualized-lists@0.72.8": - resolution: - { - integrity: sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==, - } - peerDependencies: - react-native: "*" - - "@react-native/virtualized-lists@0.76.7": - resolution: - { - integrity: sha512-pRUf1jUO8H9Ft04CaWv76t34QI9wY0sydoYlIwEtqXjjMJgmgDoOCAWBjArgn2mk8/rK+u/uicI67ZCYCp1pJw==, - } - engines: { node: ">=18" } - peerDependencies: - "@types/react": ^18.2.47 - react: "*" - react-native: "*" - peerDependenciesMeta: - "@types/react": - optional: true - - "@rtsao/scc@1.1.0": - resolution: - { - integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==, - } - - "@rushstack/eslint-patch@1.12.0": - resolution: - { - integrity: sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==, - } - - "@sinclair/typebox@0.27.8": - resolution: - { - integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==, - } - - "@sindresorhus/is@7.0.2": - resolution: - { - integrity: sha512-d9xRovfKNz1SKieM0qJdO+PQonjnnIfSNWfHYnBSJ9hkjm0ZPw6HlxscDXYstp3z+7V2GOFHc+J0CYrYTjqCJw==, - } - engines: { node: ">=18" } - - "@sinonjs/commons@3.0.1": - resolution: - { - integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==, - } - - "@sinonjs/fake-timers@10.3.0": - resolution: - { - integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==, - } - - "@smithy/abort-controller@2.2.0": - resolution: - { - integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==, - } - engines: { node: ">=14.0.0" } - - "@smithy/abort-controller@4.0.5": - resolution: - { - integrity: sha512-jcrqdTQurIrBbUm4W2YdLVMQDoL0sA9DTxYd2s+R/y+2U9NLOP7Xf/YqfSg1FZhlZIYEnvk2mwbyvIfdLEPo8g==, - } - engines: { node: ">=18.0.0" } - - "@smithy/chunked-blob-reader-native@4.0.0": - resolution: - { - integrity: sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==, - } - engines: { node: ">=18.0.0" } - - "@smithy/chunked-blob-reader@5.0.0": - resolution: - { - integrity: sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/config-resolver@2.2.0": - resolution: - { - integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/config-resolver@4.1.5": - resolution: - { - integrity: sha512-viuHMxBAqydkB0AfWwHIdwf/PRH2z5KHGUzqyRtS/Wv+n3IHI993Sk76VCA7dD/+GzgGOmlJDITfPcJC1nIVIw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/core@3.8.0": - resolution: - { - integrity: sha512-EYqsIYJmkR1VhVE9pccnk353xhs+lB6btdutJEtsp7R055haMJp2yE16eSxw8fv+G0WUY6vqxyYOP8kOqawxYQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/credential-provider-imds@2.3.0": - resolution: - { - integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==, - } - engines: { node: ">=14.0.0" } - - "@smithy/credential-provider-imds@4.0.7": - resolution: - { - integrity: sha512-dDzrMXA8d8riFNiPvytxn0mNwR4B3h8lgrQ5UjAGu6T9z/kRg/Xncf4tEQHE/+t25sY8IH3CowcmWi+1U5B1Gw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/eventstream-codec@4.0.5": - resolution: - { - integrity: sha512-miEUN+nz2UTNoRYRhRqVTJCx7jMeILdAurStT2XoS+mhokkmz1xAPp95DFW9Gxt4iF2VBqpeF9HbTQ3kY1viOA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/eventstream-serde-browser@4.0.5": - resolution: - { - integrity: sha512-LCUQUVTbM6HFKzImYlSB9w4xafZmpdmZsOh9rIl7riPC3osCgGFVP+wwvYVw6pXda9PPT9TcEZxaq3XE81EdJQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/eventstream-serde-config-resolver@4.1.3": - resolution: - { - integrity: sha512-yTTzw2jZjn/MbHu1pURbHdpjGbCuMHWncNBpJnQAPxOVnFUAbSIUSwafiphVDjNV93TdBJWmeVAds7yl5QCkcA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/eventstream-serde-node@4.0.5": - resolution: - { - integrity: sha512-lGS10urI4CNzz6YlTe5EYG0YOpsSp3ra8MXyco4aqSkQDuyZPIw2hcaxDU82OUVtK7UY9hrSvgWtpsW5D4rb4g==, - } - engines: { node: ">=18.0.0" } - - "@smithy/eventstream-serde-universal@4.0.5": - resolution: - { - integrity: sha512-JFnmu4SU36YYw3DIBVao3FsJh4Uw65vVDIqlWT4LzR6gXA0F3KP0IXFKKJrhaVzCBhAuMsrUUaT5I+/4ZhF7aw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/fetch-http-handler@2.5.0": - resolution: - { - integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==, - } - - "@smithy/fetch-http-handler@5.1.1": - resolution: - { - integrity: sha512-61WjM0PWmZJR+SnmzaKI7t7G0UkkNFboDpzIdzSoy7TByUzlxo18Qlh9s71qug4AY4hlH/CwXdubMtkcNEb/sQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/hash-blob-browser@4.0.5": - resolution: - { - integrity: sha512-F7MmCd3FH/Q2edhcKd+qulWkwfChHbc9nhguBlVjSUE6hVHhec3q6uPQ+0u69S6ppvLtR3eStfCuEKMXBXhvvA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/hash-node@2.2.0": - resolution: - { - integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==, - } - engines: { node: ">=14.0.0" } - - "@smithy/hash-node@4.0.5": - resolution: - { - integrity: sha512-cv1HHkKhpyRb6ahD8Vcfb2Hgz67vNIXEp2vnhzfxLFGRukLCNEA5QdsorbUEzXma1Rco0u3rx5VTqbM06GcZqQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/hash-stream-node@4.0.5": - resolution: - { - integrity: sha512-IJuDS3+VfWB67UC0GU0uYBG/TA30w+PlOaSo0GPm9UHS88A6rCP6uZxNjNYiyRtOcjv7TXn/60cW8ox1yuZsLg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/invalid-dependency@2.2.0": - resolution: - { - integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==, - } - - "@smithy/invalid-dependency@4.0.5": - resolution: - { - integrity: sha512-IVnb78Qtf7EJpoEVo7qJ8BEXQwgC4n3igeJNNKEj/MLYtapnx8A67Zt/J3RXAj2xSO1910zk0LdFiygSemuLow==, - } - engines: { node: ">=18.0.0" } - - "@smithy/is-array-buffer@2.2.0": - resolution: - { - integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/is-array-buffer@4.0.0": - resolution: - { - integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/md5-js@4.0.5": - resolution: - { - integrity: sha512-8n2XCwdUbGr8W/XhMTaxILkVlw2QebkVTn5tm3HOcbPbOpWg89zr6dPXsH8xbeTsbTXlJvlJNTQsKAIoqQGbdA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/middleware-content-length@2.2.0": - resolution: - { - integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==, - } - engines: { node: ">=14.0.0" } - - "@smithy/middleware-content-length@4.0.5": - resolution: - { - integrity: sha512-l1jlNZoYzoCC7p0zCtBDE5OBXZ95yMKlRlftooE5jPWQn4YBPLgsp+oeHp7iMHaTGoUdFqmHOPa8c9G3gBsRpQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/middleware-endpoint@2.5.1": - resolution: - { - integrity: sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==, - } - engines: { node: ">=14.0.0" } - - "@smithy/middleware-endpoint@4.1.18": - resolution: - { - integrity: sha512-ZhvqcVRPZxnZlokcPaTwb+r+h4yOIOCJmx0v2d1bpVlmP465g3qpVSf7wxcq5zZdu4jb0H4yIMxuPwDJSQc3MQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/middleware-retry@2.3.1": - resolution: - { - integrity: sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/middleware-retry@4.1.19": - resolution: - { - integrity: sha512-X58zx/NVECjeuUB6A8HBu4bhx72EoUz+T5jTMIyeNKx2lf+Gs9TmWPNNkH+5QF0COjpInP/xSpJGJ7xEnAklQQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/middleware-serde@2.3.0": - resolution: - { - integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==, - } - engines: { node: ">=14.0.0" } - - "@smithy/middleware-serde@4.0.9": - resolution: - { - integrity: sha512-uAFFR4dpeoJPGz8x9mhxp+RPjo5wW0QEEIPPPbLXiRRWeCATf/Km3gKIVR5vaP8bN1kgsPhcEeh+IZvUlBv6Xg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/middleware-stack@2.2.0": - resolution: - { - integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/middleware-stack@4.0.5": - resolution: - { - integrity: sha512-/yoHDXZPh3ocRVyeWQFvC44u8seu3eYzZRveCMfgMOBcNKnAmOvjbL9+Cp5XKSIi9iYA9PECUuW2teDAk8T+OQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/node-config-provider@2.3.0": - resolution: - { - integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==, - } - engines: { node: ">=14.0.0" } - - "@smithy/node-config-provider@4.1.4": - resolution: - { - integrity: sha512-+UDQV/k42jLEPPHSn39l0Bmc4sB1xtdI9Gd47fzo/0PbXzJ7ylgaOByVjF5EeQIumkepnrJyfx86dPa9p47Y+w==, - } - engines: { node: ">=18.0.0" } - - "@smithy/node-http-handler@2.5.0": - resolution: - { - integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/node-http-handler@4.1.1": - resolution: - { - integrity: sha512-RHnlHqFpoVdjSPPiYy/t40Zovf3BBHc2oemgD7VsVTFFZrU5erFFe0n52OANZZ/5sbshgD93sOh5r6I35Xmpaw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/property-provider@2.2.0": - resolution: - { - integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==, - } - engines: { node: ">=14.0.0" } - - "@smithy/property-provider@4.0.5": - resolution: - { - integrity: sha512-R/bswf59T/n9ZgfgUICAZoWYKBHcsVDurAGX88zsiUtOTA/xUAPyiT+qkNCPwFn43pZqN84M4MiUsbSGQmgFIQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/protocol-http@2.0.5": - resolution: - { - integrity: sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw==, - } - engines: { node: ">=14.0.0" } - - "@smithy/protocol-http@3.3.0": - resolution: - { - integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==, - } - engines: { node: ">=14.0.0" } - - "@smithy/protocol-http@5.1.3": - resolution: - { - integrity: sha512-fCJd2ZR7D22XhDY0l+92pUag/7je2BztPRQ01gU5bMChcyI0rlly7QFibnYHzcxDvccMjlpM/Q1ev8ceRIb48w==, - } - engines: { node: ">=18.0.0" } - - "@smithy/querystring-builder@2.2.0": - resolution: - { - integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==, - } - engines: { node: ">=14.0.0" } - - "@smithy/querystring-builder@4.0.5": - resolution: - { - integrity: sha512-NJeSCU57piZ56c+/wY+AbAw6rxCCAOZLCIniRE7wqvndqxcKKDOXzwWjrY7wGKEISfhL9gBbAaWWgHsUGedk+A==, - } - engines: { node: ">=18.0.0" } - - "@smithy/querystring-parser@2.2.0": - resolution: - { - integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/querystring-parser@4.0.5": - resolution: - { - integrity: sha512-6SV7md2CzNG/WUeTjVe6Dj8noH32r4MnUeFKZrnVYsQxpGSIcphAanQMayi8jJLZAWm6pdM9ZXvKCpWOsIGg0w==, - } - engines: { node: ">=18.0.0" } - - "@smithy/service-error-classification@2.1.5": - resolution: - { - integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==, - } - engines: { node: ">=14.0.0" } - - "@smithy/service-error-classification@4.0.7": - resolution: - { - integrity: sha512-XvRHOipqpwNhEjDf2L5gJowZEm5nsxC16pAZOeEcsygdjv9A2jdOh3YoDQvOXBGTsaJk6mNWtzWalOB9976Wlg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/shared-ini-file-loader@2.4.0": - resolution: - { - integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/shared-ini-file-loader@4.0.5": - resolution: - { - integrity: sha512-YVVwehRDuehgoXdEL4r1tAAzdaDgaC9EQvhK0lEbfnbrd0bd5+CTQumbdPryX3J2shT7ZqQE+jPW4lmNBAB8JQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/signature-v4@2.3.0": - resolution: - { - integrity: sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==, - } - engines: { node: ">=14.0.0" } - - "@smithy/signature-v4@5.1.3": - resolution: - { - integrity: sha512-mARDSXSEgllNzMw6N+mC+r1AQlEBO3meEAkR/UlfAgnMzJUB3goRBWgip1EAMG99wh36MDqzo86SfIX5Y+VEaw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/smithy-client@2.5.1": - resolution: - { - integrity: sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==, - } - engines: { node: ">=14.0.0" } - - "@smithy/smithy-client@4.4.10": - resolution: - { - integrity: sha512-iW6HjXqN0oPtRS0NK/zzZ4zZeGESIFcxj2FkWed3mcK8jdSdHzvnCKXSjvewESKAgGKAbJRA+OsaqKhkdYRbQQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/types@2.12.0": - resolution: - { - integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==, - } - engines: { node: ">=14.0.0" } - - "@smithy/types@4.3.2": - resolution: - { - integrity: sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/url-parser@2.2.0": - resolution: - { - integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==, - } - - "@smithy/url-parser@4.0.5": - resolution: - { - integrity: sha512-j+733Um7f1/DXjYhCbvNXABV53NyCRRA54C7bNEIxNPs0YjfRxeMKjjgm2jvTYrciZyCjsicHwQ6Q0ylo+NAUw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-base64@2.3.0": - resolution: - { - integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-base64@4.0.0": - resolution: - { - integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-body-length-browser@2.2.0": - resolution: - { - integrity: sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==, - } - - "@smithy/util-body-length-browser@4.0.0": - resolution: - { - integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-body-length-node@2.3.0": - resolution: - { - integrity: sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-body-length-node@4.0.0": - resolution: - { - integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-buffer-from@2.2.0": - resolution: - { - integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-buffer-from@4.0.0": - resolution: - { - integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-config-provider@2.3.0": - resolution: - { - integrity: sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-config-provider@4.0.0": - resolution: - { - integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-defaults-mode-browser@2.2.1": - resolution: - { - integrity: sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==, - } - engines: { node: ">= 10.0.0" } - - "@smithy/util-defaults-mode-browser@4.0.26": - resolution: - { - integrity: sha512-xgl75aHIS/3rrGp7iTxQAOELYeyiwBu+eEgAk4xfKwJJ0L8VUjhO2shsDpeil54BOFsqmk5xfdesiewbUY5tKQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-defaults-mode-node@2.3.1": - resolution: - { - integrity: sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==, - } - engines: { node: ">= 10.0.0" } - - "@smithy/util-defaults-mode-node@4.0.26": - resolution: - { - integrity: sha512-z81yyIkGiLLYVDetKTUeCZQ8x20EEzvQjrqJtb/mXnevLq2+w3XCEWTJ2pMp401b6BkEkHVfXb/cROBpVauLMQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-endpoints@3.0.7": - resolution: - { - integrity: sha512-klGBP+RpBp6V5JbrY2C/VKnHXn3d5V2YrifZbmMY8os7M6m8wdYFoO6w/fe5VkP+YVwrEktW3IWYaSQVNZJ8oQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-hex-encoding@2.2.0": - resolution: - { - integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-hex-encoding@4.0.0": - resolution: - { - integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-middleware@2.2.0": - resolution: - { - integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-middleware@4.0.5": - resolution: - { - integrity: sha512-N40PfqsZHRSsByGB81HhSo+uvMxEHT+9e255S53pfBw/wI6WKDI7Jw9oyu5tJTLwZzV5DsMha3ji8jk9dsHmQQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-retry@2.2.0": - resolution: - { - integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==, - } - engines: { node: ">= 14.0.0" } - - "@smithy/util-retry@4.0.7": - resolution: - { - integrity: sha512-TTO6rt0ppK70alZpkjwy+3nQlTiqNfoXja+qwuAchIEAIoSZW8Qyd76dvBv3I5bCpE38APafG23Y/u270NspiQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-stream@2.2.0": - resolution: - { - integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-stream@4.2.4": - resolution: - { - integrity: sha512-vSKnvNZX2BXzl0U2RgCLOwWaAP9x/ddd/XobPK02pCbzRm5s55M53uwb1rl/Ts7RXZvdJZerPkA+en2FDghLuQ==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-uri-escape@2.2.0": - resolution: - { - integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-uri-escape@4.0.0": - resolution: - { - integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-utf8@2.3.0": - resolution: - { - integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-utf8@4.0.0": - resolution: - { - integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==, - } - engines: { node: ">=18.0.0" } - - "@smithy/util-waiter@2.2.0": - resolution: - { - integrity: sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==, - } - engines: { node: ">=14.0.0" } - - "@smithy/util-waiter@4.0.7": - resolution: - { - integrity: sha512-mYqtQXPmrwvUljaHyGxYUIIRI3qjBTEb/f5QFi3A6VlxhpmZd5mWXn9W+qUkf2pVE1Hv3SqxefiZOPGdxmO64A==, - } - engines: { node: ">=18.0.0" } - - "@speed-highlight/core@1.2.7": - resolution: - { - integrity: sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g==, - } - - "@swc/counter@0.1.3": - resolution: - { - integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==, - } - - "@swc/helpers@0.5.5": - resolution: - { - integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==, - } - - "@testing-library/dom@9.3.4": - resolution: - { - integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==, - } - engines: { node: ">=14" } - - "@testing-library/jest-dom@6.7.0": - resolution: - { - integrity: sha512-RI2e97YZ7MRa+vxP4UUnMuMFL2buSsf0ollxUbTgrbPLKhMn8KVTx7raS6DYjC7v1NDVrioOvaShxsguLNISCA==, - } - engines: { node: ">=14", npm: ">=6", yarn: ">=1" } - - "@testing-library/react@14.3.1": - resolution: - { - integrity: sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==, - } - engines: { node: ">=14" } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - "@tootallnate/once@2.0.0": - resolution: - { - integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==, - } - engines: { node: ">= 10" } - - "@tsconfig/node10@1.0.11": - resolution: - { - integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==, - } - - "@tsconfig/node12@1.0.11": - resolution: - { - integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==, - } - - "@tsconfig/node14@1.0.3": - resolution: - { - integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==, - } - - "@tsconfig/node16@1.0.4": - resolution: - { - integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==, - } - - "@tsconfig/node18@1.0.3": - resolution: - { - integrity: sha512-RbwvSJQsuN9TB04AQbGULYfOGE/RnSFk/FLQ5b0NmDf5Kx2q/lABZbHQPKCO1vZ6Fiwkplu+yb9pGdLy1iGseQ==, - } - - "@tybys/wasm-util@0.10.0": - resolution: - { - integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==, - } - - "@types/aria-query@5.0.4": - resolution: - { - integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==, - } - - "@types/babel__core@7.20.5": - resolution: - { - integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==, - } - - "@types/babel__generator@7.27.0": - resolution: - { - integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==, - } - - "@types/babel__template@7.4.4": - resolution: - { - integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==, - } - - "@types/babel__traverse@7.28.0": - resolution: - { - integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==, - } - - "@types/fs-extra@8.1.5": - resolution: - { - integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==, - } - - "@types/glob@7.2.0": - resolution: - { - integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==, - } - - "@types/graceful-fs@4.1.9": - resolution: - { - integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==, - } - - "@types/istanbul-lib-coverage@2.0.6": - resolution: - { - integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==, - } - - "@types/istanbul-lib-report@3.0.3": - resolution: - { - integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==, - } - - "@types/istanbul-reports@3.0.4": - resolution: - { - integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==, - } - - "@types/jest@29.5.14": - resolution: - { - integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==, - } - - "@types/jsdom@20.0.1": - resolution: - { - integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==, - } - - "@types/json-schema@7.0.15": - resolution: - { - integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, - } - - "@types/json5@0.0.29": - resolution: - { - integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, - } - - "@types/long@4.0.2": - resolution: - { - integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==, - } - - "@types/minimatch@6.0.0": - resolution: - { - integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==, - } - deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. - - "@types/node-fetch@2.6.13": - resolution: - { - integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==, - } - - "@types/node-forge@1.3.13": - resolution: - { - integrity: sha512-zePQJSW5QkwSHKRApqWCVKeKoSOt4xvEnLENZPjyvm9Ezdf/EyDeJM7jqLzOwjVICQQzvLZ63T55MKdJB5H6ww==, - } - - "@types/node@12.20.55": - resolution: - { - integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==, - } - - "@types/node@18.19.123": - resolution: - { - integrity: sha512-K7DIaHnh0mzVxreCR9qwgNxp3MH9dltPNIEddW9MYUlcKAzm+3grKNSTe2vCJHI1FaLpvpL5JGJrz1UZDKYvDg==, - } - - "@types/node@20.19.11": - resolution: - { - integrity: sha512-uug3FEEGv0r+jrecvUUpbY8lLisvIjg6AAic6a2bSP5OEOLeJsDSnvhCDov7ipFFMXS3orMpzlmi0ZcuGkBbow==, - } - - "@types/normalize-package-data@2.4.4": - resolution: - { - integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==, - } - - "@types/prop-types@15.7.15": - resolution: - { - integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==, - } - - "@types/react-dom@18.3.7": - resolution: - { - integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==, - } - peerDependencies: - "@types/react": ^18.2.47 - - "@types/react-native@0.72.8": - resolution: - { - integrity: sha512-St6xA7+EoHN5mEYfdWnfYt0e8u6k2FR0P9s2arYgakQGFgU1f9FlPrIEcj0X24pLCF5c5i3WVuLCUdiCYHmOoA==, - } - - "@types/react@18.3.23": - resolution: - { - integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==, - } - - "@types/semver@7.7.0": - resolution: - { - integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==, - } - - "@types/stack-utils@2.0.3": - resolution: - { - integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==, - } - - "@types/text-encoding@0.0.39": - resolution: - { - integrity: sha512-gRPvgL1aMgP6Pv92Rs310cJvVQ86DSF62E7K30g1FoGmmYWXoNuXT8PV835iAVeiAZkRwr2IW37KuyDn9ljmeA==, - } - - "@types/tough-cookie@4.0.5": - resolution: - { - integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==, - } - - "@types/uuid@9.0.8": - resolution: - { - integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==, - } - - "@types/yargs-parser@21.0.3": - resolution: - { - integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==, - } - - "@types/yargs@17.0.33": - resolution: - { - integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==, - } - - "@typescript-eslint/eslint-plugin@6.21.0": - resolution: - { - integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - peerDependencies: - "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - - "@typescript-eslint/parser@6.21.0": - resolution: - { - integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - - "@typescript-eslint/scope-manager@5.62.0": - resolution: - { - integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - "@typescript-eslint/scope-manager@6.21.0": - resolution: - { - integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - - "@typescript-eslint/type-utils@6.21.0": - resolution: - { - integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - - "@typescript-eslint/types@5.62.0": - resolution: - { - integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - "@typescript-eslint/types@6.21.0": - resolution: - { - integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - - "@typescript-eslint/typescript-estree@5.62.0": - resolution: - { - integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - - "@typescript-eslint/typescript-estree@6.21.0": - resolution: - { - integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - peerDependencies: - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - - "@typescript-eslint/utils@5.62.0": - resolution: - { - integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - - "@typescript-eslint/utils@6.21.0": - resolution: - { - integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - - "@typescript-eslint/visitor-keys@5.62.0": - resolution: - { - integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - "@typescript-eslint/visitor-keys@6.21.0": - resolution: - { - integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - - "@ungap/structured-clone@1.3.0": - resolution: - { - integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==, - } - - "@unrs/resolver-binding-android-arm-eabi@1.11.1": - resolution: - { - integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==, - } - cpu: [arm] - os: [android] - - "@unrs/resolver-binding-android-arm64@1.11.1": - resolution: - { - integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==, - } - cpu: [arm64] - os: [android] - - "@unrs/resolver-binding-darwin-arm64@1.11.1": - resolution: - { - integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==, - } - cpu: [arm64] - os: [darwin] - - "@unrs/resolver-binding-darwin-x64@1.11.1": - resolution: - { - integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==, - } - cpu: [x64] - os: [darwin] - - "@unrs/resolver-binding-freebsd-x64@1.11.1": - resolution: - { - integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==, - } - cpu: [x64] - os: [freebsd] - - "@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1": - resolution: - { - integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==, - } - cpu: [arm] - os: [linux] - - "@unrs/resolver-binding-linux-arm-musleabihf@1.11.1": - resolution: - { - integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==, - } - cpu: [arm] - os: [linux] - - "@unrs/resolver-binding-linux-arm64-gnu@1.11.1": - resolution: - { - integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==, - } - cpu: [arm64] - os: [linux] - - "@unrs/resolver-binding-linux-arm64-musl@1.11.1": - resolution: - { - integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==, - } - cpu: [arm64] - os: [linux] - - "@unrs/resolver-binding-linux-ppc64-gnu@1.11.1": - resolution: - { - integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==, - } - cpu: [ppc64] - os: [linux] - - "@unrs/resolver-binding-linux-riscv64-gnu@1.11.1": - resolution: - { - integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==, - } - cpu: [riscv64] - os: [linux] - - "@unrs/resolver-binding-linux-riscv64-musl@1.11.1": - resolution: - { - integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==, - } - cpu: [riscv64] - os: [linux] - - "@unrs/resolver-binding-linux-s390x-gnu@1.11.1": - resolution: - { - integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==, - } - cpu: [s390x] - os: [linux] - - "@unrs/resolver-binding-linux-x64-gnu@1.11.1": - resolution: - { - integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==, - } - cpu: [x64] - os: [linux] - - "@unrs/resolver-binding-linux-x64-musl@1.11.1": - resolution: - { - integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==, - } - cpu: [x64] - os: [linux] - - "@unrs/resolver-binding-wasm32-wasi@1.11.1": - resolution: - { - integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==, - } - engines: { node: ">=14.0.0" } - cpu: [wasm32] - - "@unrs/resolver-binding-win32-arm64-msvc@1.11.1": - resolution: - { - integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==, - } - cpu: [arm64] - os: [win32] - - "@unrs/resolver-binding-win32-ia32-msvc@1.11.1": - resolution: - { - integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==, - } - cpu: [ia32] - os: [win32] - - "@unrs/resolver-binding-win32-x64-msvc@1.11.1": - resolution: - { - integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==, - } - cpu: [x64] - os: [win32] - - "@urql/core@5.2.0": - resolution: - { - integrity: sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==, - } - - "@urql/exchange-retry@1.3.2": - resolution: - { - integrity: sha512-TQMCz2pFJMfpNxmSfX1VSfTjwUIFx/mL+p1bnfM1xjjdla7Z+KnGMW/EhFbpckp3LyWAH4PgOsMwOMnIN+MBFg==, - } - peerDependencies: - "@urql/core": ^5.0.0 - - "@vercel/style-guide@5.2.0": - resolution: - { - integrity: sha512-fNSKEaZvSkiBoF6XEefs8CcgAV9K9e+MbcsDZjUsktHycKdA0jvjAzQi1W/FzLS+Nr5zZ6oejCwq/97dHUKe0g==, - } - engines: { node: ">=16" } - peerDependencies: - "@next/eslint-plugin-next": ">=12.3.0 <15" - eslint: ">=8.48.0 <9" - prettier: ">=3.0.0 <4" - typescript: ">=4.8.0 <6" - peerDependenciesMeta: - "@next/eslint-plugin-next": - optional: true - eslint: - optional: true - prettier: - optional: true - typescript: - optional: true - - "@wry/caches@1.0.1": - resolution: - { - integrity: sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==, - } - engines: { node: ">=8" } - - "@wry/context@0.7.4": - resolution: - { - integrity: sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==, - } - engines: { node: ">=8" } - - "@wry/equality@0.5.7": - resolution: - { - integrity: sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==, - } - engines: { node: ">=8" } - - "@wry/trie@0.5.0": - resolution: - { - integrity: sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==, - } - engines: { node: ">=8" } - - "@xmldom/xmldom@0.7.13": - resolution: - { - integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==, - } - engines: { node: ">=10.0.0" } - deprecated: this version is no longer supported, please update to at least 0.8.* - - "@xmldom/xmldom@0.8.11": - resolution: - { - integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==, - } - engines: { node: ">=10.0.0" } - - abab@2.0.6: - resolution: - { - integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==, - } - deprecated: Use your platform's native atob() and btoa() methods instead - - abort-controller@3.0.0: - resolution: - { - integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==, - } - engines: { node: ">=6.5" } - - accepts@1.3.8: - resolution: - { - integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==, - } - engines: { node: ">= 0.6" } - - accepts@2.0.0: - resolution: - { - integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==, - } - engines: { node: ">= 0.6" } - - acorn-globals@7.0.1: - resolution: - { - integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==, - } - - acorn-jsx@5.3.2: - resolution: - { - integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, - } - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.2: - resolution: - { - integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==, - } - engines: { node: ">=0.4.0" } - - acorn-walk@8.3.4: - resolution: - { - integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==, - } - engines: { node: ">=0.4.0" } - - acorn@8.14.0: - resolution: - { - integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==, - } - engines: { node: ">=0.4.0" } - hasBin: true - - acorn@8.15.0: - resolution: - { - integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==, - } - engines: { node: ">=0.4.0" } - hasBin: true - - agent-base@6.0.2: - resolution: - { - integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==, - } - engines: { node: ">= 6.0.0" } - - agentkeepalive@4.6.0: - resolution: - { - integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==, - } - engines: { node: ">= 8.0.0" } - - ajv@6.12.6: - resolution: - { - integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, - } - - anser@1.4.10: - resolution: - { - integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==, - } - - ansi-colors@4.1.3: - resolution: - { - integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, - } - engines: { node: ">=6" } - - ansi-escapes@4.3.2: - 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" } - - ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: ">=8" } - - ansi-regex@6.2.0: - resolution: - { - integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==, - } - engines: { node: ">=12" } - - ansi-styles@3.2.1: - resolution: - { - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, - } - engines: { node: ">=4" } - - ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: ">=8" } - - ansi-styles@5.2.0: - resolution: - { - integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, - } - engines: { node: ">=10" } - - ansi-styles@6.2.1: - resolution: - { - integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, - } - engines: { node: ">=12" } - - any-promise@1.3.0: - resolution: - { - integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, - } - - anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, - } - engines: { node: ">= 8" } - - arg@4.1.3: - resolution: - { - integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==, - } - - arg@5.0.2: - resolution: - { - integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, - } - - argparse@1.0.10: - resolution: - { - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, - } - - argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, - } - - aria-hidden@1.2.6: - resolution: - { - integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==, - } - engines: { node: ">=10" } - - aria-query@5.1.3: - resolution: - { - integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==, - } - - aria-query@5.3.2: - resolution: - { - integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==, - } - engines: { node: ">= 0.4" } - - array-buffer-byte-length@1.0.2: - resolution: - { - integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==, - } - engines: { node: ">= 0.4" } - - array-includes@3.1.9: - resolution: - { - integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==, - } - engines: { node: ">= 0.4" } - - array-union@2.1.0: - resolution: - { - integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, - } - engines: { node: ">=8" } - - array.prototype.findlast@1.2.5: - resolution: - { - integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==, - } - engines: { node: ">= 0.4" } - - array.prototype.findlastindex@1.2.6: - resolution: - { - integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==, - } - engines: { node: ">= 0.4" } - - array.prototype.flat@1.3.3: - resolution: - { - integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==, - } - engines: { node: ">= 0.4" } - - array.prototype.flatmap@1.3.3: - resolution: - { - integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==, - } - engines: { node: ">= 0.4" } - - array.prototype.tosorted@1.1.4: - resolution: - { - integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==, - } - engines: { node: ">= 0.4" } - - arraybuffer.prototype.slice@1.0.4: - resolution: - { - integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==, - } - engines: { node: ">= 0.4" } - - asap@2.0.6: - resolution: - { - integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==, - } - - ast-types-flow@0.0.8: - resolution: - { - integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==, - } - - ast-types@0.15.2: - resolution: - { - integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==, - } - engines: { node: ">=4" } - - async-function@1.0.0: - resolution: - { - integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==, - } - engines: { node: ">= 0.4" } - - async-limiter@1.0.1: - resolution: - { - integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==, - } - - asynckit@0.4.0: - resolution: - { - integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, - } - - autoprefixer@10.4.21: - resolution: - { - integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==, - } - engines: { node: ^10 || ^12 || >=14 } - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - available-typed-arrays@1.0.7: - resolution: - { - integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==, - } - engines: { node: ">= 0.4" } - - aws4fetch@1.0.20: - resolution: - { - integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==, - } - - axe-core@4.10.3: - resolution: - { - integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==, - } - engines: { node: ">=4" } - - axios@1.11.0: - resolution: - { - integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==, - } - - axobject-query@4.1.0: - resolution: - { - integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==, - } - engines: { node: ">= 0.4" } - - babel-core@7.0.0-bridge.0: - resolution: - { - integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - - babel-jest@29.7.0: - resolution: - { - integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@babel/core": ^7.8.0 - - babel-plugin-istanbul@6.1.1: - resolution: - { - integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==, - } - engines: { node: ">=8" } - - babel-plugin-jest-hoist@29.6.3: - resolution: - { - integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - babel-plugin-polyfill-corejs2@0.4.14: - resolution: - { - integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==, - } - peerDependencies: - "@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==, - } - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.6.5: - resolution: - { - integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==, - } - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-react-native-web@0.19.13: - resolution: - { - integrity: sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==, - } - - babel-plugin-syntax-hermes-parser@0.23.1: - resolution: - { - integrity: sha512-uNLD0tk2tLUjGFdmCk+u/3FEw2o+BAwW4g+z2QVlxJrzZYOOPADroEcNtTPt5lNiScctaUmnsTkVEnOwZUOLhA==, - } - - babel-plugin-syntax-hermes-parser@0.25.1: - resolution: - { - integrity: sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==, - } - - babel-plugin-transform-flow-enums@0.0.2: - resolution: - { - integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==, - } - - babel-preset-current-node-syntax@1.2.0: - resolution: - { - integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==, - } - peerDependencies: - "@babel/core": ^7.0.0 || ^8.0.0-0 - - babel-preset-expo@13.2.3: - resolution: - { - integrity: sha512-wQJn92lqj8GKR7Ojg/aW4+GkqI6ZdDNTDyOqhhl7A9bAqk6t0ukUOWLDXQb4p0qKJjMDV1F6gNWasI2KUbuVTQ==, - } - peerDependencies: - babel-plugin-react-compiler: ^19.0.0-beta-e993439-20250405 - peerDependenciesMeta: - babel-plugin-react-compiler: - optional: true - - babel-preset-jest@29.6.3: - resolution: - { - integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@babel/core": ^7.0.0 - - balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, - } - - base64-js@1.5.1: - resolution: - { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, - } - - bech32@1.1.4: - resolution: - { - integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==, - } - - bech32@2.0.0: - resolution: - { - integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==, - } - - better-opn@3.0.2: - resolution: - { - integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==, - } - engines: { node: ">=12.0.0" } - - better-path-resolve@1.0.0: - resolution: - { - integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==, - } - engines: { node: ">=4" } - - big-integer@1.6.52: - resolution: - { - integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==, - } - engines: { node: ">=0.6" } - - binary-extensions@2.3.0: - resolution: - { - integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, - } - engines: { node: ">=8" } - - blake3-wasm@2.1.5: - resolution: - { - integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==, - } - - bn.js@4.12.2: - resolution: - { - integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==, - } - - bn.js@5.2.2: - resolution: - { - integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==, - } - - body-parser@2.2.0: - resolution: - { - integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==, - } - engines: { node: ">=18" } - - bowser@2.12.0: - resolution: - { - integrity: sha512-HcOcTudTeEWgbHh0Y1Tyb6fdeR71m4b/QACf0D4KswGTsNeIJQmg38mRENZPAYPZvGFN3fk3604XbQEPdxXdKg==, - } - - bplist-creator@0.1.0: - resolution: - { - integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==, - } - - bplist-parser@0.3.1: - resolution: - { - integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==, - } - engines: { node: ">= 5.10.0" } - - bplist-parser@0.3.2: - resolution: - { - integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==, - } - engines: { node: ">= 5.10.0" } - - brace-expansion@1.1.12: - resolution: - { - integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==, - } - - brace-expansion@2.0.2: - resolution: - { - integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==, - } - - braces@3.0.3: - resolution: - { - integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, - } - engines: { node: ">=8" } - - brorand@1.1.0: - resolution: - { - integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==, - } - - browserslist@4.25.2: - resolution: - { - integrity: sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } - hasBin: true - - bs-logger@0.2.6: - resolution: - { - integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==, - } - engines: { node: ">= 6" } - - bser@2.1.1: - resolution: - { - integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, - } - - buffer-from@1.1.2: - resolution: - { - integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, - } - - buffer@5.7.1: - resolution: - { - integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, - } - - buffer@6.0.3: - resolution: - { - integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==, - } - - builtin-modules@3.3.0: - resolution: - { - integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==, - } - engines: { node: ">=6" } - - bundle-require@4.2.1: - resolution: - { - integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - peerDependencies: - esbuild: ">=0.17" - - busboy@1.6.0: - resolution: - { - integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==, - } - engines: { node: ">=10.16.0" } - - bytes@3.1.2: - resolution: - { - integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==, - } - engines: { node: ">= 0.8" } - - cac@6.7.14: - resolution: - { - integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==, - } - engines: { node: ">=8" } - - call-bind-apply-helpers@1.0.2: - resolution: - { - integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==, - } - engines: { node: ">= 0.4" } - - call-bind@1.0.8: - resolution: - { - integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==, - } - engines: { node: ">= 0.4" } - - call-bound@1.0.4: - resolution: - { - integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==, - } - engines: { node: ">= 0.4" } - - caller-callsite@2.0.0: - resolution: - { - integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==, - } - engines: { node: ">=4" } - - caller-path@2.0.0: - resolution: - { - integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==, - } - engines: { node: ">=4" } - - callsites@2.0.0: - resolution: - { - integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==, - } - engines: { node: ">=4" } - - callsites@3.1.0: - resolution: - { - integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, - } - engines: { node: ">=6" } - - camelcase-css@2.0.1: - resolution: - { - integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==, - } - engines: { node: ">= 6" } - - camelcase@5.3.1: - resolution: - { - integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, - } - engines: { node: ">=6" } - - camelcase@6.3.0: - resolution: - { - integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, - } - engines: { node: ">=10" } - - caniuse-lite@1.0.30001735: - resolution: - { - integrity: sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==, - } - - chalk@2.4.2: - resolution: - { - integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, - } - engines: { node: ">=4" } - - chalk@4.1.2: - resolution: - { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, - } - engines: { node: ">=10" } - - chalk@5.6.0: - resolution: - { - integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==, - } - engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } - - char-regex@1.0.2: - resolution: - { - integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==, - } - engines: { node: ">=10" } - - chardet@2.1.0: - resolution: - { - integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==, - } - - chokidar@3.6.0: - resolution: - { - integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==, - } - engines: { node: ">= 8.10.0" } - - chownr@3.0.0: - resolution: - { - integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==, - } - engines: { node: ">=18" } - - chrome-launcher@0.15.2: - resolution: - { - integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==, - } - engines: { node: ">=12.13.0" } - hasBin: true - - chromium-edge-launcher@0.2.0: - resolution: - { - integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==, - } - - ci-info@2.0.0: - resolution: - { - integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==, - } - - ci-info@3.9.0: - resolution: - { - integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==, - } - engines: { node: ">=8" } - - cjs-module-lexer@1.4.3: - resolution: - { - integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==, - } - - clean-regexp@1.0.0: - resolution: - { - integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==, - } - engines: { node: ">=4" } - - cli-cursor@2.1.0: - resolution: - { - integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==, - } - engines: { node: ">=4" } - - cli-spinners@2.9.2: - resolution: - { - integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==, - } - engines: { node: ">=6" } - - client-only@0.0.1: - resolution: - { - integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==, - } - - cliui@8.0.1: - resolution: - { - integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, - } - engines: { node: ">=12" } - - cliui@9.0.1: - resolution: - { - integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==, - } - engines: { node: ">=20" } - - clone-deep@4.0.1: - resolution: - { - integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==, - } - engines: { node: ">=6" } - - clone@1.0.4: - resolution: - { - integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, - } - engines: { node: ">=0.8" } - - cloudflare@4.5.0: - resolution: - { - integrity: sha512-fPcbPKx4zF45jBvQ0z7PCdgejVAPBBCZxwqk1k7krQNfpM07Cfj97/Q6wBzvYqlWXx/zt1S9+m8vnfCe06umbQ==, - } - - clsx@2.1.1: - resolution: - { - integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==, - } - engines: { node: ">=6" } - - co@4.6.0: - resolution: - { - integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==, - } - engines: { iojs: ">= 1.0.0", node: ">= 0.12.0" } - - collect-v8-coverage@1.0.2: - resolution: - { - integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==, - } - - color-convert@1.9.3: - resolution: - { - integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, - } - - color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: ">=7.0.0" } - - color-name@1.1.3: - resolution: - { - integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, - } - - color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, - } - - color-string@1.9.1: - resolution: - { - integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==, - } - - color@4.2.3: - resolution: - { - integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==, - } - engines: { node: ">=12.5.0" } - - colorette@1.4.0: - resolution: - { - integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==, - } - - combined-stream@1.0.8: - resolution: - { - integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, - } - engines: { node: ">= 0.8" } - - commander@11.1.0: - resolution: - { - integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==, - } - engines: { node: ">=16" } - - commander@12.1.0: - resolution: - { - integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==, - } - engines: { node: ">=18" } - - commander@2.20.3: - resolution: - { - integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, - } - - commander@4.1.1: - resolution: - { - integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==, - } - engines: { node: ">= 6" } - - commander@7.2.0: - resolution: - { - integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==, - } - engines: { node: ">= 10" } - - commondir@1.0.1: - resolution: - { - integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==, - } - - compressible@2.0.18: - resolution: - { - integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==, - } - engines: { node: ">= 0.6" } - - compression@1.8.1: - resolution: - { - integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==, - } - engines: { node: ">= 0.8.0" } - - concat-map@0.0.1: - resolution: - { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, - } - - connect@3.7.0: - resolution: - { - integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==, - } - engines: { node: ">= 0.10.0" } - - content-disposition@1.0.0: - resolution: - { - integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==, - } - engines: { node: ">= 0.6" } - - content-type@1.0.5: - resolution: - { - integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==, - } - engines: { node: ">= 0.6" } - - convert-source-map@2.0.0: - resolution: - { - integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, - } - - cookie-signature@1.2.2: - resolution: - { - integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==, - } - engines: { node: ">=6.6.0" } - - cookie@0.7.1: - resolution: - { - integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==, - } - engines: { node: ">= 0.6" } - - cookie@1.0.2: - resolution: - { - integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==, - } - engines: { node: ">=18" } - - core-js-compat@3.45.0: - resolution: - { - integrity: sha512-gRoVMBawZg0OnxaVv3zpqLLxaHmsubEGyTnqdpI/CEBvX4JadI1dMSHxagThprYRtSVbuQxvi6iUatdPxohHpA==, - } - - cosmiconfig@5.2.1: - resolution: - { - integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==, - } - engines: { node: ">=4" } - - cosmjs-types@0.10.1: - resolution: - { - integrity: sha512-CENXb4O5GN+VyB68HYXFT2SOhv126Z59631rZC56m8uMWa6/cSlFeai8BwZGT1NMepw0Ecf+U8XSOnBzZUWh9Q==, - } - - cosmjs-types@0.9.0: - resolution: - { - integrity: sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==, - } - - create-jest@29.7.0: - resolution: - { - integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - - create-require@1.1.1: - resolution: - { - integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, - } - - cross-spawn@7.0.6: - resolution: - { - integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, - } - engines: { node: ">= 8" } - - crypto-random-string@2.0.0: - resolution: - { - integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==, - } - engines: { node: ">=8" } - - css.escape@1.5.1: - resolution: - { - integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==, - } - - cssesc@3.0.0: - resolution: - { - integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, - } - engines: { node: ">=4" } - hasBin: true - - cssom@0.3.8: - resolution: - { - integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==, - } - - cssom@0.5.0: - resolution: - { - integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==, - } - - cssstyle@2.3.0: - resolution: - { - integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==, - } - engines: { node: ">=8" } - - csstype@3.1.3: - resolution: - { - integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==, - } - - damerau-levenshtein@1.0.8: - resolution: - { - integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==, - } - - data-urls@3.0.2: - resolution: - { - integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==, - } - engines: { node: ">=12" } - - data-view-buffer@1.0.2: - resolution: - { - integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==, - } - engines: { node: ">= 0.4" } - - data-view-byte-length@1.0.2: - resolution: - { - integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==, - } - engines: { node: ">= 0.4" } - - data-view-byte-offset@1.0.1: - resolution: - { - integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==, - } - engines: { node: ">= 0.4" } - - dataloader@1.4.0: - resolution: - { - integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==, - } - - debug@2.6.9: - resolution: - { - integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, - } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - - debug@3.2.7: - resolution: - { - integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, - } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.6: - resolution: - { - integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==, - } - engines: { node: ">=6.0" } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.4.1: - resolution: - { - integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==, - } - engines: { node: ">=6.0" } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - - decimal.js@10.6.0: - resolution: - { - integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==, - } - - dedent@1.6.0: - resolution: - { - integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==, - } - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - - deep-equal@2.2.3: - resolution: - { - integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==, - } - engines: { node: ">= 0.4" } - - deep-extend@0.6.0: - resolution: - { - integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==, - } - engines: { node: ">=4.0.0" } - - deep-is@0.1.4: - resolution: - { - integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, - } - - deepmerge@4.3.1: - 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==, - } - - define-data-property@1.1.4: - resolution: - { - integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==, - } - engines: { node: ">= 0.4" } - - define-lazy-prop@2.0.0: - resolution: - { - integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, - } - engines: { node: ">=8" } - - define-properties@1.2.1: - resolution: - { - integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==, - } - engines: { node: ">= 0.4" } - - defu@6.1.4: - resolution: - { - integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==, - } - - delayed-stream@1.0.0: - resolution: - { - integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, - } - engines: { node: ">=0.4.0" } - - depd@2.0.0: - resolution: - { - integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==, - } - engines: { node: ">= 0.8" } - - destroy@1.2.0: - resolution: - { - integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==, - } - engines: { node: ">= 0.8", npm: 1.2.8000 || >= 1.4.16 } - - detect-indent@6.1.0: - resolution: - { - integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==, - } - engines: { node: ">=8" } - - detect-indent@7.0.1: - resolution: - { - integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==, - } - engines: { node: ">=12.20" } - - detect-libc@1.0.3: - resolution: - { - integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==, - } - engines: { node: ">=0.10" } - hasBin: true - - detect-libc@2.0.4: - resolution: - { - integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==, - } - engines: { node: ">=8" } - - detect-newline@3.1.0: - resolution: - { - integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==, - } - engines: { node: ">=8" } - - detect-newline@4.0.1: - resolution: - { - integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - - detect-node-es@1.1.0: - resolution: - { - integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==, - } - - didyoumean@1.2.2: - resolution: - { - integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==, - } - - diff-sequences@29.6.3: - resolution: - { - integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - diff@4.0.2: - resolution: - { - integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==, - } - engines: { node: ">=0.3.1" } - - dir-glob@3.0.1: - resolution: - { - integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, - } - engines: { node: ">=8" } - - dlv@1.1.3: - resolution: - { - integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==, - } - - doctrine@2.1.0: - resolution: - { - integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==, - } - engines: { node: ">=0.10.0" } - - doctrine@3.0.0: - resolution: - { - integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, - } - engines: { node: ">=6.0.0" } - - dom-accessibility-api@0.5.16: - resolution: - { - integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==, - } - - dom-accessibility-api@0.6.3: - resolution: - { - integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==, - } - - domexception@4.0.0: - resolution: - { - integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==, - } - engines: { node: ">=12" } - deprecated: Use your platform's native DOMException instead - - dotenv-expand@11.0.7: - resolution: - { - integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==, - } - engines: { node: ">=12" } - - dotenv@16.0.3: - resolution: - { - integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==, - } - engines: { node: ">=12" } - - dotenv@16.4.7: - resolution: - { - integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==, - } - engines: { node: ">=12" } - - dotenv@16.6.1: - resolution: - { - integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==, - } - engines: { node: ">=12" } - - dotenv@8.6.0: - resolution: - { - integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==, - } - engines: { node: ">=10" } - - dunder-proto@1.0.1: - resolution: - { - integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==, - } - engines: { node: ">= 0.4" } - - duplexer@0.1.2: - resolution: - { - integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==, - } - - eastasianwidth@0.2.0: - resolution: - { - integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, - } - - eciesjs@0.4.15: - resolution: - { - integrity: sha512-r6kEJXDKecVOCj2nLMuXK/FCPeurW33+3JRpfXVbjLja3XUYFfD9I/JBreH6sUyzcm3G/YQboBjMla6poKeSdA==, - } - engines: { bun: ">=1", deno: ">=2", node: ">=16" } - - ee-first@1.1.1: - resolution: - { - integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==, - } - - electron-to-chromium@1.5.204: - resolution: - { - integrity: sha512-s9VbBXWxfDrl67PlO4avwh0/GU2vcwx8Fph3wlR8LJl7ySGYId59EFE17VWVcuC3sLWNPENm6Z/uGqKbkPCcXA==, - } - - elliptic@6.6.1: - resolution: - { - integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==, - } - - emittery@0.13.1: - resolution: - { - integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==, - } - engines: { node: ">=12" } - - emoji-regex@10.5.0: - resolution: - { - integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==, - } - - emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, - } - - emoji-regex@9.2.2: - resolution: - { - integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, - } - - encodeurl@1.0.2: - resolution: - { - integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==, - } - engines: { node: ">= 0.8" } - - encodeurl@2.0.0: - resolution: - { - integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==, - } - engines: { node: ">= 0.8" } - - enquirer@2.4.1: - resolution: - { - integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==, - } - engines: { node: ">=8.6" } - - entities@6.0.1: - resolution: - { - integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==, - } - engines: { node: ">=0.12" } - - env-editor@0.4.2: - resolution: - { - integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==, - } - engines: { node: ">=8" } - - error-ex@1.3.2: - resolution: - { - integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, - } - - error-stack-parser-es@1.0.5: - resolution: - { - integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==, - } - - error-stack-parser@2.1.4: - resolution: - { - integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==, - } - - es-abstract@1.24.0: - resolution: - { - integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==, - } - engines: { node: ">= 0.4" } - - es-define-property@1.0.1: - resolution: - { - integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==, - } - engines: { node: ">= 0.4" } - - es-errors@1.3.0: - resolution: - { - integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, - } - engines: { node: ">= 0.4" } - - es-get-iterator@1.1.3: - resolution: - { - integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==, - } - - es-iterator-helpers@1.2.1: - resolution: - { - integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==, - } - engines: { node: ">= 0.4" } - - es-object-atoms@1.1.1: - resolution: - { - integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==, - } - engines: { node: ">= 0.4" } - - es-set-tostringtag@2.1.0: - resolution: - { - integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==, - } - engines: { node: ">= 0.4" } - - es-shim-unscopables@1.1.0: - resolution: - { - integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==, - } - engines: { node: ">= 0.4" } - - es-to-primitive@1.3.0: - resolution: - { - integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==, - } - engines: { node: ">= 0.4" } - - esbuild@0.17.19: - resolution: - { - integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==, - } - engines: { node: ">=12" } - hasBin: true - - esbuild@0.25.4: - resolution: - { - integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==, - } - engines: { node: ">=18" } - hasBin: true - - escalade@3.2.0: - resolution: - { - integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, - } - engines: { node: ">=6" } - - escape-html@1.0.3: - resolution: - { - integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, - } - - escape-string-regexp@1.0.5: - resolution: - { - integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, - } - engines: { node: ">=0.8.0" } - - escape-string-regexp@2.0.0: - resolution: - { - integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==, - } - engines: { node: ">=8" } - - escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, - } - engines: { node: ">=10" } - - escodegen@2.1.0: - resolution: - { - integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==, - } - engines: { node: ">=6.0" } - hasBin: true - - eslint-config-next@14.0.4: - resolution: - { - integrity: sha512-9/xbOHEQOmQtqvQ1UsTQZpnA7SlDMBtuKJ//S4JnoyK3oGLhILKXdBgu/UO7lQo/2xOykQULS1qQ6p2+EpHgAQ==, - } - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: ">=3.3.1" - peerDependenciesMeta: - typescript: - optional: true - - eslint-config-prettier@9.1.2: - resolution: - { - integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==, - } - hasBin: true - peerDependencies: - eslint: ">=7.0.0" - - eslint-config-turbo@1.13.4: - resolution: - { - integrity: sha512-+we4eWdZlmlEn7LnhXHCIPX/wtujbHCS7XjQM/TN09BHNEl2fZ8id4rHfdfUKIYTSKyy8U/nNyJ0DNoZj5Q8bw==, - } - peerDependencies: - eslint: ">6.6.0" - - eslint-import-resolver-alias@1.1.2: - resolution: - { - integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==, - } - engines: { node: ">= 4" } - peerDependencies: - eslint-plugin-import: ">=1.4.0" - - eslint-import-resolver-node@0.3.9: - resolution: - { - integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==, - } - - eslint-import-resolver-typescript@3.10.1: - resolution: - { - integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==, - } - engines: { node: ^14.18.0 || >=16.0.0 } - peerDependencies: - eslint: "*" - eslint-plugin-import: "*" - eslint-plugin-import-x: "*" - peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: - optional: true - - eslint-module-utils@2.12.1: - resolution: - { - integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==, - } - engines: { node: ">=4" } - peerDependencies: - "@typescript-eslint/parser": "*" - eslint: "*" - eslint-import-resolver-node: "*" - eslint-import-resolver-typescript: "*" - eslint-import-resolver-webpack: "*" - peerDependenciesMeta: - "@typescript-eslint/parser": - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-eslint-comments@3.2.0: - resolution: - { - integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==, - } - engines: { node: ">=6.5.0" } - peerDependencies: - eslint: ">=4.19.1" - - eslint-plugin-import@2.32.0: - resolution: - { - integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==, - } - engines: { node: ">=4" } - peerDependencies: - "@typescript-eslint/parser": "*" - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - peerDependenciesMeta: - "@typescript-eslint/parser": - optional: true - - eslint-plugin-jest@27.9.0: - resolution: - { - integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@typescript-eslint/eslint-plugin": ^5.0.0 || ^6.0.0 || ^7.0.0 - eslint: ^7.0.0 || ^8.0.0 - jest: "*" - peerDependenciesMeta: - "@typescript-eslint/eslint-plugin": - optional: true - jest: - optional: true - - eslint-plugin-jsx-a11y@6.10.2: - resolution: - { - integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==, - } - engines: { node: ">=4.0" } - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - - eslint-plugin-playwright@0.16.0: - resolution: - { - integrity: sha512-DcHpF0SLbNeh9MT4pMzUGuUSnJ7q5MWbP8sSEFIMS6j7Ggnduq8ghNlfhURgty4c1YFny7Ge9xYTO1FSAoV2Vw==, - } - peerDependencies: - eslint: ">=7" - eslint-plugin-jest: ">=25" - peerDependenciesMeta: - eslint-plugin-jest: - optional: true - - eslint-plugin-react-hooks@4.6.2: - resolution: - { - integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==, - } - engines: { node: ">=10" } - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - - eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705: - resolution: - { - integrity: sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==, - } - engines: { node: ">=10" } - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - - eslint-plugin-react@7.37.5: - resolution: - { - integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==, - } - engines: { node: ">=4" } - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - - eslint-plugin-testing-library@6.5.0: - resolution: - { - integrity: sha512-Ls5TUfLm5/snocMAOlofSOJxNN0aKqwTlco7CrNtMjkTdQlkpSMaeTCDHCuXfzrI97xcx2rSCNeKeJjtpkNC1w==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: ">=6" } - peerDependencies: - eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - - eslint-plugin-tsdoc@0.2.17: - resolution: - { - integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==, - } - - eslint-plugin-turbo@1.13.4: - resolution: - { - integrity: sha512-82GfMzrewI/DJB92Bbch239GWbGx4j1zvjk1lqb06lxIlMPnVwUHVwPbAnLfyLG3JuhLv9whxGkO/q1CL18JTg==, - } - peerDependencies: - eslint: ">6.6.0" - - eslint-plugin-unicorn@48.0.1: - resolution: - { - integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==, - } - engines: { node: ">=16" } - peerDependencies: - eslint: ">=8.44.0" - - eslint-scope@5.1.1: - resolution: - { - integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==, - } - engines: { node: ">=8.0.0" } - - eslint-scope@7.2.2: - resolution: - { - integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - eslint-visitor-keys@2.1.0: - resolution: - { - integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==, - } - engines: { node: ">=10" } - - 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 } - - eslint@8.57.1: - resolution: - { - integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - - espree@9.6.1: - resolution: - { - integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - esprima@4.0.1: - resolution: - { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, - } - engines: { node: ">=4" } - hasBin: true - - esquery@1.6.0: - resolution: - { - integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==, - } - engines: { node: ">=0.10" } - - esrecurse@4.3.0: - resolution: - { - integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, - } - engines: { node: ">=4.0" } - - estraverse@4.3.0: - resolution: - { - integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==, - } - engines: { node: ">=4.0" } - - estraverse@5.3.0: - resolution: - { - integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, - } - engines: { node: ">=4.0" } - - esutils@2.0.3: - 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" } - - event-target-shim@5.0.1: - resolution: - { - integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==, - } - engines: { node: ">=6" } - - events@3.3.0: - resolution: - { - integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==, - } - engines: { node: ">=0.8.x" } - - exec-async@2.2.0: - resolution: - { - integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==, - } - - execa@5.1.1: - resolution: - { - integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, - } - engines: { node: ">=10" } - - exit-hook@2.2.1: - resolution: - { - integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==, - } - engines: { node: ">=6" } - - exit@0.1.2: - resolution: - { - integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==, - } - engines: { node: ">= 0.8.0" } - - expect@29.7.0: - resolution: - { - integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - expo-asset@11.1.7: - resolution: - { - integrity: sha512-b5P8GpjUh08fRCf6m5XPVAh7ra42cQrHBIMgH2UXP+xsj4Wufl6pLy6jRF5w6U7DranUMbsXm8TOyq4EHy7ADg==, - } - peerDependencies: - expo: "*" - react: "*" - react-native: "*" - - expo-constants@17.0.8: - resolution: - { - integrity: sha512-XfWRyQAf1yUNgWZ1TnE8pFBMqGmFP5Gb+SFSgszxDdOoheB/NI5D4p7q86kI2fvGyfTrxAe+D+74nZkfsGvUlg==, - } - peerDependencies: - expo: "*" - react-native: "*" - - expo-constants@17.1.7: - resolution: - { - integrity: sha512-byBjGsJ6T6FrLlhOBxw4EaiMXrZEn/MlUYIj/JAd+FS7ll5X/S4qVRbIimSJtdW47hXMq0zxPfJX6njtA56hHA==, - } - peerDependencies: - expo: "*" - react-native: "*" - - expo-file-system@18.1.11: - resolution: - { - integrity: sha512-HJw/m0nVOKeqeRjPjGdvm+zBi5/NxcdPf8M8P3G2JFvH5Z8vBWqVDic2O58jnT1OFEy0XXzoH9UqFu7cHg9DTQ==, - } - peerDependencies: - expo: "*" - react-native: "*" - - expo-font@13.3.2: - resolution: - { - integrity: sha512-wUlMdpqURmQ/CNKK/+BIHkDA5nGjMqNlYmW0pJFXY/KE/OG80Qcavdu2sHsL4efAIiNGvYdBS10WztuQYU4X0A==, - } - peerDependencies: - expo: "*" - react: "*" - - expo-keep-awake@14.1.4: - resolution: - { - integrity: sha512-wU9qOnosy4+U4z/o4h8W9PjPvcFMfZXrlUoKTMBW7F4pLqhkkP/5G4EviPZixv4XWFMjn1ExQ5rV6BX8GwJsWA==, - } - peerDependencies: - expo: "*" - react: "*" - - expo-linking@7.0.5: - resolution: - { - integrity: sha512-3KptlJtcYDPWohk0MfJU75MJFh2ybavbtcSd84zEPfw9s1q3hjimw3sXnH03ZxP54kiEWldvKmmnGcVffBDB1g==, - } - peerDependencies: - react: "*" - react-native: "*" - - expo-modules-autolinking@2.1.14: - resolution: - { - integrity: sha512-nT5ERXwc+0ZT/pozDoJjYZyUQu5RnXMk9jDGm5lg+PiKvsrCTSA/2/eftJGMxLkTjVI2MXp5WjSz3JRjbA7UXA==, - } - hasBin: true - - expo-modules-core@2.5.0: - resolution: - { - integrity: sha512-aIbQxZE2vdCKsolQUl6Q9Farlf8tjh/ROR4hfN1qT7QBGPl1XrJGnaOKkcgYaGrlzCPg/7IBe0Np67GzKMZKKQ==, - } - - expo-web-browser@14.0.2: - resolution: - { - integrity: sha512-Hncv2yojhTpHbP6SGWARBFdl7P6wBHc1O8IKaNsH0a/IEakq887o1eRhLxZ5IwztPQyRDhpqHdgJ+BjWolOnwA==, - } - peerDependencies: - expo: "*" - react-native: "*" - - expo@53.0.20: - resolution: - { - integrity: sha512-Nh+HIywVy9KxT/LtH08QcXqrxtUOA9BZhsXn3KCsAYA+kNb80M8VKN8/jfQF+I6CgeKyFKJoPNsWgI0y0VBGrA==, - } - hasBin: true - peerDependencies: - "@expo/dom-webview": "*" - "@expo/metro-runtime": "*" - react: "*" - react-native: "*" - react-native-webview: "*" - peerDependenciesMeta: - "@expo/dom-webview": - optional: true - "@expo/metro-runtime": - optional: true - react-native-webview: - optional: true - - exponential-backoff@3.1.2: - resolution: - { - integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==, - } - - express@5.0.1: - resolution: - { - integrity: sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==, - } - engines: { node: ">= 18" } - - exsolve@1.0.7: - resolution: - { - integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==, - } - - extendable-error@0.1.7: - resolution: - { - integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==, - } - - fast-base64-decode@1.0.0: - resolution: - { - integrity: sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==, - } - - fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, - } - - fast-glob@3.3.3: - resolution: - { - integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==, - } - engines: { node: ">=8.6.0" } - - fast-json-stable-stringify@2.1.0: - resolution: - { - integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, - } - - fast-levenshtein@2.0.6: - resolution: - { - integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, - } - - fast-xml-parser@4.2.5: - resolution: - { - integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==, - } - hasBin: true - - fast-xml-parser@5.2.5: - resolution: - { - integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==, - } - hasBin: true - - fastq@1.19.1: - resolution: - { - integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==, - } - - fb-watchman@2.0.2: - resolution: - { - integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, - } - - fdir@6.5.0: - resolution: - { - integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, - } - engines: { node: ">=12.0.0" } - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - file-entry-cache@6.0.1: - resolution: - { - integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, - } - engines: { node: ^10.12.0 || >=12.0.0 } - - fill-range@7.1.1: - resolution: - { - integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, - } - engines: { node: ">=8" } - - finalhandler@1.1.2: - resolution: - { - integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==, - } - engines: { node: ">= 0.8" } - - finalhandler@2.1.0: - resolution: - { - integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==, - } - engines: { node: ">= 0.8" } - - find-cache-dir@2.1.0: - resolution: - { - integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==, - } - engines: { node: ">=6" } - - find-up@3.0.0: - resolution: - { - integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==, - } - engines: { node: ">=6" } - - find-up@4.1.0: - resolution: - { - integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, - } - engines: { node: ">=8" } - - find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, - } - engines: { node: ">=10" } - - flat-cache@3.2.0: - resolution: - { - integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==, - } - engines: { node: ^10.12.0 || >=12.0.0 } - - flatted@3.3.3: - resolution: - { - integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==, - } - - flow-enums-runtime@0.0.6: - resolution: - { - integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==, - } - - flow-parser@0.279.0: - resolution: - { - integrity: sha512-41VremrzImoLcZuqY18U86ojcVy2Stuq4VnjdAcxHjGanvx3VmKVUITIVMt2PM1RvmRJtgtJWvCxVpQ1E9OGDw==, - } - engines: { node: ">=0.4.0" } - - follow-redirects@1.15.11: - resolution: - { - integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==, - } - engines: { node: ">=4.0" } - peerDependencies: - debug: "*" - peerDependenciesMeta: - debug: - optional: true - - fontfaceobserver@2.3.0: - resolution: - { - integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==, - } - - for-each@0.3.5: - resolution: - { - integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==, - } - engines: { node: ">= 0.4" } - - foreground-child@3.3.1: - resolution: - { - integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==, - } - engines: { node: ">=14" } - - form-data-encoder@1.7.2: - resolution: - { - integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==, - } - - form-data@4.0.4: - resolution: - { - integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==, - } - engines: { node: ">= 6" } - - formdata-node@4.4.1: - resolution: - { - integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==, - } - engines: { node: ">= 12.20" } - - forwarded@0.2.0: - resolution: - { - integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==, - } - engines: { node: ">= 0.6" } - - fraction.js@4.3.7: - resolution: - { - integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==, - } - - freeport-async@2.0.0: - resolution: - { - integrity: sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==, - } - engines: { node: ">=8" } - - fresh@0.5.2: - resolution: - { - integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==, - } - engines: { node: ">= 0.6" } - - fresh@2.0.0: - resolution: - { - integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==, - } - engines: { node: ">= 0.8" } - - fs-extra@7.0.1: - resolution: - { - integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==, - } - engines: { node: ">=6 <7 || >=8" } - - fs-extra@8.1.0: - resolution: - { - integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==, - } - engines: { node: ">=6 <7 || >=8" } - - fs.realpath@1.0.0: - resolution: - { - integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, - } - - fsevents@2.3.3: - 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==, - } - - function.prototype.name@1.1.8: - resolution: - { - integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==, - } - engines: { node: ">= 0.4" } - - functions-have-names@1.2.3: - resolution: - { - integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, - } - - gensync@1.0.0-beta.2: - 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.* } - - get-east-asian-width@1.3.1: - resolution: - { - integrity: sha512-R1QfovbPsKmosqTnPoRFiJ7CF9MLRgb53ChvMZm+r4p76/+8yKDy17qLL2PKInORy2RkZZekuK0efYgmzTkXyQ==, - } - engines: { node: ">=18" } - - get-intrinsic@1.3.0: - resolution: - { - integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==, - } - engines: { node: ">= 0.4" } - - get-nonce@1.0.1: - resolution: - { - integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==, - } - engines: { node: ">=6" } - - get-package-type@0.1.0: - resolution: - { - integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==, - } - engines: { node: ">=8.0.0" } - - get-proto@1.0.1: - resolution: - { - integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==, - } - engines: { node: ">= 0.4" } - - get-stream@6.0.1: - resolution: - { - integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, - } - engines: { node: ">=10" } - - get-symbol-description@1.1.0: - resolution: - { - integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==, - } - engines: { node: ">= 0.4" } - - get-tsconfig@4.10.1: - resolution: - { - integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==, - } - - getenv@1.0.0: - resolution: - { - integrity: sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==, - } - engines: { node: ">=6" } - - getenv@2.0.0: - resolution: - { - integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==, - } - engines: { node: ">=6" } - - git-hooks-list@4.1.1: - resolution: - { - integrity: sha512-cmP497iLq54AZnv4YRAEMnEyQ1eIn4tGKbmswqwmFV4GBnAqE8NLtWxxdXa++AalfgL5EBH4IxTPyquEuGY/jA==, - } - - glob-parent@5.1.2: - resolution: - { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, - } - engines: { node: ">= 6" } - - glob-parent@6.0.2: - resolution: - { - integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, - } - engines: { node: ">=10.13.0" } - - glob-to-regexp@0.4.1: - resolution: - { - integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==, - } - - glob@10.4.5: - resolution: - { - integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==, - } - hasBin: true - - glob@11.0.3: - resolution: - { - integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==, - } - engines: { node: 20 || >=22 } - hasBin: true - - glob@7.1.7: - resolution: - { - integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==, - } - deprecated: Glob versions prior to v9 are no longer supported - - glob@7.2.3: - resolution: - { - integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, - } - deprecated: Glob versions prior to v9 are no longer supported - - glob@9.3.5: - resolution: - { - integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==, - } - engines: { node: ">=16 || 14 >=14.17" } - - globals@13.24.0: - resolution: - { - integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==, - } - engines: { node: ">=8" } - - globalthis@1.0.4: - resolution: - { - integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==, - } - engines: { node: ">= 0.4" } - - globby@10.0.1: - resolution: - { - integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==, - } - engines: { node: ">=8" } - - globby@11.1.0: - resolution: - { - integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, - } - engines: { node: ">=10" } - - gopd@1.2.0: - resolution: - { - integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==, - } - engines: { node: ">= 0.4" } - - graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, - } - - graphemer@1.4.0: - resolution: - { - integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==, - } - - graphql-tag@2.12.6: - resolution: - { - integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==, - } - engines: { node: ">=10" } - peerDependencies: - graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - - graphql@16.11.0: - resolution: - { - integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==, - } - engines: { node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0 } - - gzip-size@6.0.0: - resolution: - { - integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==, - } - engines: { node: ">=10" } - - handlebars@4.7.8: - resolution: - { - integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==, - } - engines: { node: ">=0.4.7" } - hasBin: true - - has-bigints@1.1.0: - resolution: - { - integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==, - } - engines: { node: ">= 0.4" } - - has-flag@3.0.0: - resolution: - { - integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, - } - engines: { node: ">=4" } - - has-flag@4.0.0: - resolution: - { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, - } - engines: { node: ">=8" } - - has-property-descriptors@1.0.2: - resolution: - { - integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==, - } - - has-proto@1.2.0: - resolution: - { - integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==, - } - engines: { node: ">= 0.4" } - - has-symbols@1.1.0: - resolution: - { - integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==, - } - engines: { node: ">= 0.4" } - - has-tostringtag@1.0.2: - resolution: - { - integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, - } - engines: { node: ">= 0.4" } - - hash-wasm@4.12.0: - resolution: - { - integrity: sha512-+/2B2rYLb48I/evdOIhP+K/DD2ca2fgBjp6O+GBEnCDk2e4rpeXIK8GvIyRPjTezgmWn9gmKwkQjjx6BtqDHVQ==, - } - - hash.js@1.1.7: - resolution: - { - integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==, - } - - hasown@2.0.2: - resolution: - { - integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, - } - engines: { node: ">= 0.4" } - - hermes-estree@0.23.1: - resolution: - { - integrity: sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==, - } - - hermes-estree@0.25.1: - resolution: - { - integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==, - } - - hermes-parser@0.23.1: - resolution: - { - integrity: sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==, - } - - hermes-parser@0.25.1: - resolution: - { - integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==, - } - - hmac-drbg@1.0.1: - resolution: - { - integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==, - } - - hoist-non-react-statics@3.3.2: - resolution: - { - integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==, - } - - hosted-git-info@2.8.9: - resolution: - { - integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==, - } - - hosted-git-info@7.0.2: - resolution: - { - integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - html-encoding-sniffer@3.0.0: - resolution: - { - integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==, - } - engines: { node: ">=12" } - - html-escaper@2.0.2: - resolution: - { - integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, - } - - http-errors@2.0.0: - resolution: - { - integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==, - } - engines: { node: ">= 0.8" } - - http-proxy-agent@5.0.0: - resolution: - { - integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==, - } - engines: { node: ">= 6" } - - https-proxy-agent@5.0.1: - resolution: - { - integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==, - } - engines: { node: ">= 6" } - - human-id@4.1.1: - resolution: - { - integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==, - } - hasBin: true - - human-signals@2.1.0: - resolution: - { - integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, - } - engines: { node: ">=10.17.0" } - - humanize-ms@1.2.1: - resolution: - { - integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==, - } - - iconv-lite@0.6.3: - resolution: - { - integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, - } - engines: { node: ">=0.10.0" } - - ieee754@1.2.1: - resolution: - { - integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, - } - - ignore@5.3.2: - resolution: - { - integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, - } - engines: { node: ">= 4" } - - image-size@1.2.1: - resolution: - { - integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==, - } - engines: { node: ">=16.x" } - hasBin: true - - import-fresh@2.0.0: - resolution: - { - integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==, - } - engines: { node: ">=4" } - - import-fresh@3.3.1: - resolution: - { - integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==, - } - engines: { node: ">=6" } - - import-local@3.2.0: - resolution: - { - integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==, - } - engines: { node: ">=8" } - hasBin: true - - imurmurhash@0.1.4: - resolution: - { - integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, - } - engines: { node: ">=0.8.19" } - - indent-string@4.0.0: - resolution: - { - integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, - } - engines: { node: ">=8" } - - inflight@1.0.6: - resolution: - { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, - } - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: - { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, - } - - ini@1.3.8: - resolution: - { - integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, - } - - internal-slot@1.1.0: - resolution: - { - integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==, - } - engines: { node: ">= 0.4" } - - invariant@2.2.4: - resolution: - { - integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==, - } - - ipaddr.js@1.9.1: - resolution: - { - integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==, - } - engines: { node: ">= 0.10" } - - is-arguments@1.2.0: - resolution: - { - integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==, - } - engines: { node: ">= 0.4" } - - is-array-buffer@3.0.5: - resolution: - { - integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==, - } - engines: { node: ">= 0.4" } - - is-arrayish@0.2.1: - resolution: - { - integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, - } - - is-arrayish@0.3.2: - resolution: - { - integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==, - } - - is-async-function@2.1.1: - resolution: - { - integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==, - } - engines: { node: ">= 0.4" } - - is-bigint@1.1.0: - resolution: - { - integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==, - } - engines: { node: ">= 0.4" } - - is-binary-path@2.1.0: - resolution: - { - integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, - } - engines: { node: ">=8" } - - is-boolean-object@1.2.2: - resolution: - { - integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==, - } - engines: { node: ">= 0.4" } - - is-builtin-module@3.2.1: - resolution: - { - integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==, - } - engines: { node: ">=6" } - - is-bun-module@2.0.0: - resolution: - { - integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==, - } - - is-callable@1.2.7: - resolution: - { - integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, - } - engines: { node: ">= 0.4" } - - is-core-module@2.16.1: - resolution: - { - integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==, - } - engines: { node: ">= 0.4" } - - is-data-view@1.0.2: - resolution: - { - integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==, - } - engines: { node: ">= 0.4" } - - is-date-object@1.1.0: - resolution: - { - integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==, - } - engines: { node: ">= 0.4" } - - is-directory@0.3.1: - resolution: - { - integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==, - } - engines: { node: ">=0.10.0" } - - is-docker@2.2.1: - resolution: - { - integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, - } - engines: { node: ">=8" } - hasBin: true - - is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: ">=0.10.0" } - - is-finalizationregistry@1.1.1: - resolution: - { - integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==, - } - engines: { node: ">= 0.4" } - - is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: ">=8" } - - is-generator-fn@2.1.0: - resolution: - { - integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==, - } - engines: { node: ">=6" } - - is-generator-function@1.1.0: - resolution: - { - integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==, - } - engines: { node: ">= 0.4" } - - is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, - } - engines: { node: ">=0.10.0" } - - is-map@2.0.3: - resolution: - { - integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==, - } - engines: { node: ">= 0.4" } - - is-negative-zero@2.0.3: - resolution: - { - integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==, - } - engines: { node: ">= 0.4" } - - is-number-object@1.1.1: - resolution: - { - integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==, - } - engines: { node: ">= 0.4" } - - is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, - } - engines: { node: ">=0.12.0" } - - is-path-inside@3.0.3: - resolution: - { - integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, - } - engines: { node: ">=8" } - - is-plain-obj@2.1.0: - resolution: - { - integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==, - } - engines: { node: ">=8" } - - is-plain-obj@4.1.0: - resolution: - { - integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==, - } - engines: { node: ">=12" } - - is-plain-object@2.0.4: - resolution: - { - integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==, - } - engines: { node: ">=0.10.0" } - - is-plain-object@3.0.1: - resolution: - { - integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==, - } - engines: { node: ">=0.10.0" } - - is-potential-custom-element-name@1.0.1: - resolution: - { - integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==, - } - - is-promise@4.0.0: - resolution: - { - integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==, - } - - is-regex@1.2.1: - resolution: - { - integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==, - } - engines: { node: ">= 0.4" } - - is-set@2.0.3: - resolution: - { - integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==, - } - engines: { node: ">= 0.4" } - - is-shared-array-buffer@1.0.4: - resolution: - { - integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==, - } - engines: { node: ">= 0.4" } - - is-stream@2.0.1: - resolution: - { - integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, - } - engines: { node: ">=8" } - - is-string@1.1.1: - resolution: - { - integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==, - } - engines: { node: ">= 0.4" } - - is-subdir@1.2.0: - resolution: - { - integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==, - } - engines: { node: ">=4" } - - is-symbol@1.1.1: - resolution: - { - integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==, - } - engines: { node: ">= 0.4" } - - is-typed-array@1.1.15: - resolution: - { - integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==, - } - engines: { node: ">= 0.4" } - - is-weakmap@2.0.2: - resolution: - { - integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==, - } - engines: { node: ">= 0.4" } - - is-weakref@1.1.1: - resolution: - { - integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==, - } - engines: { node: ">= 0.4" } - - is-weakset@2.0.4: - resolution: - { - integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==, - } - engines: { node: ">= 0.4" } - - is-windows@1.0.2: - resolution: - { - integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==, - } - engines: { node: ">=0.10.0" } - - is-wsl@2.2.0: - resolution: - { - integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, - } - engines: { node: ">=8" } - - isarray@2.0.5: - resolution: - { - integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==, - } - - isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, - } - - isexe@3.1.1: - resolution: - { - integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==, - } - engines: { node: ">=16" } - - isobject@3.0.1: - resolution: - { - integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==, - } - engines: { node: ">=0.10.0" } - - isomorphic-ws@4.0.1: - resolution: - { - integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==, - } - peerDependencies: - ws: "*" - - istanbul-lib-coverage@3.2.2: - resolution: - { - integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==, - } - engines: { node: ">=8" } - - istanbul-lib-instrument@5.2.1: - resolution: - { - integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==, - } - engines: { node: ">=8" } - - istanbul-lib-instrument@6.0.3: - resolution: - { - integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==, - } - engines: { node: ">=10" } - - istanbul-lib-report@3.0.1: - resolution: - { - integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==, - } - engines: { node: ">=10" } - - istanbul-lib-source-maps@4.0.1: - resolution: - { - integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==, - } - engines: { node: ">=10" } - - istanbul-reports@3.2.0: - resolution: - { - integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==, - } - engines: { node: ">=8" } - - iterator.prototype@1.1.5: - resolution: - { - integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==, - } - engines: { node: ">= 0.4" } - - jackspeak@3.4.3: - resolution: - { - integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==, - } - - jackspeak@4.1.1: - resolution: - { - integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==, - } - engines: { node: 20 || >=22 } - - jest-changed-files@29.7.0: - resolution: - { - integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-circus@29.7.0: - resolution: - { - integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-cli@29.7.0: - resolution: - { - integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-config@29.7.0: - resolution: - { - integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - ts-node: - optional: true - - jest-diff@29.7.0: - resolution: - { - integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-docblock@29.7.0: - resolution: - { - integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-each@29.7.0: - resolution: - { - integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-environment-jsdom@29.7.0: - resolution: - { - integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jest-environment-node@29.7.0: - resolution: - { - integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-get-type@29.6.3: - resolution: - { - integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-haste-map@29.7.0: - resolution: - { - integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-leak-detector@29.7.0: - resolution: - { - integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-matcher-utils@29.7.0: - resolution: - { - integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-message-util@29.7.0: - resolution: - { - integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-mock@29.7.0: - resolution: - { - integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-pnp-resolver@1.2.3: - resolution: - { - integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==, - } - engines: { node: ">=6" } - peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - - jest-regex-util@29.6.3: - resolution: - { - integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-resolve-dependencies@29.7.0: - resolution: - { - integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-resolve@29.7.0: - resolution: - { - integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-runner@29.7.0: - resolution: - { - integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-runtime@29.7.0: - resolution: - { - integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-snapshot@29.7.0: - resolution: - { - integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-util@29.7.0: - resolution: - { - integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-validate@29.7.0: - resolution: - { - integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - jest-watcher@29.7.0: - resolution: - { - integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==, - } - 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 } - - jest@29.7.0: - resolution: - { - integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jimp-compact@0.16.1: - resolution: - { - integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==, - } - - jiti@1.21.7: - resolution: - { - integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==, - } - hasBin: true - - jju@1.4.0: - resolution: - { - integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==, - } - - jose@4.15.9: - resolution: - { - integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==, - } - - jose@5.10.0: - resolution: - { - integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==, - } - - joycon@3.1.1: - resolution: - { - integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==, - } - engines: { node: ">=10" } - - js-tokens@4.0.0: - resolution: - { - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, - } - - js-yaml@3.14.1: - resolution: - { - integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, - } - hasBin: true - - js-yaml@4.1.0: - resolution: - { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, - } - hasBin: true - - jsc-android@250231.0.0: - resolution: - { - integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==, - } - - jsc-safe-url@0.2.4: - resolution: - { - integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==, - } - - jscodeshift@0.14.0: - resolution: - { - integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==, - } - hasBin: true - peerDependencies: - "@babel/preset-env": ^7.1.6 - - jsdom@20.0.3: - resolution: - { - integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==, - } - engines: { node: ">=14" } - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jsesc@0.5.0: - resolution: - { - integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==, - } - hasBin: true - - jsesc@3.0.2: - resolution: - { - integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==, - } - engines: { node: ">=6" } - hasBin: true - - jsesc@3.1.0: - resolution: - { - integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==, - } - engines: { node: ">=6" } - hasBin: true - - json-buffer@3.0.1: - resolution: - { - integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, - } - - json-parse-better-errors@1.0.2: - resolution: - { - integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==, - } - - json-parse-even-better-errors@2.3.1: - resolution: - { - integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, - } - - json-schema-traverse@0.4.1: - resolution: - { - integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, - } - - json-stable-stringify-without-jsonify@1.0.1: - resolution: - { - integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, - } - - json5@1.0.2: - resolution: - { - integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, - } - hasBin: true - - json5@2.2.3: - resolution: - { - integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, - } - engines: { node: ">=6" } - hasBin: true - - jsonfile@4.0.0: - resolution: - { - integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==, - } - - jsx-ast-utils@3.3.5: - resolution: - { - integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==, - } - engines: { node: ">=4.0" } - - keyv@4.5.4: - resolution: - { - integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, - } - - kind-of@6.0.3: - resolution: - { - integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, - } - engines: { node: ">=0.10.0" } - - kleur@3.0.3: - resolution: - { - integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, - } - engines: { node: ">=6" } - - kleur@4.1.5: - resolution: - { - integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==, - } - engines: { node: ">=6" } - - lan-network@0.1.7: - resolution: - { - integrity: sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==, - } - hasBin: true - - language-subtag-registry@0.3.23: - resolution: - { - integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==, - } - - language-tags@1.0.9: - resolution: - { - integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==, - } - engines: { node: ">=0.10" } - - leven@3.1.0: - resolution: - { - integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, - } - engines: { node: ">=6" } - - levn@0.4.1: - resolution: - { - integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, - } - engines: { node: ">= 0.8.0" } - - libsodium-sumo@0.7.15: - resolution: - { - integrity: sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==, - } - - libsodium-wrappers-sumo@0.7.15: - resolution: - { - integrity: sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==, - } - - lighthouse-logger@1.4.2: - resolution: - { - integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==, - } - - lightningcss-darwin-arm64@1.27.0: - resolution: - { - integrity: sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==, - } - engines: { node: ">= 12.0.0" } - cpu: [arm64] - os: [darwin] - - lightningcss-darwin-x64@1.27.0: - resolution: - { - integrity: sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==, - } - engines: { node: ">= 12.0.0" } - cpu: [x64] - os: [darwin] - - lightningcss-freebsd-x64@1.27.0: - resolution: - { - integrity: sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==, - } - engines: { node: ">= 12.0.0" } - cpu: [x64] - os: [freebsd] - - lightningcss-linux-arm-gnueabihf@1.27.0: - resolution: - { - integrity: sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==, - } - engines: { node: ">= 12.0.0" } - cpu: [arm] - os: [linux] - - lightningcss-linux-arm64-gnu@1.27.0: - resolution: - { - integrity: sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==, - } - engines: { node: ">= 12.0.0" } - cpu: [arm64] - os: [linux] - - lightningcss-linux-arm64-musl@1.27.0: - resolution: - { - integrity: sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==, - } - engines: { node: ">= 12.0.0" } - cpu: [arm64] - os: [linux] - - lightningcss-linux-x64-gnu@1.27.0: - resolution: - { - integrity: sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==, - } - engines: { node: ">= 12.0.0" } - cpu: [x64] - os: [linux] - - lightningcss-linux-x64-musl@1.27.0: - resolution: - { - integrity: sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==, - } - engines: { node: ">= 12.0.0" } - cpu: [x64] - os: [linux] - - lightningcss-win32-arm64-msvc@1.27.0: - resolution: - { - integrity: sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==, - } - engines: { node: ">= 12.0.0" } - cpu: [arm64] - os: [win32] - - lightningcss-win32-x64-msvc@1.27.0: - resolution: - { - integrity: sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==, - } - engines: { node: ">= 12.0.0" } - cpu: [x64] - os: [win32] - - lightningcss@1.27.0: - resolution: - { - integrity: sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==, - } - engines: { node: ">= 12.0.0" } - - lilconfig@2.1.0: - resolution: - { - integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, - } - engines: { node: ">=10" } - - lilconfig@3.1.3: - resolution: - { - integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==, - } - engines: { node: ">=14" } - - lines-and-columns@1.2.4: - resolution: - { - integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, - } - - load-tsconfig@0.2.5: - resolution: - { - integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - - locate-path@3.0.0: - resolution: - { - integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==, - } - engines: { node: ">=6" } - - locate-path@5.0.0: - resolution: - { - integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, - } - engines: { node: ">=8" } - - locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, - } - engines: { node: ">=10" } - - lodash.debounce@4.0.8: - resolution: - { - integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, - } - - lodash.memoize@4.1.2: - resolution: - { - integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==, - } - - lodash.merge@4.6.2: - resolution: - { - integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, - } - - lodash.sortby@4.7.0: - resolution: - { - integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==, - } - - lodash.startcase@4.4.0: - resolution: - { - integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==, - } - - lodash.throttle@4.1.1: - resolution: - { - integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==, - } - - lodash@4.17.21: - resolution: - { - integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, - } - - log-symbols@2.2.0: - resolution: - { - integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==, - } - engines: { node: ">=4" } - - long@4.0.0: - resolution: - { - integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==, - } - - long@5.3.2: - resolution: - { - integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==, - } - - loose-envify@1.4.0: - resolution: - { - integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, - } - hasBin: true - - lru-cache@10.4.3: - resolution: - { - integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, - } - - lru-cache@11.1.0: - resolution: - { - integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==, - } - engines: { node: 20 || >=22 } - - lru-cache@5.1.1: - resolution: - { - integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, - } - - lz-string@1.5.0: - resolution: - { - integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==, - } - hasBin: true - - make-dir@2.1.0: - resolution: - { - integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==, - } - engines: { node: ">=6" } - - make-dir@4.0.0: - resolution: - { - integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==, - } - engines: { node: ">=10" } - - make-error@1.3.6: - resolution: - { - integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, - } - - makeerror@1.0.12: - resolution: - { - integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, - } - - marky@1.3.0: - resolution: - { - integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==, - } - - math-intrinsics@1.1.0: - resolution: - { - integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, - } - engines: { node: ">= 0.4" } - - media-typer@1.1.0: - resolution: - { - integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==, - } - engines: { node: ">= 0.8" } - - memoize-one@5.2.1: - resolution: - { - integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==, - } - - merge-descriptors@2.0.0: - resolution: - { - integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==, - } - engines: { node: ">=18" } - - merge-options@3.0.4: - resolution: - { - integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==, - } - engines: { node: ">=10" } - - merge-stream@2.0.0: - resolution: - { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, - } - - merge2@1.4.1: - resolution: - { - integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, - } - engines: { node: ">= 8" } - - methods@1.1.2: - resolution: - { - integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==, - } - engines: { node: ">= 0.6" } - - metro-babel-transformer@0.81.5: - resolution: - { - integrity: sha512-oKCQuajU5srm+ZdDcFg86pG/U8hkSjBlkyFjz380SZ4TTIiI5F+OQB830i53D8hmqmcosa4wR/pnKv8y4Q3dLw==, - } - engines: { node: ">=18.18" } - - metro-cache-key@0.81.5: - resolution: - { - integrity: sha512-lGWnGVm1UwO8faRZ+LXQUesZSmP1LOg14OVR+KNPBip8kbMECbQJ8c10nGesw28uQT7AE0lwQThZPXlxDyCLKQ==, - } - engines: { node: ">=18.18" } - - metro-cache@0.81.5: - resolution: - { - integrity: sha512-wOsXuEgmZMZ5DMPoz1pEDerjJ11AuMy9JifH4yNW7NmWS0ghCRqvDxk13LsElzLshey8C+my/tmXauXZ3OqZgg==, - } - engines: { node: ">=18.18" } - - metro-config@0.81.5: - resolution: - { - integrity: sha512-oDRAzUvj6RNRxratFdcVAqtAsg+T3qcKrGdqGZFUdwzlFJdHGR9Z413sW583uD2ynsuOjA2QB6US8FdwiBdNKg==, - } - engines: { node: ">=18.18" } - - metro-core@0.81.5: - resolution: - { - integrity: sha512-+2R0c8ByfV2N7CH5wpdIajCWa8escUFd8TukfoXyBq/vb6yTCsznoA25FhNXJ+MC/cz1L447Zj3vdUfCXIZBwg==, - } - engines: { node: ">=18.18" } - - metro-file-map@0.81.5: - resolution: - { - integrity: sha512-mW1PKyiO3qZvjeeVjj1brhkmIotObA3/9jdbY1fQQYvEWM6Ml7bN/oJCRDGn2+bJRlG+J8pwyJ+DgdrM4BsKyg==, - } - engines: { node: ">=18.18" } - - metro-minify-terser@0.81.5: - resolution: - { - integrity: sha512-/mn4AxjANnsSS3/Bb+zA1G5yIS5xygbbz/OuPaJYs0CPcZCaWt66D+65j4Ft/nJkffUxcwE9mk4ubpkl3rjgtw==, - } - engines: { node: ">=18.18" } - - metro-resolver@0.81.5: - resolution: - { - integrity: sha512-6BX8Nq3g3go3FxcyXkVbWe7IgctjDTk6D9flq+P201DfHHQ28J+DWFpVelFcrNTn4tIfbP/Bw7u/0g2BGmeXfQ==, - } - engines: { node: ">=18.18" } - - metro-runtime@0.81.5: - resolution: - { - integrity: sha512-M/Gf71ictUKP9+77dV/y8XlAWg7xl76uhU7ggYFUwEdOHHWPG6gLBr1iiK0BmTjPFH8yRo/xyqMli4s3oGorPQ==, - } - engines: { node: ">=18.18" } - - metro-source-map@0.81.5: - resolution: - { - integrity: sha512-Jz+CjvCKLNbJZYJTBeN3Kq9kIJf6b61MoLBdaOQZJ5Ajhw6Pf95Nn21XwA8BwfUYgajsi6IXsp/dTZsYJbN00Q==, - } - engines: { node: ">=18.18" } - - metro-symbolicate@0.81.5: - resolution: - { - integrity: sha512-X3HV3n3D6FuTE11UWFICqHbFMdTavfO48nXsSpnNGFkUZBexffu0Xd+fYKp+DJLNaQr3S+lAs8q9CgtDTlRRuA==, - } - engines: { node: ">=18.18" } - hasBin: true - - metro-transform-plugins@0.81.5: - resolution: - { - integrity: sha512-MmHhVx/1dJC94FN7m3oHgv5uOjKH8EX8pBeu1pnPMxbJrx6ZuIejO0k84zTSaQTZ8RxX1wqwzWBpXAWPjEX8mA==, - } - engines: { node: ">=18.18" } - - metro-transform-worker@0.81.5: - resolution: - { - integrity: sha512-lUFyWVHa7lZFRSLJEv+m4jH8WrR5gU7VIjUlg4XmxQfV8ngY4V10ARKynLhMYPeQGl7Qvf+Ayg0eCZ272YZ4Mg==, - } - engines: { node: ">=18.18" } - - metro@0.81.5: - resolution: - { - integrity: sha512-YpFF0DDDpDVygeca2mAn7K0+us+XKmiGk4rIYMz/CRdjFoCGqAei/IQSpV0UrGfQbToSugpMQeQJveaWSH88Hg==, - } - engines: { node: ">=18.18" } - hasBin: true - - micromatch@4.0.8: - resolution: - { - integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, - } - engines: { node: ">=8.6" } - - mime-db@1.52.0: - 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" } - - mime-types@2.1.35: - resolution: - { - integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, - } - engines: { node: ">= 0.6" } - - mime-types@3.0.1: - resolution: - { - integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==, - } - engines: { node: ">= 0.6" } - - mime@1.6.0: - resolution: - { - integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, - } - engines: { node: ">=4" } - hasBin: true - - mime@3.0.0: - resolution: - { - integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==, - } - engines: { node: ">=10.0.0" } - hasBin: true - - mimic-fn@1.2.0: - resolution: - { - integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==, - } - engines: { node: ">=4" } - - mimic-fn@2.1.0: - resolution: - { - integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, - } - engines: { node: ">=6" } - - min-indent@1.0.1: - resolution: - { - integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==, - } - engines: { node: ">=4" } - - miniflare@4.20250829.0: - resolution: - { - integrity: sha512-V1DLPnOXjm0DtfU9K0ftrxF+G7LkQ3nDKtXGdU8+Vf+dOqdGM+3ZHZOcDC5XPOsDnI280HBd5xcos/ghtGB7cg==, - } - engines: { node: ">=18.0.0" } - hasBin: true - - minimalistic-assert@1.0.1: - resolution: - { - integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==, - } - - minimalistic-crypto-utils@1.0.1: - resolution: - { - integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==, - } - - minimatch@10.0.3: - resolution: - { - integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==, - } - engines: { node: 20 || >=22 } - - minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, - } - - minimatch@8.0.4: - resolution: - { - integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==, - } - engines: { node: ">=16 || 14 >=14.17" } - - minimatch@9.0.3: - resolution: - { - integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==, - } - engines: { node: ">=16 || 14 >=14.17" } - - minimatch@9.0.5: - resolution: - { - integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==, - } - engines: { node: ">=16 || 14 >=14.17" } - - minimist@1.2.8: - resolution: - { - integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, - } - - minipass@4.2.8: - resolution: - { - integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==, - } - engines: { node: ">=8" } - - minipass@7.1.2: - resolution: - { - integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==, - } - engines: { node: ">=16 || 14 >=14.17" } - - minizlib@3.0.2: - resolution: - { - integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==, - } - engines: { node: ">= 18" } - - mkdirp@0.5.6: - resolution: - { - integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==, - } - hasBin: true - - mkdirp@1.0.4: - resolution: - { - integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, - } - engines: { node: ">=10" } - hasBin: true - - mkdirp@3.0.1: - resolution: - { - integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==, - } - engines: { node: ">=10" } - hasBin: true - - mnemonist@0.38.3: - resolution: - { - integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==, - } - - mri@1.2.0: - resolution: - { - integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, - } - engines: { node: ">=4" } - - ms@2.0.0: - resolution: - { - integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, - } - - ms@2.1.2: - resolution: - { - integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, - } - - ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, - } - - mz@2.7.0: - resolution: - { - integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, - } - - nanoid@3.3.11: - resolution: - { - integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==, - } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } - hasBin: true - - napi-postinstall@0.3.3: - resolution: - { - integrity: sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==, - } - engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } - hasBin: true - - natural-compare@1.4.0: - resolution: - { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, - } - - negotiator@0.6.3: - resolution: - { - integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==, - } - engines: { node: ">= 0.6" } - - negotiator@0.6.4: - resolution: - { - integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==, - } - engines: { node: ">= 0.6" } - - negotiator@1.0.0: - resolution: - { - integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==, - } - engines: { node: ">= 0.6" } - - neo-async@2.6.2: - resolution: - { - integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==, - } - - nested-error-stacks@2.0.1: - resolution: - { - integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==, - } - - next@14.2.31: - resolution: - { - integrity: sha512-Wyw1m4t8PhqG+or5a1U/Deb888YApC4rAez9bGhHkTsfwAy4SWKVro0GhEx4sox1856IbLhvhce2hAA6o8vkog==, - } - engines: { node: ">=18.17.0" } - hasBin: true - peerDependencies: - "@opentelemetry/api": ^1.1.0 - "@playwright/test": ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - "@opentelemetry/api": - optional: true - "@playwright/test": - optional: true - sass: - optional: true - - node-dir@0.1.17: - resolution: - { - integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==, - } - engines: { node: ">= 0.10.5" } - - node-domexception@1.0.0: - resolution: - { - integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==, - } - engines: { node: ">=10.5.0" } - deprecated: Use your platform's native DOMException instead - - node-fetch@2.7.0: - resolution: - { - integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, - } - engines: { node: 4.x || >=6.0.0 } - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-forge@1.3.1: - resolution: - { - integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==, - } - engines: { node: ">= 6.13.0" } - - node-int64@0.4.0: - resolution: - { - integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, - } - - node-releases@2.0.19: - resolution: - { - integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==, - } - - normalize-package-data@2.5.0: - resolution: - { - integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==, - } - - normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, - } - engines: { node: ">=0.10.0" } - - normalize-range@0.1.2: - resolution: - { - integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, - } - engines: { node: ">=0.10.0" } - - npm-package-arg@11.0.3: - resolution: - { - integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - npm-run-path@4.0.1: - resolution: - { - integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, - } - engines: { node: ">=8" } - - nullthrows@1.1.1: - resolution: - { - integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==, - } - - nwsapi@2.2.21: - resolution: - { - integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==, - } - - ob1@0.81.5: - resolution: - { - integrity: sha512-iNpbeXPLmaiT9I5g16gFFFjsF3sGxLpYG2EGP3dfFB4z+l9X60mp/yRzStHhMtuNt8qmf7Ww80nOPQHngHhnIQ==, - } - engines: { node: ">=18.18" } - - object-assign@4.1.1: - resolution: - { - integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, - } - engines: { node: ">=0.10.0" } - - object-hash@3.0.0: - resolution: - { - integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==, - } - engines: { node: ">= 6" } - - object-inspect@1.13.4: - resolution: - { - integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==, - } - engines: { node: ">= 0.4" } - - object-is@1.1.6: - resolution: - { - integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==, - } - engines: { node: ">= 0.4" } - - object-keys@1.1.1: - resolution: - { - integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, - } - engines: { node: ">= 0.4" } - - object-treeify@1.1.33: - resolution: - { - integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==, - } - engines: { node: ">= 10" } - - object.assign@4.1.7: - resolution: - { - integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==, - } - engines: { node: ">= 0.4" } - - object.entries@1.1.9: - resolution: - { - integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==, - } - engines: { node: ">= 0.4" } - - object.fromentries@2.0.8: - resolution: - { - integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==, - } - engines: { node: ">= 0.4" } - - object.groupby@1.0.3: - resolution: - { - integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==, - } - engines: { node: ">= 0.4" } - - object.values@1.2.1: - resolution: - { - integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==, - } - engines: { node: ">= 0.4" } - - obliterator@1.6.1: - resolution: - { - integrity: sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==, - } - - ohash@2.0.11: - resolution: - { - integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==, - } - - on-finished@2.3.0: - 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" } - - on-headers@1.1.0: - resolution: - { - integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==, - } - engines: { node: ">= 0.8" } - - once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, - } - - onetime@2.0.1: - resolution: - { - integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==, - } - engines: { node: ">=4" } - - onetime@5.1.2: - resolution: - { - integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, - } - engines: { node: ">=6" } - - open@7.4.2: - resolution: - { - integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==, - } - engines: { node: ">=8" } - - open@8.4.2: - resolution: - { - integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==, - } - engines: { node: ">=12" } - - optimism@0.18.1: - resolution: - { - integrity: sha512-mLXNwWPa9dgFyDqkNi54sjDyNJ9/fTI6WGBLgnXku1vdKY/jovHfZT5r+aiVeFFLOz+foPNOm5YJ4mqgld2GBQ==, - } - - optionator@0.9.4: - resolution: - { - integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, - } - engines: { node: ">= 0.8.0" } - - ora@3.4.0: - resolution: - { - integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==, - } - engines: { node: ">=6" } - - outdent@0.5.0: - resolution: - { - integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==, - } - - own-keys@1.0.1: - resolution: - { - integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==, - } - engines: { node: ">= 0.4" } - - p-filter@2.1.0: - resolution: - { - integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==, - } - engines: { node: ">=8" } - - p-limit@2.3.0: - resolution: - { - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, - } - engines: { node: ">=6" } - - p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, - } - engines: { node: ">=10" } - - p-locate@3.0.0: - resolution: - { - integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==, - } - engines: { node: ">=6" } - - p-locate@4.1.0: - 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" } - - p-map@2.1.0: - resolution: - { - integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==, - } - engines: { node: ">=6" } - - p-try@2.2.0: - resolution: - { - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, - } - engines: { node: ">=6" } - - package-json-from-dist@1.0.1: - resolution: - { - integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==, - } - - package-manager-detector@0.2.11: - resolution: - { - integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==, - } - - pako@2.1.0: - resolution: - { - integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==, - } - - parent-module@1.0.1: - resolution: - { - integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, - } - engines: { node: ">=6" } - - parse-json@4.0.0: - resolution: - { - integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==, - } - engines: { node: ">=4" } - - parse-json@5.2.0: - resolution: - { - integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, - } - engines: { node: ">=8" } - - parse-png@2.1.0: - resolution: - { - integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==, - } - engines: { node: ">=10" } - - parse5@7.3.0: - resolution: - { - integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==, - } - - parseurl@1.3.3: - resolution: - { - integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==, - } - engines: { node: ">= 0.8" } - - path-exists@3.0.0: - resolution: - { - integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==, - } - engines: { node: ">=4" } - - path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: ">=8" } - - path-is-absolute@1.0.1: - resolution: - { - integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, - } - engines: { node: ">=0.10.0" } - - path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, - } - engines: { node: ">=8" } - - path-parse@1.0.7: - resolution: - { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, - } - - path-scurry@1.11.1: - resolution: - { - integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==, - } - engines: { node: ">=16 || 14 >=14.18" } - - path-scurry@2.0.0: - resolution: - { - integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==, - } - engines: { node: 20 || >=22 } - - path-to-regexp@6.3.0: - resolution: - { - integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==, - } - - path-to-regexp@8.2.0: - resolution: - { - integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==, - } - engines: { node: ">=16" } - - path-type@4.0.0: - resolution: - { - integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, - } - engines: { node: ">=8" } - - pathe@2.0.3: - resolution: - { - integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, - } - - picocolors@1.1.1: - resolution: - { - integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, - } - - picomatch@2.3.1: - resolution: - { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, - } - engines: { node: ">=8.6" } - - picomatch@3.0.1: - resolution: - { - integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==, - } - engines: { node: ">=10" } - - picomatch@4.0.3: - resolution: - { - integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==, - } - engines: { node: ">=12" } - - pify@2.3.0: - resolution: - { - integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==, - } - engines: { node: ">=0.10.0" } - - pify@4.0.1: - resolution: - { - integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, - } - engines: { node: ">=6" } - - pirates@4.0.7: - resolution: - { - integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==, - } - engines: { node: ">= 6" } - - pkg-dir@3.0.0: - resolution: - { - integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==, - } - engines: { node: ">=6" } - - pkg-dir@4.2.0: - resolution: - { - integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, - } - engines: { node: ">=8" } - - plist@3.1.0: - resolution: - { - integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==, - } - engines: { node: ">=10.4.0" } - - pluralize@8.0.0: - resolution: - { - integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==, - } - engines: { node: ">=4" } - - pngjs@3.4.0: - resolution: - { - integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==, - } - engines: { node: ">=4.0.0" } - - possible-typed-array-names@1.1.0: - resolution: - { - integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==, - } - engines: { node: ">= 0.4" } - - postcss-import@15.1.0: - resolution: - { - integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==, - } - engines: { node: ">=14.0.0" } - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: - { - integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==, - } - engines: { node: ^12 || ^14 || >= 16 } - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@3.1.4: - resolution: - { - integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==, - } - engines: { node: ">= 10" } - peerDependencies: - postcss: ">=8.0.9" - ts-node: ">=9.0.0" - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-load-config@4.0.2: - resolution: - { - integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==, - } - engines: { node: ">= 14" } - peerDependencies: - postcss: ">=8.0.9" - ts-node: ">=9.0.0" - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@6.2.0: - resolution: - { - integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==, - } - engines: { node: ">=12.0" } - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.1.2: - resolution: - { - integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==, - } - engines: { node: ">=4" } - - postcss-value-parser@4.2.0: - resolution: - { - integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, - } - - postcss@8.4.31: - resolution: - { - integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==, - } - engines: { node: ^10 || ^12 || >=14 } - - postcss@8.4.49: - resolution: - { - integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==, - } - engines: { node: ^10 || ^12 || >=14 } - - postcss@8.5.6: - resolution: - { - integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==, - } - engines: { node: ^10 || ^12 || >=14 } - - prelude-ls@1.2.1: - resolution: - { - integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, - } - engines: { node: ">= 0.8.0" } - - prettier-plugin-packagejson@2.5.19: - resolution: - { - integrity: sha512-Qsqp4+jsZbKMpEGZB1UP1pxeAT8sCzne2IwnKkr+QhUe665EXUo3BAvTf1kAPCqyMv9kg3ZmO0+7eOni/C6Uag==, - } - peerDependencies: - prettier: ">= 1.16.0" - peerDependenciesMeta: - prettier: - optional: true - - prettier-plugin-tailwindcss@0.5.14: - resolution: - { - integrity: sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==, - } - engines: { node: ">=14.21.3" } - peerDependencies: - "@ianvs/prettier-plugin-sort-imports": "*" - "@prettier/plugin-pug": "*" - "@shopify/prettier-plugin-liquid": "*" - "@trivago/prettier-plugin-sort-imports": "*" - "@zackad/prettier-plugin-twig-melody": "*" - prettier: ^3.0 - prettier-plugin-astro: "*" - prettier-plugin-css-order: "*" - prettier-plugin-import-sort: "*" - prettier-plugin-jsdoc: "*" - prettier-plugin-marko: "*" - prettier-plugin-organize-attributes: "*" - prettier-plugin-organize-imports: "*" - prettier-plugin-sort-imports: "*" - prettier-plugin-style-order: "*" - prettier-plugin-svelte: "*" - peerDependenciesMeta: - "@ianvs/prettier-plugin-sort-imports": - optional: true - "@prettier/plugin-pug": - optional: true - "@shopify/prettier-plugin-liquid": - optional: true - "@trivago/prettier-plugin-sort-imports": - optional: true - "@zackad/prettier-plugin-twig-melody": - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-import-sort: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-marko: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-sort-imports: - optional: true - prettier-plugin-style-order: - optional: true - prettier-plugin-svelte: - optional: true - - prettier@2.8.8: - resolution: - { - integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, - } - engines: { node: ">=10.13.0" } - hasBin: true - - prettier@3.6.2: - resolution: - { - integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==, - } - engines: { node: ">=14" } - hasBin: true - - pretty-bytes@5.6.0: - resolution: - { - integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==, - } - engines: { node: ">=6" } - - pretty-format@27.5.1: - resolution: - { - integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - pretty-format@29.7.0: - resolution: - { - integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - proc-log@4.2.0: - resolution: - { - integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - process@0.11.10: - resolution: - { - integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==, - } - engines: { node: ">= 0.6.0" } - - progress@2.0.3: - resolution: - { - integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==, - } - engines: { node: ">=0.4.0" } - - promise@8.3.0: - resolution: - { - integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==, - } - - prompts@2.4.2: - resolution: - { - integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, - } - engines: { node: ">= 6" } - - prop-types@15.8.1: - resolution: - { - integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==, - } - - protobufjs@6.11.4: - resolution: - { - integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==, - } - hasBin: true - - protobufjs@7.5.4: - resolution: - { - integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==, - } - engines: { node: ">=12.0.0" } - - proxy-addr@2.0.7: - resolution: - { - integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==, - } - engines: { node: ">= 0.10" } - - proxy-from-env@1.1.0: - resolution: - { - integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, - } - - psl@1.15.0: - resolution: - { - integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==, - } - - punycode@2.3.1: - resolution: - { - integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, - } - engines: { node: ">=6" } - - pure-rand@6.1.0: - resolution: - { - integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==, - } - - qrcode-terminal@0.11.0: - resolution: - { - integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==, - } - hasBin: true - - qs@6.13.0: - resolution: - { - integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==, - } - engines: { node: ">=0.6" } - - qs@6.14.0: - resolution: - { - integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==, - } - engines: { node: ">=0.6" } - - quansync@0.2.11: - resolution: - { - integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==, - } - - querystringify@2.2.0: - resolution: - { - integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==, - } - - queue-microtask@1.2.3: - resolution: - { - integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, - } - - queue@6.0.2: - resolution: - { - integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==, - } - - range-parser@1.2.1: - resolution: - { - integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==, - } - engines: { node: ">= 0.6" } - - raw-body@3.0.0: - resolution: - { - integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==, - } - engines: { node: ">= 0.8" } - - rc@1.2.8: - resolution: - { - integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==, - } - hasBin: true - - react-devtools-core@5.3.2: - resolution: - { - integrity: sha512-crr9HkVrDiJ0A4zot89oS0Cgv0Oa4OG1Em4jit3P3ZxZSKPMYyMjfwMqgcJna9o625g8oN87rBm8SWWrSTBZxg==, - } - - react-dom@18.3.1: - resolution: - { - integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==, - } - peerDependencies: - react: ^18.3.1 - - react-is@16.13.1: - resolution: - { - integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, - } - - react-is@17.0.2: - resolution: - { - integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==, - } - - react-is@18.3.1: - resolution: - { - integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==, - } - - react-native-edge-to-edge@1.6.0: - resolution: - { - integrity: sha512-2WCNdE3Qd6Fwg9+4BpbATUxCLcouF6YRY7K+J36KJ4l3y+tWN6XCqAC4DuoGblAAbb2sLkhEDp4FOlbOIot2Og==, - } - peerDependencies: - react: "*" - react-native: "*" - - react-native-get-random-values@1.11.0: - resolution: - { - integrity: sha512-4BTbDbRmS7iPdhYLRcz3PGFIpFJBwNZg9g42iwa2P6FOv9vZj/xJc678RZXnLNZzd0qd7Q3CCF6Yd+CU2eoXKQ==, - } - peerDependencies: - react-native: ">=0.56" - - react-native-quick-base64@2.2.1: - resolution: - { - integrity: sha512-rAECaDhq3v+P8IM10cLgUVvt3kPJq3v+Jznp7tQRLXk1LlV/VCepump3am0ObwHlE6EoXblm4cddPJoXAlO+CQ==, - } - peerDependencies: - react: "*" - react-native: "*" - - react-native-quick-crypto@0.7.17: - resolution: - { - integrity: sha512-cJzp6oA/dM1lujt+Rwtn46Mgcs3w9F/0oQvNz1jcADc/AXktveAOUTzzKrDMxyg6YPziCYnoqMDzHBo6OLSU1g==, - } - - react-native@0.76.7: - resolution: - { - integrity: sha512-GPJcQeO3qUi1MvuhsC2DC6tH8gJQ4uc4JWPORrdeuCGFWE3QLsN8/hiChTEvJREHLfQSV61YPI8gIOtAQ8c37g==, - } - engines: { node: ">=18" } - hasBin: true - peerDependencies: - "@types/react": ^18.2.47 - react: ^18.2.0 - peerDependenciesMeta: - "@types/react": - optional: true - - react-refresh@0.14.2: - resolution: - { - integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==, - } - engines: { node: ">=0.10.0" } - - react-remove-scroll-bar@2.3.8: - resolution: - { - integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==, - } - engines: { node: ">=10" } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - - react-remove-scroll@2.7.1: - resolution: - { - integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==, - } - engines: { node: ">=10" } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - react-style-singleton@2.2.3: - resolution: - { - integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==, - } - engines: { node: ">=10" } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - react@18.3.1: - resolution: - { - integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==, - } - engines: { node: ">=0.10.0" } - - read-cache@1.0.0: - resolution: - { - integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==, - } - - read-pkg-up@7.0.1: - resolution: - { - integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==, - } - engines: { node: ">=8" } - - read-pkg@5.2.0: - resolution: - { - integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==, - } - engines: { node: ">=8" } - - read-yaml-file@1.1.0: - resolution: - { - integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==, - } - engines: { node: ">=6" } - - readable-stream@4.7.0: - resolution: - { - integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - readdirp@3.6.0: - resolution: - { - integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, - } - engines: { node: ">=8.10.0" } - - readline@1.3.0: - resolution: - { - integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==, - } - - readonly-date@1.0.0: - resolution: - { - integrity: sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==, - } - - recast@0.21.5: - resolution: - { - integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==, - } - engines: { node: ">= 4" } - - redent@3.0.0: - resolution: - { - integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==, - } - engines: { node: ">=8" } - - reflect.getprototypeof@1.0.10: - resolution: - { - integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==, - } - engines: { node: ">= 0.4" } - - regenerate-unicode-properties@10.2.0: - resolution: - { - integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==, - } - engines: { node: ">=4" } - - regenerate@1.4.2: - resolution: - { - integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==, - } - - regenerator-runtime@0.13.11: - resolution: - { - integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==, - } - - regexp-tree@0.1.27: - resolution: - { - integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==, - } - hasBin: true - - regexp.prototype.flags@1.5.4: - resolution: - { - integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==, - } - engines: { node: ">= 0.4" } - - regexpu-core@6.2.0: - resolution: - { - integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==, - } - engines: { node: ">=4" } - - regjsgen@0.8.0: - resolution: - { - integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==, - } - - regjsparser@0.10.0: - resolution: - { - integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==, - } - hasBin: true - - regjsparser@0.12.0: - resolution: - { - integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==, - } - hasBin: true - - rehackt@0.1.0: - resolution: - { - integrity: sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==, - } - peerDependencies: - "@types/react": ^18.2.47 - react: "*" - peerDependenciesMeta: - "@types/react": - optional: true - react: - optional: true - - require-directory@2.1.1: - 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" } - - requireg@0.2.2: - resolution: - { - integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==, - } - engines: { node: ">= 4.0.0" } - - requires-port@1.0.0: - resolution: - { - integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==, - } - - resolve-cwd@3.0.0: - resolution: - { - integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==, - } - engines: { node: ">=8" } - - resolve-from@3.0.0: - resolution: - { - integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==, - } - engines: { node: ">=4" } - - resolve-from@4.0.0: - resolution: - { - integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, - } - engines: { node: ">=4" } - - resolve-from@5.0.0: - resolution: - { - integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, - } - engines: { node: ">=8" } - - resolve-pkg-maps@1.0.0: - resolution: - { - integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==, - } - - resolve-workspace-root@2.0.0: - resolution: - { - integrity: sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw==, - } - - resolve.exports@2.0.3: - resolution: - { - integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==, - } - engines: { node: ">=10" } - - resolve@1.19.0: - resolution: - { - integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==, - } - - resolve@1.22.10: - resolution: - { - integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==, - } - engines: { node: ">= 0.4" } - hasBin: true - - resolve@1.7.1: - resolution: - { - integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==, - } - - resolve@2.0.0-next.5: - resolution: - { - integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==, - } - hasBin: true - - restore-cursor@2.0.0: - resolution: - { - integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==, - } - engines: { node: ">=4" } - - reusify@1.1.0: - resolution: - { - integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==, - } - engines: { iojs: ">=1.0.0", node: ">=0.10.0" } - - rimraf@2.6.3: - resolution: - { - integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==, - } - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@3.0.2: - resolution: - { - integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, - } - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@5.0.10: - resolution: - { - integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==, - } - hasBin: true - - rollup-plugin-copy@3.5.0: - resolution: - { - integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==, - } - engines: { node: ">=8.3" } - - rollup@3.29.5: - resolution: - { - integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==, - } - engines: { node: ">=14.18.0", npm: ">=8.0.0" } - hasBin: true - - router@2.2.0: - resolution: - { - integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==, - } - engines: { node: ">= 18" } - - run-parallel@1.2.0: - resolution: - { - integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, - } - - safe-array-concat@1.1.3: - resolution: - { - integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==, - } - engines: { node: ">=0.4" } - - safe-buffer@5.2.1: - resolution: - { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, - } - - safe-push-apply@1.0.0: - resolution: - { - integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==, - } - engines: { node: ">= 0.4" } - - safe-regex-test@1.1.0: - resolution: - { - integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==, - } - engines: { node: ">= 0.4" } - - safer-buffer@2.1.2: - resolution: - { - integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, - } - - sax@1.4.1: - resolution: - { - integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, - } - - saxes@6.0.0: - resolution: - { - integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==, - } - engines: { node: ">=v12.22.7" } - - scheduler@0.23.2: - resolution: - { - integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==, - } - - scheduler@0.24.0-canary-efb381bbf-20230505: - resolution: - { - integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==, - } - - selfsigned@2.4.1: - resolution: - { - integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==, - } - engines: { node: ">=10" } - - semver@5.7.2: - resolution: - { - integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==, - } - hasBin: true - - semver@6.3.1: - resolution: - { - integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, - } - hasBin: true - - semver@7.7.2: - resolution: - { - integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==, - } - engines: { node: ">=10" } - hasBin: true - - send@0.19.0: - resolution: - { - integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==, - } - engines: { node: ">= 0.8.0" } - - send@0.19.1: - resolution: - { - integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==, - } - engines: { node: ">= 0.8.0" } - - send@1.2.0: - resolution: - { - integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==, - } - engines: { node: ">= 18" } - - serialize-error@2.1.0: - resolution: - { - integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==, - } - engines: { node: ">=0.10.0" } - - serve-static@1.16.2: - resolution: - { - integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==, - } - engines: { node: ">= 0.8.0" } - - serve-static@2.2.0: - resolution: - { - integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==, - } - engines: { node: ">= 18" } - - set-function-length@1.2.2: - resolution: - { - integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==, - } - engines: { node: ">= 0.4" } - - set-function-name@2.0.2: - resolution: - { - integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==, - } - engines: { node: ">= 0.4" } - - set-proto@1.0.0: - resolution: - { - integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==, - } - engines: { node: ">= 0.4" } - - setprototypeof@1.2.0: - resolution: - { - integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==, - } - - shallow-clone@3.0.1: - resolution: - { - integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==, - } - engines: { node: ">=8" } - - sharp@0.33.5: - resolution: - { - integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==, - } - engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } - - shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, - } - engines: { node: ">=8" } - - shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, - } - engines: { node: ">=8" } - - shell-quote@1.8.3: - resolution: - { - integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==, - } - engines: { node: ">= 0.4" } - - side-channel-list@1.0.0: - resolution: - { - integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==, - } - engines: { node: ">= 0.4" } - - side-channel-map@1.0.1: - resolution: - { - integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==, - } - engines: { node: ">= 0.4" } - - side-channel-weakmap@1.0.2: - resolution: - { - integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==, - } - engines: { node: ">= 0.4" } - - side-channel@1.1.0: - resolution: - { - integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==, - } - engines: { node: ">= 0.4" } - - signal-exit@3.0.7: - resolution: - { - integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, - } - - signal-exit@4.1.0: - resolution: - { - integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, - } - engines: { node: ">=14" } - - simple-plist@1.3.1: - resolution: - { - integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==, - } - - simple-swizzle@0.2.2: - resolution: - { - integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==, - } - - sisteransi@1.0.5: - resolution: - { - integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, - } - - slash@3.0.0: - resolution: - { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, - } - engines: { node: ">=8" } - - slugify@1.6.6: - resolution: - { - integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==, - } - engines: { node: ">=8.0.0" } - - sort-object-keys@1.1.3: - resolution: - { - integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==, - } - - sort-package-json@3.4.0: - resolution: - { - integrity: sha512-97oFRRMM2/Js4oEA9LJhjyMlde+2ewpZQf53pgue27UkbEXfHJnDzHlUxQ/DWUkzqmp7DFwJp8D+wi/TYeQhpA==, - } - engines: { node: ">=20" } - hasBin: true - - source-map-js@1.2.1: - resolution: - { - integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, - } - engines: { node: ">=0.10.0" } - - source-map-support@0.5.13: - resolution: - { - integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==, - } - - source-map-support@0.5.21: - resolution: - { - integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, - } - - source-map@0.5.7: - resolution: - { - integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==, - } - engines: { node: ">=0.10.0" } - - source-map@0.6.1: - resolution: - { - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, - } - engines: { node: ">=0.10.0" } - - source-map@0.8.0-beta.0: - resolution: - { - integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==, - } - engines: { node: ">= 8" } - deprecated: The work that was done in this beta branch won't be included in future versions - - spawndamnit@3.0.1: - resolution: - { - integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==, - } - - spdx-correct@3.2.0: - resolution: - { - integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==, - } - - spdx-exceptions@2.5.0: - resolution: - { - integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==, - } - - spdx-expression-parse@3.0.1: - resolution: - { - integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, - } - - spdx-license-ids@3.0.22: - resolution: - { - integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==, - } - - sprintf-js@1.0.3: - resolution: - { - integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, - } - - stable-hash@0.0.5: - resolution: - { - integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==, - } - - stack-utils@2.0.6: - resolution: - { - integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==, - } - engines: { node: ">=10" } - - stackframe@1.3.4: - resolution: - { - integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==, - } - - stacktrace-parser@0.1.11: - resolution: - { - integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==, - } - engines: { node: ">=6" } - - statuses@1.5.0: - resolution: - { - integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==, - } - engines: { node: ">= 0.6" } - - statuses@2.0.1: - resolution: - { - integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==, - } - engines: { node: ">= 0.8" } - - stop-iteration-iterator@1.1.0: - resolution: - { - integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==, - } - engines: { node: ">= 0.4" } - - stoppable@1.1.0: - resolution: - { - integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==, - } - engines: { node: ">=4", npm: ">=6" } - - stream-buffers@2.2.0: - resolution: - { - integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==, - } - engines: { node: ">= 0.10.0" } - - streamsearch@1.1.0: - resolution: - { - integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==, - } - engines: { node: ">=10.0.0" } - - string-length@4.0.2: - resolution: - { - integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==, - } - engines: { node: ">=10" } - - string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: ">=8" } - - string-width@5.1.2: - resolution: - { - integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, - } - engines: { node: ">=12" } - - string-width@7.2.0: - resolution: - { - integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==, - } - engines: { node: ">=18" } - - string.prototype.includes@2.0.1: - resolution: - { - integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==, - } - engines: { node: ">= 0.4" } - - string.prototype.matchall@4.0.12: - resolution: - { - integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==, - } - engines: { node: ">= 0.4" } - - string.prototype.repeat@1.0.0: - resolution: - { - integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==, - } - - string.prototype.trim@1.2.10: - resolution: - { - integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==, - } - engines: { node: ">= 0.4" } - - string.prototype.trimend@1.0.9: - resolution: - { - integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==, - } - engines: { node: ">= 0.4" } - - string.prototype.trimstart@1.0.8: - resolution: - { - integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==, - } - engines: { node: ">= 0.4" } - - string_decoder@1.3.0: - resolution: - { - integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, - } - - strip-ansi@5.2.0: - resolution: - { - integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==, - } - engines: { node: ">=6" } - - strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: ">=8" } - - strip-ansi@7.1.0: - resolution: - { - integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, - } - engines: { node: ">=12" } - - strip-bom@3.0.0: - resolution: - { - integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, - } - engines: { node: ">=4" } - - strip-bom@4.0.0: - resolution: - { - integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==, - } - engines: { node: ">=8" } - - strip-final-newline@2.0.0: - resolution: - { - integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, - } - engines: { node: ">=6" } - - strip-indent@3.0.0: - resolution: - { - integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==, - } - engines: { node: ">=8" } - - strip-json-comments@2.0.1: - resolution: - { - integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==, - } - engines: { node: ">=0.10.0" } - - strip-json-comments@3.1.1: - resolution: - { - integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, - } - engines: { node: ">=8" } - - strnum@1.1.2: - resolution: - { - integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==, - } - - strnum@2.1.1: - resolution: - { - integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==, - } - - structured-headers@0.4.1: - resolution: - { - integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==, - } - - styled-jsx@5.1.1: - resolution: - { - integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==, - } - engines: { node: ">= 12.0.0" } - peerDependencies: - "@babel/core": "*" - babel-plugin-macros: "*" - react: ">= 16.8.0 || 17.x.x || ^18.0.0-0" - peerDependenciesMeta: - "@babel/core": - optional: true - babel-plugin-macros: - optional: true - - stytch@9.1.0: - resolution: - { - integrity: sha512-xEh538ESOg1CjRha7fxiVflli6hDoKATPDwP9j3+XfwsdaAg11B/kwSu9SU8dPVg8WRZTxoPHObWpJkjLY90LA==, - } - engines: { node: ">= 18.0.0" } - - sucrase@3.35.0: - resolution: - { - integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==, - } - engines: { node: ">=16 || 14 >=14.17" } - hasBin: true - - supports-color@10.2.0: - resolution: - { - integrity: sha512-5eG9FQjEjDbAlI5+kdpdyPIBMRH4GfTVDGREVupaZHmVoppknhM29b/S9BkQz7cathp85BVgRi/As3Siln7e0Q==, - } - engines: { node: ">=18" } - - supports-color@5.5.0: - resolution: - { - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, - } - engines: { node: ">=4" } - - supports-color@7.2.0: - resolution: - { - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, - } - engines: { node: ">=8" } - - supports-color@8.1.1: - resolution: - { - integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, - } - engines: { node: ">=10" } - - supports-hyperlinks@2.3.0: - resolution: - { - integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==, - } - engines: { node: ">=8" } - - supports-preserve-symlinks-flag@1.0.0: - resolution: - { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, - } - engines: { node: ">= 0.4" } - - symbol-observable@2.0.3: - resolution: - { - integrity: sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==, - } - engines: { node: ">=0.10" } - - symbol-observable@4.0.0: - resolution: - { - integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==, - } - engines: { node: ">=0.10" } - - symbol-tree@3.2.4: - resolution: - { - integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==, - } - - synckit@0.11.11: - resolution: - { - integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==, - } - engines: { node: ^14.18.0 || >=16.0.0 } - - tailwind-merge@2.6.0: - resolution: - { - integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==, - } - - tailwindcss-animate@1.0.7: - resolution: - { - integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==, - } - peerDependencies: - tailwindcss: ">=3.0.0 || insiders" - - tailwindcss@3.4.17: - resolution: - { - integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==, - } - engines: { node: ">=14.0.0" } - hasBin: true - - tar@7.4.3: - resolution: - { - integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==, - } - engines: { node: ">=18" } - - temp-dir@2.0.0: - resolution: - { - integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==, - } - engines: { node: ">=8" } - - temp@0.8.4: - resolution: - { - integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==, - } - engines: { node: ">=6.0.0" } - - term-size@2.2.1: - resolution: - { - integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==, - } - engines: { node: ">=8" } - - terminal-link@2.1.1: - resolution: - { - integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==, - } - engines: { node: ">=8" } - - terser@5.16.9: - resolution: - { - integrity: sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg==, - } - engines: { node: ">=10" } - hasBin: true - - terser@5.43.1: - resolution: - { - integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==, - } - engines: { node: ">=10" } - hasBin: true - - test-exclude@6.0.0: - resolution: - { - integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==, - } - engines: { node: ">=8" } - - text-encoding@0.7.0: - resolution: - { - integrity: sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==, - } - deprecated: no longer maintained - - text-table@0.2.0: - resolution: - { - integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, - } - - thenify-all@1.6.0: - resolution: - { - integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==, - } - engines: { node: ">=0.8" } - - thenify@3.3.1: - resolution: - { - integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, - } - - throat@5.0.0: - resolution: - { - integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==, - } - - tinyglobby@0.2.14: - resolution: - { - integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==, - } - engines: { node: ">=12.0.0" } - - tmpl@1.0.5: - resolution: - { - integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, - } - - to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, - } - engines: { node: ">=8.0" } - - toidentifier@1.0.1: - resolution: - { - integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==, - } - engines: { node: ">=0.6" } - - tough-cookie@4.1.4: - resolution: - { - integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==, - } - engines: { node: ">=6" } - - tr46@0.0.3: - resolution: - { - integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, - } - - tr46@1.0.1: - resolution: - { - integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==, - } - - tr46@3.0.0: - resolution: - { - integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==, - } - engines: { node: ">=12" } - - tree-kill@1.2.2: - resolution: - { - integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==, - } - hasBin: true - - ts-api-utils@1.4.3: - resolution: - { - integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==, - } - engines: { node: ">=16" } - peerDependencies: - typescript: ">=4.2.0" - - ts-interface-checker@0.1.13: - resolution: - { - integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, - } - - ts-invariant@0.10.3: - resolution: - { - integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==, - } - engines: { node: ">=8" } - - ts-jest@29.4.1: - resolution: - { - integrity: sha512-SaeUtjfpg9Uqu8IbeDKtdaS0g8lS6FT6OzM3ezrDfErPJPHNDo/Ey+VFGP1bQIDfagYDLyRpd7O15XpG1Es2Uw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0 } - hasBin: true - peerDependencies: - "@babel/core": ">=7.0.0-beta.0 <8" - "@jest/transform": ^29.0.0 || ^30.0.0 - "@jest/types": ^29.0.0 || ^30.0.0 - babel-jest: ^29.0.0 || ^30.0.0 - esbuild: "*" - jest: ^29.0.0 || ^30.0.0 - jest-util: ^29.0.0 || ^30.0.0 - typescript: ">=4.3 <6" - peerDependenciesMeta: - "@babel/core": - optional: true - "@jest/transform": - optional: true - "@jest/types": - optional: true - babel-jest: - optional: true - esbuild: - optional: true - jest-util: - optional: true - - ts-node@10.9.2: - resolution: - { - integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==, - } - hasBin: true - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - - ts-tqdm@0.8.6: - resolution: - { - integrity: sha512-3X3M1PZcHtgQbnwizL+xU8CAgbYbeLHrrDwL9xxcZZrV5J+e7loJm1XrXozHjSkl44J0Zg0SgA8rXbh83kCkcQ==, - } - - tsconfig-paths@3.15.0: - resolution: - { - integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==, - } - - tslib@1.14.1: - resolution: - { - integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, - } - - tslib@2.8.1: - resolution: - { - integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, - } - - tsup@6.7.0: - resolution: - { - integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==, - } - engines: { node: ">=14.18" } - hasBin: true - peerDependencies: - "@swc/core": ^1 - postcss: ^8.4.12 - typescript: ">=4.1.0" - peerDependenciesMeta: - "@swc/core": - optional: true - postcss: - optional: true - typescript: - optional: true - - tsutils@3.21.0: - resolution: - { - integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==, - } - engines: { node: ">= 6" } - peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - - turbo-darwin-64@2.5.6: - resolution: - { - integrity: sha512-3C1xEdo4aFwMJAPvtlPqz1Sw/+cddWIOmsalHFMrsqqydcptwBfu26WW2cDm3u93bUzMbBJ8k3zNKFqxJ9ei2A==, - } - cpu: [x64] - os: [darwin] - - turbo-darwin-arm64@2.5.6: - resolution: - { - integrity: sha512-LyiG+rD7JhMfYwLqB6k3LZQtYn8CQQUePbpA8mF/hMLPAekXdJo1g0bUPw8RZLwQXUIU/3BU7tXENvhSGz5DPA==, - } - cpu: [arm64] - os: [darwin] - - turbo-linux-64@2.5.6: - resolution: - { - integrity: sha512-GOcUTT0xiT/pSnHL4YD6Yr3HreUhU8pUcGqcI2ksIF9b2/r/kRHwGFcsHgpG3+vtZF/kwsP0MV8FTlTObxsYIA==, - } - cpu: [x64] - os: [linux] - - turbo-linux-arm64@2.5.6: - resolution: - { - integrity: sha512-10Tm15bruJEA3m0V7iZcnQBpObGBcOgUcO+sY7/2vk1bweW34LMhkWi8svjV9iDF68+KJDThnYDlYE/bc7/zzQ==, - } - cpu: [arm64] - os: [linux] - - turbo-windows-64@2.5.6: - resolution: - { - integrity: sha512-FyRsVpgaj76It0ludwZsNN40ytHN+17E4PFJyeliBEbxrGTc5BexlXVpufB7XlAaoaZVxbS6KT8RofLfDRyEPg==, - } - cpu: [x64] - os: [win32] - - turbo-windows-arm64@2.5.6: - resolution: - { - integrity: sha512-j/tWu8cMeQ7HPpKri6jvKtyXg9K1gRyhdK4tKrrchH8GNHscPX/F71zax58yYtLRWTiK04zNzPcUJuoS0+v/+Q==, - } - cpu: [arm64] - os: [win32] - - turbo@2.5.6: - resolution: - { - integrity: sha512-gxToHmi9oTBNB05UjUsrWf0OyN5ZXtD0apOarC1KIx232Vp3WimRNy3810QzeNSgyD5rsaIDXlxlbnOzlouo+w==, - } - hasBin: true - - type-check@0.4.0: - resolution: - { - integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, - } - engines: { node: ">= 0.8.0" } - - type-detect@4.0.8: - resolution: - { - integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, - } - engines: { node: ">=4" } - - type-fest@0.20.2: - resolution: - { - integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==, - } - engines: { node: ">=10" } - - type-fest@0.21.3: - resolution: - { - integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, - } - engines: { node: ">=10" } - - type-fest@0.6.0: - resolution: - { - integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==, - } - engines: { node: ">=8" } - - type-fest@0.7.1: - resolution: - { - integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==, - } - engines: { node: ">=8" } - - type-fest@0.8.1: - resolution: - { - integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==, - } - engines: { node: ">=8" } - - type-fest@4.41.0: - resolution: - { - integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==, - } - engines: { node: ">=16" } - - type-is@2.0.1: - resolution: - { - integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==, - } - engines: { node: ">= 0.6" } - - typed-array-buffer@1.0.3: - resolution: - { - integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==, - } - engines: { node: ">= 0.4" } - - typed-array-byte-length@1.0.3: - resolution: - { - integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==, - } - engines: { node: ">= 0.4" } - - typed-array-byte-offset@1.0.4: - resolution: - { - integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==, - } - engines: { node: ">= 0.4" } - - typed-array-length@1.0.7: - resolution: - { - integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==, - } - engines: { node: ">= 0.4" } - - typescript@5.9.2: - resolution: - { - integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==, - } - engines: { node: ">=14.17" } - hasBin: true - - ufo@1.6.1: - resolution: - { - integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==, - } - - uglify-js@3.19.3: - resolution: - { - integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==, - } - engines: { node: ">=0.8.0" } - hasBin: true - - unbox-primitive@1.1.0: - resolution: - { - integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==, - } - engines: { node: ">= 0.4" } - - undici-types@5.26.5: - resolution: - { - integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==, - } - - undici-types@6.21.0: - resolution: - { - integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==, - } - - undici@5.29.0: - resolution: - { - integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==, - } - engines: { node: ">=14.0" } - - undici@6.21.3: - resolution: - { - integrity: sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==, - } - engines: { node: ">=18.17" } - - undici@7.15.0: - resolution: - { - integrity: sha512-7oZJCPvvMvTd0OlqWsIxTuItTpJBpU1tcbVl24FMn3xt3+VSunwUasmfPJRE57oNO1KsZ4PgA1xTdAX4hq8NyQ==, - } - engines: { node: ">=20.18.1" } - - unenv@2.0.0-rc.19: - resolution: - { - integrity: sha512-t/OMHBNAkknVCI7bVB9OWjUUAwhVv9vsPIAGnNUxnu3FxPQN11rjh0sksLMzc3g7IlTgvHmOTl4JM7JHpcv5wA==, - } - - unicode-canonical-property-names-ecmascript@2.0.1: - resolution: - { - integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==, - } - engines: { node: ">=4" } - - unicode-match-property-ecmascript@2.0.0: - resolution: - { - integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==, - } - engines: { node: ">=4" } - - unicode-match-property-value-ecmascript@2.2.0: - resolution: - { - integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==, - } - engines: { node: ">=4" } - - unicode-property-aliases-ecmascript@2.1.0: - resolution: - { - integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==, - } - engines: { node: ">=4" } - - unique-string@2.0.0: - resolution: - { - integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==, - } - engines: { node: ">=8" } - - universalify@0.1.2: - resolution: - { - integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==, - } - engines: { node: ">= 4.0.0" } - - universalify@0.2.0: - resolution: - { - integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==, - } - engines: { node: ">= 4.0.0" } - - unpipe@1.0.0: - resolution: - { - integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==, - } - engines: { node: ">= 0.8" } - - unrs-resolver@1.11.1: - resolution: - { - integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==, - } - - update-browserslist-db@1.1.3: - resolution: - { - integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==, - } - hasBin: true - peerDependencies: - browserslist: ">= 4.21.0" - - uri-js@4.4.1: - resolution: - { - integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, - } - - url-parse@1.5.10: - resolution: - { - integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==, - } - - urlpattern-polyfill@10.1.0: - resolution: - { - integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==, - } - - use-callback-ref@1.3.3: - resolution: - { - integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==, - } - engines: { node: ">=10" } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - use-sidecar@1.1.3: - resolution: - { - integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==, - } - engines: { node: ">=10" } - peerDependencies: - "@types/react": ^18.2.47 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - "@types/react": - optional: true - - util-deprecate@1.0.2: - resolution: - { - integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, - } - - util@0.12.5: - resolution: - { - integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==, - } - - utils-merge@1.0.1: - resolution: - { - integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==, - } - engines: { node: ">= 0.4.0" } - - uuid@7.0.3: - resolution: - { - integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==, - } - hasBin: true - - uuid@9.0.1: - resolution: - { - integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==, - } - hasBin: true - - v8-compile-cache-lib@3.0.1: - resolution: - { - integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==, - } - - v8-to-istanbul@9.3.0: - resolution: - { - integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==, - } - engines: { node: ">=10.12.0" } - - validate-npm-package-license@3.0.4: - resolution: - { - integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, - } - - validate-npm-package-name@5.0.1: - resolution: - { - integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - vary@1.1.2: - resolution: - { - integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==, - } - engines: { node: ">= 0.8" } - - vlq@1.0.1: - resolution: - { - integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==, - } - - w3c-xmlserializer@4.0.0: - resolution: - { - integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==, - } - engines: { node: ">=14" } - - walker@1.0.8: - resolution: - { - integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, - } - - wcwidth@1.0.1: - resolution: - { - integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, - } - - web-streams-polyfill@4.0.0-beta.3: - resolution: - { - integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==, - } - engines: { node: ">= 14" } - - webidl-conversions@3.0.1: - resolution: - { - integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, - } - - webidl-conversions@4.0.2: - resolution: - { - integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==, - } - - webidl-conversions@5.0.0: - resolution: - { - integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==, - } - engines: { node: ">=8" } - - webidl-conversions@7.0.0: - resolution: - { - integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==, - } - engines: { node: ">=12" } - - whatwg-encoding@2.0.0: - resolution: - { - integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==, - } - engines: { node: ">=12" } - - whatwg-fetch@3.6.20: - resolution: - { - integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==, - } - - whatwg-mimetype@3.0.0: - resolution: - { - integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==, - } - engines: { node: ">=12" } - - whatwg-url-without-unicode@8.0.0-3: - resolution: - { - integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==, - } - engines: { node: ">=10" } - - whatwg-url@11.0.0: - resolution: - { - integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==, - } - engines: { node: ">=12" } - - whatwg-url@5.0.0: - resolution: - { - integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, - } - - whatwg-url@7.1.0: - resolution: - { - integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==, - } - - which-boxed-primitive@1.1.1: - resolution: - { - integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==, - } - engines: { node: ">= 0.4" } - - which-builtin-type@1.2.1: - resolution: - { - integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==, - } - engines: { node: ">= 0.4" } - - which-collection@1.0.2: - resolution: - { - integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==, - } - engines: { node: ">= 0.4" } - - which-typed-array@1.1.19: - resolution: - { - integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==, - } - engines: { node: ">= 0.4" } - - which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, - } - engines: { node: ">= 8" } - hasBin: true - - which@4.0.0: - resolution: - { - integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==, - } - engines: { node: ^16.13.0 || >=18.0.0 } - hasBin: true - - wonka@6.3.5: - resolution: - { - integrity: sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==, - } - - word-wrap@1.2.5: - resolution: - { - integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, - } - engines: { node: ">=0.10.0" } - - wordwrap@1.0.0: - resolution: - { - integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==, - } - - workerd@1.20250829.0: - resolution: - { - integrity: sha512-8qoE56hf9QHS2llMM1tybjhvFEX5vnNUa1PpuyxeNC9F0dn9/qb9eDqN/z3sBPgpYK8vfQU9J8KOxczA+qo/cQ==, - } - engines: { node: ">=16" } - hasBin: true - - wrangler@4.33.2: - resolution: - { - integrity: sha512-4cQU62098a5mj7YsECkksypMNoO9B8D6CVzP/SDEqP73ti9exBxI3OlkB+8rMawF1OyYNAihaSAzIPZ52OiK0g==, - } - engines: { node: ">=18.0.0" } - hasBin: true - peerDependencies: - "@cloudflare/workers-types": ^4.20250829.0 - peerDependenciesMeta: - "@cloudflare/workers-types": - optional: true - - wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: ">=10" } - - wrap-ansi@8.1.0: - resolution: - { - integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, - } - engines: { node: ">=12" } - - wrap-ansi@9.0.0: - resolution: - { - integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==, - } - engines: { node: ">=18" } - - wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, - } - - write-file-atomic@2.4.3: - resolution: - { - integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==, - } - - write-file-atomic@4.0.2: - resolution: - { - integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==, - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - - ws@6.2.3: - resolution: - { - integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==, - } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@7.5.10: - resolution: - { - integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==, - } - engines: { node: ">=8.3.0" } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.0: - resolution: - { - integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==, - } - engines: { node: ">=10.0.0" } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.18.3: - resolution: - { - integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==, - } - engines: { node: ">=10.0.0" } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - xcode@3.0.1: - resolution: - { - integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==, - } - engines: { node: ">=10.0.0" } - - xml-name-validator@4.0.0: - resolution: - { - integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==, - } - engines: { node: ">=12" } - - xml2js@0.6.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" } - - xmlbuilder@14.0.0: - resolution: - { - integrity: sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==, - } - engines: { node: ">=8.0" } - - xmlbuilder@15.1.1: - resolution: - { - integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==, - } - engines: { node: ">=8.0" } - - xmlchars@2.2.0: - resolution: - { - integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==, - } - - xstream@11.14.0: - resolution: - { - integrity: sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==, - } - - y18n@5.0.8: - resolution: - { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, - } - engines: { node: ">=10" } - - yallist@3.1.1: - resolution: - { - integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, - } - - yallist@5.0.0: - resolution: - { - integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==, - } - engines: { node: ">=18" } - - yaml@1.10.2: - resolution: - { - integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, - } - engines: { node: ">= 6" } - - yaml@2.8.1: - resolution: - { - integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==, - } - engines: { node: ">= 14.6" } - hasBin: true - - yargs-parser@21.1.1: - resolution: - { - integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, - } - engines: { node: ">=12" } - - yargs-parser@22.0.0: - resolution: - { - integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==, - } - engines: { node: ^20.19.0 || ^22.12.0 || >=23 } - - yargs@17.7.2: - resolution: - { - integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, - } - engines: { node: ">=12" } - - yargs@18.0.0: - resolution: - { - integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==, - } - engines: { node: ^20.19.0 || ^22.12.0 || >=23 } - - yn@3.1.1: - resolution: - { - integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==, - } - engines: { node: ">=6" } - - yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, - } - engines: { node: ">=10" } - - youch-core@0.3.3: - resolution: - { - integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==, - } - - youch@4.1.0-beta.10: - resolution: - { - integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==, - } - - zen-observable-ts@1.2.5: - resolution: - { - integrity: sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==, - } - - zen-observable@0.8.15: - resolution: - { - integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==, - } - - zod@3.22.3: - resolution: - { - integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==, - } - -snapshots: - "@0no-co/graphql.web@1.2.0(graphql@16.11.0)": - optionalDependencies: - graphql: 16.11.0 - - "@adobe/css-tools@4.4.4": {} - - "@alloc/quick-lru@5.2.0": {} - - "@ampproject/remapping@2.3.0": - dependencies: - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/trace-mapping": 0.3.30 - - "@apollo/client@3.13.9(@types/react@18.3.23)(graphql@16.11.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": - dependencies: - "@graphql-typed-document-node/core": 3.2.0(graphql@16.11.0) - "@wry/caches": 1.0.1 - "@wry/equality": 0.5.7 - "@wry/trie": 0.5.0 - graphql: 16.11.0 - graphql-tag: 2.12.6(graphql@16.11.0) - hoist-non-react-statics: 3.3.2 - optimism: 0.18.1 - prop-types: 15.8.1 - rehackt: 0.1.0(@types/react@18.3.23)(react@18.3.1) - symbol-observable: 4.0.0 - ts-invariant: 0.10.3 - tslib: 2.8.1 - zen-observable-ts: 1.2.5 - optionalDependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - "@types/react" - - "@ast-grep/napi-darwin-arm64@0.35.0": - optional: true - - "@ast-grep/napi-darwin-x64@0.35.0": - optional: true - - "@ast-grep/napi-linux-arm64-gnu@0.35.0": - optional: true - - "@ast-grep/napi-linux-arm64-musl@0.35.0": - optional: true - - "@ast-grep/napi-linux-x64-gnu@0.35.0": - optional: true - - "@ast-grep/napi-linux-x64-musl@0.35.0": - optional: true - - "@ast-grep/napi-win32-arm64-msvc@0.35.0": - optional: true - - "@ast-grep/napi-win32-ia32-msvc@0.35.0": - optional: true - - "@ast-grep/napi-win32-x64-msvc@0.35.0": - optional: true - - "@ast-grep/napi@0.35.0": - optionalDependencies: - "@ast-grep/napi-darwin-arm64": 0.35.0 - "@ast-grep/napi-darwin-x64": 0.35.0 - "@ast-grep/napi-linux-arm64-gnu": 0.35.0 - "@ast-grep/napi-linux-arm64-musl": 0.35.0 - "@ast-grep/napi-linux-x64-gnu": 0.35.0 - "@ast-grep/napi-linux-x64-musl": 0.35.0 - "@ast-grep/napi-win32-arm64-msvc": 0.35.0 - "@ast-grep/napi-win32-ia32-msvc": 0.35.0 - "@ast-grep/napi-win32-x64-msvc": 0.35.0 - - "@aws-crypto/crc32@5.2.0": - dependencies: - "@aws-crypto/util": 5.2.0 - "@aws-sdk/types": 3.862.0 - tslib: 2.8.1 - - "@aws-crypto/crc32c@5.2.0": - dependencies: - "@aws-crypto/util": 5.2.0 - "@aws-sdk/types": 3.862.0 - tslib: 2.8.1 - - "@aws-crypto/ie11-detection@3.0.0": - dependencies: - tslib: 1.14.1 - - "@aws-crypto/sha1-browser@5.2.0": - dependencies: - "@aws-crypto/supports-web-crypto": 5.2.0 - "@aws-crypto/util": 5.2.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-locate-window": 3.804.0 - "@smithy/util-utf8": 2.3.0 - tslib: 2.8.1 - - "@aws-crypto/sha256-browser@3.0.0": - dependencies: - "@aws-crypto/ie11-detection": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-crypto/supports-web-crypto": 3.0.0 - "@aws-crypto/util": 3.0.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-locate-window": 3.804.0 - "@aws-sdk/util-utf8-browser": 3.259.0 - tslib: 1.14.1 - - "@aws-crypto/sha256-browser@5.2.0": - dependencies: - "@aws-crypto/sha256-js": 5.2.0 - "@aws-crypto/supports-web-crypto": 5.2.0 - "@aws-crypto/util": 5.2.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-locate-window": 3.804.0 - "@smithy/util-utf8": 2.3.0 - tslib: 2.8.1 - - "@aws-crypto/sha256-js@3.0.0": - dependencies: - "@aws-crypto/util": 3.0.0 - "@aws-sdk/types": 3.862.0 - tslib: 1.14.1 - - "@aws-crypto/sha256-js@5.2.0": - dependencies: - "@aws-crypto/util": 5.2.0 - "@aws-sdk/types": 3.862.0 - tslib: 2.8.1 - - "@aws-crypto/supports-web-crypto@3.0.0": - dependencies: - tslib: 1.14.1 - - "@aws-crypto/supports-web-crypto@5.2.0": - dependencies: - tslib: 2.8.1 - - "@aws-crypto/util@3.0.0": - dependencies: - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-utf8-browser": 3.259.0 - tslib: 1.14.1 - - "@aws-crypto/util@5.2.0": - dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/util-utf8": 2.3.0 - tslib: 2.8.1 - - "@aws-sdk/client-cloudfront@3.398.0": + /@aws-sdk/client-cloudfront@3.398.0: + resolution: {integrity: sha512-kISKhqN1k48TaMPbLgq9jj7mO2jvbJdhirvfu4JW3jhFhENnkY0oCwTPvR4Q6Ne2as6GFAMo2XZDZq4rxC7YDw==} + engines: {node: '>=14.0.0'} dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 @@ -13854,214 +956,229 @@ snapshots: tslib: 2.8.1 transitivePeerDependencies: - aws-crt - - "@aws-sdk/client-dynamodb@3.868.0": - dependencies: - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/credential-provider-node": 3.864.0 - "@aws-sdk/middleware-endpoint-discovery": 3.862.0 - "@aws-sdk/middleware-host-header": 3.862.0 - "@aws-sdk/middleware-logger": 3.862.0 - "@aws-sdk/middleware-recursion-detection": 3.862.0 - "@aws-sdk/middleware-user-agent": 3.864.0 - "@aws-sdk/region-config-resolver": 3.862.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-endpoints": 3.862.0 - "@aws-sdk/util-user-agent-browser": 3.862.0 - "@aws-sdk/util-user-agent-node": 3.864.0 - "@smithy/config-resolver": 4.1.5 - "@smithy/core": 3.8.0 - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/hash-node": 4.0.5 - "@smithy/invalid-dependency": 4.0.5 - "@smithy/middleware-content-length": 4.0.5 - "@smithy/middleware-endpoint": 4.1.18 - "@smithy/middleware-retry": 4.1.19 - "@smithy/middleware-serde": 4.0.9 - "@smithy/middleware-stack": 4.0.5 - "@smithy/node-config-provider": 4.1.4 - "@smithy/node-http-handler": 4.1.1 - "@smithy/protocol-http": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-body-length-node": 4.0.0 - "@smithy/util-defaults-mode-browser": 4.0.26 - "@smithy/util-defaults-mode-node": 4.0.26 - "@smithy/util-endpoints": 3.0.7 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-retry": 4.0.7 - "@smithy/util-utf8": 4.0.0 - "@smithy/util-waiter": 4.0.7 - "@types/uuid": 9.0.8 + dev: true + + /@aws-sdk/client-dynamodb@3.890.0: + resolution: {integrity: sha512-ofUUl58/ZD2uLLUcALjnVaXAbSJ0FPRH4Tu3TD/L7N+V0MfPSa6irXOeh8bCe0BUPqAiQZnfC5ywhsxMAtRwjw==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.890.0 + '@aws-sdk/credential-provider-node': 3.890.0 + '@aws-sdk/middleware-endpoint-discovery': 3.890.0 + '@aws-sdk/middleware-host-header': 3.887.0 + '@aws-sdk/middleware-logger': 3.887.0 + '@aws-sdk/middleware-recursion-detection': 3.887.0 + '@aws-sdk/middleware-user-agent': 3.890.0 + '@aws-sdk/region-config-resolver': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.890.0 + '@aws-sdk/util-user-agent-browser': 3.887.0 + '@aws-sdk/util-user-agent-node': 3.890.0 + '@smithy/config-resolver': 4.2.2 + '@smithy/core': 3.11.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.2 + '@smithy/middleware-retry': 4.2.2 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.2 + '@smithy/util-defaults-mode-node': 4.1.2 + '@smithy/util-endpoints': 3.1.2 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.1 + '@smithy/util-utf8': 4.1.0 + '@smithy/util-waiter': 4.1.1 + '@types/uuid': 9.0.8 tslib: 2.8.1 uuid: 9.0.1 transitivePeerDependencies: - aws-crt - - "@aws-sdk/client-lambda@3.865.0": - dependencies: - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/credential-provider-node": 3.864.0 - "@aws-sdk/middleware-host-header": 3.862.0 - "@aws-sdk/middleware-logger": 3.862.0 - "@aws-sdk/middleware-recursion-detection": 3.862.0 - "@aws-sdk/middleware-user-agent": 3.864.0 - "@aws-sdk/region-config-resolver": 3.862.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-endpoints": 3.862.0 - "@aws-sdk/util-user-agent-browser": 3.862.0 - "@aws-sdk/util-user-agent-node": 3.864.0 - "@smithy/config-resolver": 4.1.5 - "@smithy/core": 3.8.0 - "@smithy/eventstream-serde-browser": 4.0.5 - "@smithy/eventstream-serde-config-resolver": 4.1.3 - "@smithy/eventstream-serde-node": 4.0.5 - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/hash-node": 4.0.5 - "@smithy/invalid-dependency": 4.0.5 - "@smithy/middleware-content-length": 4.0.5 - "@smithy/middleware-endpoint": 4.1.18 - "@smithy/middleware-retry": 4.1.19 - "@smithy/middleware-serde": 4.0.9 - "@smithy/middleware-stack": 4.0.5 - "@smithy/node-config-provider": 4.1.4 - "@smithy/node-http-handler": 4.1.1 - "@smithy/protocol-http": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-body-length-node": 4.0.0 - "@smithy/util-defaults-mode-browser": 4.0.26 - "@smithy/util-defaults-mode-node": 4.0.26 - "@smithy/util-endpoints": 3.0.7 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-retry": 4.0.7 - "@smithy/util-stream": 4.2.4 - "@smithy/util-utf8": 4.0.0 - "@smithy/util-waiter": 4.0.7 + dev: true + + /@aws-sdk/client-lambda@3.890.0: + resolution: {integrity: sha512-QfHeJfSRbdhYVM+3DqvWQXd+drzB0Km/Dv/6gMgvao9OwPcQUdAn87vzd339+Oj0uZIQ82waZ0FzJ7Kpz2bs6Q==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.890.0 + '@aws-sdk/credential-provider-node': 3.890.0 + '@aws-sdk/middleware-host-header': 3.887.0 + '@aws-sdk/middleware-logger': 3.887.0 + '@aws-sdk/middleware-recursion-detection': 3.887.0 + '@aws-sdk/middleware-user-agent': 3.890.0 + '@aws-sdk/region-config-resolver': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.890.0 + '@aws-sdk/util-user-agent-browser': 3.887.0 + '@aws-sdk/util-user-agent-node': 3.890.0 + '@smithy/config-resolver': 4.2.2 + '@smithy/core': 3.11.0 + '@smithy/eventstream-serde-browser': 4.1.1 + '@smithy/eventstream-serde-config-resolver': 4.2.1 + '@smithy/eventstream-serde-node': 4.1.1 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.2 + '@smithy/middleware-retry': 4.2.2 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.2 + '@smithy/util-defaults-mode-node': 4.1.2 + '@smithy/util-endpoints': 3.1.2 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.1 + '@smithy/util-stream': 4.3.1 + '@smithy/util-utf8': 4.1.0 + '@smithy/util-waiter': 4.1.1 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - - "@aws-sdk/client-s3@3.864.0": - dependencies: - "@aws-crypto/sha1-browser": 5.2.0 - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/credential-provider-node": 3.864.0 - "@aws-sdk/middleware-bucket-endpoint": 3.862.0 - "@aws-sdk/middleware-expect-continue": 3.862.0 - "@aws-sdk/middleware-flexible-checksums": 3.864.0 - "@aws-sdk/middleware-host-header": 3.862.0 - "@aws-sdk/middleware-location-constraint": 3.862.0 - "@aws-sdk/middleware-logger": 3.862.0 - "@aws-sdk/middleware-recursion-detection": 3.862.0 - "@aws-sdk/middleware-sdk-s3": 3.864.0 - "@aws-sdk/middleware-ssec": 3.862.0 - "@aws-sdk/middleware-user-agent": 3.864.0 - "@aws-sdk/region-config-resolver": 3.862.0 - "@aws-sdk/signature-v4-multi-region": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-endpoints": 3.862.0 - "@aws-sdk/util-user-agent-browser": 3.862.0 - "@aws-sdk/util-user-agent-node": 3.864.0 - "@aws-sdk/xml-builder": 3.862.0 - "@smithy/config-resolver": 4.1.5 - "@smithy/core": 3.8.0 - "@smithy/eventstream-serde-browser": 4.0.5 - "@smithy/eventstream-serde-config-resolver": 4.1.3 - "@smithy/eventstream-serde-node": 4.0.5 - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/hash-blob-browser": 4.0.5 - "@smithy/hash-node": 4.0.5 - "@smithy/hash-stream-node": 4.0.5 - "@smithy/invalid-dependency": 4.0.5 - "@smithy/md5-js": 4.0.5 - "@smithy/middleware-content-length": 4.0.5 - "@smithy/middleware-endpoint": 4.1.18 - "@smithy/middleware-retry": 4.1.19 - "@smithy/middleware-serde": 4.0.9 - "@smithy/middleware-stack": 4.0.5 - "@smithy/node-config-provider": 4.1.4 - "@smithy/node-http-handler": 4.1.1 - "@smithy/protocol-http": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-body-length-node": 4.0.0 - "@smithy/util-defaults-mode-browser": 4.0.26 - "@smithy/util-defaults-mode-node": 4.0.26 - "@smithy/util-endpoints": 3.0.7 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-retry": 4.0.7 - "@smithy/util-stream": 4.2.4 - "@smithy/util-utf8": 4.0.0 - "@smithy/util-waiter": 4.0.7 - "@types/uuid": 9.0.8 + dev: true + + /@aws-sdk/client-s3@3.890.0: + resolution: {integrity: sha512-yByS+gXYe0KALEEGz9vqIapSKAJ/bGgevOMzPDHZfxQXP1DQxOnPQCbsCC7GDpYpy7Q2Wx54fgU5bqyMd7cfpA==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.890.0 + '@aws-sdk/credential-provider-node': 3.890.0 + '@aws-sdk/middleware-bucket-endpoint': 3.890.0 + '@aws-sdk/middleware-expect-continue': 3.887.0 + '@aws-sdk/middleware-flexible-checksums': 3.890.0 + '@aws-sdk/middleware-host-header': 3.887.0 + '@aws-sdk/middleware-location-constraint': 3.887.0 + '@aws-sdk/middleware-logger': 3.887.0 + '@aws-sdk/middleware-recursion-detection': 3.887.0 + '@aws-sdk/middleware-sdk-s3': 3.890.0 + '@aws-sdk/middleware-ssec': 3.887.0 + '@aws-sdk/middleware-user-agent': 3.890.0 + '@aws-sdk/region-config-resolver': 3.890.0 + '@aws-sdk/signature-v4-multi-region': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.890.0 + '@aws-sdk/util-user-agent-browser': 3.887.0 + '@aws-sdk/util-user-agent-node': 3.890.0 + '@aws-sdk/xml-builder': 3.887.0 + '@smithy/config-resolver': 4.2.2 + '@smithy/core': 3.11.0 + '@smithy/eventstream-serde-browser': 4.1.1 + '@smithy/eventstream-serde-config-resolver': 4.2.1 + '@smithy/eventstream-serde-node': 4.1.1 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-blob-browser': 4.1.1 + '@smithy/hash-node': 4.1.1 + '@smithy/hash-stream-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/md5-js': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.2 + '@smithy/middleware-retry': 4.2.2 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.2 + '@smithy/util-defaults-mode-node': 4.1.2 + '@smithy/util-endpoints': 3.1.2 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.1 + '@smithy/util-stream': 4.3.1 + '@smithy/util-utf8': 4.1.0 + '@smithy/util-waiter': 4.1.1 + '@types/uuid': 9.0.8 tslib: 2.8.1 uuid: 9.0.1 transitivePeerDependencies: - aws-crt - - "@aws-sdk/client-sqs@3.864.0": - dependencies: - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/credential-provider-node": 3.864.0 - "@aws-sdk/middleware-host-header": 3.862.0 - "@aws-sdk/middleware-logger": 3.862.0 - "@aws-sdk/middleware-recursion-detection": 3.862.0 - "@aws-sdk/middleware-sdk-sqs": 3.862.0 - "@aws-sdk/middleware-user-agent": 3.864.0 - "@aws-sdk/region-config-resolver": 3.862.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-endpoints": 3.862.0 - "@aws-sdk/util-user-agent-browser": 3.862.0 - "@aws-sdk/util-user-agent-node": 3.864.0 - "@smithy/config-resolver": 4.1.5 - "@smithy/core": 3.8.0 - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/hash-node": 4.0.5 - "@smithy/invalid-dependency": 4.0.5 - "@smithy/md5-js": 4.0.5 - "@smithy/middleware-content-length": 4.0.5 - "@smithy/middleware-endpoint": 4.1.18 - "@smithy/middleware-retry": 4.1.19 - "@smithy/middleware-serde": 4.0.9 - "@smithy/middleware-stack": 4.0.5 - "@smithy/node-config-provider": 4.1.4 - "@smithy/node-http-handler": 4.1.1 - "@smithy/protocol-http": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-body-length-node": 4.0.0 - "@smithy/util-defaults-mode-browser": 4.0.26 - "@smithy/util-defaults-mode-node": 4.0.26 - "@smithy/util-endpoints": 3.0.7 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-retry": 4.0.7 - "@smithy/util-utf8": 4.0.0 + dev: true + + /@aws-sdk/client-sqs@3.890.0: + resolution: {integrity: sha512-XYLRMUVuwlxZVgh1qsRWFs9Du0nx6GPNZc86Qv0/YTkecQB7Oi7qGwvpr25wQKdqwlY5fDFLBdGKSYcoW24t+A==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.890.0 + '@aws-sdk/credential-provider-node': 3.890.0 + '@aws-sdk/middleware-host-header': 3.887.0 + '@aws-sdk/middleware-logger': 3.887.0 + '@aws-sdk/middleware-recursion-detection': 3.887.0 + '@aws-sdk/middleware-sdk-sqs': 3.890.0 + '@aws-sdk/middleware-user-agent': 3.890.0 + '@aws-sdk/region-config-resolver': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.890.0 + '@aws-sdk/util-user-agent-browser': 3.887.0 + '@aws-sdk/util-user-agent-node': 3.890.0 + '@smithy/config-resolver': 4.2.2 + '@smithy/core': 3.11.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/md5-js': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.2 + '@smithy/middleware-retry': 4.2.2 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.2 + '@smithy/util-defaults-mode-node': 4.1.2 + '@smithy/util-endpoints': 3.1.2 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.1 + '@smithy/util-utf8': 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt + dev: true - "@aws-sdk/client-sso@3.398.0": + /@aws-sdk/client-sso@3.398.0: + resolution: {integrity: sha512-CygL0jhfibw4kmWXG/3sfZMFNjcXo66XUuPC4BqZBk8Rj5vFoxp1vZeMkDLzTIk97Nvo5J5Bh+QnXKhub6AckQ==} + engines: {node: '>=14.0.0'} dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 @@ -14098,51 +1215,57 @@ snapshots: tslib: 2.8.1 transitivePeerDependencies: - aws-crt - - "@aws-sdk/client-sso@3.864.0": - dependencies: - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/middleware-host-header": 3.862.0 - "@aws-sdk/middleware-logger": 3.862.0 - "@aws-sdk/middleware-recursion-detection": 3.862.0 - "@aws-sdk/middleware-user-agent": 3.864.0 - "@aws-sdk/region-config-resolver": 3.862.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-endpoints": 3.862.0 - "@aws-sdk/util-user-agent-browser": 3.862.0 - "@aws-sdk/util-user-agent-node": 3.864.0 - "@smithy/config-resolver": 4.1.5 - "@smithy/core": 3.8.0 - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/hash-node": 4.0.5 - "@smithy/invalid-dependency": 4.0.5 - "@smithy/middleware-content-length": 4.0.5 - "@smithy/middleware-endpoint": 4.1.18 - "@smithy/middleware-retry": 4.1.19 - "@smithy/middleware-serde": 4.0.9 - "@smithy/middleware-stack": 4.0.5 - "@smithy/node-config-provider": 4.1.4 - "@smithy/node-http-handler": 4.1.1 - "@smithy/protocol-http": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-body-length-node": 4.0.0 - "@smithy/util-defaults-mode-browser": 4.0.26 - "@smithy/util-defaults-mode-node": 4.0.26 - "@smithy/util-endpoints": 3.0.7 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-retry": 4.0.7 - "@smithy/util-utf8": 4.0.0 + dev: true + + /@aws-sdk/client-sso@3.890.0: + resolution: {integrity: sha512-vefYNwh/K5V5YiJpFJfoMPNqsoiRTqD7ZnkvR0cjJdwhOIwFnSKN1vz0OMjySTQmVMcG4JKGVul82ou7ErtOhQ==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.890.0 + '@aws-sdk/middleware-host-header': 3.887.0 + '@aws-sdk/middleware-logger': 3.887.0 + '@aws-sdk/middleware-recursion-detection': 3.887.0 + '@aws-sdk/middleware-user-agent': 3.890.0 + '@aws-sdk/region-config-resolver': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.890.0 + '@aws-sdk/util-user-agent-browser': 3.887.0 + '@aws-sdk/util-user-agent-node': 3.890.0 + '@smithy/config-resolver': 4.2.2 + '@smithy/core': 3.11.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.2 + '@smithy/middleware-retry': 4.2.2 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.2 + '@smithy/util-defaults-mode-node': 4.1.2 + '@smithy/util-endpoints': 3.1.2 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.1 + '@smithy/util-utf8': 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt + dev: true - "@aws-sdk/client-sts@3.398.0": + /@aws-sdk/client-sts@3.398.0: + resolution: {integrity: sha512-/3Pa9wLMvBZipKraq3AtbmTfXW6q9kyvhwOno64f1Fz7kFb8ijQFMGoATS70B2pGEZTlxkUqJFWDiisT6Q6dFg==} + engines: {node: '>=14.0.0'} dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 @@ -14183,54 +1306,69 @@ snapshots: tslib: 2.8.1 transitivePeerDependencies: - aws-crt - - "@aws-sdk/core@3.864.0": - dependencies: - "@aws-sdk/types": 3.862.0 - "@aws-sdk/xml-builder": 3.862.0 - "@smithy/core": 3.8.0 - "@smithy/node-config-provider": 4.1.4 - "@smithy/property-provider": 4.0.5 - "@smithy/protocol-http": 5.1.3 - "@smithy/signature-v4": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-utf8": 4.0.0 + dev: true + + /@aws-sdk/core@3.890.0: + resolution: {integrity: sha512-CT+yjhytHdyKvV3Nh/fqBjnZ8+UiQZVz4NMm4LrPATgVSOdfygXHqrWxrPTVgiBtuJWkotg06DF7+pTd5ekLBw==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-sdk/types': 3.887.0 + '@aws-sdk/xml-builder': 3.887.0 + '@smithy/core': 3.11.0 + '@smithy/node-config-provider': 4.2.2 + '@smithy/property-provider': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/signature-v4': 5.2.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-utf8': 4.1.0 fast-xml-parser: 5.2.5 tslib: 2.8.1 + dev: true - "@aws-sdk/credential-provider-env@3.398.0": + /@aws-sdk/credential-provider-env@3.398.0: + resolution: {integrity: sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ==} + engines: {node: '>=14.0.0'} dependencies: "@aws-sdk/types": 3.398.0 "@smithy/property-provider": 2.2.0 "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@aws-sdk/credential-provider-env@3.864.0": + /@aws-sdk/credential-provider-env@3.890.0: + resolution: {integrity: sha512-BtsUa2y0Rs8phmB2ScZ5RuPqZVmxJJXjGfeiXctmLFTxTwoayIK1DdNzOWx6SRMPVc3s2RBGN4vO7T1TwN+ajA==} + engines: {node: '>=18.0.0'} dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/property-provider": 4.0.5 - "@smithy/types": 4.3.2 + '@aws-sdk/core': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/property-provider': 4.1.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 - - "@aws-sdk/credential-provider-http@3.864.0": - dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/node-http-handler": 4.1.1 - "@smithy/property-provider": 4.0.5 - "@smithy/protocol-http": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/util-stream": 4.2.4 + dev: true + + /@aws-sdk/credential-provider-http@3.890.0: + resolution: {integrity: sha512-0sru3LVwsuGYyzbD90EC/d5HnCZ9PL4O9BA2LYT6b9XceC005Oj86uzE47LXb+mDhTAt3T6ZO0+ZcVQe0DDi8w==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-sdk/core': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/node-http-handler': 4.2.1 + '@smithy/property-provider': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/util-stream': 4.3.1 tslib: 2.8.1 + dev: true - "@aws-sdk/credential-provider-ini@3.398.0": + /@aws-sdk/credential-provider-ini@3.398.0: + resolution: {integrity: sha512-AsK1lStK3nB9Cn6S6ODb1ktGh7SRejsNVQVKX3t5d3tgOaX+aX1Iwy8FzM/ZEN8uCloeRifUGIY9uQFygg5mSw==} + engines: {node: '>=14.0.0'} dependencies: "@aws-sdk/credential-provider-env": 3.398.0 "@aws-sdk/credential-provider-process": 3.398.0 @@ -14244,26 +1382,32 @@ snapshots: tslib: 2.8.1 transitivePeerDependencies: - aws-crt - - "@aws-sdk/credential-provider-ini@3.864.0": - dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/credential-provider-env": 3.864.0 - "@aws-sdk/credential-provider-http": 3.864.0 - "@aws-sdk/credential-provider-process": 3.864.0 - "@aws-sdk/credential-provider-sso": 3.864.0 - "@aws-sdk/credential-provider-web-identity": 3.864.0 - "@aws-sdk/nested-clients": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/credential-provider-imds": 4.0.7 - "@smithy/property-provider": 4.0.5 - "@smithy/shared-ini-file-loader": 4.0.5 - "@smithy/types": 4.3.2 + dev: true + + /@aws-sdk/credential-provider-ini@3.890.0: + resolution: {integrity: sha512-Mxv7ByftHKH7dE6YXu9gQ6ODXwO1iSO32t8tBrZLS3g8K1knWADIqDFv3yErQtJ8hp27IDxbAbVH/1RQdSkmhA==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-sdk/core': 3.890.0 + '@aws-sdk/credential-provider-env': 3.890.0 + '@aws-sdk/credential-provider-http': 3.890.0 + '@aws-sdk/credential-provider-process': 3.890.0 + '@aws-sdk/credential-provider-sso': 3.890.0 + '@aws-sdk/credential-provider-web-identity': 3.890.0 + '@aws-sdk/nested-clients': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/credential-provider-imds': 4.1.2 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt + dev: true - "@aws-sdk/credential-provider-node@3.398.0": + /@aws-sdk/credential-provider-node@3.398.0: + resolution: {integrity: sha512-odmI/DSKfuWUYeDnGTCEHBbC8/MwnF6yEq874zl6+owoVv0ZsYP8qBHfiJkYqrwg7wQ7Pi40sSAPC1rhesGwzg==} + engines: {node: '>=14.0.0'} dependencies: "@aws-sdk/credential-provider-env": 3.398.0 "@aws-sdk/credential-provider-ini": 3.398.0 @@ -14278,42 +1422,54 @@ snapshots: tslib: 2.8.1 transitivePeerDependencies: - aws-crt - - "@aws-sdk/credential-provider-node@3.864.0": - dependencies: - "@aws-sdk/credential-provider-env": 3.864.0 - "@aws-sdk/credential-provider-http": 3.864.0 - "@aws-sdk/credential-provider-ini": 3.864.0 - "@aws-sdk/credential-provider-process": 3.864.0 - "@aws-sdk/credential-provider-sso": 3.864.0 - "@aws-sdk/credential-provider-web-identity": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/credential-provider-imds": 4.0.7 - "@smithy/property-provider": 4.0.5 - "@smithy/shared-ini-file-loader": 4.0.5 - "@smithy/types": 4.3.2 + dev: true + + /@aws-sdk/credential-provider-node@3.890.0: + resolution: {integrity: sha512-zbPz3mUtaBdch0KoH8/LouRDcYSzyT2ecyCOo5OAFVil7AxT1jvsn4vX78FlnSVpZ4mLuHY8pHTVGi235XiyBA==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.890.0 + '@aws-sdk/credential-provider-http': 3.890.0 + '@aws-sdk/credential-provider-ini': 3.890.0 + '@aws-sdk/credential-provider-process': 3.890.0 + '@aws-sdk/credential-provider-sso': 3.890.0 + '@aws-sdk/credential-provider-web-identity': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/credential-provider-imds': 4.1.2 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt + dev: true - "@aws-sdk/credential-provider-process@3.398.0": + /@aws-sdk/credential-provider-process@3.398.0: + resolution: {integrity: sha512-WrkBL1W7TXN508PA9wRXPFtzmGpVSW98gDaHEaa8GolAPHMPa5t2QcC/z/cFpglzrcVv8SA277zu9Z8tELdZhg==} + engines: {node: '>=14.0.0'} dependencies: "@aws-sdk/types": 3.398.0 "@smithy/property-provider": 2.2.0 "@smithy/shared-ini-file-loader": 2.4.0 "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@aws-sdk/credential-provider-process@3.864.0": + /@aws-sdk/credential-provider-process@3.890.0: + resolution: {integrity: sha512-dWZ54TI1Q+UerF5YOqGiCzY+x2YfHsSQvkyM3T4QDNTJpb/zjiVv327VbSOULOlI7gHKWY/G3tMz0D9nWI7YbA==} + engines: {node: '>=18.0.0'} dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/property-provider": 4.0.5 - "@smithy/shared-ini-file-loader": 4.0.5 - "@smithy/types": 4.3.2 + '@aws-sdk/core': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@aws-sdk/credential-provider-sso@3.398.0": + /@aws-sdk/credential-provider-sso@3.398.0: + resolution: {integrity: sha512-2Dl35587xbnzR/GGZqA2MnFs8+kS4wbHQO9BioU0okA+8NRueohNMdrdQmQDdSNK4BfIpFspiZmFkXFNyEAfgw==} + engines: {node: '>=14.0.0'} dependencies: "@aws-sdk/client-sso": 3.398.0 "@aws-sdk/token-providers": 3.398.0 @@ -14324,165 +1480,224 @@ snapshots: tslib: 2.8.1 transitivePeerDependencies: - aws-crt - - "@aws-sdk/credential-provider-sso@3.864.0": - dependencies: - "@aws-sdk/client-sso": 3.864.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/token-providers": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/property-provider": 4.0.5 - "@smithy/shared-ini-file-loader": 4.0.5 - "@smithy/types": 4.3.2 + dev: true + + /@aws-sdk/credential-provider-sso@3.890.0: + resolution: {integrity: sha512-ajYCZ6f2+98w8zG/IXcQ+NhWYoI5qPUDovw+gMqMWX/jL1cmZ9PFAwj2Vyq9cbjum5RNWwPLArWytTCgJex4AQ==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-sdk/client-sso': 3.890.0 + '@aws-sdk/core': 3.890.0 + '@aws-sdk/token-providers': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt + dev: true - "@aws-sdk/credential-provider-web-identity@3.398.0": + /@aws-sdk/credential-provider-web-identity@3.398.0: + resolution: {integrity: sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg==} + engines: {node: '>=14.0.0'} dependencies: "@aws-sdk/types": 3.398.0 "@smithy/property-provider": 2.2.0 "@smithy/types": 2.12.0 tslib: 2.8.1 - - "@aws-sdk/credential-provider-web-identity@3.864.0": - dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/nested-clients": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/property-provider": 4.0.5 - "@smithy/types": 4.3.2 + dev: true + + /@aws-sdk/credential-provider-web-identity@3.890.0: + resolution: {integrity: sha512-qZ2Mx7BeYR1s0F/H6wePI0MAmkFswmBgrpgMCOt2S4b2IpQPnUa2JbxY3GwW2WqX3nV0KjPW08ctSLMmlq/tKA==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-sdk/core': 3.890.0 + '@aws-sdk/nested-clients': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt + dev: true - "@aws-sdk/endpoint-cache@3.804.0": + /@aws-sdk/endpoint-cache@3.873.0: + resolution: {integrity: sha512-EHd+5bSp/hZc78SMq9cUCIsX0B4ekZtFUVSSLEXyYv8x/nHFTnTqN9TsxV8bjlztR3aSUeoKSk5qxu/dVGgiQw==} + engines: {node: '>=18.0.0'} dependencies: mnemonist: 0.38.3 tslib: 2.8.1 - - "@aws-sdk/middleware-bucket-endpoint@3.862.0": - dependencies: - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-arn-parser": 3.804.0 - "@smithy/node-config-provider": 4.1.4 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 - "@smithy/util-config-provider": 4.0.0 + dev: true + + /@aws-sdk/middleware-bucket-endpoint@3.890.0: + resolution: {integrity: sha512-X/td72r18uLsB1Hv70uK9cFzvc5Xyd8fde1FR7aU9COzw2ncNFgG2TJkxHBjdkby/T6SL5R4kY49KjVT3KHnzA==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-arn-parser': 3.873.0 + '@smithy/node-config-provider': 4.2.2 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-config-provider': 4.1.0 tslib: 2.8.1 + dev: true - "@aws-sdk/middleware-endpoint-discovery@3.862.0": + /@aws-sdk/middleware-endpoint-discovery@3.890.0: + resolution: {integrity: sha512-LCOwD7BwGQf5oL0e2IzoQRy50UiY91Lgdxp5AIUxcCuRlDmjLNfhveuqeAqTyYpeU6po/KJssts0rMvdnVBcOQ==} + engines: {node: '>=18.0.0'} dependencies: - "@aws-sdk/endpoint-cache": 3.804.0 - "@aws-sdk/types": 3.862.0 - "@smithy/node-config-provider": 4.1.4 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 + '@aws-sdk/endpoint-cache': 3.873.0 + '@aws-sdk/types': 3.887.0 + '@smithy/node-config-provider': 4.2.2 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@aws-sdk/middleware-expect-continue@3.862.0": + /@aws-sdk/middleware-expect-continue@3.887.0: + resolution: {integrity: sha512-AlrTZZScDTG9SYeT82BC5cK/6Q4N0miN5xqMW/pbBqP3fNXlsdJOWKB+EKD3V6DV41EV5GVKHKe/1065xKSQ4w==} + engines: {node: '>=18.0.0'} dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 + '@aws-sdk/types': 3.887.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 - - "@aws-sdk/middleware-flexible-checksums@3.864.0": - dependencies: - "@aws-crypto/crc32": 5.2.0 - "@aws-crypto/crc32c": 5.2.0 - "@aws-crypto/util": 5.2.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/is-array-buffer": 4.0.0 - "@smithy/node-config-provider": 4.1.4 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-stream": 4.2.4 - "@smithy/util-utf8": 4.0.0 + dev: true + + /@aws-sdk/middleware-flexible-checksums@3.890.0: + resolution: {integrity: sha512-l2HHqI8qtwve1vXWE/cMzi0v53rSz6PNj4aas4K+OR8rvaS4O8OuVdcTC1vQB+0sFSjWNNRFtZnIqixah0XDxw==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/is-array-buffer': 4.1.0 + '@smithy/node-config-provider': 4.2.2 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-stream': 4.3.1 + '@smithy/util-utf8': 4.1.0 tslib: 2.8.1 + dev: true - "@aws-sdk/middleware-host-header@3.398.0": + /@aws-sdk/middleware-host-header@3.398.0: + resolution: {integrity: sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA==} + engines: {node: '>=14.0.0'} dependencies: "@aws-sdk/types": 3.398.0 "@smithy/protocol-http": 2.0.5 "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@aws-sdk/middleware-host-header@3.862.0": + /@aws-sdk/middleware-host-header@3.887.0: + resolution: {integrity: sha512-ulzqXv6NNqdu/kr0sgBYupWmahISHY+azpJidtK6ZwQIC+vBUk9NdZeqQpy7KVhIk2xd4+5Oq9rxapPwPI21CA==} + engines: {node: '>=18.0.0'} dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 + '@aws-sdk/types': 3.887.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@aws-sdk/middleware-location-constraint@3.862.0": + /@aws-sdk/middleware-location-constraint@3.887.0: + resolution: {integrity: sha512-eU/9Cq4gg2sS32bOomxdx2YF43kb+o70pMhnEBBnVVeqzE8co78SO5FQdWfRTfhNJgTyQ6Vgosx//CNMPIfZPg==} + engines: {node: '>=18.0.0'} dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/types": 4.3.2 + '@aws-sdk/types': 3.887.0 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@aws-sdk/middleware-logger@3.398.0": + /@aws-sdk/middleware-logger@3.398.0: + resolution: {integrity: sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg==} + engines: {node: '>=14.0.0'} dependencies: "@aws-sdk/types": 3.398.0 "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@aws-sdk/middleware-logger@3.862.0": + /@aws-sdk/middleware-logger@3.887.0: + resolution: {integrity: sha512-YbbgLI6jKp2qSoAcHnXrQ5jcuc5EYAmGLVFgMVdk8dfCfJLfGGSaOLxF4CXC7QYhO50s+mPPkhBYejCik02Kug==} + engines: {node: '>=18.0.0'} dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/types": 4.3.2 + '@aws-sdk/types': 3.887.0 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@aws-sdk/middleware-recursion-detection@3.398.0": + /@aws-sdk/middleware-recursion-detection@3.398.0: + resolution: {integrity: sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ==} + engines: {node: '>=14.0.0'} dependencies: "@aws-sdk/types": 3.398.0 "@smithy/protocol-http": 2.0.5 "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@aws-sdk/middleware-recursion-detection@3.862.0": + /@aws-sdk/middleware-recursion-detection@3.887.0: + resolution: {integrity: sha512-tjrUXFtQnFLo+qwMveq5faxP5MQakoLArXtqieHphSqZTXm21wDJM73hgT4/PQQGTwgYjDKqnqsE1hvk0hcfDw==} + engines: {node: '>=18.0.0'} dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 + '@aws-sdk/types': 3.887.0 + '@aws/lambda-invoke-store': 0.0.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 - - "@aws-sdk/middleware-sdk-s3@3.864.0": - dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-arn-parser": 3.804.0 - "@smithy/core": 3.8.0 - "@smithy/node-config-provider": 4.1.4 - "@smithy/protocol-http": 5.1.3 - "@smithy/signature-v4": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/util-config-provider": 4.0.0 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-stream": 4.2.4 - "@smithy/util-utf8": 4.0.0 + dev: true + + /@aws-sdk/middleware-sdk-s3@3.890.0: + resolution: {integrity: sha512-58P1lrE606zpp29xH9Keh3j2BWfa2ciGBtygJTpulRMlqPL3U1gFfU2g5nDYJbjKgRtCgNIBqfmtkL4eikCb9w==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-sdk/core': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-arn-parser': 3.873.0 + '@smithy/core': 3.11.0 + '@smithy/node-config-provider': 4.2.2 + '@smithy/protocol-http': 5.2.1 + '@smithy/signature-v4': 5.2.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/util-config-provider': 4.1.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-stream': 4.3.1 + '@smithy/util-utf8': 4.1.0 tslib: 2.8.1 + dev: true - "@aws-sdk/middleware-sdk-sqs@3.862.0": + /@aws-sdk/middleware-sdk-sqs@3.890.0: + resolution: {integrity: sha512-mhuKhHrJIszIPh1bMPezAzNDwCm0pHZTvEm8m7Q2zPsRUCPFYW0Bqgmf7EjD7Upp3OhR6Lfz7/zQPAjFKzlNZA==} + engines: {node: '>=18.0.0'} dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/util-hex-encoding": 4.0.0 - "@smithy/util-utf8": 4.0.0 + '@aws-sdk/types': 3.887.0 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/util-hex-encoding': 4.1.0 + '@smithy/util-utf8': 4.1.0 tslib: 2.8.1 + dev: true - "@aws-sdk/middleware-sdk-sts@3.398.0": + /@aws-sdk/middleware-sdk-sts@3.398.0: + resolution: {integrity: sha512-+JH76XHEgfVihkY+GurohOQ5Z83zVN1nYcQzwCFnCDTh4dG4KwhnZKG+WPw6XJECocY0R+H0ivofeALHvVWJtQ==} + engines: {node: '>=14.0.0'} dependencies: "@aws-sdk/middleware-signing": 3.398.0 "@aws-sdk/types": 3.398.0 "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@aws-sdk/middleware-signing@3.398.0": + /@aws-sdk/middleware-signing@3.398.0: + resolution: {integrity: sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w==} + engines: {node: '>=14.0.0'} dependencies: "@aws-sdk/types": 3.398.0 "@smithy/property-provider": 2.2.0 @@ -14491,93 +1706,114 @@ snapshots: "@smithy/types": 2.12.0 "@smithy/util-middleware": 2.2.0 tslib: 2.8.1 + dev: true - "@aws-sdk/middleware-ssec@3.862.0": + /@aws-sdk/middleware-ssec@3.887.0: + resolution: {integrity: sha512-1ixZks0IDkdac1hjPe4vdLSuD9HznkhblCEb4T0wNyw3Ee1fdXg+MlcPWywzG5zkPXLcIrULUzJg/OSYfaDXcQ==} + engines: {node: '>=18.0.0'} dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/types": 4.3.2 + '@aws-sdk/types': 3.887.0 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@aws-sdk/middleware-user-agent@3.398.0": + /@aws-sdk/middleware-user-agent@3.398.0: + resolution: {integrity: sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ==} + engines: {node: '>=14.0.0'} dependencies: "@aws-sdk/types": 3.398.0 "@aws-sdk/util-endpoints": 3.398.0 "@smithy/protocol-http": 2.0.5 "@smithy/types": 2.12.0 tslib: 2.8.1 - - "@aws-sdk/middleware-user-agent@3.864.0": - dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-endpoints": 3.862.0 - "@smithy/core": 3.8.0 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 + dev: true + + /@aws-sdk/middleware-user-agent@3.890.0: + resolution: {integrity: sha512-x4+gLrOFGN7PnfxCaQbs3QEF8bMQE4CVxcOp066UEJqr2Pn4yB12Q3O+YntOtESK5NcTxIh7JlhGss95EHzNng==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-sdk/core': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.890.0 + '@smithy/core': 3.11.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 - - "@aws-sdk/nested-clients@3.864.0": - dependencies: - "@aws-crypto/sha256-browser": 5.2.0 - "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.864.0 - "@aws-sdk/middleware-host-header": 3.862.0 - "@aws-sdk/middleware-logger": 3.862.0 - "@aws-sdk/middleware-recursion-detection": 3.862.0 - "@aws-sdk/middleware-user-agent": 3.864.0 - "@aws-sdk/region-config-resolver": 3.862.0 - "@aws-sdk/types": 3.862.0 - "@aws-sdk/util-endpoints": 3.862.0 - "@aws-sdk/util-user-agent-browser": 3.862.0 - "@aws-sdk/util-user-agent-node": 3.864.0 - "@smithy/config-resolver": 4.1.5 - "@smithy/core": 3.8.0 - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/hash-node": 4.0.5 - "@smithy/invalid-dependency": 4.0.5 - "@smithy/middleware-content-length": 4.0.5 - "@smithy/middleware-endpoint": 4.1.18 - "@smithy/middleware-retry": 4.1.19 - "@smithy/middleware-serde": 4.0.9 - "@smithy/middleware-stack": 4.0.5 - "@smithy/node-config-provider": 4.1.4 - "@smithy/node-http-handler": 4.1.1 - "@smithy/protocol-http": 5.1.3 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-body-length-node": 4.0.0 - "@smithy/util-defaults-mode-browser": 4.0.26 - "@smithy/util-defaults-mode-node": 4.0.26 - "@smithy/util-endpoints": 3.0.7 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-retry": 4.0.7 - "@smithy/util-utf8": 4.0.0 + dev: true + + /@aws-sdk/nested-clients@3.890.0: + resolution: {integrity: sha512-D5qVNd+qlqdL8duJShzffAqPllGRA4tG7n/GEpL13eNfHChPvGkkUFBMrxSgCAETaTna13G6kq+dMO+SAdbm1A==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.890.0 + '@aws-sdk/middleware-host-header': 3.887.0 + '@aws-sdk/middleware-logger': 3.887.0 + '@aws-sdk/middleware-recursion-detection': 3.887.0 + '@aws-sdk/middleware-user-agent': 3.890.0 + '@aws-sdk/region-config-resolver': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.890.0 + '@aws-sdk/util-user-agent-browser': 3.887.0 + '@aws-sdk/util-user-agent-node': 3.890.0 + '@smithy/config-resolver': 4.2.2 + '@smithy/core': 3.11.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.2 + '@smithy/middleware-retry': 4.2.2 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.2 + '@smithy/util-defaults-mode-node': 4.1.2 + '@smithy/util-endpoints': 3.1.2 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.1 + '@smithy/util-utf8': 4.1.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt + dev: true - "@aws-sdk/region-config-resolver@3.862.0": + /@aws-sdk/region-config-resolver@3.890.0: + resolution: {integrity: sha512-VfdT+tkF9groRYNzKvQCsCGDbOQdeBdzyB1d6hWiq22u13UafMIoskJ1ec0i0H1X29oT6mjTitfnvPq1UiKwzQ==} + engines: {node: '>=18.0.0'} dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/node-config-provider": 4.1.4 - "@smithy/types": 4.3.2 - "@smithy/util-config-provider": 4.0.0 - "@smithy/util-middleware": 4.0.5 + '@aws-sdk/types': 3.887.0 + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 + '@smithy/util-config-provider': 4.1.0 + '@smithy/util-middleware': 4.1.1 tslib: 2.8.1 + dev: true - "@aws-sdk/signature-v4-multi-region@3.864.0": + /@aws-sdk/signature-v4-multi-region@3.890.0: + resolution: {integrity: sha512-il8kb2/wDLXhemN3p7v4MvbvqoMuo7Ug3ihuIUIhPtSVjcnn+BISJU0S+5YTl8TXf6qxML9VrfxL0pmuhO3BsA==} + engines: {node: '>=18.0.0'} dependencies: - "@aws-sdk/middleware-sdk-s3": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/protocol-http": 5.1.3 - "@smithy/signature-v4": 5.1.3 - "@smithy/types": 4.3.2 + '@aws-sdk/middleware-sdk-s3': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/signature-v4': 5.2.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@aws-sdk/token-providers@3.398.0": + /@aws-sdk/token-providers@3.398.0: + resolution: {integrity: sha512-nrYgjzavGCKJL/48Vt0EL+OlIc5UZLfNGpgyUW9cv3XZwl+kXV0QB+HH0rHZZLfpbBgZ2RBIJR9uD5ieu/6hpQ==} + engines: {node: '>=14.0.0'} dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 @@ -14616,1012 +1852,1544 @@ snapshots: tslib: 2.8.1 transitivePeerDependencies: - aws-crt - - "@aws-sdk/token-providers@3.864.0": - dependencies: - "@aws-sdk/core": 3.864.0 - "@aws-sdk/nested-clients": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/property-provider": 4.0.5 - "@smithy/shared-ini-file-loader": 4.0.5 - "@smithy/types": 4.3.2 + dev: true + + /@aws-sdk/token-providers@3.890.0: + resolution: {integrity: sha512-+pK/0iQEpPmnztbAw0NNmb+B5pPy8VLu+Ab4SJLgVp41RE9NO13VQtrzUbh61TTAVMrzqWlLQ2qmAl2Fk4VNgw==} + engines: {node: '>=18.0.0'} + dependencies: + '@aws-sdk/core': 3.890.0 + '@aws-sdk/nested-clients': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt + dev: true - "@aws-sdk/types@3.398.0": + /@aws-sdk/types@3.398.0: + resolution: {integrity: sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@aws-sdk/types@3.862.0": + /@aws-sdk/types@3.887.0: + resolution: {integrity: sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@aws-sdk/util-arn-parser@3.804.0": + /@aws-sdk/util-arn-parser@3.873.0: + resolution: {integrity: sha512-qag+VTqnJWDn8zTAXX4wiVioa0hZDQMtbZcGRERVnLar4/3/VIKBhxX2XibNQXFu1ufgcRn4YntT/XEPecFWcg==} + engines: {node: '>=18.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@aws-sdk/util-endpoints@3.398.0": + /@aws-sdk/util-endpoints@3.398.0: + resolution: {integrity: sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw==} + engines: {node: '>=14.0.0'} dependencies: "@aws-sdk/types": 3.398.0 tslib: 2.8.1 + dev: true - "@aws-sdk/util-endpoints@3.862.0": + /@aws-sdk/util-endpoints@3.890.0: + resolution: {integrity: sha512-nJ8v1x9ZQKzMRK4dS4oefOMIHqb6cguctTcx1RB9iTaFOR5pP7bvq+D4mvNZ6vBxiHg1dQGBUUgl5XJmdR7atQ==} + engines: {node: '>=18.0.0'} dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-endpoints": 3.0.7 + '@aws-sdk/types': 3.887.0 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-endpoints': 3.1.2 tslib: 2.8.1 + dev: true - "@aws-sdk/util-locate-window@3.804.0": + /@aws-sdk/util-locate-window@3.873.0: + resolution: {integrity: sha512-xcVhZF6svjM5Rj89T1WzkjQmrTF6dpR2UvIHPMTnSZoNe6CixejPZ6f0JJ2kAhO8H+dUHwNBlsUgOTIKiK/Syg==} + engines: {node: '>=18.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@aws-sdk/util-user-agent-browser@3.398.0": + /@aws-sdk/util-user-agent-browser@3.398.0: + resolution: {integrity: sha512-A3Tzx1tkDHlBT+IgxmsMCHbV8LM7SwwCozq2ZjJRx0nqw3MCrrcxQFXldHeX/gdUMO+0Oocb7HGSnVODTq+0EA==} dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/types": 2.12.0 - bowser: 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/types': 2.12.0 + bowser: 2.12.1 tslib: 2.8.1 + dev: true - "@aws-sdk/util-user-agent-browser@3.862.0": + /@aws-sdk/util-user-agent-browser@3.887.0: + resolution: {integrity: sha512-X71UmVsYc6ZTH4KU6hA5urOzYowSXc3qvroagJNLJYU1ilgZ529lP4J9XOYfEvTXkLR1hPFSRxa43SrwgelMjA==} dependencies: - "@aws-sdk/types": 3.862.0 - "@smithy/types": 4.3.2 - bowser: 2.12.0 + '@aws-sdk/types': 3.887.0 + '@smithy/types': 4.5.0 + bowser: 2.12.1 tslib: 2.8.1 + dev: true - "@aws-sdk/util-user-agent-node@3.398.0": + /@aws-sdk/util-user-agent-node@3.398.0: + resolution: {integrity: sha512-RTVQofdj961ej4//fEkppFf4KXqKGMTCqJYghx3G0C/MYXbg7MGl7LjfNGtJcboRE8pfHHQ/TUWBDA7RIAPPlQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true dependencies: "@aws-sdk/types": 3.398.0 "@smithy/node-config-provider": 2.3.0 "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@aws-sdk/util-user-agent-node@3.864.0": + /@aws-sdk/util-user-agent-node@3.890.0: + resolution: {integrity: sha512-s85NkCxKoAlUvx7UP7OelxLqwTi27Tps9/Q+4N+9rEUjThxEnDsqJSStJ1XiYhddz1xc/vxMvPjYN0qX6EKPtA==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true dependencies: - "@aws-sdk/middleware-user-agent": 3.864.0 - "@aws-sdk/types": 3.862.0 - "@smithy/node-config-provider": 4.1.4 - "@smithy/types": 4.3.2 + '@aws-sdk/middleware-user-agent': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@aws-sdk/util-utf8-browser@3.259.0": + /@aws-sdk/util-utf8-browser@3.259.0: + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} dependencies: tslib: 2.8.1 + dev: true - "@aws-sdk/xml-builder@3.310.0": + /@aws-sdk/xml-builder@3.310.0: + resolution: {integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==} + engines: {node: '>=14.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@aws-sdk/xml-builder@3.862.0": + /@aws-sdk/xml-builder@3.887.0: + resolution: {integrity: sha512-lMwgWK1kNgUhHGfBvO/5uLe7TKhycwOn3eRCqsKPT9aPCx/HWuTlpcQp8oW2pCRGLS7qzcxqpQulcD+bbUL7XQ==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@babel/code-frame@7.10.4": + /@aws/lambda-invoke-store@0.0.1: + resolution: {integrity: sha512-ORHRQ2tmvnBXc8t/X9Z8IcSbBA4xTLKuN873FopzklHMeqBst7YG0d+AX97inkvDX+NChYtSr+qGfcqGFaI8Zw==} + engines: {node: '>=18.0.0'} + dev: true + + /@babel/code-frame@7.10.4: + resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} dependencies: - "@babel/highlight": 7.25.9 + '@babel/highlight': 7.25.9 + dev: false - "@babel/code-frame@7.27.1": + /@babel/code-frame@7.27.1: + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} dependencies: "@babel/helper-validator-identifier": 7.27.1 js-tokens: 4.0.0 picocolors: 1.1.1 - "@babel/compat-data@7.28.0": {} - - "@babel/core@7.28.3": - dependencies: - "@ampproject/remapping": 2.3.0 - "@babel/code-frame": 7.27.1 - "@babel/generator": 7.28.3 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.3) - "@babel/helpers": 7.28.3 - "@babel/parser": 7.28.3 - "@babel/template": 7.27.2 - "@babel/traverse": 7.28.3 - "@babel/types": 7.28.2 + /@babel/compat-data@7.28.4: + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} + engines: {node: '>=6.9.0'} + + /@babel/core@7.28.4: + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.1 + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - "@babel/eslint-parser@7.28.0(@babel/core@7.28.3)(eslint@8.57.1)": + /@babel/eslint-parser@7.28.4(@babel/core@7.28.4)(eslint@8.57.1): + resolution: {integrity: sha512-Aa+yDiH87980jR6zvRfFuCR1+dLb00vBydhTL+zI992Rz/wQhSvuxjmOOuJOgO3XmakO6RykRGD2S1mq1AtgHA==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 dependencies: - "@babel/core": 7.28.3 - "@nicolo-ribaudo/eslint-scope-5-internals": 5.1.1-v1 + '@babel/core': 7.28.4 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 8.57.1 eslint-visitor-keys: 2.1.0 semver: 6.3.1 + dev: true - "@babel/generator@7.28.3": + /@babel/generator@7.28.3: + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/parser": 7.28.3 - "@babel/types": 7.28.2 - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/trace-mapping": 0.3.30 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - "@babel/helper-annotate-as-pure@7.27.3": + /@babel/helper-annotate-as-pure@7.27.3: + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/types": 7.28.2 + '@babel/types': 7.28.4 - "@babel/helper-compilation-targets@7.27.2": + /@babel/helper-compilation-targets@7.27.2: + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/compat-data": 7.28.0 - "@babel/helper-validator-option": 7.27.1 - browserslist: 4.25.2 + '@babel/compat-data': 7.28.4 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.26.2 lru-cache: 5.1.1 semver: 6.3.1 - "@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.3)": - dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-member-expression-to-functions": 7.27.1 - "@babel/helper-optimise-call-expression": 7.27.1 - "@babel/helper-replace-supers": 7.27.1(@babel/core@7.28.3) - "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 - "@babel/traverse": 7.28.3 + /@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4): + resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.28.4 semver: 6.3.1 transitivePeerDependencies: - supports-color - "@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.3)": + /@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 - regexpu-core: 6.2.0 + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.3 + regexpu-core: 6.3.1 semver: 6.3.1 - "@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.3)": + /@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.4): + resolution: {integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-plugin-utils": 7.27.1 - debug: 4.4.1 + '@babel/core': 7.28.4 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + debug: 4.4.3 lodash.debounce: 4.0.8 resolve: 1.22.10 transitivePeerDependencies: - supports-color - "@babel/helper-globals@7.28.0": {} + /@babel/helper-globals@7.28.0: + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} - "@babel/helper-member-expression-to-functions@7.27.1": + /@babel/helper-member-expression-to-functions@7.27.1: + resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/traverse": 7.28.3 - "@babel/types": 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/helper-module-imports@7.27.1": + /@babel/helper-module-imports@7.27.1: + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/traverse": 7.28.3 - "@babel/types": 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/helper-module-transforms@7.28.3(@babel/core@7.28.3)": + /@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4): + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-module-imports": 7.27.1 - "@babel/helper-validator-identifier": 7.27.1 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/helper-optimise-call-expression@7.27.1": + /@babel/helper-optimise-call-expression@7.27.1: + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/types": 7.28.2 + '@babel/types': 7.28.4 - "@babel/helper-plugin-utils@7.27.1": {} + /@babel/helper-plugin-utils@7.27.1: + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} - "@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.3)": + /@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-wrap-function": 7.28.3 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-wrap-function': 7.28.3 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/helper-replace-supers@7.27.1(@babel/core@7.28.3)": + /@babel/helper-replace-supers@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-member-expression-to-functions": 7.27.1 - "@babel/helper-optimise-call-expression": 7.27.1 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.4 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/helper-skip-transparent-expression-wrappers@7.27.1": + /@babel/helper-skip-transparent-expression-wrappers@7.27.1: + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/traverse": 7.28.3 - "@babel/types": 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/helper-string-parser@7.27.1": {} + /@babel/helper-string-parser@7.27.1: + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} - "@babel/helper-validator-identifier@7.27.1": {} + /@babel/helper-validator-identifier@7.27.1: + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} - "@babel/helper-validator-option@7.27.1": {} + /@babel/helper-validator-option@7.27.1: + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} - "@babel/helper-wrap-function@7.28.3": + /@babel/helper-wrap-function@7.28.3: + resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/template": 7.27.2 - "@babel/traverse": 7.28.3 - "@babel/types": 7.28.2 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/helpers@7.28.3": + /@babel/helpers@7.28.4: + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + engines: {node: '>=6.9.0'} dependencies: - "@babel/template": 7.27.2 - "@babel/types": 7.28.2 + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 - "@babel/highlight@7.25.9": + /@babel/highlight@7.25.9: + resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==} + engines: {node: '>=6.9.0'} dependencies: "@babel/helper-validator-identifier": 7.27.1 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.1.1 + dev: false - "@babel/parser@7.28.3": + /@babel/parser@7.28.4: + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + engines: {node: '>=6.0.0'} + hasBin: true dependencies: - "@babel/types": 7.28.2 + '@babel/types': 7.28.4 - "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 - "@babel/plugin-transform-optional-chaining": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.3)": + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.4): + resolution: {integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.28.3)": + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.28.4): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.28.3)": + /@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.28.4): + resolution: {integrity: sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-syntax-decorators": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color + dev: false - "@babel/plugin-proposal-export-default-from@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-proposal-export-default-from@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.28.3)": + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.28.4): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.4) - "@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.28.3)": + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.28.4): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.3)": + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 + '@babel/core': 7.28.4 - "@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.3)": + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.4): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.3)": + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.4): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.3)": + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.4): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.3)": + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.4): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + dev: false - "@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.3)": + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.4): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-export-default-from@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-syntax-export-default-from@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-eBC/3KSekshx19+N40MzjWqJd7KTEdOoLesAfa4IDFI8eRz5a47i5Oszus6zG/cwIXN63YhgLOMSSNJx49sENg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.3)": + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.4): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.3)": + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.4): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.3)": + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.4): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.3)": + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.4): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.3)": + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.4): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.3)": + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.4): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.3)": + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.4): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.3)": + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.4): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.3)": + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.4): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.3)": + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.4): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.3)": + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.4): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.3)": + /@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.4): + resolution: {integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-remap-async-to-generator": 7.27.1(@babel/core@7.28.3) - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4) + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-module-imports": 7.27.1 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-remap-async-to-generator": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-block-scoping@7.28.0(@babel/core@7.28.3)": + /@babel/plugin-transform-block-scoping@7.28.4(@babel/core@7.28.4): + resolution: {integrity: sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.3)": + /@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.4): + resolution: {integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-classes@7.28.3(@babel/core@7.28.3)": - dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-globals": 7.28.0 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-replace-supers": 7.27.1(@babel/core@7.28.3) - "@babel/traverse": 7.28.3 + /@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.4): + resolution: {integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-globals': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/template": 7.27.2 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.27.2 - "@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.3)": + /@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.4): + resolution: {integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.3)": + /@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.4): + resolution: {integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-syntax-flow": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.4) - "@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.4 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-validator-identifier": 7.27.1 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-module-transforms": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-object-rest-spread@7.28.0(@babel/core@7.28.3)": - dependencies: - "@babel/core": 7.28.3 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.28.3) - "@babel/traverse": 7.28.3 + /@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.4): + resolution: {integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-replace-supers": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.3)": + /@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.4): + resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.3)": + /@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.4): + resolution: {integrity: sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/plugin-transform-react-jsx": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color + dev: false - "@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.3)": - dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-module-imports": 7.27.1 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/plugin-syntax-jsx": 7.27.1(@babel/core@7.28.3) - "@babel/types": 7.28.2 + /@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-plugin-utils': 7.27.1 + dev: false - "@babel/plugin-transform-regenerator@7.28.3(@babel/core@7.28.3)": + /@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.4): + resolution: {integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-runtime@7.28.3(@babel/core@7.28.3)": - dependencies: - "@babel/core": 7.28.3 - "@babel/helper-module-imports": 7.27.1 - "@babel/helper-plugin-utils": 7.27.1 - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.3) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.3) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.3) + /@babel/plugin-transform-runtime@7.28.3(@babel/core@7.28.4): + resolution: {integrity: sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4) semver: 6.3.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - "@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.3)": - dependencies: - "@babel/core": 7.28.3 - "@babel/helper-annotate-as-pure": 7.27.3 - "@babel/helper-create-class-features-plugin": 7.28.3(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": 7.27.1 - "@babel/plugin-syntax-typescript": 7.27.1(@babel/core@7.28.3) + /@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.4): + resolution: {integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - "@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 - "@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.3)": + /@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-create-regexp-features-plugin": 7.27.1(@babel/core@7.28.3) - "@babel/helper-plugin-utils": 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 - "@babel/preset-env@7.28.3(@babel/core@7.28.3)": - dependencies: - "@babel/compat-data": 7.28.0 - "@babel/core": 7.28.3 - "@babel/helper-compilation-targets": 7.27.2 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-validator-option": 7.27.1 - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-bugfix-safari-class-field-initializer-scope": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.3) - "@babel/plugin-syntax-import-assertions": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-import-attributes": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-unicode-sets-regex": 7.18.6(@babel/core@7.28.3) - "@babel/plugin-transform-arrow-functions": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-async-generator-functions": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-async-to-generator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-block-scoped-functions": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-block-scoping": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-class-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-class-static-block": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-classes": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-computed-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-dotall-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-duplicate-keys": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-dynamic-import": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-explicit-resource-management": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-exponentiation-operator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-export-namespace-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-for-of": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-function-name": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-json-strings": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-literals": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-logical-assignment-operators": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-member-expression-literals": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-amd": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-commonjs": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-systemjs": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-umd": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-named-capturing-groups-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-new-target": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-nullish-coalescing-operator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-numeric-separator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-object-rest-spread": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-object-super": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-optional-catch-binding": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-optional-chaining": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.28.3) - "@babel/plugin-transform-private-methods": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-private-property-in-object": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-property-literals": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-regenerator": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-regexp-modifiers": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-reserved-words": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-shorthand-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-spread": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-sticky-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-template-literals": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-typeof-symbol": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-unicode-escapes": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-unicode-property-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-unicode-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-unicode-sets-regex": 7.27.1(@babel/core@7.28.3) - "@babel/preset-modules": 0.1.6-no-external-plugins(@babel/core@7.28.3) - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.3) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.3) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.3) - core-js-compat: 3.45.0 + /@babel/preset-env@7.28.3(@babel/core@7.28.4): + resolution: {integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.28.4 + '@babel/core': 7.28.4 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.4) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.4) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.4) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-block-scoping': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.4) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.4) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.4) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.4) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.4) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.4) + core-js-compat: 3.45.1 semver: 6.3.1 transitivePeerDependencies: - supports-color - "@babel/preset-flow@7.27.1(@babel/core@7.28.3)": + /@babel/preset-flow@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-ez3a2it5Fn6P54W8QkbfIyyIbxlXvcxyWHHvno1Wg0Ej5eiJY5hBb8ExttoIOJJk7V2dZE6prP7iby5q2aQ0Lg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-validator-option": 7.27.1 - "@babel/plugin-transform-flow-strip-types": 7.27.1(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.4) - "@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.3)": + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.4): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/types": 7.28.2 + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.28.4 esutils: 2.0.3 - "@babel/preset-react@7.27.1(@babel/core@7.28.3)": - dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-validator-option": 7.27.1 - "@babel/plugin-transform-react-display-name": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx-development": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-pure-annotations": 7.27.1(@babel/core@7.28.3) + /@babel/preset-react@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - supports-color + dev: false - "@babel/preset-typescript@7.27.1(@babel/core@7.28.3)": - dependencies: - "@babel/core": 7.28.3 - "@babel/helper-plugin-utils": 7.27.1 - "@babel/helper-validator-option": 7.27.1 - "@babel/plugin-syntax-jsx": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-commonjs": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-typescript": 7.28.0(@babel/core@7.28.3) + /@babel/preset-typescript@7.27.1(@babel/core@7.28.4): + resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - "@babel/register@7.28.3(@babel/core@7.28.3)": + /@babel/register@7.28.3(@babel/core@7.28.4): + resolution: {integrity: sha512-CieDOtd8u208eI49bYl4z1J22ySFw87IGwE+IswFEExH7e3rLgKb0WNQeumnacQ1+VoDJLYI5QFA3AJZuyZQfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 + '@babel/core': 7.28.4 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 pirates: 4.0.7 source-map-support: 0.5.21 - "@babel/runtime@7.28.3": {} - - "@babel/template@7.27.2": - dependencies: - "@babel/code-frame": 7.27.1 - "@babel/parser": 7.28.3 - "@babel/types": 7.28.2 - - "@babel/traverse@7.28.3": - dependencies: - "@babel/code-frame": 7.27.1 - "@babel/generator": 7.28.3 - "@babel/helper-globals": 7.28.0 - "@babel/parser": 7.28.3 - "@babel/template": 7.27.2 - "@babel/types": 7.28.2 - debug: 4.4.1 + /@babel/runtime@7.28.4: + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + + /@babel/template@7.27.2: + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + /@babel/traverse@7.28.4: + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + debug: 4.4.3 transitivePeerDependencies: - supports-color - "@babel/types@7.28.2": + /@babel/types@7.28.4: + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + engines: {node: '>=6.9.0'} dependencies: "@babel/helper-string-parser": 7.27.1 "@babel/helper-validator-identifier": 7.27.1 - "@bcoe/v8-coverage@0.2.3": {} + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true - "@changesets/apply-release-plan@7.0.12": + /@changesets/apply-release-plan@7.0.13: + resolution: {integrity: sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg==} dependencies: "@changesets/config": 3.1.1 "@changesets/get-version-range-type": 0.4.0 @@ -15636,8 +3404,10 @@ snapshots: prettier: 2.8.8 resolve-from: 5.0.0 semver: 7.7.2 + dev: false - "@changesets/assemble-release-plan@6.0.9": + /@changesets/assemble-release-plan@6.0.9: + resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} dependencies: "@changesets/errors": 0.2.0 "@changesets/get-dependents-graph": 2.1.3 @@ -15645,37 +3415,44 @@ snapshots: "@changesets/types": 6.1.0 "@manypkg/get-packages": 1.1.3 semver: 7.7.2 + dev: false - "@changesets/changelog-git@0.2.1": + /@changesets/changelog-git@0.2.1: + resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} dependencies: - "@changesets/types": 6.1.0 + '@changesets/types': 6.1.0 + dev: false - "@changesets/changelog-github@0.5.1": + /@changesets/changelog-github@0.5.1: + resolution: {integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==} dependencies: "@changesets/get-github-info": 0.6.0 "@changesets/types": 6.1.0 dotenv: 8.6.0 transitivePeerDependencies: - encoding + dev: false - "@changesets/cli@2.29.6(@types/node@20.19.11)": + /@changesets/cli@2.29.7: + resolution: {integrity: sha512-R7RqWoaksyyKXbKXBTbT4REdy22yH81mcFK6sWtqSanxUCbUi9Uf+6aqxZtDQouIqPdem2W56CdxXgsxdq7FLQ==} + hasBin: true dependencies: - "@changesets/apply-release-plan": 7.0.12 - "@changesets/assemble-release-plan": 6.0.9 - "@changesets/changelog-git": 0.2.1 - "@changesets/config": 3.1.1 - "@changesets/errors": 0.2.0 - "@changesets/get-dependents-graph": 2.1.3 - "@changesets/get-release-plan": 4.0.13 - "@changesets/git": 3.0.4 - "@changesets/logger": 0.1.1 - "@changesets/pre": 2.0.2 - "@changesets/read": 0.6.5 - "@changesets/should-skip-package": 0.1.2 - "@changesets/types": 6.1.0 - "@changesets/write": 0.4.0 - "@inquirer/external-editor": 1.0.1(@types/node@20.19.11) - "@manypkg/get-packages": 1.1.3 + '@changesets/apply-release-plan': 7.0.13 + '@changesets/assemble-release-plan': 6.0.9 + '@changesets/changelog-git': 0.2.1 + '@changesets/config': 3.1.1 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-release-plan': 4.0.13 + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.5 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@changesets/write': 0.4.0 + '@inquirer/external-editor': 1.0.2 + '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 enquirer: 2.4.1 @@ -15689,9 +3466,11 @@ snapshots: spawndamnit: 3.0.1 term-size: 2.2.1 transitivePeerDependencies: - - "@types/node" + - '@types/node' + dev: false - "@changesets/config@3.1.1": + /@changesets/config@3.1.1: + resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} dependencies: "@changesets/errors": 0.2.0 "@changesets/get-dependents-graph": 2.1.3 @@ -15700,61 +3479,81 @@ snapshots: "@manypkg/get-packages": 1.1.3 fs-extra: 7.0.1 micromatch: 4.0.8 + dev: false - "@changesets/errors@0.2.0": + /@changesets/errors@0.2.0: + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} dependencies: extendable-error: 0.1.7 + dev: false - "@changesets/get-dependents-graph@2.1.3": + /@changesets/get-dependents-graph@2.1.3: + resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} dependencies: "@changesets/types": 6.1.0 "@manypkg/get-packages": 1.1.3 picocolors: 1.1.1 semver: 7.7.2 + dev: false - "@changesets/get-github-info@0.6.0": + /@changesets/get-github-info@0.6.0: + resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} dependencies: dataloader: 1.4.0 node-fetch: 2.7.0 transitivePeerDependencies: - encoding + dev: false - "@changesets/get-release-plan@4.0.13": + /@changesets/get-release-plan@4.0.13: + resolution: {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==} dependencies: - "@changesets/assemble-release-plan": 6.0.9 - "@changesets/config": 3.1.1 - "@changesets/pre": 2.0.2 - "@changesets/read": 0.6.5 - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/assemble-release-plan': 6.0.9 + '@changesets/config': 3.1.1 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.5 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + dev: false - "@changesets/get-version-range-type@0.4.0": {} + /@changesets/get-version-range-type@0.4.0: + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + dev: false - "@changesets/git@3.0.4": + /@changesets/git@3.0.4: + resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} dependencies: "@changesets/errors": 0.2.0 "@manypkg/get-packages": 1.1.3 is-subdir: 1.2.0 micromatch: 4.0.8 spawndamnit: 3.0.1 + dev: false - "@changesets/logger@0.1.1": + /@changesets/logger@0.1.1: + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} dependencies: picocolors: 1.1.1 + dev: false - "@changesets/parse@0.4.1": + /@changesets/parse@0.4.1: + resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} dependencies: "@changesets/types": 6.1.0 js-yaml: 3.14.1 + dev: false - "@changesets/pre@2.0.2": + /@changesets/pre@2.0.2: + resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} dependencies: "@changesets/errors": 0.2.0 "@changesets/types": 6.1.0 "@manypkg/get-packages": 1.1.3 fs-extra: 7.0.1 + dev: false - "@changesets/read@0.6.5": + /@changesets/read@0.6.5: + resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==} dependencies: "@changesets/git": 3.0.4 "@changesets/logger": 0.1.1 @@ -15763,85 +3562,108 @@ snapshots: fs-extra: 7.0.1 p-filter: 2.1.0 picocolors: 1.1.1 + dev: false - "@changesets/should-skip-package@0.1.2": + /@changesets/should-skip-package@0.1.2: + resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} dependencies: - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + dev: false - "@changesets/types@4.1.0": {} + /@changesets/types@4.1.0: + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + dev: false - "@changesets/types@6.1.0": {} + /@changesets/types@6.1.0: + resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} + dev: false - "@changesets/write@0.4.0": + /@changesets/write@0.4.0: + resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} dependencies: "@changesets/types": 6.1.0 fs-extra: 7.0.1 human-id: 4.1.1 prettier: 2.8.8 + dev: false - "@cloudflare/kv-asset-handler@0.4.0": + /@cloudflare/kv-asset-handler@0.4.0: + resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} + engines: {node: '>=18.0.0'} dependencies: mime: 3.0.0 + dev: true - "@cloudflare/unenv-preset@2.7.1(unenv@2.0.0-rc.19)(workerd@1.20250829.0)": + /@cloudflare/unenv-preset@2.7.3(unenv@2.0.0-rc.21)(workerd@1.20250913.0): + resolution: {integrity: sha512-tsQQagBKjvpd9baa6nWVIv399ejiqcrUBBW6SZx6Z22+ymm+Odv5+cFimyuCsD/fC1fQTwfRmwXBNpzvHSeGCw==} + peerDependencies: + unenv: 2.0.0-rc.21 + workerd: ^1.20250828.1 + peerDependenciesMeta: + workerd: + optional: true dependencies: - unenv: 2.0.0-rc.19 - optionalDependencies: - workerd: 1.20250829.0 + unenv: 2.0.0-rc.21 + workerd: 1.20250913.0 + dev: true - "@cloudflare/workerd-darwin-64@1.20250829.0": + /@cloudflare/workerd-darwin-64@1.20250913.0: + resolution: {integrity: sha512-926bBGIYDsF0FraaPQV0hO9LymEN+Zdkkm1qOHxU1c58oAxr5b9Tpe4d1z1EqOD0DTFhjn7V/AxKcZBaBBhO/A==} + engines: {node: '>=16'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - "@cloudflare/workerd-darwin-arm64@1.20250829.0": + /@cloudflare/workerd-darwin-arm64@1.20250913.0: + resolution: {integrity: sha512-uy5nJIt44CpICgfsKQotji31cn39i71e2KqE/zeAmmgYp/tzl2cXotVeDtynqqEsloox7hl/eBY5sU0x99N8oQ==} + engines: {node: '>=16'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true - "@cloudflare/workerd-linux-64@1.20250829.0": + /@cloudflare/workerd-linux-64@1.20250913.0: + resolution: {integrity: sha512-khdF7MBi8L9WIt3YyWBQxipMny0J3gG824kurZiRACZmPdQ1AOzkKybDDXC3EMcF8TmGMRqKRUGQIB/25PwJuQ==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@cloudflare/workerd-linux-arm64@1.20250829.0": + /@cloudflare/workerd-linux-arm64@1.20250913.0: + resolution: {integrity: sha512-KF5nIOt5YIYGfinY0YEe63JqaAx8WSFDHTLQpytTX+N/oJWEJu3KW6evU1TfX7o8gRlRsc0j/evcZ1vMfbDy5g==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@cloudflare/workerd-windows-64@1.20250829.0": + /@cloudflare/workerd-windows-64@1.20250913.0: + resolution: {integrity: sha512-m/PMnVdaUB7ymW8BvDIC5xrU16hBDCBpyf9/4y9YZSQOYTVXihxErX8kaW9H9A/I6PTX081NmxxhTbb/n+EQRg==} + engines: {node: '>=16'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - "@confio/ics23@0.6.8": - dependencies: - "@noble/hashes": 1.8.0 - protobufjs: 6.11.4 - - "@cosmjs/amino@0.32.4": + /@cosmjs/amino@0.36.0: + resolution: {integrity: sha512-PxK3+1smz5N1dxJjSSsvvZdHdSM2zuUAIP6ppYLGBcYmAKlK6hJ1vR1Ity+HLKusqo22bj0CY9m3QaeLNsSPww==} dependencies: - "@cosmjs/crypto": 0.32.4 - "@cosmjs/encoding": 0.32.4 - "@cosmjs/math": 0.32.4 - "@cosmjs/utils": 0.32.4 + '@cosmjs/crypto': 0.36.0 + '@cosmjs/encoding': 0.36.0 + '@cosmjs/math': 0.36.0 + '@cosmjs/utils': 0.36.0 + dev: false - "@cosmjs/amino@0.36.0": - dependencies: - "@cosmjs/crypto": 0.36.0 - "@cosmjs/encoding": 0.36.0 - "@cosmjs/math": 0.36.0 - "@cosmjs/utils": 0.36.0 - - "@cosmjs/cosmwasm-stargate@0.32.4": - dependencies: - "@cosmjs/amino": 0.32.4 - "@cosmjs/crypto": 0.32.4 - "@cosmjs/encoding": 0.32.4 - "@cosmjs/math": 0.32.4 - "@cosmjs/proto-signing": 0.32.4 - "@cosmjs/stargate": 0.32.4 - "@cosmjs/tendermint-rpc": 0.32.4 - "@cosmjs/utils": 0.32.4 - cosmjs-types: 0.9.0 - pako: 2.1.0 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - "@cosmjs/cosmwasm-stargate@0.36.0": + /@cosmjs/cosmwasm-stargate@0.36.0: + resolution: {integrity: sha512-hzzT4YRMt2cRdAILzGSNSmWr1IRpN3aWxL5ceMrZaaJyVa9nD4AUeR80yPB6mzkBpHuMwbSGWz8nus0psyonRQ==} dependencies: "@cosmjs/amino": 0.36.0 "@cosmjs/crypto": 0.36.0 @@ -15856,18 +3678,10 @@ snapshots: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: false - "@cosmjs/crypto@0.32.4": - dependencies: - "@cosmjs/encoding": 0.32.4 - "@cosmjs/math": 0.32.4 - "@cosmjs/utils": 0.32.4 - "@noble/hashes": 1.8.0 - bn.js: 5.2.2 - elliptic: 6.6.1 - libsodium-wrappers-sumo: 0.7.15 - - "@cosmjs/crypto@0.36.0": + /@cosmjs/crypto@0.36.0: + resolution: {integrity: sha512-IdzJETWBfMlJIpWmcAi4wiAa0sdHKZDbxKdhasrpSLvhwIItXBYMvApCFx6zr+V/Hby4KnsWduI7HomiRDFr+g==} dependencies: "@cosmjs/encoding": 0.36.0 "@cosmjs/math": 0.36.0 @@ -15876,45 +3690,29 @@ snapshots: "@noble/curves": 1.9.7 "@noble/hashes": 1.8.0 hash-wasm: 4.12.0 + dev: false - "@cosmjs/encoding@0.32.4": - dependencies: - base64-js: 1.5.1 - bech32: 1.1.4 - readonly-date: 1.0.0 - - "@cosmjs/encoding@0.36.0": + /@cosmjs/encoding@0.36.0: + resolution: {integrity: sha512-xFJNd1096EqNxTsdOJN+DODC5HxKmqY0L2iWEnvPFq9UD/W2olYnv0bxV0S+XTs5tF/8/NAZHU3KXxeHTZ97DA==} dependencies: base64-js: 1.5.1 bech32: 1.1.4 readonly-date: 1.0.0 + dev: false - "@cosmjs/json-rpc@0.32.4": - dependencies: - "@cosmjs/stream": 0.32.4 - xstream: 11.14.0 - - "@cosmjs/json-rpc@0.36.0": + /@cosmjs/json-rpc@0.36.0: + resolution: {integrity: sha512-7cGE8cBFGrtAHsadYWFOWv0bNaK0VPNzquzU/Naj+3twgnppaGbRBrTLw3iwhqrg+Cvb9KwSYPHzaUsavojUWQ==} dependencies: "@cosmjs/stream": 0.36.0 xstream: 11.14.0 + dev: false - "@cosmjs/math@0.32.4": - dependencies: - bn.js: 5.2.2 - - "@cosmjs/math@0.36.0": {} + /@cosmjs/math@0.36.0: + resolution: {integrity: sha512-vLXHInZA87QXgOxGJDc2nJa4/4oPFOdQtuxD6BL5xrYI1T0G/dk06hu4gXu4Tn3YuB8R5dWGS0u5AnlNv9LeYw==} + dev: false - "@cosmjs/proto-signing@0.32.4": - dependencies: - "@cosmjs/amino": 0.32.4 - "@cosmjs/crypto": 0.32.4 - "@cosmjs/encoding": 0.32.4 - "@cosmjs/math": 0.32.4 - "@cosmjs/utils": 0.32.4 - cosmjs-types: 0.9.0 - - "@cosmjs/proto-signing@0.36.0": + /@cosmjs/proto-signing@0.36.0: + resolution: {integrity: sha512-RoZOQGG9njlzArNeAfYYQ136tdi5hNBleC/r7V8HPkROpMfSuQZF3yP6ukBvt5KkNzNge4YZKqFkwINBR/Vyew==} dependencies: "@cosmjs/amino": 0.36.0 "@cosmjs/crypto": 0.36.0 @@ -15922,18 +3720,10 @@ snapshots: "@cosmjs/math": 0.36.0 "@cosmjs/utils": 0.36.0 cosmjs-types: 0.10.1 + dev: false - "@cosmjs/socket@0.32.4": - dependencies: - "@cosmjs/stream": 0.32.4 - isomorphic-ws: 4.0.1(ws@7.5.10) - ws: 7.5.10 - xstream: 11.14.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - "@cosmjs/socket@0.36.0": + /@cosmjs/socket@0.36.0: + resolution: {integrity: sha512-rAeGDyQjIFWsP6DPSTJKUP9RDW6ZM5Cm074xKG/0Tdghn0kkOaQCzwJru4SSPWi7MOlOkoZHyEMATQiNA/cQ6Q==} dependencies: "@cosmjs/stream": 0.36.0 isomorphic-ws: 4.0.1(ws@7.5.10) @@ -15942,25 +3732,10 @@ snapshots: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: false - "@cosmjs/stargate@0.32.4": - dependencies: - "@confio/ics23": 0.6.8 - "@cosmjs/amino": 0.32.4 - "@cosmjs/encoding": 0.32.4 - "@cosmjs/math": 0.32.4 - "@cosmjs/proto-signing": 0.32.4 - "@cosmjs/stream": 0.32.4 - "@cosmjs/tendermint-rpc": 0.32.4 - "@cosmjs/utils": 0.32.4 - cosmjs-types: 0.9.0 - xstream: 11.14.0 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - - "@cosmjs/stargate@0.36.0": + /@cosmjs/stargate@0.36.0: + resolution: {integrity: sha512-FMRPF72WyLXGTU8qWpN2ZoxOY4gfRmg7vZoO99Ru8Gt21GS95JYO+RJFTfYlP9pT7Ni6S74rxCPNqkeHMqKp6w==} dependencies: "@cosmjs/amino": 0.36.0 "@cosmjs/encoding": 0.36.0 @@ -15973,33 +3748,16 @@ snapshots: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: false - "@cosmjs/stream@0.32.4": - dependencies: - xstream: 11.14.0 - - "@cosmjs/stream@0.36.0": - dependencies: - xstream: 11.14.0 - - "@cosmjs/tendermint-rpc@0.32.4": + /@cosmjs/stream@0.36.0: + resolution: {integrity: sha512-gMezM+symoCWnJlrOJ5lxB+tVNUm9JUwFR3dpHzdccGTh1Sb7oVCf6VFias85O1j0fLkCIfQR2BI/RoX97+CGQ==} dependencies: - "@cosmjs/crypto": 0.32.4 - "@cosmjs/encoding": 0.32.4 - "@cosmjs/json-rpc": 0.32.4 - "@cosmjs/math": 0.32.4 - "@cosmjs/socket": 0.32.4 - "@cosmjs/stream": 0.32.4 - "@cosmjs/utils": 0.32.4 - axios: 1.11.0 - readonly-date: 1.0.0 xstream: 11.14.0 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate + dev: false - "@cosmjs/tendermint-rpc@0.36.0": + /@cosmjs/tendermint-rpc@0.36.0: + resolution: {integrity: sha512-dTh4L1RR22JszFbZqM3i0ITPTHhrs5mUqyyeP7lEebgtLrKgzCAqsWPnqfsC6ALFhMzbeApWebG2YR9W2W68zg==} dependencies: "@cosmjs/crypto": 0.36.0 "@cosmjs/encoding": 0.36.0 @@ -16013,24 +3771,32 @@ snapshots: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: false - "@cosmjs/utils@0.32.4": {} - - "@cosmjs/utils@0.36.0": {} + /@cosmjs/utils@0.36.0: + resolution: {integrity: sha512-QXyHnxDHdkj+qZZDk+CSOeEXpkPRBvMPKQ7EiEO7wuJQpMIlF3F4CSuEBuYPQOPRDP6qsKS+rj47pXoE2Kr4dw==} + dev: false - "@craftzdog/react-native-buffer@6.1.0(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)": + /@craftzdog/react-native-buffer@6.1.0(react-native@0.76.7)(react@18.3.1): + resolution: {integrity: sha512-lJXdjZ7fTllLbzDrwg/FrJLjQ5sBcAgwcqgAB6OPpXTHdCenEhHZblQpfmBLLe7/S7m0yKXL3kN3jpwOEkpjGg==} dependencies: ieee754: 1.2.1 - react-native-quick-base64: 2.2.1(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + react-native-quick-base64: 2.2.2(react-native@0.76.7)(react@18.3.1) transitivePeerDependencies: - react - react-native + dev: false - "@cspotcode/source-map-support@0.8.1": + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} dependencies: - "@jridgewell/trace-mapping": 0.3.9 + '@jridgewell/trace-mapping': 0.3.9 + dev: true - "@dotenvx/dotenvx@1.31.0": + /@dotenvx/dotenvx@1.31.0: + resolution: {integrity: sha512-GeDxvtjiRuoyWVU9nQneId879zIyNdL05bS7RKiqMkfBSKpHMWHLoRyRqjYWLaXmX/llKO1hTlqHDmatkQAjPA==} + hasBin: true dependencies: commander: 11.1.0 dotenv: 16.6.1 @@ -16041,179 +3807,691 @@ snapshots: object-treeify: 1.1.33 picomatch: 4.0.3 which: 4.0.0 + dev: true - "@ecies/ciphers@0.2.4(@noble/ciphers@1.3.0)": + /@ecies/ciphers@0.2.4(@noble/ciphers@1.3.0): + resolution: {integrity: sha512-t+iX+Wf5nRKyNzk8dviW3Ikb/280+aEJAnw9YXvCp2tYGPSkMki+NRY+8aNLmVFv3eNtMdvViPNOPxS8SZNP+w==} + engines: {bun: '>=1', deno: '>=2', node: '>=16'} + peerDependencies: + '@noble/ciphers': ^1.0.0 dependencies: - "@noble/ciphers": 1.3.0 + '@noble/ciphers': 1.3.0 + dev: true - "@emnapi/core@1.4.5": + /@emnapi/core@1.5.0: + resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} + requiresBuild: true dependencies: - "@emnapi/wasi-threads": 1.0.4 + '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 + dev: true optional: true - "@emnapi/runtime@1.4.5": + /@emnapi/runtime@1.5.0: + resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} + requiresBuild: true dependencies: tslib: 2.8.1 + dev: true optional: true - "@emnapi/wasi-threads@1.0.4": + /@emnapi/wasi-threads@1.1.0: + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + requiresBuild: true dependencies: tslib: 2.8.1 + dev: true + optional: true + + /@esbuild/aix-ppc64@0.21.5: + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/aix-ppc64@0.25.4: + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.21.5: + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.25.4: + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.21.5: + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.25.4: + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.21.5: + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.25.4: + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.21.5: + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.25.4: + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.21.5: + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.25.4: + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.21.5: + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.25.4: + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.21.5: + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.25.4: + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - "@esbuild/aix-ppc64@0.25.4": + /@esbuild/linux-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/android-arm64@0.17.19": + /@esbuild/linux-arm64@0.21.5: + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/android-arm64@0.25.4": + /@esbuild/linux-arm64@0.25.4: + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/android-arm@0.17.19": + /@esbuild/linux-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/android-arm@0.25.4": + /@esbuild/linux-arm@0.21.5: + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/android-x64@0.17.19": + /@esbuild/linux-arm@0.25.4: + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/android-x64@0.25.4": + /@esbuild/linux-ia32@0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/darwin-arm64@0.17.19": + /@esbuild/linux-ia32@0.21.5: + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/darwin-arm64@0.25.4": + /@esbuild/linux-ia32@0.25.4: + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/darwin-x64@0.17.19": + /@esbuild/linux-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/darwin-x64@0.25.4": + /@esbuild/linux-loong64@0.21.5: + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/freebsd-arm64@0.17.19": + /@esbuild/linux-loong64@0.25.4: + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/freebsd-arm64@0.25.4": + /@esbuild/linux-mips64el@0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/freebsd-x64@0.17.19": + /@esbuild/linux-mips64el@0.21.5: + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/freebsd-x64@0.25.4": + /@esbuild/linux-mips64el@0.25.4: + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-arm64@0.17.19": + /@esbuild/linux-ppc64@0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-arm64@0.25.4": + /@esbuild/linux-ppc64@0.21.5: + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-arm@0.17.19": + /@esbuild/linux-ppc64@0.25.4: + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-arm@0.25.4": + /@esbuild/linux-riscv64@0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-ia32@0.17.19": + /@esbuild/linux-riscv64@0.21.5: + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-ia32@0.25.4": + /@esbuild/linux-riscv64@0.25.4: + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-loong64@0.17.19": + /@esbuild/linux-s390x@0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-loong64@0.25.4": + /@esbuild/linux-s390x@0.21.5: + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-mips64el@0.17.19": + /@esbuild/linux-s390x@0.25.4: + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-mips64el@0.25.4": + /@esbuild/linux-x64@0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-ppc64@0.17.19": + /@esbuild/linux-x64@0.21.5: + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-ppc64@0.25.4": + /@esbuild/linux-x64@0.25.4: + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-riscv64@0.17.19": + /@esbuild/netbsd-arm64@0.25.4: + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-riscv64@0.25.4": + /@esbuild/netbsd-x64@0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-s390x@0.17.19": + /@esbuild/netbsd-x64@0.21.5: + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-s390x@0.25.4": + /@esbuild/netbsd-x64@0.25.4: + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-x64@0.17.19": + /@esbuild/openbsd-arm64@0.25.4: + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + requiresBuild: true + dev: true optional: true - "@esbuild/linux-x64@0.25.4": + /@esbuild/openbsd-x64@0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true optional: true - "@esbuild/netbsd-arm64@0.25.4": + /@esbuild/openbsd-x64@0.21.5: + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true optional: true - "@esbuild/netbsd-x64@0.17.19": + /@esbuild/openbsd-x64@0.25.4: + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true optional: true - "@esbuild/netbsd-x64@0.25.4": + /@esbuild/sunos-x64@0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true optional: true - "@esbuild/openbsd-arm64@0.25.4": + /@esbuild/sunos-x64@0.21.5: + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true optional: true - "@esbuild/openbsd-x64@0.17.19": + /@esbuild/sunos-x64@0.25.4: + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true optional: true - "@esbuild/openbsd-x64@0.25.4": + /@esbuild/win32-arm64@0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - "@esbuild/sunos-x64@0.17.19": + /@esbuild/win32-arm64@0.21.5: + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - "@esbuild/sunos-x64@0.25.4": + /@esbuild/win32-arm64@0.25.4: + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - "@esbuild/win32-arm64@0.17.19": + /@esbuild/win32-ia32@0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - "@esbuild/win32-arm64@0.25.4": + /@esbuild/win32-ia32@0.21.5: + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - "@esbuild/win32-ia32@0.17.19": + /@esbuild/win32-ia32@0.25.4: + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - "@esbuild/win32-ia32@0.25.4": + /@esbuild/win32-x64@0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - "@esbuild/win32-x64@0.17.19": + /@esbuild/win32-x64@0.21.5: + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - "@esbuild/win32-x64@0.25.4": + /@esbuild/win32-x64@0.25.4: + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - "@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)": + /@eslint-community/eslint-utils@4.9.0(eslint@8.57.1): + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 - "@eslint-community/regexpp@4.12.1": {} + /@eslint-community/regexpp@4.12.1: + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - "@eslint/eslintrc@2.1.4": + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.4.1 + debug: 4.4.3 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 @@ -16224,30 +4502,46 @@ snapshots: transitivePeerDependencies: - supports-color - "@eslint/js@8.57.1": {} + /@eslint/js@8.57.1: + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - "@expo/cli@0.24.20(graphql@16.11.0)": + /@expo/cli@54.0.6(expo@54.0.8)(react-native@0.76.7): + resolution: {integrity: sha512-BgxJshNqSODb4Rq4q4lHLBVWVL4683Q+PSJ2fd+m3D5Jqd8nu9zGvcq6I/H8AXV/Ux31eIuUgAojPCjW8LRyZA==} + hasBin: true + peerDependencies: + expo: '*' + expo-router: '*' + react-native: '*' + peerDependenciesMeta: + expo-router: + optional: true + react-native: + optional: true dependencies: - "@0no-co/graphql.web": 1.2.0(graphql@16.11.0) - "@babel/runtime": 7.28.3 - "@expo/code-signing-certificates": 0.0.5 - "@expo/config": 11.0.13 - "@expo/config-plugins": 10.1.2 - "@expo/devcert": 1.2.0 - "@expo/env": 1.0.7 - "@expo/image-utils": 0.7.6 - "@expo/json-file": 9.1.5 - "@expo/metro-config": 0.20.17 - "@expo/osascript": 2.2.5 - "@expo/package-manager": 1.8.6 - "@expo/plist": 0.3.5 - "@expo/prebuild-config": 9.0.11 - "@expo/spawn-async": 1.7.2 - "@expo/ws-tunnel": 1.0.6 - "@expo/xcpretty": 4.3.2 - "@react-native/dev-middleware": 0.79.5 - "@urql/core": 5.2.0(graphql@16.11.0) - "@urql/exchange-retry": 1.3.2(@urql/core@5.2.0(graphql@16.11.0)) + '@0no-co/graphql.web': 1.2.0 + '@expo/code-signing-certificates': 0.0.5 + '@expo/config': 12.0.9 + '@expo/config-plugins': 54.0.1 + '@expo/devcert': 1.2.0 + '@expo/env': 2.0.7 + '@expo/image-utils': 0.8.7 + '@expo/json-file': 10.0.7 + '@expo/mcp-tunnel': 0.0.7 + '@expo/metro': 0.1.1 + '@expo/metro-config': 54.0.3(expo@54.0.8) + '@expo/osascript': 2.3.7 + '@expo/package-manager': 1.9.8 + '@expo/plist': 0.4.7 + '@expo/prebuild-config': 54.0.3(expo@54.0.8) + '@expo/schema-utils': 0.1.7 + '@expo/server': 0.7.4 + '@expo/spawn-async': 1.7.2 + '@expo/ws-tunnel': 1.0.6 + '@expo/xcpretty': 4.3.2 + '@react-native/dev-middleware': 0.81.4 + '@urql/core': 5.2.0 + '@urql/exchange-retry': 1.3.2(@urql/core@5.2.0) accepts: 1.3.8 arg: 5.0.2 better-opn: 3.0.2 @@ -16257,8 +4551,9 @@ snapshots: ci-info: 3.9.0 compression: 1.8.1 connect: 3.7.0 - debug: 4.4.1 + debug: 4.4.3 env-editor: 0.4.2 + expo: 54.0.8(@babel/core@7.28.4)(react-native@0.76.7)(react@18.3.1) freeport-async: 2.0.0 getenv: 2.0.0 glob: 10.4.5 @@ -16273,6 +4568,7 @@ snapshots: progress: 2.0.3 prompts: 2.4.2 qrcode-terminal: 0.11.0 + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) require-from-string: 2.0.2 requireg: 0.2.2 resolve: 1.22.10 @@ -16290,24 +4586,29 @@ snapshots: wrap-ansi: 7.0.0 ws: 8.18.3 transitivePeerDependencies: + - '@modelcontextprotocol/sdk' - bufferutil - graphql - supports-color - utf-8-validate + dev: false - "@expo/code-signing-certificates@0.0.5": + /@expo/code-signing-certificates@0.0.5: + resolution: {integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==} dependencies: node-forge: 1.3.1 nullthrows: 1.1.1 + dev: false - "@expo/config-plugins@10.1.2": + /@expo/config-plugins@54.0.1: + resolution: {integrity: sha512-NyBChhiWFL6VqSgU+LzK4R1vC397tEG2XFewVt4oMr4Pnalq/mJxBANQrR+dyV1RHhSyhy06RNiJIkQyngVWeg==} dependencies: - "@expo/config-types": 53.0.5 - "@expo/json-file": 9.1.5 - "@expo/plist": 0.3.5 - "@expo/sdk-runtime-versions": 1.0.0 + '@expo/config-types': 54.0.8 + '@expo/json-file': 10.0.7 + '@expo/plist': 0.4.7 + '@expo/sdk-runtime-versions': 1.0.0 chalk: 4.1.2 - debug: 4.4.1 + debug: 4.4.3 getenv: 2.0.0 glob: 10.4.5 resolve-from: 5.0.0 @@ -16318,15 +4619,17 @@ snapshots: xml2js: 0.6.0 transitivePeerDependencies: - supports-color + dev: false - "@expo/config-plugins@9.0.17": + /@expo/config-plugins@9.0.17: + resolution: {integrity: sha512-m24F1COquwOm7PBl5wRbkT9P9DviCXe0D7S7nQsolfbhdCWuvMkfXeoWmgjtdhy7sDlOyIgBrAdnB6MfsWKqIg==} dependencies: "@expo/config-types": 52.0.5 "@expo/json-file": 9.0.2 "@expo/plist": 0.2.2 "@expo/sdk-runtime-versions": 1.0.0 chalk: 4.1.2 - debug: 4.4.1 + debug: 4.4.3 getenv: 1.0.0 glob: 10.4.5 resolve-from: 5.0.0 @@ -16337,12 +4640,18 @@ snapshots: xml2js: 0.6.0 transitivePeerDependencies: - supports-color + dev: false - "@expo/config-types@52.0.5": {} + /@expo/config-types@52.0.5: + resolution: {integrity: sha512-AMDeuDLHXXqd8W+0zSjIt7f37vUd/BP8p43k68NHpyAvQO+z8mbQZm3cNQVAMySeayK2XoPigAFB1JF2NFajaA==} + dev: false - "@expo/config-types@53.0.5": {} + /@expo/config-types@54.0.8: + resolution: {integrity: sha512-lyIn/x/Yz0SgHL7IGWtgTLg6TJWC9vL7489++0hzCHZ4iGjVcfZmPTUfiragZ3HycFFj899qN0jlhl49IHa94A==} + dev: false - "@expo/config@10.0.11": + /@expo/config@10.0.11: + resolution: {integrity: sha512-nociJ4zr/NmbVfMNe9j/+zRlt7wz/siISu7PjdWE4WE+elEGxWWxsGzltdJG0llzrM+khx8qUiFK5aiVcdMBww==} dependencies: "@babel/code-frame": 7.10.4 "@expo/config-plugins": 9.0.17 @@ -16359,13 +4668,15 @@ snapshots: sucrase: 3.35.0 transitivePeerDependencies: - supports-color + dev: false - "@expo/config@11.0.13": + /@expo/config@12.0.9: + resolution: {integrity: sha512-HiDVVaXYKY57+L1MxSF3TaYjX6zZlGBnuWnOKZG+7mtsLD+aNTtW4bZM0pZqZfoRumyOU0SfTCwT10BWtUUiJQ==} dependencies: - "@babel/code-frame": 7.10.4 - "@expo/config-plugins": 10.1.2 - "@expo/config-types": 53.0.5 - "@expo/json-file": 9.1.5 + '@babel/code-frame': 7.10.4 + '@expo/config-plugins': 54.0.1 + '@expo/config-types': 54.0.8 + '@expo/json-file': 10.0.7 deepmerge: 4.3.1 getenv: 2.0.0 glob: 10.4.5 @@ -16377,42 +4688,66 @@ snapshots: sucrase: 3.35.0 transitivePeerDependencies: - supports-color + dev: false - "@expo/devcert@1.2.0": + /@expo/devcert@1.2.0: + resolution: {integrity: sha512-Uilcv3xGELD5t/b0eM4cxBFEKQRIivB3v7i+VhWLV/gL98aw810unLKKJbGAxAIhY6Ipyz8ChWibFsKFXYwstA==} dependencies: "@expo/sudo-prompt": 9.3.2 debug: 3.2.7 glob: 10.4.5 transitivePeerDependencies: - supports-color + dev: false + + /@expo/devtools@0.1.7(react-native@0.76.7)(react@18.3.1): + resolution: {integrity: sha512-dfIa9qMyXN+0RfU6SN4rKeXZyzKWsnz6xBSDccjL4IRiE+fQ0t84zg0yxgN4t/WK2JU5v6v4fby7W7Crv9gJvA==} + peerDependencies: + react: '*' + react-native: '*' + peerDependenciesMeta: + react: + optional: true + react-native: + optional: true + dependencies: + chalk: 4.1.2 + react: 18.3.1 + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) + dev: false - "@expo/env@0.4.2": + /@expo/env@0.4.2: + resolution: {integrity: sha512-TgbCgvSk0Kq0e2fLoqHwEBL4M0ztFjnBEz0YCDm5boc1nvkV1VMuIMteVdeBwnTh8Z0oPJTwHCD49vhMEt1I6A==} dependencies: chalk: 4.1.2 - debug: 4.4.1 + debug: 4.4.3 dotenv: 16.4.7 dotenv-expand: 11.0.7 getenv: 1.0.0 transitivePeerDependencies: - supports-color + dev: false - "@expo/env@1.0.7": + /@expo/env@2.0.7: + resolution: {integrity: sha512-BNETbLEohk3HQ2LxwwezpG8pq+h7Fs7/vAMP3eAtFT1BCpprLYoBBFZH7gW4aqGfqOcVP4Lc91j014verrYNGg==} dependencies: chalk: 4.1.2 - debug: 4.4.1 + debug: 4.4.3 dotenv: 16.4.7 dotenv-expand: 11.0.7 getenv: 2.0.0 transitivePeerDependencies: - supports-color + dev: false - "@expo/fingerprint@0.13.4": + /@expo/fingerprint@0.15.1: + resolution: {integrity: sha512-U1S9DwiapCHQjHdHDDyO/oXsl/1oEHSHZRRkWDDrHgXRUDiAVIySw9Unvvcr118Ee6/x4NmKSZY1X0VagrqmFg==} + hasBin: true dependencies: "@expo/spawn-async": 1.7.2 arg: 5.0.2 chalk: 4.1.2 - debug: 4.4.1 - find-up: 5.0.0 + debug: 4.4.3 getenv: 2.0.0 glob: 10.4.5 ignore: 5.3.2 @@ -16422,8 +4757,10 @@ snapshots: semver: 7.7.2 transitivePeerDependencies: - supports-color + dev: false - "@expo/image-utils@0.7.6": + /@expo/image-utils@0.8.7: + resolution: {integrity: sha512-SXOww4Wq3RVXLyOaXiCCuQFguCDh8mmaHBv54h/R29wGl4jRY8GEyQEx8SypV/iHt1FbzsU/X3Qbcd9afm2W2w==} dependencies: "@expo/spawn-async": 1.7.2 chalk: 4.1.2 @@ -16431,252 +4768,508 @@ snapshots: jimp-compact: 0.16.1 parse-png: 2.1.0 resolve-from: 5.0.0 + resolve-global: 1.0.0 semver: 7.7.2 temp-dir: 2.0.0 unique-string: 2.0.0 + dev: false + + /@expo/json-file@10.0.7: + resolution: {integrity: sha512-z2OTC0XNO6riZu98EjdNHC05l51ySeTto6GP7oSQrCvQgG9ARBwD1YvMQaVZ9wU7p/4LzSf1O7tckL3B45fPpw==} + dependencies: + '@babel/code-frame': 7.10.4 + json5: 2.2.3 + dev: false - "@expo/json-file@9.0.2": + /@expo/json-file@9.0.2: + resolution: {integrity: sha512-yAznIUrybOIWp3Uax7yRflB0xsEpvIwIEqIjao9SGi2Gaa+N0OamWfe0fnXBSWF+2zzF4VvqwT4W5zwelchfgw==} dependencies: "@babel/code-frame": 7.10.4 json5: 2.2.3 write-file-atomic: 2.4.3 + dev: false - "@expo/json-file@9.1.5": + /@expo/json-file@9.1.5: + resolution: {integrity: sha512-prWBhLUlmcQtvN6Y7BpW2k9zXGd3ySa3R6rAguMJkp1z22nunLN64KYTUWfijFlprFoxm9r2VNnGkcbndAlgKA==} dependencies: "@babel/code-frame": 7.10.4 json5: 2.2.3 + dev: false - "@expo/metro-config@0.20.17": + /@expo/mcp-tunnel@0.0.7: + resolution: {integrity: sha512-ht8Q1nKtiHobZqkUqt/7awwjW2D59ardP6XDVmGceGjQtoZELVaJDHyMIX+aVG9SZ9aj8+uGlhQYeBi57SZPMA==} + peerDependencies: + '@modelcontextprotocol/sdk': ^1.13.2 + peerDependenciesMeta: + '@modelcontextprotocol/sdk': + optional: true dependencies: - "@babel/core": 7.28.3 - "@babel/generator": 7.28.3 - "@babel/parser": 7.28.3 - "@babel/types": 7.28.2 - "@expo/config": 11.0.13 - "@expo/env": 1.0.7 - "@expo/json-file": 9.1.5 - "@expo/spawn-async": 1.7.2 + ws: 8.18.3 + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@expo/metro-config@54.0.3(expo@54.0.8): + resolution: {integrity: sha512-TQ5MKSGFB6zJxi+Yr8VYXQFHzRXgvSJzNsHX1otTqnxjXbptwYiXhljAqGSjr3pByq4+sHX/GifMk6fGgAANmA==} + peerDependencies: + expo: '*' + peerDependenciesMeta: + expo: + optional: true + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.28.4 + '@babel/generator': 7.28.3 + '@expo/config': 12.0.9 + '@expo/env': 2.0.7 + '@expo/json-file': 10.0.7 + '@expo/metro': 0.1.1 + '@expo/spawn-async': 1.7.2 + browserslist: 4.26.2 chalk: 4.1.2 - debug: 4.4.1 + debug: 4.4.3 dotenv: 16.4.7 dotenv-expand: 11.0.7 + expo: 54.0.8(@babel/core@7.28.4)(react-native@0.76.7)(react@18.3.1) getenv: 2.0.0 glob: 10.4.5 + hermes-parser: 0.29.1 jsc-safe-url: 0.2.4 - lightningcss: 1.27.0 + lightningcss: 1.30.1 minimatch: 9.0.5 postcss: 8.4.49 resolve-from: 5.0.0 transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /@expo/metro@0.1.1: + resolution: {integrity: sha512-zvA9BE6myFoCxeiw/q3uE/kVkIwLTy27a+fDoEl7WQ7EvKfFeiXnRVhUplDMLGZIHH8VC38Gay6RBtVhnmOm5w==} + dependencies: + metro: 0.83.1 + metro-babel-transformer: 0.83.1 + metro-cache: 0.83.1 + metro-cache-key: 0.83.1 + metro-config: 0.83.1 + metro-core: 0.83.1 + metro-file-map: 0.83.1 + metro-resolver: 0.83.1 + metro-runtime: 0.83.1 + metro-source-map: 0.83.1 + metro-transform-plugins: 0.83.1 + metro-transform-worker: 0.83.1 + transitivePeerDependencies: + - bufferutil - supports-color + - utf-8-validate + dev: false - "@expo/osascript@2.2.5": + /@expo/osascript@2.3.7: + resolution: {integrity: sha512-IClSOXxR0YUFxIriUJVqyYki7lLMIHrrzOaP01yxAL1G8pj2DWV5eW1y5jSzIcIfSCNhtGsshGd1tU/AYup5iQ==} + engines: {node: '>=12'} dependencies: "@expo/spawn-async": 1.7.2 exec-async: 2.2.0 + dev: false - "@expo/package-manager@1.8.6": + /@expo/package-manager@1.9.8: + resolution: {integrity: sha512-4/I6OWquKXYnzo38pkISHCOCOXxfeEmu4uDoERq1Ei/9Ur/s9y3kLbAamEkitUkDC7gHk1INxRWEfFNzGbmOrA==} dependencies: - "@expo/json-file": 9.1.5 - "@expo/spawn-async": 1.7.2 + '@expo/json-file': 10.0.7 + '@expo/spawn-async': 1.7.2 chalk: 4.1.2 npm-package-arg: 11.0.3 ora: 3.4.0 resolve-workspace-root: 2.0.0 + dev: false - "@expo/plist@0.2.2": + /@expo/plist@0.2.2: + resolution: {integrity: sha512-ZZGvTO6vEWq02UAPs3LIdja+HRO18+LRI5QuDl6Hs3Ps7KX7xU6Y6kjahWKY37Rx2YjNpX07dGpBFzzC+vKa2g==} dependencies: "@xmldom/xmldom": 0.7.13 base64-js: 1.5.1 xmlbuilder: 14.0.0 + dev: false - "@expo/plist@0.3.5": + /@expo/plist@0.4.7: + resolution: {integrity: sha512-dGxqHPvCZKeRKDU1sJZMmuyVtcASuSYh1LPFVaM1DuffqPL36n6FMEL0iUqq2Tx3xhWk8wCnWl34IKplUjJDdA==} dependencies: "@xmldom/xmldom": 0.8.11 base64-js: 1.5.1 xmlbuilder: 15.1.1 + dev: false - "@expo/prebuild-config@9.0.11": - dependencies: - "@expo/config": 11.0.13 - "@expo/config-plugins": 10.1.2 - "@expo/config-types": 53.0.5 - "@expo/image-utils": 0.7.6 - "@expo/json-file": 9.1.5 - "@react-native/normalize-colors": 0.79.5 - debug: 4.4.1 + /@expo/prebuild-config@54.0.3(expo@54.0.8): + resolution: {integrity: sha512-okf6Umaz1VniKmm+pA37QHBzB9XlRHvO1Qh3VbUezy07LTkz87kXUW7uLMmrA319WLavWSVORTXeR0jBRihObA==} + peerDependencies: + expo: '*' + dependencies: + '@expo/config': 12.0.9 + '@expo/config-plugins': 54.0.1 + '@expo/config-types': 54.0.8 + '@expo/image-utils': 0.8.7 + '@expo/json-file': 10.0.7 + '@react-native/normalize-colors': 0.81.4 + debug: 4.4.3 + expo: 54.0.8(@babel/core@7.28.4)(react-native@0.76.7)(react@18.3.1) resolve-from: 5.0.0 semver: 7.7.2 xml2js: 0.6.0 transitivePeerDependencies: - supports-color + dev: false + + /@expo/schema-utils@0.1.7: + resolution: {integrity: sha512-jWHoSuwRb5ZczjahrychMJ3GWZu54jK9ulNdh1d4OzAEq672K9E5yOlnlBsfIHWHGzUAT+0CL7Yt1INiXTz68g==} + dev: false - "@expo/sdk-runtime-versions@1.0.0": {} + /@expo/sdk-runtime-versions@1.0.0: + resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} + dev: false + + /@expo/server@0.7.4: + resolution: {integrity: sha512-8bfRzL7h1Qgrmf3auR71sPAcAuxnmNkRJs+8enL8vZi2+hihevLhrayDu7P0A/XGEq7wySAGvBBFfIB00Et/AA==} + engines: {node: '>=20.16.0'} + dependencies: + abort-controller: 3.0.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + dev: false - "@expo/spawn-async@1.7.2": + /@expo/spawn-async@1.7.2: + resolution: {integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==} + engines: {node: '>=12'} dependencies: cross-spawn: 7.0.6 + dev: false - "@expo/sudo-prompt@9.3.2": {} + /@expo/sudo-prompt@9.3.2: + resolution: {integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==} + dev: false - "@expo/vector-icons@14.1.0(expo-font@13.3.2(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)": + /@expo/vector-icons@15.0.2(expo-font@14.0.8)(react-native@0.76.7)(react@18.3.1): + resolution: {integrity: sha512-IiBjg7ZikueuHNf40wSGCf0zS73a3guJLdZzKnDUxsauB8VWPLMeWnRIupc+7cFhLUkqyvyo0jLNlcxG5xPOuQ==} + peerDependencies: + expo-font: '>=14.0.4' + react: '*' + react-native: '*' dependencies: - expo-font: 13.3.2(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react@18.3.1) + expo-font: 14.0.8(expo@54.0.8)(react-native@0.76.7)(react@18.3.1) react: 18.3.1 - react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) + dev: false - "@expo/ws-tunnel@1.0.6": {} + /@expo/ws-tunnel@1.0.6: + resolution: {integrity: sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==} + dev: false - "@expo/xcpretty@4.3.2": + /@expo/xcpretty@4.3.2: + resolution: {integrity: sha512-ReZxZ8pdnoI3tP/dNnJdnmAk7uLT4FjsKDGW7YeDdvdOMz2XCQSmSCM9IWlrXuWtMF9zeSB6WJtEhCQ41gQOfw==} + hasBin: true dependencies: "@babel/code-frame": 7.10.4 chalk: 4.1.2 find-up: 5.0.0 js-yaml: 4.1.0 + dev: false - "@fastify/busboy@2.1.1": {} - - "@floating-ui/core@1.7.3": + /@floating-ui/core@1.7.3: + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} dependencies: - "@floating-ui/utils": 0.2.10 + '@floating-ui/utils': 0.2.10 + dev: false - "@floating-ui/dom@1.7.3": + /@floating-ui/dom@1.7.4: + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} dependencies: - "@floating-ui/core": 1.7.3 - "@floating-ui/utils": 0.2.10 + '@floating-ui/core': 1.7.3 + '@floating-ui/utils': 0.2.10 + dev: false - "@floating-ui/react-dom@2.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + /@floating-ui/react-dom@2.1.6(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' dependencies: - "@floating-ui/dom": 1.7.3 + '@floating-ui/dom': 1.7.4 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + dev: false - "@floating-ui/utils@0.2.10": {} + /@floating-ui/utils@0.2.10: + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + dev: false - "@graphql-typed-document-node/core@3.2.0(graphql@16.11.0)": - dependencies: - graphql: 16.11.0 + /@github/webauthn-json@2.1.1: + resolution: {integrity: sha512-XrftRn4z75SnaJOmZQbt7Mk+IIjqVHw+glDGOxuHwXkZBZh/MBoRS7MHjSZMDaLhT4RjN2VqiEU7EOYleuJWSQ==} + deprecated: 'Deprecated: Modern browsers support built-in WebAuthn JSON methods. Please use native browser methods instead. For more information, visit https://github.com/github/webauthn-json' + hasBin: true + dev: false - "@heroicons/react@2.2.0(react@18.3.1)": + /@heroicons/react@2.2.0(react@18.3.1): + resolution: {integrity: sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==} + peerDependencies: + react: '>= 16 || ^19.0.0-rc' dependencies: react: 18.3.1 + dev: false - "@humanwhocodes/config-array@0.13.0": + /@humanwhocodes/config-array@0.13.0: + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead dependencies: - "@humanwhocodes/object-schema": 2.0.3 - debug: 4.4.1 + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.3 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - "@humanwhocodes/module-importer@1.0.1": {} + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} - "@humanwhocodes/object-schema@2.0.3": {} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead - "@img/sharp-darwin-arm64@0.33.5": + /@img/sharp-darwin-arm64@0.33.5: + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + requiresBuild: true optionalDependencies: - "@img/sharp-libvips-darwin-arm64": 1.0.4 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + dev: true optional: true - "@img/sharp-darwin-x64@0.33.5": + /@img/sharp-darwin-x64@0.33.5: + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + requiresBuild: true optionalDependencies: - "@img/sharp-libvips-darwin-x64": 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + dev: true optional: true - "@img/sharp-libvips-darwin-arm64@1.0.4": + /@img/sharp-libvips-darwin-arm64@1.0.4: + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true - "@img/sharp-libvips-darwin-x64@1.0.4": + /@img/sharp-libvips-darwin-x64@1.0.4: + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - "@img/sharp-libvips-linux-arm64@1.0.4": + /@img/sharp-libvips-linux-arm64@1.0.4: + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@img/sharp-libvips-linux-arm@1.0.5": + /@img/sharp-libvips-linux-arm@1.0.5: + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true - "@img/sharp-libvips-linux-s390x@1.0.4": + /@img/sharp-libvips-linux-s390x@1.0.4: + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true optional: true - "@img/sharp-libvips-linux-x64@1.0.4": + /@img/sharp-libvips-linux-x64@1.0.4: + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@img/sharp-libvips-linuxmusl-arm64@1.0.4": + /@img/sharp-libvips-linuxmusl-arm64@1.0.4: + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@img/sharp-libvips-linuxmusl-x64@1.0.4": + /@img/sharp-libvips-linuxmusl-x64@1.0.4: + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@img/sharp-linux-arm64@0.33.5": + /@img/sharp-linux-arm64@0.33.5: + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + requiresBuild: true optionalDependencies: - "@img/sharp-libvips-linux-arm64": 1.0.4 + '@img/sharp-libvips-linux-arm64': 1.0.4 + dev: true optional: true - "@img/sharp-linux-arm@0.33.5": + /@img/sharp-linux-arm@0.33.5: + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + requiresBuild: true optionalDependencies: - "@img/sharp-libvips-linux-arm": 1.0.5 + '@img/sharp-libvips-linux-arm': 1.0.5 + dev: true optional: true - "@img/sharp-linux-s390x@0.33.5": + /@img/sharp-linux-s390x@0.33.5: + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + requiresBuild: true optionalDependencies: - "@img/sharp-libvips-linux-s390x": 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + dev: true optional: true - "@img/sharp-linux-x64@0.33.5": + /@img/sharp-linux-x64@0.33.5: + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + requiresBuild: true optionalDependencies: - "@img/sharp-libvips-linux-x64": 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + dev: true optional: true - "@img/sharp-linuxmusl-arm64@0.33.5": + /@img/sharp-linuxmusl-arm64@0.33.5: + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + requiresBuild: true optionalDependencies: - "@img/sharp-libvips-linuxmusl-arm64": 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + dev: true optional: true - "@img/sharp-linuxmusl-x64@0.33.5": + /@img/sharp-linuxmusl-x64@0.33.5: + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + requiresBuild: true optionalDependencies: - "@img/sharp-libvips-linuxmusl-x64": 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + dev: true optional: true - "@img/sharp-wasm32@0.33.5": + /@img/sharp-wasm32@0.33.5: + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + requiresBuild: true dependencies: - "@emnapi/runtime": 1.4.5 + '@emnapi/runtime': 1.5.0 + dev: true optional: true - "@img/sharp-win32-ia32@0.33.5": + /@img/sharp-win32-ia32@0.33.5: + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - "@img/sharp-win32-x64@0.33.5": + /@img/sharp-win32-x64@0.33.5: + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - "@inquirer/external-editor@1.0.1(@types/node@20.19.11)": + /@inquirer/external-editor@1.0.2: + resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true dependencies: chardet: 2.1.0 - iconv-lite: 0.6.3 - optionalDependencies: - "@types/node": 20.19.11 + iconv-lite: 0.7.0 + dev: false - "@isaacs/balanced-match@4.0.1": {} + /@isaacs/balanced-match@4.0.1: + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + dev: true - "@isaacs/brace-expansion@5.0.0": + /@isaacs/brace-expansion@5.0.0: + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} dependencies: - "@isaacs/balanced-match": 4.0.1 + '@isaacs/balanced-match': 4.0.1 + dev: true - "@isaacs/cliui@8.0.2": + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} dependencies: string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.2 + strip-ansi-cjs: /strip-ansi@6.0.1 wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 - "@isaacs/fs-minipass@4.0.1": + /@isaacs/fs-minipass@4.0.1: + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} dependencies: minipass: 7.1.2 + dev: false - "@isaacs/ttlcache@1.4.1": {} + /@isaacs/ttlcache@1.4.1: + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} - "@istanbuljs/load-nyc-config@1.1.0": + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} dependencies: camelcase: 5.3.1 find-up: 4.1.0 @@ -16684,32 +5277,44 @@ snapshots: js-yaml: 3.14.1 resolve-from: 5.0.0 - "@istanbuljs/schema@0.1.3": {} + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} - "@jest/console@29.7.0": + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/types': 29.6.3 + '@types/node': 20.19.16 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 + dev: true - "@jest/core@29.7.0(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2))": + /@jest/core@29.7.0(ts-node@10.9.2): + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - "@jest/console": 29.7.0 - "@jest/reporters": 29.7.0 - "@jest/test-result": 29.7.0 - "@jest/transform": 29.7.0 - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.16 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) + jest-config: 29.7.0(@types/node@20.19.16)(ts-node@10.9.2) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -16729,39 +5334,54 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + dev: true - "@jest/create-cache-key-function@29.7.0": + /@jest/create-cache-key-function@29.7.0: + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: "@jest/types": 29.6.3 - "@jest/environment@29.7.0": + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/fake-timers": 29.7.0 - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.16 jest-mock: 29.7.0 - "@jest/expect-utils@29.7.0": + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 + dev: true - "@jest/expect@29.7.0": + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: expect: 29.7.0 jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color + dev: true - "@jest/fake-timers@29.7.0": + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/types": 29.6.3 - "@sinonjs/fake-timers": 10.3.0 - "@types/node": 20.19.11 + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.19.16 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 - "@jest/globals@29.7.0": + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: "@jest/environment": 29.7.0 "@jest/expect": 29.7.0 @@ -16769,16 +5389,24 @@ snapshots: jest-mock: 29.7.0 transitivePeerDependencies: - supports-color + dev: true - "@jest/reporters@29.7.0": + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - "@bcoe/v8-coverage": 0.2.3 - "@jest/console": 29.7.0 - "@jest/test-result": 29.7.0 - "@jest/transform": 29.7.0 - "@jest/types": 29.6.3 - "@jridgewell/trace-mapping": 0.3.30 - "@types/node": 20.19.11 + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.31 + '@types/node': 20.19.16 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -16798,36 +5426,50 @@ snapshots: v8-to-istanbul: 9.3.0 transitivePeerDependencies: - supports-color + dev: true - "@jest/schemas@29.6.3": + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: "@sinclair/typebox": 0.27.8 - "@jest/source-map@29.6.3": + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jridgewell/trace-mapping": 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 callsites: 3.1.0 graceful-fs: 4.2.11 + dev: true - "@jest/test-result@29.7.0": + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: "@jest/console": 29.7.0 "@jest/types": 29.6.3 "@types/istanbul-lib-coverage": 2.0.6 collect-v8-coverage: 1.0.2 + dev: true - "@jest/test-sequencer@29.7.0": + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: "@jest/test-result": 29.7.0 graceful-fs: 4.2.11 jest-haste-map: 29.7.0 slash: 3.0.0 + dev: true - "@jest/transform@29.7.0": + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@babel/core": 7.28.3 - "@jest/types": 29.6.3 - "@jridgewell/trace-mapping": 0.3.30 + '@babel/core': 7.28.4 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.31 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -16843,162 +5485,277 @@ snapshots: transitivePeerDependencies: - supports-color - "@jest/types@29.6.3": + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/schemas": 29.6.3 - "@types/istanbul-lib-coverage": 2.0.6 - "@types/istanbul-reports": 3.0.4 - "@types/node": 20.19.11 - "@types/yargs": 17.0.33 + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.19.16 + '@types/yargs': 17.0.33 chalk: 4.1.2 - "@jridgewell/gen-mapping@0.3.13": + /@jridgewell/gen-mapping@0.3.13: + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} dependencies: - "@jridgewell/sourcemap-codec": 1.5.5 - "@jridgewell/trace-mapping": 0.3.30 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + /@jridgewell/remapping@2.3.5: + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - "@jridgewell/resolve-uri@3.1.2": {} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} - "@jridgewell/source-map@0.3.11": + /@jridgewell/source-map@0.3.11: + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} dependencies: - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/trace-mapping": 0.3.30 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - "@jridgewell/sourcemap-codec@1.5.5": {} + /@jridgewell/sourcemap-codec@1.5.5: + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - "@jridgewell/trace-mapping@0.3.30": + /@jridgewell/trace-mapping@0.3.31: + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} dependencies: "@jridgewell/resolve-uri": 3.1.2 "@jridgewell/sourcemap-codec": 1.5.5 - "@jridgewell/trace-mapping@0.3.9": + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 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 + dev: true - "@manypkg/find-root@1.1.0": + /@manypkg/find-root@1.1.0: + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - "@babel/runtime": 7.28.3 - "@types/node": 12.20.55 + '@babel/runtime': 7.28.4 + '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 + dev: false - "@manypkg/get-packages@1.1.3": + /@manypkg/get-packages@1.1.3: + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - "@babel/runtime": 7.28.3 - "@changesets/types": 4.1.0 - "@manypkg/find-root": 1.1.0 + '@babel/runtime': 7.28.4 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 globby: 11.1.0 read-yaml-file: 1.1.0 + dev: false - "@microsoft/tsdoc-config@0.16.2": + /@microsoft/tsdoc-config@0.16.2: + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} dependencies: "@microsoft/tsdoc": 0.14.2 ajv: 6.12.6 jju: 1.4.0 resolve: 1.19.0 + dev: true - "@microsoft/tsdoc@0.14.2": {} + /@microsoft/tsdoc@0.14.2: + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + dev: true - "@napi-rs/wasm-runtime@0.2.12": + /@napi-rs/wasm-runtime@0.2.12: + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + requiresBuild: true dependencies: - "@emnapi/core": 1.4.5 - "@emnapi/runtime": 1.4.5 - "@tybys/wasm-util": 0.10.0 + '@emnapi/core': 1.5.0 + '@emnapi/runtime': 1.5.0 + '@tybys/wasm-util': 0.10.1 + dev: true optional: true - "@next/env@14.2.31": {} + /@next/env@14.2.32: + resolution: {integrity: sha512-n9mQdigI6iZ/DF6pCTwMKeWgF2e8lg7qgt5M7HXMLtyhZYMnf/u905M18sSpPmHL9MKp9JHo56C6jrD2EvWxng==} + dev: false - "@next/eslint-plugin-next@13.5.11": + /@next/eslint-plugin-next@13.5.11: + resolution: {integrity: sha512-0qjDhes9UTSxirt/dYzrv20hs8SUhcIOvlEioj5+XucVrBHihnAk6Om7Vzk+VZ2nRE7tcShm/6lH1xSkJ3XMpg==} dependencies: glob: 7.1.7 + dev: true - "@next/eslint-plugin-next@14.0.4": + /@next/eslint-plugin-next@14.0.4: + resolution: {integrity: sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==} dependencies: glob: 7.1.7 + dev: true - "@next/swc-darwin-arm64@14.2.31": + /@next/swc-darwin-arm64@14.2.32: + resolution: {integrity: sha512-osHXveM70zC+ilfuFa/2W6a1XQxJTvEhzEycnjUaVE8kpUS09lDpiDDX2YLdyFCzoUbvbo5r0X1Kp4MllIOShw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false optional: true - "@next/swc-darwin-x64@14.2.31": + /@next/swc-darwin-x64@14.2.32: + resolution: {integrity: sha512-P9NpCAJuOiaHHpqtrCNncjqtSBi1f6QUdHK/+dNabBIXB2RUFWL19TY1Hkhu74OvyNQEYEzzMJCMQk5agjw1Qg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true - "@next/swc-linux-arm64-gnu@14.2.31": + /@next/swc-linux-arm64-gnu@14.2.32: + resolution: {integrity: sha512-v7JaO0oXXt6d+cFjrrKqYnR2ubrD+JYP7nQVRZgeo5uNE5hkCpWnHmXm9vy3g6foMO8SPwL0P3MPw1c+BjbAzA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - "@next/swc-linux-arm64-musl@14.2.31": + /@next/swc-linux-arm64-musl@14.2.32: + resolution: {integrity: sha512-tA6sIKShXtSJBTH88i0DRd6I9n3ZTirmwpwAqH5zdJoQF7/wlJXR8DkPmKwYl5mFWhEKr5IIa3LfpMW9RRwKmQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - "@next/swc-linux-x64-gnu@14.2.31": + /@next/swc-linux-x64-gnu@14.2.32: + resolution: {integrity: sha512-7S1GY4TdnlGVIdeXXKQdDkfDysoIVFMD0lJuVVMeb3eoVjrknQ0JNN7wFlhCvea0hEk0Sd4D1hedVChDKfV2jw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - "@next/swc-linux-x64-musl@14.2.31": + /@next/swc-linux-x64-musl@14.2.32: + resolution: {integrity: sha512-OHHC81P4tirVa6Awk6eCQ6RBfWl8HpFsZtfEkMpJ5GjPsJ3nhPe6wKAJUZ/piC8sszUkAgv3fLflgzPStIwfWg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - "@next/swc-win32-arm64-msvc@14.2.31": + /@next/swc-win32-arm64-msvc@14.2.32: + resolution: {integrity: sha512-rORQjXsAFeX6TLYJrCG5yoIDj+NKq31Rqwn8Wpn/bkPNy5rTHvOXkW8mLFonItS7QC6M+1JIIcLe+vOCTOYpvg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false optional: true - "@next/swc-win32-ia32-msvc@14.2.31": + /@next/swc-win32-ia32-msvc@14.2.32: + resolution: {integrity: sha512-jHUeDPVHrgFltqoAqDB6g6OStNnFxnc7Aks3p0KE0FbwAvRg6qWKYF5mSTdCTxA3axoSAUwxYdILzXJfUwlHhA==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false optional: true - "@next/swc-win32-x64-msvc@14.2.31": + /@next/swc-win32-x64-msvc@14.2.32: + resolution: {integrity: sha512-2N0lSoU4GjfLSO50wvKpMQgKd4HdI2UHEhQPPPnlgfBJlOgJxkjpkYBqzk08f1gItBB6xF/n+ykso2hgxuydsA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false optional: true - "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} dependencies: eslint-scope: 5.1.1 + dev: true - "@noble/ciphers@1.3.0": {} + /@noble/ciphers@1.3.0: + resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} + engines: {node: ^14.21.3 || >=16} - "@noble/curves@1.9.7": + /@noble/curves@1.9.7: + resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} + engines: {node: ^14.21.3 || >=16} dependencies: "@noble/hashes": 1.8.0 - "@noble/hashes@1.8.0": {} + /@noble/hashes@1.8.0: + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} - "@node-minify/core@8.0.6": + /@node-minify/core@8.0.6: + resolution: {integrity: sha512-/vxN46ieWDLU67CmgbArEvOb41zlYFOkOtr9QW9CnTrBLuTyGgkyNWC2y5+khvRw3Br58p2B5ZVSx/PxCTru6g==} + engines: {node: '>=16.0.0'} dependencies: "@node-minify/utils": 8.0.6 glob: 9.3.5 mkdirp: 1.0.4 + dev: true - "@node-minify/terser@8.0.6": + /@node-minify/terser@8.0.6: + resolution: {integrity: sha512-grQ1ipham743ch2c3++C8Isk6toJnxJSyDiwUI/IWUCh4CZFD6aYVw6UAY40IpCnjrq5aXGwiv5OZJn6Pr0hvg==} + engines: {node: '>=16.0.0'} dependencies: "@node-minify/utils": 8.0.6 terser: 5.16.9 + dev: true - "@node-minify/utils@8.0.6": + /@node-minify/utils@8.0.6: + resolution: {integrity: sha512-csY4qcR7jUwiZmkreNTJhcypQfts2aY2CK+a+rXgXUImZiZiySh0FvwHjRnlqWKvg+y6ae9lHFzDRjBTmqlTIQ==} + engines: {node: '>=16.0.0'} dependencies: gzip-size: 6.0.0 + dev: true - "@nodelib/fs.scandir@2.1.5": + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} dependencies: "@nodelib/fs.stat": 2.0.5 run-parallel: 1.2.0 - "@nodelib/fs.stat@2.0.5": {} + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} - "@nodelib/fs.walk@1.2.8": + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: "@nodelib/fs.scandir": 2.1.5 fastq: 1.19.1 - "@nolyfill/is-core-module@1.0.39": {} + /@nolyfill/is-core-module@1.0.39: + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + dev: true - "@opennextjs/aws@3.7.6": + /@opennextjs/aws@3.7.6: + resolution: {integrity: sha512-l4UGkmaZaAjWER+PuZ/zNziMnrbf6oA9B1RUDKcyKsX+hEES1b7h6kLgpo4a4maf01M+k0yJUZQyF4sf+vI+Iw==} + hasBin: true dependencies: - "@ast-grep/napi": 0.35.0 - "@aws-sdk/client-cloudfront": 3.398.0 - "@aws-sdk/client-dynamodb": 3.868.0 - "@aws-sdk/client-lambda": 3.865.0 - "@aws-sdk/client-s3": 3.864.0 - "@aws-sdk/client-sqs": 3.864.0 - "@node-minify/core": 8.0.6 - "@node-minify/terser": 8.0.6 - "@tsconfig/node18": 1.0.3 + '@ast-grep/napi': 0.35.0 + '@aws-sdk/client-cloudfront': 3.398.0 + '@aws-sdk/client-dynamodb': 3.890.0 + '@aws-sdk/client-lambda': 3.890.0 + '@aws-sdk/client-s3': 3.890.0 + '@aws-sdk/client-sqs': 3.890.0 + '@node-minify/core': 8.0.6 + '@node-minify/terser': 8.0.6 + '@tsconfig/node18': 1.0.3 aws4fetch: 1.0.20 - chalk: 5.6.0 + chalk: 5.6.2 cookie: 1.0.2 esbuild: 0.25.4 express: 5.0.1 @@ -17008,8 +5765,13 @@ snapshots: transitivePeerDependencies: - aws-crt - supports-color + dev: true - "@opennextjs/cloudflare@1.7.1(wrangler@4.33.2)": + /@opennextjs/cloudflare@1.8.2(wrangler@4.37.1): + resolution: {integrity: sha512-Og2UvU1EEkQuxK7b+FlJU0zoJKQTIAw85bHo/JGEkXK0hA4MABkb/deuido785yXd91JQU7ayGB3Ql9Cs6jwSQ==} + hasBin: true + peerDependencies: + wrangler: ^4.24.4 dependencies: "@dotenvx/dotenvx": 1.31.0 "@opennextjs/aws": 3.7.6 @@ -17017,423 +5779,693 @@ snapshots: enquirer: 2.4.1 glob: 11.0.3 ts-tqdm: 0.8.6 - wrangler: 4.33.2 + wrangler: 4.37.1 yargs: 18.0.0 transitivePeerDependencies: - aws-crt - encoding - supports-color + dev: true - "@pkgjs/parseargs@0.11.0": + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true optional: true - "@pkgr/core@0.2.9": {} + /@pkgr/core@0.2.9: + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dev: true - "@poppinss/colors@4.1.5": + /@poppinss/colors@4.1.5: + resolution: {integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==} dependencies: kleur: 4.1.5 + dev: true - "@poppinss/dumper@0.6.4": + /@poppinss/dumper@0.6.4: + resolution: {integrity: sha512-iG0TIdqv8xJ3Lt9O8DrPRxw1MRLjNpoqiSGU03P/wNLP/s0ra0udPJ1J2Tx5M0J3H/cVyEgpbn8xUKRY9j59kQ==} dependencies: - "@poppinss/colors": 4.1.5 - "@sindresorhus/is": 7.0.2 - supports-color: 10.2.0 + '@poppinss/colors': 4.1.5 + '@sindresorhus/is': 7.1.0 + supports-color: 10.2.2 + dev: true - "@poppinss/exception@1.2.2": {} + /@poppinss/exception@1.2.2: + resolution: {integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==} + dev: true - "@protobuf-ts/runtime@2.11.1": {} + /@protobuf-ts/runtime@2.11.1: + resolution: {integrity: sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ==} + dev: false - "@protobufjs/aspromise@1.1.2": {} + /@protobufjs/aspromise@1.1.2: + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + dev: false - "@protobufjs/base64@1.1.2": {} + /@protobufjs/base64@1.1.2: + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + dev: false - "@protobufjs/codegen@2.0.4": {} + /@protobufjs/codegen@2.0.4: + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + dev: false - "@protobufjs/eventemitter@1.1.0": {} + /@protobufjs/eventemitter@1.1.0: + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + dev: false - "@protobufjs/fetch@1.1.0": + /@protobufjs/fetch@1.1.0: + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} dependencies: - "@protobufjs/aspromise": 1.1.2 - "@protobufjs/inquire": 1.1.0 + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + dev: false - "@protobufjs/float@1.0.2": {} + /@protobufjs/float@1.0.2: + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + dev: false - "@protobufjs/inquire@1.1.0": {} + /@protobufjs/inquire@1.1.0: + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + dev: false - "@protobufjs/path@1.1.2": {} + /@protobufjs/path@1.1.2: + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + dev: false - "@protobufjs/pool@1.1.0": {} + /@protobufjs/pool@1.1.0: + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + dev: false - "@protobufjs/utf8@1.1.0": {} + /@protobufjs/utf8@1.1.0: + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + dev: false - "@radix-ui/primitive@1.1.3": {} + /@radix-ui/primitive@1.1.3: + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + dev: false - "@radix-ui/react-arrow@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + /@radix-ui/react-arrow@1.1.7(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + peerDependencies: + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + dev: false - "@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.23)(react@18.3.1)": + /@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.24 react: 18.3.1 - optionalDependencies: - "@types/react": 18.3.23 + dev: false - "@radix-ui/react-context@1.1.2(@types/react@18.3.23)(react@18.3.1)": + /@radix-ui/react-context@1.1.2(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.24 react: 18.3.1 - optionalDependencies: - "@types/react": 18.3.23 - - "@radix-ui/react-dialog@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": - dependencies: - "@radix-ui/primitive": 1.1.3 - "@radix-ui/react-compose-refs": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-context": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-dismissable-layer": 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-focus-guards": 1.1.3(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-focus-scope": 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-id": 1.1.1(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-portal": 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-presence": 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-slot": 1.2.3(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@18.3.23)(react@18.3.1) + dev: false + + /@radix-ui/react-dialog@1.1.15(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} + peerDependencies: + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.24)(react@18.3.1) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) aria-hidden: 1.2.6 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.7.1(@types/react@18.3.23)(react@18.3.1) - optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + react-remove-scroll: 2.7.1(@types/react@18.3.24)(react@18.3.1) + dev: false - "@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + /@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} + peerDependencies: + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - "@radix-ui/primitive": 1.1.3 - "@radix-ui/react-compose-refs": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-escape-keydown": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + dev: false - "@radix-ui/react-focus-guards@1.1.3(@types/react@18.3.23)(react@18.3.1)": + /@radix-ui/react-focus-guards@1.1.3(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.24 react: 18.3.1 - optionalDependencies: - "@types/react": 18.3.23 + dev: false - "@radix-ui/react-focus-scope@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + /@radix-ui/react-focus-scope@1.1.7(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} + peerDependencies: + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - "@radix-ui/react-compose-refs": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + dev: false - "@radix-ui/react-id@1.1.1(@types/react@18.3.23)(react@18.3.1)": + /@radix-ui/react-id@1.1.1(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@types/react': 18.3.24 react: 18.3.1 - optionalDependencies: - "@types/react": 18.3.23 - - "@radix-ui/react-popover@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": - dependencies: - "@radix-ui/primitive": 1.1.3 - "@radix-ui/react-compose-refs": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-context": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-dismissable-layer": 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-focus-guards": 1.1.3(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-focus-scope": 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-id": 1.1.1(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-popper": 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-portal": 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-presence": 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-slot": 1.2.3(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-controllable-state": 1.2.2(@types/react@18.3.23)(react@18.3.1) + dev: false + + /@radix-ui/react-popover@1.1.15(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==} + peerDependencies: + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.24)(react@18.3.1) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) aria-hidden: 1.2.6 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.7.1(@types/react@18.3.23)(react@18.3.1) - optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) - - "@radix-ui/react-popper@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": - dependencies: - "@floating-ui/react-dom": 2.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-arrow": 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-compose-refs": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-context": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-rect": 1.1.1(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-size": 1.1.1(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/rect": 1.1.1 + react-remove-scroll: 2.7.1(@types/react@18.3.24)(react@18.3.1) + dev: false + + /@radix-ui/react-popper@1.2.8(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} + peerDependencies: + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/rect': 1.1.1 + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + dev: false - "@radix-ui/react-portal@1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + /@radix-ui/react-portal@1.1.9(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} + peerDependencies: + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + dev: false - "@radix-ui/react-presence@1.1.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + /@radix-ui/react-presence@1.1.5(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} + peerDependencies: + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - "@radix-ui/react-compose-refs": 1.1.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + dev: false - "@radix-ui/react-primitive@2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + /@radix-ui/react-primitive@2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + peerDependencies: + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - "@radix-ui/react-slot": 1.2.3(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.24)(react@18.3.1) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + dev: false - "@radix-ui/react-slot@1.2.3(@types/react@18.3.23)(react@18.3.1)": + /@radix-ui/react-slot@1.2.3(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - "@radix-ui/react-compose-refs": 1.1.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.24)(react@18.3.1) + '@types/react': 18.3.24 react: 18.3.1 - optionalDependencies: - "@types/react": 18.3.23 + dev: false - "@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.23)(react@18.3.1)": + /@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.24 react: 18.3.1 - optionalDependencies: - "@types/react": 18.3.23 + dev: false - "@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.3.23)(react@18.3.1)": + /@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - "@radix-ui/react-use-effect-event": 0.0.2(@types/react@18.3.23)(react@18.3.1) - "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.3.24)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@types/react': 18.3.24 react: 18.3.1 - optionalDependencies: - "@types/react": 18.3.23 + dev: false - "@radix-ui/react-use-effect-event@0.0.2(@types/react@18.3.23)(react@18.3.1)": + /@radix-ui/react-use-effect-event@0.0.2(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@types/react': 18.3.24 react: 18.3.1 - optionalDependencies: - "@types/react": 18.3.23 + dev: false - "@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.3.23)(react@18.3.1)": + /@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - "@radix-ui/react-use-callback-ref": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@types/react': 18.3.24 react: 18.3.1 - optionalDependencies: - "@types/react": 18.3.23 + dev: false - "@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.3.23)(react@18.3.1)": + /@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.24 react: 18.3.1 - optionalDependencies: - "@types/react": 18.3.23 + dev: false - "@radix-ui/react-use-rect@1.1.1(@types/react@18.3.23)(react@18.3.1)": + /@radix-ui/react-use-rect@1.1.1(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - "@radix-ui/rect": 1.1.1 + '@radix-ui/rect': 1.1.1 + '@types/react': 18.3.24 react: 18.3.1 - optionalDependencies: - "@types/react": 18.3.23 + dev: false - "@radix-ui/react-use-size@1.1.1(@types/react@18.3.23)(react@18.3.1)": + /@radix-ui/react-use-size@1.1.1(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - "@radix-ui/react-use-layout-effect": 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.24)(react@18.3.1) + '@types/react': 18.3.24 react: 18.3.1 - optionalDependencies: - "@types/react": 18.3.23 + dev: false - "@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + /@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} + peerDependencies: + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - "@radix-ui/react-primitive": 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) + '@types/react': 18.3.24 + '@types/react-dom': 18.3.7(@types/react@18.3.24) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - "@types/react": 18.3.23 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + dev: false - "@radix-ui/rect@1.1.1": {} + /@radix-ui/rect@1.1.1: + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + dev: false - "@react-native-async-storage/async-storage@1.23.1(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))": + /@react-native-async-storage/async-storage@1.23.1(react-native@0.76.7): + resolution: {integrity: sha512-Qd2kQ3yi6Y3+AcUlrHxSLlnBvpdCEMVGFlVBneVOjaFaPU61g1huc38g339ysXspwY1QZA2aNhrk/KlHGO+ewA==} + peerDependencies: + react-native: ^0.0.0-0 || >=0.60 <1.0 dependencies: merge-options: 3.0.4 - react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) + dev: false - "@react-native/assets-registry@0.76.7": {} + /@react-native/assets-registry@0.76.7: + resolution: {integrity: sha512-o79whsqL5fbPTUQO9w1FptRd4cw1TaeOrXtQSLQeDrMVAenw/wmsjyPK10VKtvqxa1KNMtWEyfgxcM8CVZVFmg==} + engines: {node: '>=18'} - "@react-native/babel-plugin-codegen@0.76.7(@babel/preset-env@7.28.3(@babel/core@7.28.3))": + /@react-native/babel-plugin-codegen@0.76.7(@babel/preset-env@7.28.3): + resolution: {integrity: sha512-+8H4DXJREM4l/pwLF/wSVMRzVhzhGDix5jLezNrMD9J1U1AMfV2aSkWA1XuqR7pjPs/Vqf6TaPL7vJMZ4LU05Q==} + engines: {node: '>=18'} dependencies: - "@react-native/codegen": 0.76.7(@babel/preset-env@7.28.3(@babel/core@7.28.3)) + '@react-native/codegen': 0.76.7(@babel/preset-env@7.28.3) transitivePeerDependencies: - "@babel/preset-env" - supports-color - "@react-native/babel-plugin-codegen@0.79.5(@babel/core@7.28.3)": + /@react-native/babel-plugin-codegen@0.81.4(@babel/core@7.28.4): + resolution: {integrity: sha512-6ztXf2Tl2iWznyI/Da/N2Eqymt0Mnn69GCLnEFxFbNdk0HxHPZBNWU9shTXhsLWOL7HATSqwg/bB1+3kY1q+mA==} + engines: {node: '>= 20.19.4'} dependencies: - "@babel/traverse": 7.28.3 - "@react-native/codegen": 0.79.5(@babel/core@7.28.3) + '@babel/traverse': 7.28.4 + '@react-native/codegen': 0.81.4(@babel/core@7.28.4) transitivePeerDependencies: - "@babel/core" - supports-color + dev: false - "@react-native/babel-preset@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))": - dependencies: - "@babel/core": 7.28.3 - "@babel/plugin-proposal-export-default-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-dynamic-import": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-export-default-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-transform-arrow-functions": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-async-generator-functions": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-async-to-generator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-block-scoping": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-class-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-classes": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-computed-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-flow-strip-types": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-for-of": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-function-name": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-literals": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-logical-assignment-operators": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-commonjs": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-named-capturing-groups-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-nullish-coalescing-operator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-numeric-separator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-object-rest-spread": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-optional-catch-binding": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-optional-chaining": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.28.3) - "@babel/plugin-transform-private-methods": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-private-property-in-object": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-display-name": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx-self": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx-source": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-regenerator": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-runtime": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-shorthand-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-spread": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-sticky-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-typescript": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-unicode-regex": 7.27.1(@babel/core@7.28.3) - "@babel/template": 7.27.2 - "@react-native/babel-plugin-codegen": 0.76.7(@babel/preset-env@7.28.3(@babel/core@7.28.3)) + /@react-native/babel-preset@0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3): + resolution: {integrity: sha512-/c5DYZ6y8tyg+g8tgXKndDT7mWnGmkZ9F+T3qNDfoE3Qh7ucrNeC2XWvU9h5pk8eRtj9l4SzF4aO1phzwoibyg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-export-default-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-block-scoping': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-runtime': 7.28.3(@babel/core@7.28.4) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.4) + '@babel/template': 7.27.2 + '@react-native/babel-plugin-codegen': 0.76.7(@babel/preset-env@7.28.3) babel-plugin-syntax-hermes-parser: 0.25.1 - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.3) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.4) react-refresh: 0.14.2 transitivePeerDependencies: - "@babel/preset-env" - supports-color - "@react-native/babel-preset@0.79.5(@babel/core@7.28.3)": - dependencies: - "@babel/core": 7.28.3 - "@babel/plugin-proposal-export-default-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-dynamic-import": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-export-default-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-transform-arrow-functions": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-async-generator-functions": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-async-to-generator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-block-scoping": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-class-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-classes": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-computed-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-destructuring": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-flow-strip-types": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-for-of": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-function-name": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-literals": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-logical-assignment-operators": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-commonjs": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-named-capturing-groups-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-nullish-coalescing-operator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-numeric-separator": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-object-rest-spread": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-optional-catch-binding": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-optional-chaining": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.28.3) - "@babel/plugin-transform-private-methods": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-private-property-in-object": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-display-name": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx-self": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-react-jsx-source": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-regenerator": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-runtime": 7.28.3(@babel/core@7.28.3) - "@babel/plugin-transform-shorthand-properties": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-spread": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-sticky-regex": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-typescript": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-unicode-regex": 7.27.1(@babel/core@7.28.3) - "@babel/template": 7.27.2 - "@react-native/babel-plugin-codegen": 0.79.5(@babel/core@7.28.3) - babel-plugin-syntax-hermes-parser: 0.25.1 - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.3) + /@react-native/babel-preset@0.81.4(@babel/core@7.28.4): + resolution: {integrity: sha512-VYj0c/cTjQJn/RJ5G6P0L9wuYSbU9yGbPYDHCKstlQZQWkk+L9V8ZDbxdJBTIei9Xl3KPQ1odQ4QaeW+4v+AZg==} + engines: {node: '>= 20.19.4'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-export-default-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-block-scoping': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-runtime': 7.28.3(@babel/core@7.28.4) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.4) + '@babel/template': 7.27.2 + '@react-native/babel-plugin-codegen': 0.81.4(@babel/core@7.28.4) + babel-plugin-syntax-hermes-parser: 0.29.1 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.4) react-refresh: 0.14.2 transitivePeerDependencies: - supports-color + dev: false - "@react-native/codegen@0.76.7(@babel/preset-env@7.28.3(@babel/core@7.28.3))": + /@react-native/codegen@0.76.7(@babel/preset-env@7.28.3): + resolution: {integrity: sha512-FAn585Ll65YvkSrKDyAcsdjHhhAGiMlSTUpHh0x7J5ntudUns+voYms0xMP+pEPt0XuLdjhD7zLIIlAWP407+g==} + engines: {node: '>=18'} + peerDependencies: + '@babel/preset-env': ^7.1.6 dependencies: - "@babel/parser": 7.28.3 - "@babel/preset-env": 7.28.3(@babel/core@7.28.3) + '@babel/parser': 7.28.4 + '@babel/preset-env': 7.28.3(@babel/core@7.28.4) glob: 7.2.3 hermes-parser: 0.23.1 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.28.3(@babel/core@7.28.3)) + jscodeshift: 0.14.0(@babel/preset-env@7.28.3) mkdirp: 0.5.6 nullthrows: 1.1.1 yargs: 17.7.2 transitivePeerDependencies: - supports-color - "@react-native/codegen@0.79.5(@babel/core@7.28.3)": + /@react-native/codegen@0.81.4(@babel/core@7.28.4): + resolution: {integrity: sha512-LWTGUTzFu+qOQnvkzBP52B90Ym3stZT8IFCzzUrppz8Iwglg83FCtDZAR4yLHI29VY/x/+pkcWAMCl3739XHdw==} + engines: {node: '>= 20.19.4'} + peerDependencies: + '@babel/core': '*' dependencies: - "@babel/core": 7.28.3 + '@babel/core': 7.28.4 + '@babel/parser': 7.28.4 glob: 7.2.3 - hermes-parser: 0.25.1 + hermes-parser: 0.29.1 invariant: 2.2.4 nullthrows: 1.1.1 yargs: 17.7.2 + dev: false - "@react-native/community-cli-plugin@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))": + /@react-native/community-cli-plugin@0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3): + resolution: {integrity: sha512-lrcsY2WPLCEWU1pjdNV9+Ccj8vCEwCCURZiPa5aqi7lKB4C++1hPrxA8/CWWnTNcQp76DsBKGYqTFj7Ud4aupw==} + engines: {node: '>=18'} + peerDependencies: + '@react-native-community/cli-server-api': '*' + peerDependenciesMeta: + '@react-native-community/cli-server-api': + optional: true dependencies: - "@react-native/dev-middleware": 0.76.7 - "@react-native/metro-babel-transformer": 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3)) + '@react-native/dev-middleware': 0.76.7 + '@react-native/metro-babel-transformer': 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3) chalk: 4.1.2 execa: 5.1.1 invariant: 2.2.4 @@ -17451,11 +6483,18 @@ snapshots: - supports-color - utf-8-validate - "@react-native/debugger-frontend@0.76.7": {} + /@react-native/debugger-frontend@0.76.7: + resolution: {integrity: sha512-89ZtZXt7ZxE94i7T94qzZMhp4Gfcpr/QVpGqEaejAxZD+gvDCH21cYSF+/Rz2ttBazm0rk5MZ0mFqb0Iqp1jmw==} + engines: {node: '>=18'} - "@react-native/debugger-frontend@0.79.5": {} + /@react-native/debugger-frontend@0.81.4: + resolution: {integrity: sha512-SU05w1wD0nKdQFcuNC9D6De0ITnINCi8MEnx9RsTD2e4wN83ukoC7FpXaPCYyP6+VjFt5tUKDPgP1O7iaNXCqg==} + engines: {node: '>= 20.19.4'} + dev: false - "@react-native/dev-middleware@0.76.7": + /@react-native/dev-middleware@0.76.7: + resolution: {integrity: sha512-Jsw8g9DyLPnR9yHEGuT09yHZ7M88/GL9CtU9WmyChlBwdXSeE3AmRqLegsV3XcgULQ1fqdemokaOZ/MwLYkjdA==} + engines: {node: '>=18'} dependencies: "@isaacs/ttlcache": 1.4.1 "@react-native/debugger-frontend": 0.76.7 @@ -17474,14 +6513,16 @@ snapshots: - supports-color - utf-8-validate - "@react-native/dev-middleware@0.79.5": + /@react-native/dev-middleware@0.81.4: + resolution: {integrity: sha512-hu1Wu5R28FT7nHXs2wWXvQ++7W7zq5GPY83llajgPlYKznyPLAY/7bArc5rAzNB7b0kwnlaoPQKlvD/VP9LZug==} + engines: {node: '>= 20.19.4'} dependencies: - "@isaacs/ttlcache": 1.4.1 - "@react-native/debugger-frontend": 0.79.5 + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.81.4 chrome-launcher: 0.15.2 chromium-edge-launcher: 0.2.0 connect: 3.7.0 - debug: 2.6.9 + debug: 4.4.3 invariant: 2.2.4 nullthrows: 1.1.1 open: 7.4.2 @@ -17491,231 +6532,539 @@ snapshots: - bufferutil - supports-color - utf-8-validate + dev: false - "@react-native/gradle-plugin@0.76.7": {} + /@react-native/gradle-plugin@0.76.7: + resolution: {integrity: sha512-gQI6RcrJbigU8xk7F960C5xQIgvbBj20TUvGecD+N2PHfbLpqR+92cj7hz3UcbrCONmTP40WHnbMMJ8P+kLsrA==} + engines: {node: '>=18'} - "@react-native/js-polyfills@0.76.7": {} + /@react-native/js-polyfills@0.76.7: + resolution: {integrity: sha512-+iEikj6c6Zvrg1c3cYMeiPB+5nS8EaIC3jCtP6Muk3qc7c386IymEPM2xycIlfg04DPZvO3D4P2/vaO9/TCnUg==} + engines: {node: '>=18'} - "@react-native/metro-babel-transformer@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))": + /@react-native/metro-babel-transformer@0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3): + resolution: {integrity: sha512-jDS1wR7q46xY5ah+jF714Mvss9l7+lmwW/tplahZgLKozkYDC8Td5o9TOCgKlv18acw9H1V7zv8ivuRSj8ICPg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' dependencies: - "@babel/core": 7.28.3 - "@react-native/babel-preset": 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3)) + '@babel/core': 7.28.4 + '@react-native/babel-preset': 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3) hermes-parser: 0.23.1 nullthrows: 1.1.1 transitivePeerDependencies: - "@babel/preset-env" - supports-color - "@react-native/normalize-colors@0.76.7": {} + /@react-native/normalize-colors@0.76.7: + resolution: {integrity: sha512-ST1xxBuYVIXPdD81dR6+tzIgso7m3pa9+6rOBXTh5Xm7KEEFik7tnQX+GydXYMp3wr1gagJjragdXkPnxK6WNg==} - "@react-native/normalize-colors@0.79.5": {} + /@react-native/normalize-colors@0.81.4: + resolution: {integrity: sha512-9nRRHO1H+tcFqjb9gAM105Urtgcanbta2tuqCVY0NATHeFPDEAB7gPyiLxCHKMi1NbhP6TH0kxgSWXKZl1cyRg==} + dev: false - "@react-native/virtualized-lists@0.72.8(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))": + /@react-native/virtualized-lists@0.72.8(react-native@0.76.7): + resolution: {integrity: sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==} + peerDependencies: + react-native: '*' dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) + dev: true - "@react-native/virtualized-lists@0.76.7(@types/react@18.3.23)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)": + /@react-native/virtualized-lists@0.76.7(@types/react@18.3.24)(react-native@0.76.7)(react@18.3.1): + resolution: {integrity: sha512-pRUf1jUO8H9Ft04CaWv76t34QI9wY0sydoYlIwEtqXjjMJgmgDoOCAWBjArgn2mk8/rK+u/uicI67ZCYCp1pJw==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^18.2.47 + react: '*' + react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.24 invariant: 2.2.4 nullthrows: 1.1.1 react: 18.3.1 - react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) - optionalDependencies: - "@types/react": 18.3.23 + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) + + /@react-native/virtualized-lists@0.76.7(react-native@0.76.7)(react@18.3.1): + resolution: {integrity: sha512-pRUf1jUO8H9Ft04CaWv76t34QI9wY0sydoYlIwEtqXjjMJgmgDoOCAWBjArgn2mk8/rK+u/uicI67ZCYCp1pJw==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^18.2.47 + react: '*' + react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react: 18.3.1 + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(react@18.3.1) + dev: false + + /@rollup/rollup-android-arm-eabi@4.52.4: + resolution: {integrity: sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.52.4: + resolution: {integrity: sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.52.4: + resolution: {integrity: sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.52.4: + resolution: {integrity: sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-freebsd-arm64@4.52.4: + resolution: {integrity: sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-freebsd-x64@4.52.4: + resolution: {integrity: sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.52.4: + resolution: {integrity: sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-musleabihf@4.52.4: + resolution: {integrity: sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.52.4: + resolution: {integrity: sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.52.4: + resolution: {integrity: sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-loong64-gnu@4.52.4: + resolution: {integrity: sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-ppc64-gnu@4.52.4: + resolution: {integrity: sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.52.4: + resolution: {integrity: sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-musl@4.52.4: + resolution: {integrity: sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-s390x-gnu@4.52.4: + resolution: {integrity: sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.52.4: + resolution: {integrity: sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.52.4: + resolution: {integrity: sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-openharmony-arm64@4.52.4: + resolution: {integrity: sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==} + cpu: [arm64] + os: [openharmony] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.52.4: + resolution: {integrity: sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.52.4: + resolution: {integrity: sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-gnu@4.52.4: + resolution: {integrity: sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.52.4: + resolution: {integrity: sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true - "@rtsao/scc@1.1.0": {} + /@rtsao/scc@1.1.0: + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + dev: true - "@rushstack/eslint-patch@1.12.0": {} + /@rushstack/eslint-patch@1.12.0: + resolution: {integrity: sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==} + dev: true - "@sinclair/typebox@0.27.8": {} + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - "@sindresorhus/is@7.0.2": {} + /@sindresorhus/is@7.1.0: + resolution: {integrity: sha512-7F/yz2IphV39hiS2zB4QYVkivrptHHh0K8qJJd9HhuWSdvf8AN7NpebW3CcDZDBQsUPMoDKWsY2WWgW7bqOcfA==} + engines: {node: '>=18'} + dev: true - "@sinonjs/commons@3.0.1": + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} dependencies: type-detect: 4.0.8 - "@sinonjs/fake-timers@10.3.0": + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} dependencies: "@sinonjs/commons": 3.0.1 - "@smithy/abort-controller@2.2.0": + /@smithy/abort-controller@2.2.0: + resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/abort-controller@4.0.5": + /@smithy/abort-controller@4.1.1: + resolution: {integrity: sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/chunked-blob-reader-native@4.0.0": + /@smithy/chunked-blob-reader-native@4.1.0: + resolution: {integrity: sha512-Bnv0B3nSlfB2mPO0WgM49I/prl7+kamF042rrf3ezJ3Z4C7csPYvyYgZfXTGXwXfj1mAwDWjE/ybIf49PzFzvA==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/util-base64": 4.0.0 + '@smithy/util-base64': 4.1.0 tslib: 2.8.1 + dev: true - "@smithy/chunked-blob-reader@5.0.0": + /@smithy/chunked-blob-reader@5.1.0: + resolution: {integrity: sha512-a36AtR7Q7XOhRPt6F/7HENmTWcB8kN7mDJcOFM/+FuKO6x88w8MQJfYCufMWh4fGyVkPjUh3Rrz/dnqFQdo6OQ==} + engines: {node: '>=18.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@smithy/config-resolver@2.2.0": + /@smithy/config-resolver@2.2.0: + resolution: {integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/node-config-provider": 2.3.0 "@smithy/types": 2.12.0 "@smithy/util-config-provider": 2.3.0 "@smithy/util-middleware": 2.2.0 tslib: 2.8.1 + dev: true - "@smithy/config-resolver@4.1.5": + /@smithy/config-resolver@4.2.2: + resolution: {integrity: sha512-IT6MatgBWagLybZl1xQcURXRICvqz1z3APSCAI9IqdvfCkrA7RaQIEfgC6G/KvfxnDfQUDqFV+ZlixcuFznGBQ==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/node-config-provider": 4.1.4 - "@smithy/types": 4.3.2 - "@smithy/util-config-provider": 4.0.0 - "@smithy/util-middleware": 4.0.5 + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 + '@smithy/util-config-provider': 4.1.0 + '@smithy/util-middleware': 4.1.1 tslib: 2.8.1 - - "@smithy/core@3.8.0": - dependencies: - "@smithy/middleware-serde": 4.0.9 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 - "@smithy/util-base64": 4.0.0 - "@smithy/util-body-length-browser": 4.0.0 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-stream": 4.2.4 - "@smithy/util-utf8": 4.0.0 - "@types/uuid": 9.0.8 + dev: true + + /@smithy/core@3.11.0: + resolution: {integrity: sha512-Abs5rdP1o8/OINtE49wwNeWuynCu0kme1r4RI3VXVrHr4odVDG7h7mTnw1WXXfN5Il+c25QOnrdL2y56USfxkA==} + engines: {node: '>=18.0.0'} + dependencies: + '@smithy/middleware-serde': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-stream': 4.3.1 + '@smithy/util-utf8': 4.1.0 + '@types/uuid': 9.0.8 tslib: 2.8.1 uuid: 9.0.1 + dev: true - "@smithy/credential-provider-imds@2.3.0": + /@smithy/credential-provider-imds@2.3.0: + resolution: {integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/node-config-provider": 2.3.0 "@smithy/property-provider": 2.2.0 "@smithy/types": 2.12.0 "@smithy/url-parser": 2.2.0 tslib: 2.8.1 + dev: true - "@smithy/credential-provider-imds@4.0.7": + /@smithy/credential-provider-imds@4.1.2: + resolution: {integrity: sha512-JlYNq8TShnqCLg0h+afqe2wLAwZpuoSgOyzhYvTgbiKBWRov+uUve+vrZEQO6lkdLOWPh7gK5dtb9dS+KGendg==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/node-config-provider": 4.1.4 - "@smithy/property-provider": 4.0.5 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 + '@smithy/node-config-provider': 4.2.2 + '@smithy/property-provider': 4.1.1 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 tslib: 2.8.1 + dev: true - "@smithy/eventstream-codec@4.0.5": + /@smithy/eventstream-codec@4.1.1: + resolution: {integrity: sha512-PwkQw1hZwHTQB6X5hSUWz2OSeuj5Z6enWuAqke7DgWoP3t6vg3ktPpqPz3Erkn6w+tmsl8Oss6nrgyezoea2Iw==} + engines: {node: '>=18.0.0'} dependencies: - "@aws-crypto/crc32": 5.2.0 - "@smithy/types": 4.3.2 - "@smithy/util-hex-encoding": 4.0.0 + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.5.0 + '@smithy/util-hex-encoding': 4.1.0 tslib: 2.8.1 + dev: true - "@smithy/eventstream-serde-browser@4.0.5": + /@smithy/eventstream-serde-browser@4.1.1: + resolution: {integrity: sha512-Q9QWdAzRaIuVkefupRPRFAasaG/droBqn1feiMnmLa+LLEUG45pqX1+FurHFmlqiCfobB3nUlgoJfeXZsr7MPA==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/eventstream-serde-universal": 4.0.5 - "@smithy/types": 4.3.2 + '@smithy/eventstream-serde-universal': 4.1.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/eventstream-serde-config-resolver@4.1.3": + /@smithy/eventstream-serde-config-resolver@4.2.1: + resolution: {integrity: sha512-oSUkF9zDN9zcOUBMtxp8RewJlh71E9NoHWU8jE3hU9JMYCsmW4assVTpgic/iS3/dM317j6hO5x18cc3XrfvEw==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/eventstream-serde-node@4.0.5": + /@smithy/eventstream-serde-node@4.1.1: + resolution: {integrity: sha512-tn6vulwf/ScY0vjhzptSJuDJJqlhNtUjkxJ4wiv9E3SPoEqTEKbaq6bfqRO7nvhTG29ALICRcvfFheOUPl8KNA==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/eventstream-serde-universal": 4.0.5 - "@smithy/types": 4.3.2 + '@smithy/eventstream-serde-universal': 4.1.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/eventstream-serde-universal@4.0.5": + /@smithy/eventstream-serde-universal@4.1.1: + resolution: {integrity: sha512-uLOAiM/Dmgh2CbEXQx+6/ssK7fbzFhd+LjdyFxXid5ZBCbLHTFHLdD/QbXw5aEDsLxQhgzDxLLsZhsftAYwHJA==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/eventstream-codec": 4.0.5 - "@smithy/types": 4.3.2 + '@smithy/eventstream-codec': 4.1.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/fetch-http-handler@2.5.0": + /@smithy/fetch-http-handler@2.5.0: + resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==} dependencies: "@smithy/protocol-http": 3.3.0 "@smithy/querystring-builder": 2.2.0 "@smithy/types": 2.12.0 "@smithy/util-base64": 2.3.0 tslib: 2.8.1 + dev: true - "@smithy/fetch-http-handler@5.1.1": + /@smithy/fetch-http-handler@5.2.1: + resolution: {integrity: sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/protocol-http": 5.1.3 - "@smithy/querystring-builder": 4.0.5 - "@smithy/types": 4.3.2 - "@smithy/util-base64": 4.0.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/querystring-builder': 4.1.1 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 tslib: 2.8.1 + dev: true - "@smithy/hash-blob-browser@4.0.5": + /@smithy/hash-blob-browser@4.1.1: + resolution: {integrity: sha512-avAtk++s1e/1VODf+rg7c9R2pB5G9y8yaJaGY4lPZI2+UIqVyuSDMikWjeWfBVmFZ3O7NpDxBbUCyGhThVUKWQ==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/chunked-blob-reader": 5.0.0 - "@smithy/chunked-blob-reader-native": 4.0.0 - "@smithy/types": 4.3.2 + '@smithy/chunked-blob-reader': 5.1.0 + '@smithy/chunked-blob-reader-native': 4.1.0 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/hash-node@2.2.0": + /@smithy/hash-node@2.2.0: + resolution: {integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/types": 2.12.0 "@smithy/util-buffer-from": 2.2.0 "@smithy/util-utf8": 2.3.0 tslib: 2.8.1 + dev: true - "@smithy/hash-node@4.0.5": + /@smithy/hash-node@4.1.1: + resolution: {integrity: sha512-H9DIU9WBLhYrvPs9v4sYvnZ1PiAI0oc8CgNQUJ1rpN3pP7QADbTOUjchI2FB764Ub0DstH5xbTqcMJu1pnVqxA==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 - "@smithy/util-buffer-from": 4.0.0 - "@smithy/util-utf8": 4.0.0 + '@smithy/types': 4.5.0 + '@smithy/util-buffer-from': 4.1.0 + '@smithy/util-utf8': 4.1.0 tslib: 2.8.1 + dev: true - "@smithy/hash-stream-node@4.0.5": + /@smithy/hash-stream-node@4.1.1: + resolution: {integrity: sha512-3ztT4pV0Moazs3JAYFdfKk11kYFDo4b/3R3+xVjIm6wY9YpJf+xfz+ocEnNKcWAdcmSMqi168i2EMaKmJHbJMA==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 - "@smithy/util-utf8": 4.0.0 + '@smithy/types': 4.5.0 + '@smithy/util-utf8': 4.1.0 tslib: 2.8.1 + dev: true - "@smithy/invalid-dependency@2.2.0": + /@smithy/invalid-dependency@2.2.0: + resolution: {integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==} dependencies: "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/invalid-dependency@4.0.5": + /@smithy/invalid-dependency@4.1.1: + resolution: {integrity: sha512-1AqLyFlfrrDkyES8uhINRlJXmHA2FkG+3DY8X+rmLSqmFwk3DJnvhyGzyByPyewh2jbmV+TYQBEfngQax8IFGg==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/is-array-buffer@2.2.0": + /@smithy/is-array-buffer@2.2.0: + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@smithy/is-array-buffer@4.0.0": + /@smithy/is-array-buffer@4.1.0: + resolution: {integrity: sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ==} + engines: {node: '>=18.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@smithy/md5-js@4.0.5": + /@smithy/md5-js@4.1.1: + resolution: {integrity: sha512-MvWXKK743BuHjr/hnWuT6uStdKEaoqxHAQUvbKJPPZM5ZojTNFI5D+47BoQfBE5RgGlRRty05EbWA+NXDv+hIA==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 - "@smithy/util-utf8": 4.0.0 + '@smithy/types': 4.5.0 + '@smithy/util-utf8': 4.1.0 tslib: 2.8.1 + dev: true - "@smithy/middleware-content-length@2.2.0": + /@smithy/middleware-content-length@2.2.0: + resolution: {integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/protocol-http": 3.3.0 "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/middleware-content-length@4.0.5": + /@smithy/middleware-content-length@4.1.1: + resolution: {integrity: sha512-9wlfBBgTsRvC2JxLJxv4xDGNBrZuio3AgSl0lSFX7fneW2cGskXTYpFxCdRYD2+5yzmsiTuaAJD1Wp7gWt9y9w==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/middleware-endpoint@2.5.1": + /@smithy/middleware-endpoint@2.5.1: + resolution: {integrity: sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/middleware-serde": 2.3.0 "@smithy/node-config-provider": 2.3.0 @@ -17724,19 +7073,25 @@ snapshots: "@smithy/url-parser": 2.2.0 "@smithy/util-middleware": 2.2.0 tslib: 2.8.1 - - "@smithy/middleware-endpoint@4.1.18": - dependencies: - "@smithy/core": 3.8.0 - "@smithy/middleware-serde": 4.0.9 - "@smithy/node-config-provider": 4.1.4 - "@smithy/shared-ini-file-loader": 4.0.5 - "@smithy/types": 4.3.2 - "@smithy/url-parser": 4.0.5 - "@smithy/util-middleware": 4.0.5 + dev: true + + /@smithy/middleware-endpoint@4.2.2: + resolution: {integrity: sha512-M51KcwD+UeSOFtpALGf5OijWt915aQT5eJhqnMKJt7ZTfDfNcvg2UZgIgTZUoiORawb6o5lk4n3rv7vnzQXgsA==} + engines: {node: '>=18.0.0'} + dependencies: + '@smithy/core': 3.11.0 + '@smithy/middleware-serde': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-middleware': 4.1.1 tslib: 2.8.1 + dev: true - "@smithy/middleware-retry@2.3.1": + /@smithy/middleware-retry@2.3.1: + resolution: {integrity: sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/node-config-provider": 2.3.0 "@smithy/protocol-http": 3.3.0 @@ -17746,138 +7101,207 @@ snapshots: "@smithy/util-middleware": 2.2.0 "@smithy/util-retry": 2.2.0 tslib: 2.8.1 - uuid: 9.0.1 - - "@smithy/middleware-retry@4.1.19": - dependencies: - "@smithy/node-config-provider": 4.1.4 - "@smithy/protocol-http": 5.1.3 - "@smithy/service-error-classification": 4.0.7 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-retry": 4.0.7 - "@types/uuid": 9.0.8 + uuid: 9.0.1 + dev: true + + /@smithy/middleware-retry@4.2.2: + resolution: {integrity: sha512-KZJueEOO+PWqflv2oGx9jICpHdBYXwCI19j7e2V3IMwKgFcXc9D9q/dsTf4B+uCnYxjNoS1jpyv6pGNGRsKOXA==} + engines: {node: '>=18.0.0'} + dependencies: + '@smithy/node-config-provider': 4.2.2 + '@smithy/protocol-http': 5.2.1 + '@smithy/service-error-classification': 4.1.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.1 + '@types/uuid': 9.0.8 tslib: 2.8.1 uuid: 9.0.1 + dev: true - "@smithy/middleware-serde@2.3.0": + /@smithy/middleware-serde@2.3.0: + resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/middleware-serde@4.0.9": + /@smithy/middleware-serde@4.1.1: + resolution: {integrity: sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/middleware-stack@2.2.0": + /@smithy/middleware-stack@2.2.0: + resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/middleware-stack@4.0.5": + /@smithy/middleware-stack@4.1.1: + resolution: {integrity: sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/node-config-provider@2.3.0": + /@smithy/node-config-provider@2.3.0: + resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/property-provider": 2.2.0 "@smithy/shared-ini-file-loader": 2.4.0 "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/node-config-provider@4.1.4": + /@smithy/node-config-provider@4.2.2: + resolution: {integrity: sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/property-provider": 4.0.5 - "@smithy/shared-ini-file-loader": 4.0.5 - "@smithy/types": 4.3.2 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/node-http-handler@2.5.0": + /@smithy/node-http-handler@2.5.0: + resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/abort-controller": 2.2.0 "@smithy/protocol-http": 3.3.0 "@smithy/querystring-builder": 2.2.0 "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/node-http-handler@4.1.1": + /@smithy/node-http-handler@4.2.1: + resolution: {integrity: sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/abort-controller": 4.0.5 - "@smithy/protocol-http": 5.1.3 - "@smithy/querystring-builder": 4.0.5 - "@smithy/types": 4.3.2 + '@smithy/abort-controller': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/querystring-builder': 4.1.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/property-provider@2.2.0": + /@smithy/property-provider@2.2.0: + resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/property-provider@4.0.5": + /@smithy/property-provider@4.1.1: + resolution: {integrity: sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/protocol-http@2.0.5": + /@smithy/protocol-http@2.0.5: + resolution: {integrity: sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/protocol-http@3.3.0": + /@smithy/protocol-http@3.3.0: + resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/protocol-http@5.1.3": + /@smithy/protocol-http@5.2.1: + resolution: {integrity: sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/querystring-builder@2.2.0": + /@smithy/querystring-builder@2.2.0: + resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/types": 2.12.0 "@smithy/util-uri-escape": 2.2.0 tslib: 2.8.1 + dev: true - "@smithy/querystring-builder@4.0.5": + /@smithy/querystring-builder@4.1.1: + resolution: {integrity: sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 - "@smithy/util-uri-escape": 4.0.0 + '@smithy/types': 4.5.0 + '@smithy/util-uri-escape': 4.1.0 tslib: 2.8.1 + dev: true - "@smithy/querystring-parser@2.2.0": + /@smithy/querystring-parser@2.2.0: + resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/querystring-parser@4.0.5": + /@smithy/querystring-parser@4.1.1: + resolution: {integrity: sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/service-error-classification@2.1.5": + /@smithy/service-error-classification@2.1.5: + resolution: {integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==} + engines: {node: '>=14.0.0'} dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 + dev: true - "@smithy/service-error-classification@4.0.7": + /@smithy/service-error-classification@4.1.1: + resolution: {integrity: sha512-Iam75b/JNXyDE41UvrlM6n8DNOa/r1ylFyvgruTUx7h2Uk7vDNV9AAwP1vfL1fOL8ls0xArwEGVcGZVd7IO/Cw==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.5.0 + dev: true - "@smithy/shared-ini-file-loader@2.4.0": + /@smithy/shared-ini-file-loader@2.4.0: + resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/shared-ini-file-loader@4.0.5": + /@smithy/shared-ini-file-loader@4.2.0: + resolution: {integrity: sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/signature-v4@2.3.0": + /@smithy/signature-v4@2.3.0: + resolution: {integrity: sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/is-array-buffer": 2.2.0 "@smithy/types": 2.12.0 @@ -17886,19 +7310,25 @@ snapshots: "@smithy/util-uri-escape": 2.2.0 "@smithy/util-utf8": 2.3.0 tslib: 2.8.1 - - "@smithy/signature-v4@5.1.3": - dependencies: - "@smithy/is-array-buffer": 4.0.0 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 - "@smithy/util-hex-encoding": 4.0.0 - "@smithy/util-middleware": 4.0.5 - "@smithy/util-uri-escape": 4.0.0 - "@smithy/util-utf8": 4.0.0 + dev: true + + /@smithy/signature-v4@5.2.1: + resolution: {integrity: sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA==} + engines: {node: '>=18.0.0'} + dependencies: + '@smithy/is-array-buffer': 4.1.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-hex-encoding': 4.1.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-uri-escape': 4.1.0 + '@smithy/util-utf8': 4.1.0 tslib: 2.8.1 + dev: true - "@smithy/smithy-client@2.5.1": + /@smithy/smithy-client@2.5.1: + resolution: {integrity: sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/middleware-endpoint": 2.5.1 "@smithy/middleware-stack": 2.2.0 @@ -17906,100 +7336,152 @@ snapshots: "@smithy/types": 2.12.0 "@smithy/util-stream": 2.2.0 tslib: 2.8.1 - - "@smithy/smithy-client@4.4.10": - dependencies: - "@smithy/core": 3.8.0 - "@smithy/middleware-endpoint": 4.1.18 - "@smithy/middleware-stack": 4.0.5 - "@smithy/protocol-http": 5.1.3 - "@smithy/types": 4.3.2 - "@smithy/util-stream": 4.2.4 + dev: true + + /@smithy/smithy-client@4.6.2: + resolution: {integrity: sha512-u82cjh/x7MlMat76Z38TRmEcG6JtrrxN4N2CSNG5o2v2S3hfLAxRgSgFqf0FKM3dglH41Evknt/HOX+7nfzZ3g==} + engines: {node: '>=18.0.0'} + dependencies: + '@smithy/core': 3.11.0 + '@smithy/middleware-endpoint': 4.2.2 + '@smithy/middleware-stack': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-stream': 4.3.1 tslib: 2.8.1 + dev: true - "@smithy/types@2.12.0": + /@smithy/types@2.12.0: + resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} + engines: {node: '>=14.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@smithy/types@4.3.2": + /@smithy/types@4.5.0: + resolution: {integrity: sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg==} + engines: {node: '>=18.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@smithy/url-parser@2.2.0": + /@smithy/url-parser@2.2.0: + resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==} dependencies: "@smithy/querystring-parser": 2.2.0 "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/url-parser@4.0.5": + /@smithy/url-parser@4.1.1: + resolution: {integrity: sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/querystring-parser": 4.0.5 - "@smithy/types": 4.3.2 + '@smithy/querystring-parser': 4.1.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/util-base64@2.3.0": + /@smithy/util-base64@2.3.0: + resolution: {integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/util-buffer-from": 2.2.0 "@smithy/util-utf8": 2.3.0 tslib: 2.8.1 + dev: true - "@smithy/util-base64@4.0.0": + /@smithy/util-base64@4.1.0: + resolution: {integrity: sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/util-buffer-from": 4.0.0 - "@smithy/util-utf8": 4.0.0 + '@smithy/util-buffer-from': 4.1.0 + '@smithy/util-utf8': 4.1.0 tslib: 2.8.1 + dev: true - "@smithy/util-body-length-browser@2.2.0": + /@smithy/util-body-length-browser@2.2.0: + resolution: {integrity: sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==} dependencies: tslib: 2.8.1 + dev: true - "@smithy/util-body-length-browser@4.0.0": + /@smithy/util-body-length-browser@4.1.0: + resolution: {integrity: sha512-V2E2Iez+bo6bUMOTENPr6eEmepdY8Hbs+Uc1vkDKgKNA/brTJqOW/ai3JO1BGj9GbCeLqw90pbbH7HFQyFotGQ==} + engines: {node: '>=18.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@smithy/util-body-length-node@2.3.0": + /@smithy/util-body-length-node@2.3.0: + resolution: {integrity: sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==} + engines: {node: '>=14.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@smithy/util-body-length-node@4.0.0": + /@smithy/util-body-length-node@4.1.0: + resolution: {integrity: sha512-BOI5dYjheZdgR9XiEM3HJcEMCXSoqbzu7CzIgYrx0UtmvtC3tC2iDGpJLsSRFffUpy8ymsg2ARMP5fR8mtuUQQ==} + engines: {node: '>=18.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@smithy/util-buffer-from@2.2.0": + /@smithy/util-buffer-from@2.2.0: + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/is-array-buffer": 2.2.0 tslib: 2.8.1 + dev: true - "@smithy/util-buffer-from@4.0.0": + /@smithy/util-buffer-from@4.1.0: + resolution: {integrity: sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/is-array-buffer": 4.0.0 + '@smithy/is-array-buffer': 4.1.0 tslib: 2.8.1 + dev: true - "@smithy/util-config-provider@2.3.0": + /@smithy/util-config-provider@2.3.0: + resolution: {integrity: sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==} + engines: {node: '>=14.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@smithy/util-config-provider@4.0.0": + /@smithy/util-config-provider@4.1.0: + resolution: {integrity: sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ==} + engines: {node: '>=18.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@smithy/util-defaults-mode-browser@2.2.1": + /@smithy/util-defaults-mode-browser@2.2.1: + resolution: {integrity: sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==} + engines: {node: '>= 10.0.0'} dependencies: - "@smithy/property-provider": 2.2.0 - "@smithy/smithy-client": 2.5.1 - "@smithy/types": 2.12.0 - bowser: 2.12.0 + '@smithy/property-provider': 2.2.0 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + bowser: 2.12.1 tslib: 2.8.1 + dev: true - "@smithy/util-defaults-mode-browser@4.0.26": + /@smithy/util-defaults-mode-browser@4.1.2: + resolution: {integrity: sha512-QKrOw01DvNHKgY+3p4r9Ut4u6EHLVZ01u6SkOMe6V6v5C+nRPXJeWh72qCT1HgwU3O7sxAIu23nNh+FOpYVZKA==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/property-provider": 4.0.5 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 - bowser: 2.12.0 + '@smithy/property-provider': 4.1.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + bowser: 2.12.1 tslib: 2.8.1 + dev: true - "@smithy/util-defaults-mode-node@2.3.1": + /@smithy/util-defaults-mode-node@2.3.1: + resolution: {integrity: sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==} + engines: {node: '>= 10.0.0'} dependencies: "@smithy/config-resolver": 2.2.0 "@smithy/credential-provider-imds": 2.3.0 @@ -18008,54 +7490,81 @@ snapshots: "@smithy/smithy-client": 2.5.1 "@smithy/types": 2.12.0 tslib: 2.8.1 - - "@smithy/util-defaults-mode-node@4.0.26": - dependencies: - "@smithy/config-resolver": 4.1.5 - "@smithy/credential-provider-imds": 4.0.7 - "@smithy/node-config-provider": 4.1.4 - "@smithy/property-provider": 4.0.5 - "@smithy/smithy-client": 4.4.10 - "@smithy/types": 4.3.2 + dev: true + + /@smithy/util-defaults-mode-node@4.1.2: + resolution: {integrity: sha512-l2yRmSfx5haYHswPxMmCR6jGwgPs5LjHLuBwlj9U7nNBMS43YV/eevj+Xq1869UYdiynnMrCKtoOYQcwtb6lKg==} + engines: {node: '>=18.0.0'} + dependencies: + '@smithy/config-resolver': 4.2.2 + '@smithy/credential-provider-imds': 4.1.2 + '@smithy/node-config-provider': 4.2.2 + '@smithy/property-provider': 4.1.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/util-endpoints@3.0.7": + /@smithy/util-endpoints@3.1.2: + resolution: {integrity: sha512-+AJsaaEGb5ySvf1SKMRrPZdYHRYSzMkCoK16jWnIMpREAnflVspMIDeCVSZJuj+5muZfgGpNpijE3mUNtjv01Q==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/node-config-provider": 4.1.4 - "@smithy/types": 4.3.2 + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/util-hex-encoding@2.2.0": + /@smithy/util-hex-encoding@2.2.0: + resolution: {integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==} + engines: {node: '>=14.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@smithy/util-hex-encoding@4.0.0": + /@smithy/util-hex-encoding@4.1.0: + resolution: {integrity: sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w==} + engines: {node: '>=18.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@smithy/util-middleware@2.2.0": + /@smithy/util-middleware@2.2.0: + resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/util-middleware@4.0.5": + /@smithy/util-middleware@4.1.1: + resolution: {integrity: sha512-CGmZ72mL29VMfESz7S6dekqzCh8ZISj3B+w0g1hZFXaOjGTVaSqfAEFAq8EGp8fUL+Q2l8aqNmt8U1tglTikeg==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/types": 4.3.2 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/util-retry@2.2.0": + /@smithy/util-retry@2.2.0: + resolution: {integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==} + engines: {node: '>= 14.0.0'} dependencies: "@smithy/service-error-classification": 2.1.5 "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/util-retry@4.0.7": + /@smithy/util-retry@4.1.1: + resolution: {integrity: sha512-jGeybqEZ/LIordPLMh5bnmnoIgsqnp4IEimmUp5c5voZ8yx+5kAlN5+juyr7p+f7AtZTgvhmInQk4Q0UVbrZ0Q==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/service-error-classification": 4.0.7 - "@smithy/types": 4.3.2 + '@smithy/service-error-classification': 4.1.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@smithy/util-stream@2.2.0": + /@smithy/util-stream@2.2.0: + resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/fetch-http-handler": 2.5.0 "@smithy/node-http-handler": 2.5.0 @@ -18065,69 +7574,102 @@ snapshots: "@smithy/util-hex-encoding": 2.2.0 "@smithy/util-utf8": 2.3.0 tslib: 2.8.1 - - "@smithy/util-stream@4.2.4": - dependencies: - "@smithy/fetch-http-handler": 5.1.1 - "@smithy/node-http-handler": 4.1.1 - "@smithy/types": 4.3.2 - "@smithy/util-base64": 4.0.0 - "@smithy/util-buffer-from": 4.0.0 - "@smithy/util-hex-encoding": 4.0.0 - "@smithy/util-utf8": 4.0.0 + dev: true + + /@smithy/util-stream@4.3.1: + resolution: {integrity: sha512-khKkW/Jqkgh6caxMWbMuox9+YfGlsk9OnHOYCGVEdYQb/XVzcORXHLYUubHmmda0pubEDncofUrPNniS9d+uAA==} + engines: {node: '>=18.0.0'} + dependencies: + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/node-http-handler': 4.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + '@smithy/util-buffer-from': 4.1.0 + '@smithy/util-hex-encoding': 4.1.0 + '@smithy/util-utf8': 4.1.0 tslib: 2.8.1 + dev: true - "@smithy/util-uri-escape@2.2.0": + /@smithy/util-uri-escape@2.2.0: + resolution: {integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==} + engines: {node: '>=14.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@smithy/util-uri-escape@4.0.0": + /@smithy/util-uri-escape@4.1.0: + resolution: {integrity: sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg==} + engines: {node: '>=18.0.0'} dependencies: tslib: 2.8.1 + dev: true - "@smithy/util-utf8@2.3.0": + /@smithy/util-utf8@2.3.0: + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/util-buffer-from": 2.2.0 tslib: 2.8.1 + dev: true - "@smithy/util-utf8@4.0.0": + /@smithy/util-utf8@4.1.0: + resolution: {integrity: sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/util-buffer-from": 4.0.0 + '@smithy/util-buffer-from': 4.1.0 tslib: 2.8.1 + dev: true - "@smithy/util-waiter@2.2.0": + /@smithy/util-waiter@2.2.0: + resolution: {integrity: sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==} + engines: {node: '>=14.0.0'} dependencies: "@smithy/abort-controller": 2.2.0 "@smithy/types": 2.12.0 tslib: 2.8.1 + dev: true - "@smithy/util-waiter@4.0.7": + /@smithy/util-waiter@4.1.1: + resolution: {integrity: sha512-PJBmyayrlfxM7nbqjomF4YcT1sApQwZio0NHSsT0EzhJqljRmvhzqZua43TyEs80nJk2Cn2FGPg/N8phH6KeCQ==} + engines: {node: '>=18.0.0'} dependencies: - "@smithy/abort-controller": 4.0.5 - "@smithy/types": 4.3.2 + '@smithy/abort-controller': 4.1.1 + '@smithy/types': 4.5.0 tslib: 2.8.1 + dev: true - "@speed-highlight/core@1.2.7": {} + /@speed-highlight/core@1.2.7: + resolution: {integrity: sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g==} + dev: true - "@swc/counter@0.1.3": {} + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: false - "@swc/helpers@0.5.5": + /@swc/helpers@0.5.5: + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} dependencies: "@swc/counter": 0.1.3 tslib: 2.8.1 + dev: false - "@testing-library/dom@9.3.4": + /@testing-library/dom@9.3.4: + resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} + engines: {node: '>=14'} dependencies: - "@babel/code-frame": 7.27.1 - "@babel/runtime": 7.28.3 - "@types/aria-query": 5.0.4 + '@babel/code-frame': 7.27.1 + '@babel/runtime': 7.28.4 + '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 + dev: true - "@testing-library/jest-dom@6.7.0": + /@testing-library/jest-dom@6.8.0: + resolution: {integrity: sha512-WgXcWzVM6idy5JaftTVC8Vs83NKRmGJz4Hqs4oyOuO2J4r/y79vvKZsb+CaGyCSEbUPI6OsewfPd0G1A0/TUZQ==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} dependencies: "@adobe/css-tools": 4.4.4 aria-query: 5.3.2 @@ -18135,519 +7677,893 @@ snapshots: dom-accessibility-api: 0.6.3 picocolors: 1.1.1 redent: 3.0.0 + dev: true - "@testing-library/react@14.3.1(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + /@testing-library/react@14.3.1(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==} + engines: {node: '>=14'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - "@babel/runtime": 7.28.3 - "@testing-library/dom": 9.3.4 - "@types/react-dom": 18.3.7(@types/react@18.3.23) + '@babel/runtime': 7.28.4 + '@testing-library/dom': 9.3.4 + '@types/react-dom': 18.3.7(@types/react@18.3.24) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: - - "@types/react" + - '@types/react' + dev: true - "@tootallnate/once@2.0.0": {} + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: true - "@tsconfig/node10@1.0.11": {} + /@tsconfig/node10@1.0.11: + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + dev: true - "@tsconfig/node12@1.0.11": {} + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true - "@tsconfig/node14@1.0.3": {} + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true - "@tsconfig/node16@1.0.4": {} + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true - "@tsconfig/node18@1.0.3": {} + /@tsconfig/node18@1.0.3: + resolution: {integrity: sha512-RbwvSJQsuN9TB04AQbGULYfOGE/RnSFk/FLQ5b0NmDf5Kx2q/lABZbHQPKCO1vZ6Fiwkplu+yb9pGdLy1iGseQ==} + dev: true - "@tybys/wasm-util@0.10.0": + /@tybys/wasm-util@0.10.1: + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + requiresBuild: true dependencies: tslib: 2.8.1 + dev: true optional: true - "@types/aria-query@5.0.4": {} + /@types/aria-query@5.0.4: + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + dev: true - "@types/babel__core@7.20.5": + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - "@babel/parser": 7.28.3 - "@babel/types": 7.28.2 - "@types/babel__generator": 7.27.0 - "@types/babel__template": 7.4.4 - "@types/babel__traverse": 7.28.0 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 - "@types/babel__generator@7.27.0": + /@types/babel__generator@7.27.0: + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} dependencies: - "@babel/types": 7.28.2 + '@babel/types': 7.28.4 - "@types/babel__template@7.4.4": + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - "@babel/parser": 7.28.3 - "@babel/types": 7.28.2 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 - "@types/babel__traverse@7.28.0": + /@types/babel__traverse@7.28.0: + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} dependencies: - "@babel/types": 7.28.2 + '@babel/types': 7.28.4 + + /@types/estree@1.0.8: + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + dev: true - "@types/fs-extra@8.1.5": + /@types/fs-extra@8.1.5: + resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} dependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.16 + dev: true - "@types/glob@7.2.0": + /@types/glob@7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: - "@types/minimatch": 6.0.0 - "@types/node": 20.19.11 + '@types/minimatch': 6.0.0 + '@types/node': 20.19.16 + dev: true - "@types/graceful-fs@4.1.9": + /@types/graceful-fs@4.1.9: + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.16 - "@types/istanbul-lib-coverage@2.0.6": {} + /@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": + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} dependencies: "@types/istanbul-lib-coverage": 2.0.6 - "@types/istanbul-reports@3.0.4": + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} dependencies: "@types/istanbul-lib-report": 3.0.3 - "@types/jest@29.5.14": + /@types/jest@29.5.14: + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 + dev: true - "@types/jsdom@20.0.1": + /@types/jsdom@20.0.1: + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - "@types/node": 20.19.11 - "@types/tough-cookie": 4.0.5 + '@types/node': 20.19.16 + '@types/tough-cookie': 4.0.5 parse5: 7.3.0 + dev: true - "@types/json-schema@7.0.15": {} + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true - "@types/json5@0.0.29": {} + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true - "@types/long@4.0.2": {} - - "@types/minimatch@6.0.0": + /@types/minimatch@6.0.0: + resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} + deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. dependencies: minimatch: 10.0.3 + dev: true - "@types/node-fetch@2.6.13": + /@types/node-fetch@2.6.13: + resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} dependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.16 form-data: 4.0.4 + dev: true - "@types/node-forge@1.3.13": + /@types/node-forge@1.3.14: + resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} dependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.16 - "@types/node@12.20.55": {} + /@types/node@12.20.55: + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + dev: false - "@types/node@18.19.123": + /@types/node@18.19.126: + resolution: {integrity: sha512-8AXQlBfrGmtYJEJUPs63F/uZQqVeFiN9o6NUjbDJYfxNxFnArlZufANPw4h6dGhYGKxcyw+TapXFvEsguzIQow==} dependencies: undici-types: 5.26.5 + dev: true - "@types/node@20.19.11": + /@types/node@20.19.16: + resolution: {integrity: sha512-VS6TTONVdgwJwtJr7U+ghEjpfmQdqehLLpg/iMYGOd1+ilaFjdBJwFuPggJ4EAYPDCzWfDUHoIxyVnu+tOWVuQ==} dependencies: undici-types: 6.21.0 - "@types/normalize-package-data@2.4.4": {} + /@types/normalize-package-data@2.4.4: + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + dev: true - "@types/prop-types@15.7.15": {} + /@types/prop-types@15.7.15: + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - "@types/react-dom@18.3.7(@types/react@18.3.23)": + /@types/react-dom@18.3.7(@types/react@18.3.24): + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + peerDependencies: + '@types/react': ^18.2.47 dependencies: - "@types/react": 18.3.23 + '@types/react': 18.3.24 - "@types/react-native@0.72.8(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))": + /@types/react-native@0.72.8(react-native@0.76.7): + resolution: {integrity: sha512-St6xA7+EoHN5mEYfdWnfYt0e8u6k2FR0P9s2arYgakQGFgU1f9FlPrIEcj0X24pLCF5c5i3WVuLCUdiCYHmOoA==} dependencies: - "@react-native/virtualized-lists": 0.72.8(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) - "@types/react": 18.3.23 + '@react-native/virtualized-lists': 0.72.8(react-native@0.76.7) + '@types/react': 18.3.24 transitivePeerDependencies: - react-native + dev: true - "@types/react@18.3.23": + /@types/react@18.3.24: + resolution: {integrity: sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==} dependencies: "@types/prop-types": 15.7.15 csstype: 3.1.3 - "@types/semver@7.7.0": {} + /@types/semver@7.7.1: + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + dev: true - "@types/stack-utils@2.0.3": {} + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - "@types/text-encoding@0.0.39": {} + /@types/text-encoding@0.0.39: + resolution: {integrity: sha512-gRPvgL1aMgP6Pv92Rs310cJvVQ86DSF62E7K30g1FoGmmYWXoNuXT8PV835iAVeiAZkRwr2IW37KuyDn9ljmeA==} + dev: true - "@types/tough-cookie@4.0.5": {} + /@types/tough-cookie@4.0.5: + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + dev: true - "@types/uuid@9.0.8": {} + /@types/uuid@9.0.8: + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + dev: true - "@types/yargs-parser@21.0.3": {} + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - "@types/yargs@17.0.33": + /@types/yargs@17.0.33: + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} dependencies: "@types/yargs-parser": 21.0.3 - "@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2)": + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.1)(typescript@5.9.2): + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - "@eslint-community/regexpp": 4.12.1 - "@typescript-eslint/parser": 6.21.0(eslint@8.57.1)(typescript@5.9.2) - "@typescript-eslint/scope-manager": 6.21.0 - "@typescript-eslint/type-utils": 6.21.0(eslint@8.57.1)(typescript@5.9.2) - "@typescript-eslint/utils": 6.21.0(eslint@8.57.1)(typescript@5.9.2) - "@typescript-eslint/visitor-keys": 6.21.0 - debug: 4.4.1 + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.4.3 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 semver: 7.7.2 ts-api-utils: 1.4.3(typescript@5.9.2) - optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color + dev: true - "@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2)": + /@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - "@typescript-eslint/scope-manager": 6.21.0 - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/typescript-estree": 6.21.0(typescript@5.9.2) - "@typescript-eslint/visitor-keys": 6.21.0 - debug: 4.4.1 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.4.3 eslint: 8.57.1 - optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color + dev: true - "@typescript-eslint/scope-manager@5.62.0": + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - "@typescript-eslint/types": 5.62.0 - "@typescript-eslint/visitor-keys": 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true - "@typescript-eslint/scope-manager@6.21.0": + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/visitor-keys": 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + dev: true - "@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.9.2)": + /@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.9.2): + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - "@typescript-eslint/typescript-estree": 6.21.0(typescript@5.9.2) - "@typescript-eslint/utils": 6.21.0(eslint@8.57.1)(typescript@5.9.2) - debug: 4.4.1 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2) + debug: 4.4.3 eslint: 8.57.1 ts-api-utils: 1.4.3(typescript@5.9.2) - optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color + dev: true - "@typescript-eslint/types@5.62.0": {} + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true - "@typescript-eslint/types@6.21.0": {} + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true - "@typescript-eslint/typescript-estree@5.62.0(typescript@5.9.2)": + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.9.2): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - "@typescript-eslint/types": 5.62.0 - "@typescript-eslint/visitor-keys": 5.62.0 - debug: 4.4.1 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.4.3 globby: 11.1.0 is-glob: 4.0.3 semver: 7.7.2 tsutils: 3.21.0(typescript@5.9.2) - optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color + dev: true - "@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.2)": + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.2): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/visitor-keys": 6.21.0 - debug: 4.4.1 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.4.3 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.7.2 ts-api-utils: 1.4.3(typescript@5.9.2) - optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - supports-color + dev: true - "@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.9.2)": + /@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.9.2): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - "@eslint-community/eslint-utils": 4.7.0(eslint@8.57.1) - "@types/json-schema": 7.0.15 - "@types/semver": 7.7.0 - "@typescript-eslint/scope-manager": 5.62.0 - "@typescript-eslint/types": 5.62.0 - "@typescript-eslint/typescript-estree": 5.62.0(typescript@5.9.2) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.7.1 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.2) eslint: 8.57.1 eslint-scope: 5.1.1 semver: 7.7.2 transitivePeerDependencies: - supports-color - typescript + dev: true - "@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.2)": + /@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.2): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 dependencies: - "@eslint-community/eslint-utils": 4.7.0(eslint@8.57.1) - "@types/json-schema": 7.0.15 - "@types/semver": 7.7.0 - "@typescript-eslint/scope-manager": 6.21.0 - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/typescript-estree": 6.21.0(typescript@5.9.2) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.7.1 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2) eslint: 8.57.1 semver: 7.7.2 transitivePeerDependencies: - supports-color - typescript + dev: true - "@typescript-eslint/visitor-keys@5.62.0": + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: "@typescript-eslint/types": 5.62.0 eslint-visitor-keys: 3.4.3 + dev: true - "@typescript-eslint/visitor-keys@6.21.0": + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: "@typescript-eslint/types": 6.21.0 eslint-visitor-keys: 3.4.3 + dev: true - "@ungap/structured-clone@1.3.0": {} + /@ungap/structured-clone@1.3.0: + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - "@unrs/resolver-binding-android-arm-eabi@1.11.1": + /@unrs/resolver-binding-android-arm-eabi@1.11.1: + resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-android-arm64@1.11.1": + /@unrs/resolver-binding-android-arm64@1.11.1: + resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-darwin-arm64@1.11.1": + /@unrs/resolver-binding-darwin-arm64@1.11.1: + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-darwin-x64@1.11.1": + /@unrs/resolver-binding-darwin-x64@1.11.1: + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-freebsd-x64@1.11.1": + /@unrs/resolver-binding-freebsd-x64@1.11.1: + resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1": + /@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1: + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-linux-arm-musleabihf@1.11.1": + /@unrs/resolver-binding-linux-arm-musleabihf@1.11.1: + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-linux-arm64-gnu@1.11.1": + /@unrs/resolver-binding-linux-arm64-gnu@1.11.1: + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-linux-arm64-musl@1.11.1": + /@unrs/resolver-binding-linux-arm64-musl@1.11.1: + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-linux-ppc64-gnu@1.11.1": + /@unrs/resolver-binding-linux-ppc64-gnu@1.11.1: + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-linux-riscv64-gnu@1.11.1": + /@unrs/resolver-binding-linux-riscv64-gnu@1.11.1: + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-linux-riscv64-musl@1.11.1": + /@unrs/resolver-binding-linux-riscv64-musl@1.11.1: + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-linux-s390x-gnu@1.11.1": + /@unrs/resolver-binding-linux-s390x-gnu@1.11.1: + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-linux-x64-gnu@1.11.1": + /@unrs/resolver-binding-linux-x64-gnu@1.11.1: + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-linux-x64-musl@1.11.1": + /@unrs/resolver-binding-linux-x64-musl@1.11.1: + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-wasm32-wasi@1.11.1": + /@unrs/resolver-binding-wasm32-wasi@1.11.1: + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + requiresBuild: true dependencies: - "@napi-rs/wasm-runtime": 0.2.12 + '@napi-rs/wasm-runtime': 0.2.12 + dev: true optional: true - "@unrs/resolver-binding-win32-arm64-msvc@1.11.1": + /@unrs/resolver-binding-win32-arm64-msvc@1.11.1: + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-win32-ia32-msvc@1.11.1": + /@unrs/resolver-binding-win32-ia32-msvc@1.11.1: + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - "@unrs/resolver-binding-win32-x64-msvc@1.11.1": + /@unrs/resolver-binding-win32-x64-msvc@1.11.1: + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - "@urql/core@5.2.0(graphql@16.11.0)": + /@urql/core@5.2.0: + resolution: {integrity: sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==} dependencies: - "@0no-co/graphql.web": 1.2.0(graphql@16.11.0) + '@0no-co/graphql.web': 1.2.0 wonka: 6.3.5 transitivePeerDependencies: - graphql + dev: false - "@urql/exchange-retry@1.3.2(@urql/core@5.2.0(graphql@16.11.0))": + /@urql/exchange-retry@1.3.2(@urql/core@5.2.0): + resolution: {integrity: sha512-TQMCz2pFJMfpNxmSfX1VSfTjwUIFx/mL+p1bnfM1xjjdla7Z+KnGMW/EhFbpckp3LyWAH4PgOsMwOMnIN+MBFg==} + peerDependencies: + '@urql/core': ^5.0.0 dependencies: - "@urql/core": 5.2.0(graphql@16.11.0) + '@urql/core': 5.2.0 wonka: 6.3.5 + dev: false - "@vercel/style-guide@5.2.0(@next/eslint-plugin-next@14.0.4)(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11))(prettier@3.6.2)(typescript@5.9.2)": + /@vercel/style-guide@5.2.0(eslint@8.57.1)(prettier@3.6.2)(typescript@5.9.2): + resolution: {integrity: sha512-fNSKEaZvSkiBoF6XEefs8CcgAV9K9e+MbcsDZjUsktHycKdA0jvjAzQi1W/FzLS+Nr5zZ6oejCwq/97dHUKe0g==} + engines: {node: '>=16'} + peerDependencies: + '@next/eslint-plugin-next': '>=12.3.0 <15' + eslint: '>=8.48.0 <9' + prettier: '>=3.0.0 <4' + typescript: '>=4.8.0 <6' + peerDependenciesMeta: + '@next/eslint-plugin-next': + optional: true + eslint: + optional: true + prettier: + optional: true + typescript: + optional: true dependencies: - "@babel/core": 7.28.3 - "@babel/eslint-parser": 7.28.0(@babel/core@7.28.3)(eslint@8.57.1) - "@rushstack/eslint-patch": 1.12.0 - "@typescript-eslint/eslint-plugin": 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) - "@typescript-eslint/parser": 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@babel/core': 7.28.4 + '@babel/eslint-parser': 7.28.4(@babel/core@7.28.4)(eslint@8.57.1) + '@rushstack/eslint-patch': 1.12.0 + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) + eslint: 8.57.1 eslint-config-prettier: 9.1.2(eslint@8.57.1) - eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)) + eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.32.0) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) - eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11))(typescript@5.9.2) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.57.1)(typescript@5.9.2) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) - eslint-plugin-playwright: 0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11))(typescript@5.9.2))(eslint@8.57.1) + eslint-plugin-playwright: 0.16.0(eslint-plugin-jest@27.9.0)(eslint@8.57.1) eslint-plugin-react: 7.37.5(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) eslint-plugin-testing-library: 6.5.0(eslint@8.57.1)(typescript@5.9.2) eslint-plugin-tsdoc: 0.2.17 eslint-plugin-unicorn: 48.0.1(eslint@8.57.1) - prettier-plugin-packagejson: 2.5.19(prettier@3.6.2) - optionalDependencies: - "@next/eslint-plugin-next": 14.0.4 - eslint: 8.57.1 prettier: 3.6.2 + prettier-plugin-packagejson: 2.5.19(prettier@3.6.2) typescript: 5.9.2 transitivePeerDependencies: - eslint-import-resolver-webpack - eslint-plugin-import-x - jest - supports-color + dev: true - "@wry/caches@1.0.1": + /@vitest/expect@1.6.1: + resolution: {integrity: sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==} dependencies: - tslib: 2.8.1 + '@vitest/spy': 1.6.1 + '@vitest/utils': 1.6.1 + chai: 4.5.0 + dev: true - "@wry/context@0.7.4": + /@vitest/runner@1.6.1: + resolution: {integrity: sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==} dependencies: - tslib: 2.8.1 + '@vitest/utils': 1.6.1 + p-limit: 5.0.0 + pathe: 1.1.2 + dev: true - "@wry/equality@0.5.7": + /@vitest/snapshot@1.6.1: + resolution: {integrity: sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==} dependencies: - tslib: 2.8.1 + magic-string: 0.30.19 + pathe: 1.1.2 + pretty-format: 29.7.0 + dev: true - "@wry/trie@0.5.0": + /@vitest/spy@1.6.1: + resolution: {integrity: sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==} dependencies: - tslib: 2.8.1 + tinyspy: 2.2.1 + dev: true + + /@vitest/utils@1.6.1: + resolution: {integrity: sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==} + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true - "@xmldom/xmldom@0.7.13": {} + /@xmldom/xmldom@0.7.13: + resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} + engines: {node: '>=10.0.0'} + deprecated: this version is no longer supported, please update to at least 0.8.* + dev: false - "@xmldom/xmldom@0.8.11": {} + /@xmldom/xmldom@0.8.11: + resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==} + engines: {node: '>=10.0.0'} + dev: false - abab@2.0.6: {} + /abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + dev: true - abort-controller@3.0.0: + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 - accepts@1.3.8: + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - accepts@2.0.0: + /accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} dependencies: mime-types: 3.0.1 negotiator: 1.0.0 + dev: true - acorn-globals@7.0.1: + /acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: acorn: 8.15.0 acorn-walk: 8.3.4 + dev: true - acorn-jsx@5.3.2(acorn@8.15.0): + /acorn-jsx@5.3.2(acorn@8.15.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.15.0 - acorn-walk@8.3.2: {} + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true - acorn-walk@8.3.4: + /acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} dependencies: acorn: 8.15.0 + dev: true - acorn@8.14.0: {} + /acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true - acorn@8.15.0: {} + /acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true - agent-base@6.0.2: + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} dependencies: - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color + dev: true + + /agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + dev: false - agentkeepalive@4.6.0: + /agentkeepalive@4.6.0: + resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} + engines: {node: '>= 8.0.0'} dependencies: humanize-ms: 1.2.1 + dev: true - ajv@6.12.6: + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - anser@1.4.10: {} + /anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} - ansi-colors@4.1.3: {} + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} - ansi-escapes@4.3.2: + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.21.3 - ansi-regex@4.1.1: {} + /ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + dev: false - ansi-regex@5.0.1: {} + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} - ansi-regex@6.2.0: {} + /ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} - ansi-styles@3.2.1: + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} dependencies: color-convert: 1.9.3 + dev: false - ansi-styles@4.3.0: + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} - ansi-styles@6.2.1: {} + /ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} - any-promise@1.3.0: {} + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - anymatch@3.1.3: + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - arg@4.1.3: {} + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true - arg@5.0.2: {} + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - argparse@1.0.10: + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 - argparse@2.0.1: {} + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-hidden@1.2.6: + /aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} dependencies: tslib: 2.8.1 + dev: false - aria-query@5.1.3: + /aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.2.3 + dev: true - aria-query@5.3.2: {} + /aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + dev: true - array-buffer-byte-length@1.0.2: + /array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 is-array-buffer: 3.0.5 + dev: true - array-includes@3.1.9: + /array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.4 @@ -18657,10 +8573,15 @@ snapshots: get-intrinsic: 1.3.0 is-string: 1.1.1 math-intrinsics: 1.1.0 + dev: true - array-union@2.1.0: {} + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} - array.prototype.findlast@1.2.5: + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 @@ -18668,8 +8589,11 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 + dev: true - array.prototype.findlastindex@1.2.6: + /array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.4 @@ -18678,30 +8602,42 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 + dev: true - array.prototype.flat@1.3.3: + /array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.24.0 es-shim-unscopables: 1.1.0 + dev: true - array.prototype.flatmap@1.3.3: + /array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.24.0 es-shim-unscopables: 1.1.0 + dev: true - array.prototype.tosorted@1.1.4: + /array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.24.0 es-errors: 1.3.0 es-shim-unscopables: 1.1.0 + dev: true - arraybuffer.prototype.slice@1.0.4: + /arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 @@ -18710,67 +8646,100 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 + dev: true - asap@2.0.6: {} + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - ast-types-flow@0.0.8: {} + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true - ast-types@0.15.2: + /ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + dev: true + + /ast-types@0.15.2: + resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + engines: {node: '>=4'} dependencies: tslib: 2.8.1 - async-function@1.0.0: {} + /async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + dev: true - async-limiter@1.0.1: {} + /async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - asynckit@0.4.0: {} + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true - autoprefixer@10.4.21(postcss@8.5.6): + /autoprefixer@10.4.21(postcss@8.5.6): + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 dependencies: - browserslist: 4.25.2 - caniuse-lite: 1.0.30001735 + browserslist: 4.26.2 + caniuse-lite: 1.0.30001743 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 + dev: true - available-typed-arrays@1.0.7: + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} dependencies: possible-typed-array-names: 1.1.0 - aws4fetch@1.0.20: {} + /aws4fetch@1.0.20: + resolution: {integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==} + dev: true - axe-core@4.10.3: {} + /axe-core@4.10.3: + resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==} + engines: {node: '>=4'} + dev: true - axios@1.11.0: - dependencies: - follow-redirects: 1.15.11 - form-data: 4.0.4 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - axobject-query@4.1.0: {} + /axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + dev: true - babel-core@7.0.0-bridge.0(@babel/core@7.28.3): + /babel-core@7.0.0-bridge.0(@babel/core@7.28.4): + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - "@babel/core": 7.28.3 + '@babel/core': 7.28.4 - babel-jest@29.7.0(@babel/core@7.28.3): + /babel-jest@29.7.0(@babel/core@7.28.4): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 dependencies: - "@babel/core": 7.28.3 - "@jest/transform": 29.7.0 - "@types/babel__core": 7.20.5 + '@babel/core': 7.28.4 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.28.3) + babel-preset-jest: 29.6.3(@babel/core@7.28.4) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color - babel-plugin-istanbul@6.1.1: + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} dependencies: "@babel/helper-plugin-utils": 7.27.1 "@istanbuljs/load-nyc-config": 1.1.0 @@ -18780,271 +8749,455 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-jest-hoist@29.6.3: + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@babel/template": 7.27.2 - "@babel/types": 7.28.2 - "@types/babel__core": 7.20.5 - "@types/babel__traverse": 7.28.0 + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.28.0 - babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.3): + /babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.4): + resolution: {integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - "@babel/compat-data": 7.28.0 - "@babel/core": 7.28.3 - "@babel/helper-define-polyfill-provider": 0.6.5(@babel/core@7.28.3) + '@babel/compat-data': 7.28.4 + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.3): + /babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.4): + resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-define-polyfill-provider": 0.6.5(@babel/core@7.28.3) - core-js-compat: 3.45.0 + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) + core-js-compat: 3.45.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.3): + /babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.4): + resolution: {integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - "@babel/core": 7.28.3 - "@babel/helper-define-polyfill-provider": 0.6.5(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.4) transitivePeerDependencies: - supports-color - babel-plugin-react-native-web@0.19.13: {} + /babel-plugin-react-compiler@19.1.0-rc.3: + resolution: {integrity: sha512-mjRn69WuTz4adL0bXGx8Rsyk1086zFJeKmes6aK0xPuK3aaXmDJdLHqwKKMrpm6KAI1MCoUK72d2VeqQbu8YIA==} + dependencies: + '@babel/types': 7.28.4 + dev: false + + /babel-plugin-react-native-web@0.21.1: + resolution: {integrity: sha512-7XywfJ5QIRMwjOL+pwJt2w47Jmi5fFLvK7/So4fV4jIN6PcRbylCp9/l3cJY4VJbSz3lnWTeHDTD1LKIc1C09Q==} + dev: false - babel-plugin-syntax-hermes-parser@0.23.1: + /babel-plugin-syntax-hermes-parser@0.23.1: + resolution: {integrity: sha512-uNLD0tk2tLUjGFdmCk+u/3FEw2o+BAwW4g+z2QVlxJrzZYOOPADroEcNtTPt5lNiScctaUmnsTkVEnOwZUOLhA==} dependencies: hermes-parser: 0.23.1 - babel-plugin-syntax-hermes-parser@0.25.1: + /babel-plugin-syntax-hermes-parser@0.25.1: + resolution: {integrity: sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==} dependencies: hermes-parser: 0.25.1 - babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.28.3): + /babel-plugin-syntax-hermes-parser@0.29.1: + resolution: {integrity: sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==} + dependencies: + hermes-parser: 0.29.1 + dev: false + + /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.28.4): + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} dependencies: - "@babel/plugin-syntax-flow": 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - "@babel/core" - babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.3): - dependencies: - "@babel/core": 7.28.3 - "@babel/plugin-syntax-async-generators": 7.8.4(@babel/core@7.28.3) - "@babel/plugin-syntax-bigint": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-class-properties": 7.12.13(@babel/core@7.28.3) - "@babel/plugin-syntax-class-static-block": 7.14.5(@babel/core@7.28.3) - "@babel/plugin-syntax-import-attributes": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-import-meta": 7.10.4(@babel/core@7.28.3) - "@babel/plugin-syntax-json-strings": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-logical-assignment-operators": 7.10.4(@babel/core@7.28.3) - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-numeric-separator": 7.10.4(@babel/core@7.28.3) - "@babel/plugin-syntax-object-rest-spread": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-optional-catch-binding": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.28.3) - "@babel/plugin-syntax-private-property-in-object": 7.14.5(@babel/core@7.28.3) - "@babel/plugin-syntax-top-level-await": 7.14.5(@babel/core@7.28.3) - - babel-preset-expo@13.2.3(@babel/core@7.28.3): - dependencies: - "@babel/helper-module-imports": 7.27.1 - "@babel/plugin-proposal-decorators": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-proposal-export-default-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-export-default-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-export-namespace-from": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-flow-strip-types": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-modules-commonjs": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-object-rest-spread": 7.28.0(@babel/core@7.28.3) - "@babel/plugin-transform-parameters": 7.27.7(@babel/core@7.28.3) - "@babel/plugin-transform-private-methods": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-private-property-in-object": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-transform-runtime": 7.28.3(@babel/core@7.28.3) - "@babel/preset-react": 7.27.1(@babel/core@7.28.3) - "@babel/preset-typescript": 7.27.1(@babel/core@7.28.3) - "@react-native/babel-preset": 0.79.5(@babel/core@7.28.3) - babel-plugin-react-native-web: 0.19.13 - babel-plugin-syntax-hermes-parser: 0.25.1 - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.3) - debug: 4.4.1 + /babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.4): + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} + peerDependencies: + '@babel/core': ^7.0.0 || ^8.0.0-0 + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.4) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.4) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.4) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.4) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.4) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.4) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.4) + + /babel-preset-expo@54.0.1(@babel/core@7.28.4)(@babel/runtime@7.28.4)(expo@54.0.8)(react-refresh@0.14.2): + resolution: {integrity: sha512-ziLpj+I/IxQdblHCpuzcyukTpzunq6h/QFsbWhk5DTd4suqB+Vl0Neacd+e38YeKXBabmxCOv8VJN3qk39Md4w==} + peerDependencies: + '@babel/runtime': ^7.20.0 + expo: '*' + react-refresh: '>=0.14.0 <1.0.0' + peerDependenciesMeta: + '@babel/runtime': + optional: true + expo: + optional: true + dependencies: + '@babel/helper-module-imports': 7.27.1 + '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-export-default-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.4) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.4) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-runtime': 7.28.3(@babel/core@7.28.4) + '@babel/preset-react': 7.27.1(@babel/core@7.28.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) + '@babel/runtime': 7.28.4 + '@react-native/babel-preset': 0.81.4(@babel/core@7.28.4) + babel-plugin-react-compiler: 19.1.0-rc.3 + babel-plugin-react-native-web: 0.21.1 + babel-plugin-syntax-hermes-parser: 0.29.1 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.4) + debug: 4.4.3 + expo: 54.0.8(@babel/core@7.28.4)(react-native@0.76.7)(react@18.3.1) react-refresh: 0.14.2 resolve-from: 5.0.0 transitivePeerDependencies: - "@babel/core" - supports-color + dev: false - babel-preset-jest@29.6.3(@babel/core@7.28.3): + /babel-preset-jest@29.6.3(@babel/core@7.28.4): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - "@babel/core": 7.28.3 + '@babel/core': 7.28.4 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.3) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.4) + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - balanced-match@1.0.2: {} + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - base64-js@1.5.1: {} + /baseline-browser-mapping@2.8.4: + resolution: {integrity: sha512-L+YvJwGAgwJBV1p6ffpSTa2KRc69EeeYGYjRVWKs0GKrK+LON0GC0gV+rKSNtALEDvMDqkvCFq9r1r94/Gjwxw==} + hasBin: true - bech32@1.1.4: {} + /bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + dev: false - bech32@2.0.0: {} + /bech32@2.0.0: + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + dev: false - better-opn@3.0.2: + /better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} dependencies: open: 8.4.2 + dev: false - better-path-resolve@1.0.0: + /better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} dependencies: is-windows: 1.0.2 + dev: false - big-integer@1.6.52: {} - - binary-extensions@2.3.0: {} + /big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + dev: false - blake3-wasm@2.1.5: {} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: true - bn.js@4.12.2: {} + /blake3-wasm@2.1.5: + resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} + dev: true - bn.js@5.2.2: {} - - body-parser@2.2.0: + /body-parser@2.2.0: + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.1 + debug: 4.4.3 http-errors: 2.0.0 iconv-lite: 0.6.3 on-finished: 2.4.1 qs: 6.14.0 - raw-body: 3.0.0 + raw-body: 3.0.1 type-is: 2.0.1 transitivePeerDependencies: - supports-color + dev: true - bowser@2.12.0: {} + /bowser@2.12.1: + resolution: {integrity: sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==} + dev: true - bplist-creator@0.1.0: + /bplist-creator@0.1.0: + resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} dependencies: stream-buffers: 2.2.0 + dev: false - bplist-parser@0.3.1: + /bplist-parser@0.3.1: + resolution: {integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==} + engines: {node: '>= 5.10.0'} dependencies: big-integer: 1.6.52 + dev: false - bplist-parser@0.3.2: + /bplist-parser@0.3.2: + resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==} + engines: {node: '>= 5.10.0'} dependencies: big-integer: 1.6.52 + dev: false - brace-expansion@1.1.12: + /brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.2: + /brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} dependencies: balanced-match: 1.0.2 - braces@3.0.3: + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} dependencies: fill-range: 7.1.1 - brorand@1.1.0: {} - - browserslist@4.25.2: + /browserslist@4.26.2: + resolution: {integrity: sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true dependencies: - caniuse-lite: 1.0.30001735 - electron-to-chromium: 1.5.204 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.2) + baseline-browser-mapping: 2.8.4 + caniuse-lite: 1.0.30001743 + electron-to-chromium: 1.5.220 + node-releases: 2.0.21 + update-browserslist-db: 1.1.3(browserslist@4.26.2) - bs-logger@0.2.6: + /bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} dependencies: fast-json-stable-stringify: 2.1.0 + dev: true - bser@2.1.1: + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 - buffer-from@1.1.2: {} + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer@5.7.1: + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + dev: false - buffer@6.0.3: + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - builtin-modules@3.3.0: {} + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true - bundle-require@4.2.1(esbuild@0.17.19): + /bundle-require@4.2.1(esbuild@0.17.19): + resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' dependencies: esbuild: 0.17.19 load-tsconfig: 0.2.5 + dev: true - busboy@1.6.0: + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 + dev: false - bytes@3.1.2: {} + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} - cac@6.7.14: {} + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true - call-bind-apply-helpers@1.0.2: + /call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 function-bind: 1.1.2 - call-bind@1.0.8: + /call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} dependencies: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 get-intrinsic: 1.3.0 set-function-length: 1.2.2 - call-bound@1.0.4: + /call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} dependencies: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 - caller-callsite@2.0.0: + /caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} dependencies: callsites: 2.0.0 - caller-path@2.0.0: + /caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} dependencies: caller-callsite: 2.0.0 - callsites@2.0.0: {} + /callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true + + /camelcase-keys@9.1.3: + resolution: {integrity: sha512-Rircqi9ch8AnZscQcsA1C47NFdaO3wukpmIRzYcDOrmvgt78hM/sj5pZhZNec2NM12uk5vTwRHZ4anGcrC4ZTg==} + engines: {node: '>=16'} + dependencies: + camelcase: 8.0.0 + map-obj: 5.0.0 + quick-lru: 6.1.2 + type-fest: 4.41.0 + dev: false - callsites@3.1.0: {} + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} - camelcase-css@2.0.1: {} + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} - camelcase@5.3.1: {} + /camelcase@8.0.0: + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} + engines: {node: '>=16'} + dev: false - camelcase@6.3.0: {} + /caniuse-lite@1.0.30001743: + resolution: {integrity: sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==} - caniuse-lite@1.0.30001735: {} + /chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + dev: true - chalk@2.4.2: + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: false - chalk@4.1.2: + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.6.0: {} + /chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true - char-regex@1.0.2: {} + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true - chardet@2.1.0: {} + /chardet@2.1.0: + resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} + dev: false + + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true - chokidar@3.6.0: + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 braces: 3.0.3 @@ -19055,21 +9208,29 @@ snapshots: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 + dev: true - chownr@3.0.0: {} + /chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + dev: false - chrome-launcher@0.15.2: + /chrome-launcher@0.15.2: + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} + hasBin: true dependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.16 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 transitivePeerDependencies: - supports-color - chromium-edge-launcher@0.2.0: + /chromium-edge-launcher@0.2.0: + resolution: {integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==} dependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.16 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -19078,48 +9239,75 @@ snapshots: transitivePeerDependencies: - supports-color - ci-info@2.0.0: {} + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - ci-info@3.9.0: {} + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} - cjs-module-lexer@1.4.3: {} + /cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + dev: true - clean-regexp@1.0.0: + /clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} dependencies: escape-string-regexp: 1.0.5 + dev: true - cli-cursor@2.1.0: + /cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} dependencies: restore-cursor: 2.0.0 + dev: false - cli-spinners@2.9.2: {} + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + dev: false - client-only@0.0.1: {} + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false - cliui@8.0.1: + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - cliui@9.0.1: + /cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} dependencies: string-width: 7.2.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 + dev: true - clone-deep@4.0.1: + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} dependencies: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 - clone@1.0.4: {} + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: false - cloudflare@4.5.0: + /cloudflare@4.5.0: + resolution: {integrity: sha512-fPcbPKx4zF45jBvQ0z7PCdgejVAPBBCZxwqk1k7krQNfpM07Cfj97/Q6wBzvYqlWXx/zt1S9+m8vnfCe06umbQ==} dependencies: - "@types/node": 18.19.123 - "@types/node-fetch": 2.6.13 + '@types/node': 18.19.126 + '@types/node-fetch': 2.6.13 abort-controller: 3.0.0 agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 @@ -19127,58 +9315,101 @@ snapshots: node-fetch: 2.7.0 transitivePeerDependencies: - encoding + dev: true - clsx@2.1.1: {} + /clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + dev: true - co@4.6.0: {} + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true - collect-v8-coverage@1.0.2: {} + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + dev: true - color-convert@1.9.3: + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 + dev: false - color-convert@2.0.1: + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - color-name@1.1.3: {} + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: false - color-name@1.1.4: {} + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-string@1.9.1: + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} dependencies: color-name: 1.1.4 - simple-swizzle: 0.2.2 + simple-swizzle: 0.2.4 + dev: true - color@4.2.3: + /color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} dependencies: color-convert: 2.0.1 color-string: 1.9.1 + dev: true - colorette@1.4.0: {} + /colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + dev: true - combined-stream@1.0.8: + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 + dev: true - commander@11.1.0: {} + /commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + dev: true - commander@12.1.0: {} + /commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} - commander@2.20.3: {} + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - commander@4.1.1: {} + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} - commander@7.2.0: {} + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: false - commondir@1.0.1: {} + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - compressible@2.0.18: + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.54.0 + dev: false - compression@1.8.1: + /compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} dependencies: bytes: 3.1.2 compressible: 2.0.18 @@ -19189,10 +9420,18 @@ snapshots: vary: 1.1.2 transitivePeerDependencies: - supports-color + dev: false + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concat-map@0.0.1: {} + /confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + dev: true - connect@3.7.0: + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} dependencies: debug: 2.6.9 finalhandler: 1.1.2 @@ -19201,42 +9440,68 @@ snapshots: transitivePeerDependencies: - supports-color - content-disposition@1.0.0: + /content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} dependencies: safe-buffer: 5.2.1 + dev: true - content-type@1.0.5: {} + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: true - convert-source-map@2.0.0: {} + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-signature@1.2.2: {} + /cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + dev: true - cookie@0.7.1: {} + /cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + dev: true - cookie@1.0.2: {} + /cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + dev: true - core-js-compat@3.45.0: + /core-js-compat@3.45.1: + resolution: {integrity: sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==} dependencies: - browserslist: 4.25.2 + browserslist: 4.26.2 - cosmiconfig@5.2.1: + /cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} dependencies: import-fresh: 2.0.0 is-directory: 0.3.1 js-yaml: 3.14.1 parse-json: 4.0.0 - cosmjs-types@0.10.1: {} + /cosmjs-types@0.10.1: + resolution: {integrity: sha512-CENXb4O5GN+VyB68HYXFT2SOhv126Z59631rZC56m8uMWa6/cSlFeai8BwZGT1NMepw0Ecf+U8XSOnBzZUWh9Q==} + dev: false - cosmjs-types@0.9.0: {} + /cosmjs-types@0.9.0: + resolution: {integrity: sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==} + dev: false - create-jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)): + /create-jest@29.7.0(@types/node@20.19.16)(ts-node@10.9.2): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true dependencies: "@jest/types": 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) + jest-config: 29.7.0(@types/node@20.19.16)(ts-node@10.9.2) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -19244,80 +9509,163 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + dev: true - create-require@1.1.1: {} + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true - cross-spawn@7.0.6: + /cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - crypto-random-string@2.0.0: {} + /crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + dev: false - css.escape@1.5.1: {} + /css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: true - cssesc@3.0.0: {} + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true - cssom@0.3.8: {} + /cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + dev: true - cssom@0.5.0: {} + /cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + dev: true - cssstyle@2.3.0: + /cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} dependencies: cssom: 0.3.8 + dev: true - csstype@3.1.3: {} + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - damerau-levenshtein@1.0.8: {} + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true - data-urls@3.0.2: + /data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} dependencies: abab: 2.0.6 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 + dev: true - data-view-buffer@1.0.2: + /data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 + dev: true - data-view-byte-length@1.0.2: + /data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 + dev: true - data-view-byte-offset@1.0.1: + /data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 + dev: true - dataloader@1.4.0: {} + /dataloader@1.4.0: + resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} + dev: false - debug@2.6.9: + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 - debug@3.2.7: + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 - debug@4.3.6: + /debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.2 + dev: true - debug@4.4.1: + /debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 - decimal.js@10.6.0: {} + /decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + dev: true - dedent@1.6.0: {} + /dedent@1.7.0: + resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + + /deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.1.0 + dev: true - deep-equal@2.2.3: + /deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 @@ -19337,156 +9685,260 @@ snapshots: which-boxed-primitive: 1.1.1 which-collection: 1.0.2 which-typed-array: 1.1.19 + dev: true - deep-extend@0.6.0: {} + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: false - deep-is@0.1.4: {} + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - deepmerge@4.3.1: {} + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} - defaults@1.0.4: + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 + dev: false - define-data-property@1.1.4: + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} dependencies: es-define-property: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 - define-lazy-prop@2.0.0: {} + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: false - define-properties@1.2.1: + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 - defu@6.1.4: {} - - delayed-stream@1.0.0: {} - - depd@2.0.0: {} - - destroy@1.2.0: {} - - detect-indent@6.1.0: {} - - detect-indent@7.0.1: {} - - detect-libc@1.0.3: {} - - detect-libc@2.0.4: {} - - detect-newline@3.1.0: {} - - detect-newline@4.0.1: {} - - detect-node-es@1.1.0: {} - - didyoumean@1.2.2: {} - - diff-sequences@29.6.3: {} - - diff@4.0.2: {} - - dir-glob@3.0.1: + /defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: false + + /detect-indent@7.0.2: + resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} + engines: {node: '>=12.20'} + dev: true + + /detect-libc@2.1.0: + resolution: {integrity: sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==} + engines: {node: '>=8'} + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /detect-newline@4.0.1: + resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: false + + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: true + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dependencies: path-type: 4.0.0 - dlv@1.1.3: {} + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: true - doctrine@2.1.0: + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 + dev: true - doctrine@3.0.0: + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 - dom-accessibility-api@0.5.16: {} + /dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dev: true - dom-accessibility-api@0.6.3: {} + /dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dev: true - domexception@4.0.0: + /domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead dependencies: webidl-conversions: 7.0.0 + dev: true - dotenv-expand@11.0.7: + /dotenv-expand@11.0.7: + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} dependencies: dotenv: 16.4.7 + dev: false - dotenv@16.0.3: {} + /dotenv@16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} + dev: true - dotenv@16.4.7: {} + /dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + dev: false - dotenv@16.6.1: {} + /dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + engines: {node: '>=12'} + dev: true - dotenv@8.6.0: {} + /dotenv@8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + dev: false - dunder-proto@1.0.1: + /dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} dependencies: call-bind-apply-helpers: 1.0.2 es-errors: 1.3.0 gopd: 1.2.0 - duplexer@0.1.2: {} + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: true - eastasianwidth@0.2.0: {} + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - eciesjs@0.4.15: + /eciesjs@0.4.15: + resolution: {integrity: sha512-r6kEJXDKecVOCj2nLMuXK/FCPeurW33+3JRpfXVbjLja3XUYFfD9I/JBreH6sUyzcm3G/YQboBjMla6poKeSdA==} + engines: {bun: '>=1', deno: '>=2', node: '>=16'} dependencies: - "@ecies/ciphers": 0.2.4(@noble/ciphers@1.3.0) - "@noble/ciphers": 1.3.0 - "@noble/curves": 1.9.7 - "@noble/hashes": 1.8.0 - - ee-first@1.1.1: {} + '@ecies/ciphers': 0.2.4(@noble/ciphers@1.3.0) + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + dev: true - electron-to-chromium@1.5.204: {} + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - elliptic@6.6.1: - dependencies: - bn.js: 4.12.2 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 + /electron-to-chromium@1.5.220: + resolution: {integrity: sha512-TWXijEwR1ggr4BdAKrb1nMNqYLTx1/4aD1fkeZU+FVJGTKu53/T7UyHKXlqEX3Ub02csyHePbHmkvnrjcaYzMA==} - emittery@0.13.1: {} + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true - emoji-regex@10.5.0: {} + /emoji-regex@10.5.0: + resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} + dev: true - emoji-regex@8.0.0: {} + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: {} + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - encodeurl@1.0.2: {} + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} - encodeurl@2.0.0: {} + /encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} - enquirer@2.4.1: + /enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 strip-ansi: 6.0.1 - entities@6.0.1: {} + /entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + dev: true - env-editor@0.4.2: {} + /env-editor@0.4.2: + resolution: {integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==} + engines: {node: '>=8'} + dev: false - error-ex@1.3.2: + /error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} dependencies: is-arrayish: 0.2.1 - error-stack-parser-es@1.0.5: {} + /error-stack-parser-es@1.0.5: + resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} + dev: true - error-stack-parser@2.1.4: + /error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} dependencies: stackframe: 1.3.4 - es-abstract@1.24.0: + /es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -19542,12 +9994,18 @@ snapshots: typed-array-length: 1.0.7 unbox-primitive: 1.1.0 which-typed-array: 1.1.19 + dev: true - es-define-property@1.0.1: {} + /es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} - es-errors@1.3.0: {} + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} - es-get-iterator@1.1.3: + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.8 get-intrinsic: 1.3.0 @@ -19558,8 +10016,11 @@ snapshots: is-string: 1.1.1 isarray: 2.0.5 stop-iteration-iterator: 1.1.0 + dev: true - es-iterator-helpers@1.2.1: + /es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.4 @@ -19577,100 +10038,173 @@ snapshots: internal-slot: 1.1.0 iterator.prototype: 1.1.5 safe-array-concat: 1.1.3 + dev: true - es-object-atoms@1.1.1: + /es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - es-set-tostringtag@2.1.0: + /es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 hasown: 2.0.2 + dev: true - es-shim-unscopables@1.1.0: + /es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} dependencies: hasown: 2.0.2 + dev: true - es-to-primitive@1.3.0: + /es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 is-date-object: 1.1.0 is-symbol: 1.1.1 + dev: true - esbuild@0.17.19: + /esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + dev: true + + /esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true optionalDependencies: - "@esbuild/android-arm": 0.17.19 - "@esbuild/android-arm64": 0.17.19 - "@esbuild/android-x64": 0.17.19 - "@esbuild/darwin-arm64": 0.17.19 - "@esbuild/darwin-x64": 0.17.19 - "@esbuild/freebsd-arm64": 0.17.19 - "@esbuild/freebsd-x64": 0.17.19 - "@esbuild/linux-arm": 0.17.19 - "@esbuild/linux-arm64": 0.17.19 - "@esbuild/linux-ia32": 0.17.19 - "@esbuild/linux-loong64": 0.17.19 - "@esbuild/linux-mips64el": 0.17.19 - "@esbuild/linux-ppc64": 0.17.19 - "@esbuild/linux-riscv64": 0.17.19 - "@esbuild/linux-s390x": 0.17.19 - "@esbuild/linux-x64": 0.17.19 - "@esbuild/netbsd-x64": 0.17.19 - "@esbuild/openbsd-x64": 0.17.19 - "@esbuild/sunos-x64": 0.17.19 - "@esbuild/win32-arm64": 0.17.19 - "@esbuild/win32-ia32": 0.17.19 - "@esbuild/win32-x64": 0.17.19 - - esbuild@0.25.4: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + dev: true + + /esbuild@0.25.4: + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + engines: {node: '>=18'} + hasBin: true + requiresBuild: true optionalDependencies: - "@esbuild/aix-ppc64": 0.25.4 - "@esbuild/android-arm": 0.25.4 - "@esbuild/android-arm64": 0.25.4 - "@esbuild/android-x64": 0.25.4 - "@esbuild/darwin-arm64": 0.25.4 - "@esbuild/darwin-x64": 0.25.4 - "@esbuild/freebsd-arm64": 0.25.4 - "@esbuild/freebsd-x64": 0.25.4 - "@esbuild/linux-arm": 0.25.4 - "@esbuild/linux-arm64": 0.25.4 - "@esbuild/linux-ia32": 0.25.4 - "@esbuild/linux-loong64": 0.25.4 - "@esbuild/linux-mips64el": 0.25.4 - "@esbuild/linux-ppc64": 0.25.4 - "@esbuild/linux-riscv64": 0.25.4 - "@esbuild/linux-s390x": 0.25.4 - "@esbuild/linux-x64": 0.25.4 - "@esbuild/netbsd-arm64": 0.25.4 - "@esbuild/netbsd-x64": 0.25.4 - "@esbuild/openbsd-arm64": 0.25.4 - "@esbuild/openbsd-x64": 0.25.4 - "@esbuild/sunos-x64": 0.25.4 - "@esbuild/win32-arm64": 0.25.4 - "@esbuild/win32-ia32": 0.25.4 - "@esbuild/win32-x64": 0.25.4 - - escalade@3.2.0: {} - - escape-html@1.0.3: {} - - escape-string-regexp@1.0.5: {} - - escape-string-regexp@2.0.0: {} - - escape-string-regexp@4.0.0: {} - - escodegen@2.1.0: + '@esbuild/aix-ppc64': 0.25.4 + '@esbuild/android-arm': 0.25.4 + '@esbuild/android-arm64': 0.25.4 + '@esbuild/android-x64': 0.25.4 + '@esbuild/darwin-arm64': 0.25.4 + '@esbuild/darwin-x64': 0.25.4 + '@esbuild/freebsd-arm64': 0.25.4 + '@esbuild/freebsd-x64': 0.25.4 + '@esbuild/linux-arm': 0.25.4 + '@esbuild/linux-arm64': 0.25.4 + '@esbuild/linux-ia32': 0.25.4 + '@esbuild/linux-loong64': 0.25.4 + '@esbuild/linux-mips64el': 0.25.4 + '@esbuild/linux-ppc64': 0.25.4 + '@esbuild/linux-riscv64': 0.25.4 + '@esbuild/linux-s390x': 0.25.4 + '@esbuild/linux-x64': 0.25.4 + '@esbuild/netbsd-arm64': 0.25.4 + '@esbuild/netbsd-x64': 0.25.4 + '@esbuild/openbsd-arm64': 0.25.4 + '@esbuild/openbsd-x64': 0.25.4 + '@esbuild/sunos-x64': 0.25.4 + '@esbuild/win32-arm64': 0.25.4 + '@esbuild/win32-ia32': 0.25.4 + '@esbuild/win32-x64': 0.25.4 + dev: true + + /escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true dependencies: esprima: 4.0.1 estraverse: 5.3.0 esutils: 2.0.3 optionalDependencies: source-map: 0.6.1 + dev: true - eslint-config-next@14.0.4(eslint@8.57.1)(typescript@5.9.2): + /eslint-config-next@14.0.4(eslint@8.57.1)(typescript@5.9.2): + resolution: {integrity: sha512-9/xbOHEQOmQtqvQ1UsTQZpnA7SlDMBtuKJ//S4JnoyK3oGLhILKXdBgu/UO7lQo/2xOykQULS1qQ6p2+EpHgAQ==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true dependencies: "@next/eslint-plugin-next": 14.0.4 "@rushstack/eslint-patch": 1.12.0 @@ -19678,73 +10212,133 @@ snapshots: eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.5(eslint@8.57.1) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.1) - optionalDependencies: typescript: 5.9.2 transitivePeerDependencies: - eslint-import-resolver-webpack - eslint-plugin-import-x - supports-color + dev: true - eslint-config-prettier@9.1.2(eslint@8.57.1): + /eslint-config-prettier@9.1.2(eslint@8.57.1): + resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' dependencies: eslint: 8.57.1 + dev: true - eslint-config-turbo@1.13.4(eslint@8.57.1): + /eslint-config-turbo@1.13.4(eslint@8.57.1): + resolution: {integrity: sha512-+we4eWdZlmlEn7LnhXHCIPX/wtujbHCS7XjQM/TN09BHNEl2fZ8id4rHfdfUKIYTSKyy8U/nNyJ0DNoZj5Q8bw==} + peerDependencies: + eslint: '>6.6.0' dependencies: eslint: 8.57.1 eslint-plugin-turbo: 1.13.4(eslint@8.57.1) + dev: true - eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)): + /eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.32.0): + resolution: {integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==} + engines: {node: '>= 4'} + peerDependencies: + eslint-plugin-import: '>=1.4.0' dependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + dev: true - eslint-import-resolver-node@0.3.9: + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 is-core-module: 2.16.1 resolve: 1.22.10 transitivePeerDependencies: - supports-color + dev: true - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1): + /eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1): + resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true dependencies: - "@nolyfill/is-core-module": 1.0.39 - debug: 4.4.1 + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.3 eslint: 8.57.1 + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 unrs-resolver: 1.11.1 - optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) transitivePeerDependencies: - supports-color + dev: true - eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1): + /eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) debug: 3.2.7 - optionalDependencies: - "@typescript-eslint/parser": 6.21.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) transitivePeerDependencies: - supports-color + dev: true - eslint-plugin-eslint-comments@3.2.0(eslint@8.57.1): + /eslint-plugin-eslint-comments@3.2.0(eslint@8.57.1): + resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} + engines: {node: '>=6.5.0'} + peerDependencies: + eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 eslint: 8.57.1 ignore: 5.3.2 + dev: true - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + /eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true dependencies: - "@rtsao/scc": 1.1.0 + '@rtsao/scc': 1.1.0 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) array-includes: 3.1.9 array.prototype.findlastindex: 1.2.6 array.prototype.flat: 1.3.3 @@ -19753,7 +10347,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -19764,25 +10358,38 @@ snapshots: semver: 6.3.1 string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 - optionalDependencies: - "@typescript-eslint/parser": 6.21.0(eslint@8.57.1)(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color + dev: true - eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11))(typescript@5.9.2): + /eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.57.1)(typescript@5.9.2): + resolution: {integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 || ^7.0.0 + eslint: ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true dependencies: - "@typescript-eslint/utils": 5.62.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 - optionalDependencies: - "@typescript-eslint/eslint-plugin": 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2) - jest: 29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) transitivePeerDependencies: - supports-color - typescript + dev: true - eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1): + /eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1): + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 dependencies: aria-query: 5.3.2 array-includes: 3.1.9 @@ -19800,22 +10407,44 @@ snapshots: object.fromentries: 2.0.8 safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 + dev: true - eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11))(typescript@5.9.2))(eslint@8.57.1): + /eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.9.0)(eslint@8.57.1): + resolution: {integrity: sha512-DcHpF0SLbNeh9MT4pMzUGuUSnJ7q5MWbP8sSEFIMS6j7Ggnduq8ghNlfhURgty4c1YFny7Ge9xYTO1FSAoV2Vw==} + peerDependencies: + eslint: '>=7' + eslint-plugin-jest: '>=25' + peerDependenciesMeta: + eslint-plugin-jest: + optional: true dependencies: eslint: 8.57.1 - optionalDependencies: - eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.19.11))(typescript@5.9.2) + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.57.1)(typescript@5.9.2) + dev: true - eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + /eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: eslint: 8.57.1 + dev: true - eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705(eslint@8.57.1): + /eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705(eslint@8.57.1): + resolution: {integrity: sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: eslint: 8.57.1 + dev: true - eslint-plugin-react@7.37.5(eslint@8.57.1): + /eslint-plugin-react@7.37.5(eslint@8.57.1): + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -19836,29 +10465,45 @@ snapshots: semver: 6.3.1 string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 + dev: true - eslint-plugin-testing-library@6.5.0(eslint@8.57.1)(typescript@5.9.2): + /eslint-plugin-testing-library@6.5.0(eslint@8.57.1)(typescript@5.9.2): + resolution: {integrity: sha512-Ls5TUfLm5/snocMAOlofSOJxNN0aKqwTlco7CrNtMjkTdQlkpSMaeTCDHCuXfzrI97xcx2rSCNeKeJjtpkNC1w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 dependencies: "@typescript-eslint/utils": 5.62.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 transitivePeerDependencies: - supports-color - typescript + dev: true - eslint-plugin-tsdoc@0.2.17: + /eslint-plugin-tsdoc@0.2.17: + resolution: {integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==} dependencies: - "@microsoft/tsdoc": 0.14.2 - "@microsoft/tsdoc-config": 0.16.2 + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + dev: true - eslint-plugin-turbo@1.13.4(eslint@8.57.1): + /eslint-plugin-turbo@1.13.4(eslint@8.57.1): + resolution: {integrity: sha512-82GfMzrewI/DJB92Bbch239GWbGx4j1zvjk1lqb06lxIlMPnVwUHVwPbAnLfyLG3JuhLv9whxGkO/q1CL18JTg==} + peerDependencies: + eslint: '>6.6.0' dependencies: dotenv: 16.0.3 eslint: 8.57.1 + dev: true - eslint-plugin-unicorn@48.0.1(eslint@8.57.1): + /eslint-plugin-unicorn@48.0.1(eslint@8.57.1): + resolution: {integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==} + engines: {node: '>=16'} + peerDependencies: + eslint: '>=8.44.0' dependencies: - "@babel/helper-validator-identifier": 7.27.1 - "@eslint-community/eslint-utils": 4.7.0(eslint@8.57.1) + '@babel/helper-validator-identifier': 7.27.1 + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) ci-info: 3.9.0 clean-regexp: 1.0.0 eslint: 8.57.1 @@ -19873,35 +10518,50 @@ snapshots: regjsparser: 0.10.0 semver: 7.7.2 strip-indent: 3.0.0 + dev: true - eslint-scope@5.1.1: + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + dev: true - eslint-scope@7.2.2: + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-visitor-keys@2.1.0: {} + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true - eslint-visitor-keys@3.4.3: {} + /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} - eslint@8.57.1: + /eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true dependencies: - "@eslint-community/eslint-utils": 4.7.0(eslint@8.57.1) - "@eslint-community/regexpp": 4.12.1 - "@eslint/eslintrc": 2.1.4 - "@eslint/js": 8.57.1 - "@humanwhocodes/config-array": 0.13.0 - "@humanwhocodes/module-importer": 1.0.1 - "@nodelib/fs.walk": 1.2.8 - "@ungap/structured-clone": 1.3.0 + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.3.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1 + debug: 4.4.3 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -19931,37 +10591,70 @@ snapshots: transitivePeerDependencies: - supports-color - espree@9.6.1: + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.15.0 acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 3.4.3 - esprima@4.0.1: {} + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true - esquery@1.6.0: + /esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 - esrecurse@4.3.0: + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} - estraverse@5.3.0: {} + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.8 + dev: true - esutils@2.0.3: {} + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} - etag@1.8.1: {} + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} - event-target-shim@5.0.1: {} + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} - events@3.3.0: {} + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false - exec-async@2.2.0: {} + /exec-async@2.2.0: + resolution: {integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==} + dev: false - execa@5.1.1: + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} dependencies: cross-spawn: 7.0.6 get-stream: 6.0.1 @@ -19973,123 +10666,223 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - exit-hook@2.2.1: {} + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + + /exit-hook@2.2.1: + resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} + engines: {node: '>=6'} + dev: true - exit@0.1.2: {} + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true - expect@29.7.0: + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: "@jest/expect-utils": 29.7.0 jest-get-type: 29.6.3 jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 jest-util: 29.7.0 + dev: true - expo-asset@11.1.7(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1): + /expo-asset@12.0.8(expo@54.0.8)(react-native@0.76.7)(react@18.3.1): + resolution: {integrity: sha512-jj2U8zw9+7orST2rlQGULYiqPoECOuUyffs2NguGrq84bYbkM041T7TOMXH2raPVJnM9lEAP54ezI6XL+GVYqw==} + peerDependencies: + expo: '*' + react: '*' + react-native: '*' dependencies: - "@expo/image-utils": 0.7.6 - expo: 53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - expo-constants: 17.1.7(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) + '@expo/image-utils': 0.8.7 + expo: 54.0.8(@babel/core@7.28.4)(react-native@0.76.7)(react@18.3.1) + expo-constants: 18.0.9(expo@54.0.8)(react-native@0.76.7) react: 18.3.1 - react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) transitivePeerDependencies: - supports-color + dev: false - expo-constants@17.0.8(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)): + /expo-constants@17.0.8(expo@54.0.8)(react-native@0.76.7): + resolution: {integrity: sha512-XfWRyQAf1yUNgWZ1TnE8pFBMqGmFP5Gb+SFSgszxDdOoheB/NI5D4p7q86kI2fvGyfTrxAe+D+74nZkfsGvUlg==} + peerDependencies: + expo: '*' + react-native: '*' dependencies: - "@expo/config": 10.0.11 - "@expo/env": 0.4.2 - expo: 53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) + '@expo/config': 10.0.11 + '@expo/env': 0.4.2 + expo: 54.0.8(@babel/core@7.28.4)(react-native@0.76.7)(react@18.3.1) + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) transitivePeerDependencies: - supports-color + dev: false - expo-constants@17.1.7(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)): + /expo-constants@18.0.9(expo@54.0.8)(react-native@0.76.7): + resolution: {integrity: sha512-sqoXHAOGDcr+M9NlXzj1tGoZyd3zxYDy215W6E0Z0n8fgBaqce9FAYQE2bu5X4G629AYig5go7U6sQz7Pjcm8A==} + peerDependencies: + expo: '*' + react-native: '*' dependencies: - "@expo/config": 11.0.13 - "@expo/env": 1.0.7 - expo: 53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) + '@expo/config': 12.0.9 + '@expo/env': 2.0.7 + expo: 54.0.8(@babel/core@7.28.4)(react-native@0.76.7)(react@18.3.1) + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) transitivePeerDependencies: - supports-color + dev: false - expo-file-system@18.1.11(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)): + /expo-file-system@19.0.14(expo@54.0.8)(react-native@0.76.7): + resolution: {integrity: sha512-0CA7O5IYhab11TlxQlJAx0Xm9pdkk/zEHNiW+Hh/T4atWi9U/J38CIp7iNYSrBvy9dC3rJbze5D1ANcKKr4mSQ==} + peerDependencies: + expo: '*' + react-native: '*' dependencies: - expo: 53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) + expo: 54.0.8(@babel/core@7.28.4)(react-native@0.76.7)(react@18.3.1) + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) + dev: false - expo-font@13.3.2(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react@18.3.1): + /expo-font@14.0.8(expo@54.0.8)(react-native@0.76.7)(react@18.3.1): + resolution: {integrity: sha512-bTUHaJWRZ7ywP8dg3f+wfOwv6RwMV3mWT2CDUIhsK70GjNGlCtiWOCoHsA5Od/esPaVxqc37cCBvQGQRFStRlA==} + peerDependencies: + expo: '*' + react: '*' + react-native: '*' dependencies: - expo: 53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + expo: 54.0.8(@babel/core@7.28.4)(react-native@0.76.7)(react@18.3.1) fontfaceobserver: 2.3.0 react: 18.3.1 + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) + dev: false - expo-keep-awake@14.1.4(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react@18.3.1): + /expo-keep-awake@15.0.7(expo@54.0.8)(react@18.3.1): + resolution: {integrity: sha512-CgBNcWVPnrIVII5G54QDqoE125l+zmqR4HR8q+MQaCfHet+dYpS5vX5zii/RMayzGN4jPgA4XYIQ28ePKFjHoA==} + peerDependencies: + expo: '*' + react: '*' dependencies: - expo: 53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + expo: 54.0.8(@babel/core@7.28.4)(react-native@0.76.7)(react@18.3.1) react: 18.3.1 + dev: false - expo-linking@7.0.5(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1): + /expo-linking@7.0.5(expo@54.0.8)(react-native@0.76.7)(react@18.3.1): + resolution: {integrity: sha512-3KptlJtcYDPWohk0MfJU75MJFh2ybavbtcSd84zEPfw9s1q3hjimw3sXnH03ZxP54kiEWldvKmmnGcVffBDB1g==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - expo-constants: 17.0.8(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) + expo-constants: 17.0.8(expo@54.0.8)(react-native@0.76.7) invariant: 2.2.4 react: 18.3.1 - react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) transitivePeerDependencies: - expo - supports-color + dev: false - expo-modules-autolinking@2.1.14: + /expo-modules-autolinking@3.0.11: + resolution: {integrity: sha512-Sz1ptcSZ4mvWJ7Rf1aB6Pe1fuEeIkACPILg2tmXDo3wwLTxPqugitMOePjbBZyvacBDirtDZlMb2A6LQDPVFOg==} + hasBin: true dependencies: "@expo/spawn-async": 1.7.2 chalk: 4.1.2 commander: 7.2.0 - find-up: 5.0.0 glob: 10.4.5 require-from-string: 2.0.2 resolve-from: 5.0.0 + dev: false - expo-modules-core@2.5.0: + /expo-modules-core@3.0.16(react-native@0.76.7)(react@18.3.1): + resolution: {integrity: sha512-rCxzJiTdeSdqLVmDYYnogxqHS3NB65YTd76tAtSACujN2TQco08/toxCCov+9uULq1NGPxDJnfTkrtGaGWfatQ==} + peerDependencies: + react: '*' + react-native: '*' dependencies: invariant: 2.2.4 + react: 18.3.1 + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) + dev: false + + /expo-web-browser@14.0.2(expo@54.0.8)(react-native@0.76.7): + resolution: {integrity: sha512-Hncv2yojhTpHbP6SGWARBFdl7P6wBHc1O8IKaNsH0a/IEakq887o1eRhLxZ5IwztPQyRDhpqHdgJ+BjWolOnwA==} + peerDependencies: + expo: '*' + react-native: '*' + dependencies: + expo: 54.0.8(@babel/core@7.28.4)(react-native@0.76.7)(react@18.3.1) + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) + dev: false - expo-web-browser@14.0.2(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)): - dependencies: - expo: 53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) - - expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1): - dependencies: - "@babel/runtime": 7.28.3 - "@expo/cli": 0.24.20(graphql@16.11.0) - "@expo/config": 11.0.13 - "@expo/config-plugins": 10.1.2 - "@expo/fingerprint": 0.13.4 - "@expo/metro-config": 0.20.17 - "@expo/vector-icons": 14.1.0(expo-font@13.3.2(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - babel-preset-expo: 13.2.3(@babel/core@7.28.3) - expo-asset: 11.1.7(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - expo-constants: 17.1.7(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) - expo-file-system: 18.1.11(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)) - expo-font: 13.3.2(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react@18.3.1) - expo-keep-awake: 14.1.4(expo@53.0.20(@babel/core@7.28.3)(graphql@16.11.0)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1))(react@18.3.1) - expo-modules-autolinking: 2.1.14 - expo-modules-core: 2.5.0 + /expo@54.0.8(@babel/core@7.28.4)(react-native@0.76.7)(react@18.3.1): + resolution: {integrity: sha512-H4nUVvAczd9ZPWrAR3oXxEr/EkLfPxXg5gBvFgZI4WnGNthehqEYB37urXgj9fvgSBxNaRUkySL4uwr9VB2J8Q==} + hasBin: true + peerDependencies: + '@expo/dom-webview': '*' + '@expo/metro-runtime': '*' + react: '*' + react-native: '*' + react-native-webview: '*' + peerDependenciesMeta: + '@expo/dom-webview': + optional: true + '@expo/metro-runtime': + optional: true + react-native-webview: + optional: true + dependencies: + '@babel/runtime': 7.28.4 + '@expo/cli': 54.0.6(expo@54.0.8)(react-native@0.76.7) + '@expo/config': 12.0.9 + '@expo/config-plugins': 54.0.1 + '@expo/devtools': 0.1.7(react-native@0.76.7)(react@18.3.1) + '@expo/fingerprint': 0.15.1 + '@expo/metro': 0.1.1 + '@expo/metro-config': 54.0.3(expo@54.0.8) + '@expo/vector-icons': 15.0.2(expo-font@14.0.8)(react-native@0.76.7)(react@18.3.1) + '@ungap/structured-clone': 1.3.0 + babel-preset-expo: 54.0.1(@babel/core@7.28.4)(@babel/runtime@7.28.4)(expo@54.0.8)(react-refresh@0.14.2) + expo-asset: 12.0.8(expo@54.0.8)(react-native@0.76.7)(react@18.3.1) + expo-constants: 18.0.9(expo@54.0.8)(react-native@0.76.7) + expo-file-system: 19.0.14(expo@54.0.8)(react-native@0.76.7) + expo-font: 14.0.8(expo@54.0.8)(react-native@0.76.7)(react@18.3.1) + expo-keep-awake: 15.0.7(expo@54.0.8)(react@18.3.1) + expo-modules-autolinking: 3.0.11 + expo-modules-core: 3.0.16(react-native@0.76.7)(react@18.3.1) + pretty-format: 29.7.0 react: 18.3.1 - react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) - react-native-edge-to-edge: 1.6.0(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1) + react-refresh: 0.14.2 whatwg-url-without-unicode: 8.0.0-3 transitivePeerDependencies: - - "@babel/core" - - babel-plugin-react-compiler + - '@babel/core' + - '@modelcontextprotocol/sdk' - bufferutil + - expo-router - graphql - supports-color - utf-8-validate + dev: false - exponential-backoff@3.1.2: {} + /exponential-backoff@3.1.2: + resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} - express@5.0.1: + /express@5.0.1: + resolution: {integrity: sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==} + engines: {node: '>= 18'} dependencies: accepts: 2.0.0 body-parser: 2.2.0 @@ -20125,16 +10918,26 @@ snapshots: vary: 1.1.2 transitivePeerDependencies: - supports-color + dev: true - exsolve@1.0.7: {} + /exsolve@1.0.7: + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + dev: true - extendable-error@0.1.7: {} + /extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + dev: false - fast-base64-decode@1.0.0: {} + /fast-base64-decode@1.0.0: + resolution: {integrity: sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==} + dev: false - fast-deep-equal@3.1.3: {} + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-glob@3.3.3: + /fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} dependencies: "@nodelib/fs.stat": 2.0.5 "@nodelib/fs.walk": 1.2.8 @@ -20142,39 +10945,63 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 - fast-json-stable-stringify@2.1.0: {} + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-levenshtein@2.0.6: {} + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-xml-parser@4.2.5: + /fast-xml-parser@4.2.5: + resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} + hasBin: true dependencies: strnum: 1.1.2 + dev: true - fast-xml-parser@5.2.5: + /fast-xml-parser@5.2.5: + resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} + hasBin: true dependencies: strnum: 2.1.1 + dev: true - fastq@1.19.1: + /fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} dependencies: reusify: 1.1.0 - fb-watchman@2.0.2: + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 - fdir@6.5.0(picomatch@4.0.3): - optionalDependencies: + /fdir@6.5.0(picomatch@4.0.3): + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + dependencies: picomatch: 4.0.3 + dev: true - file-entry-cache@6.0.1: + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.2.0 - fill-range@7.1.1: + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - finalhandler@1.1.2: + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -20186,9 +11013,11 @@ snapshots: transitivePeerDependencies: - supports-color - finalhandler@2.1.0: + /finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + engines: {node: '>= 0.8'} dependencies: - debug: 4.4.1 + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -20196,97 +11025,150 @@ snapshots: statuses: 2.0.1 transitivePeerDependencies: - supports-color + dev: true - find-cache-dir@2.1.0: + /find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} dependencies: commondir: 1.0.1 make-dir: 2.1.0 pkg-dir: 3.0.0 - find-up@3.0.0: + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} dependencies: locate-path: 3.0.0 - find-up@4.1.0: + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - find-up@5.0.0: + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - flat-cache@3.2.0: + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.3.3 keyv: 4.5.4 rimraf: 3.0.2 - flatted@3.3.3: {} + /flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - flow-enums-runtime@0.0.6: {} + /flow-enums-runtime@0.0.6: + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - flow-parser@0.279.0: {} + /flow-parser@0.283.0: + resolution: {integrity: sha512-PNpYZX8guJSDiHv7DQo+BLgiRNjbUQrag52b/8/znK+n0kGBbGtG9Smklb0VRdBdHg+UYKk9hSpWez3nXI5nEw==} + engines: {node: '>=0.4.0'} - follow-redirects@1.15.11: {} + /fontfaceobserver@2.3.0: + resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} + dev: false - fontfaceobserver@2.3.0: {} - - for-each@0.3.5: + /for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 - foreground-child@3.3.1: + /foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data-encoder@1.7.2: {} + /form-data-encoder@1.7.2: + resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} + dev: true - form-data@4.0.4: + /form-data@4.0.4: + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 es-set-tostringtag: 2.1.0 hasown: 2.0.2 mime-types: 2.1.35 + dev: true - formdata-node@4.4.1: + /formdata-node@4.4.1: + resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} + engines: {node: '>= 12.20'} dependencies: node-domexception: 1.0.0 web-streams-polyfill: 4.0.0-beta.3 + dev: true - forwarded@0.2.0: {} + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: true - fraction.js@4.3.7: {} + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true - freeport-async@2.0.0: {} + /freeport-async@2.0.0: + resolution: {integrity: sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==} + engines: {node: '>=8'} + dev: false - fresh@0.5.2: {} + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} - fresh@2.0.0: {} + /fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + dev: true - fs-extra@7.0.1: + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + dev: false - fs-extra@8.1.0: + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - fs.realpath@1.0.0: {} + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.3: + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true optional: true - function-bind@1.1.2: {} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.8: + /function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.4 @@ -20294,16 +11176,32 @@ snapshots: functions-have-names: 1.2.3 hasown: 2.0.2 is-callable: 1.2.7 + dev: true - functions-have-names@1.2.3: {} + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true - gensync@1.0.0-beta.2: {} + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} - get-caller-file@2.0.5: {} + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.3.1: {} + /get-east-asian-width@1.4.0: + resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} + engines: {node: '>=18'} + dev: true - get-intrinsic@1.3.0: + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + + /get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} dependencies: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 @@ -20316,44 +11214,79 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 - get-nonce@1.0.1: {} + /get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + dev: false - get-package-type@0.1.0: {} + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} - get-proto@1.0.1: + /get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} dependencies: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-stream@6.0.1: {} + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true - get-symbol-description@1.1.0: + /get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 es-errors: 1.3.0 get-intrinsic: 1.3.0 + dev: true - get-tsconfig@4.10.1: + /get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} dependencies: resolve-pkg-maps: 1.0.0 + dev: true - getenv@1.0.0: {} + /getenv@1.0.0: + resolution: {integrity: sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==} + engines: {node: '>=6'} + dev: false - getenv@2.0.0: {} + /getenv@2.0.0: + resolution: {integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==} + engines: {node: '>=6'} + dev: false - git-hooks-list@4.1.1: {} + /git-hooks-list@4.1.1: + resolution: {integrity: sha512-cmP497iLq54AZnv4YRAEMnEyQ1eIn4tGKbmswqwmFV4GBnAqE8NLtWxxdXa++AalfgL5EBH4IxTPyquEuGY/jA==} + dev: true - glob-parent@5.1.2: + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - glob-parent@6.0.2: + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true - glob@10.4.5: + /glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true dependencies: foreground-child: 3.3.1 jackspeak: 3.4.3 @@ -20362,7 +11295,10 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@11.0.3: + /glob@11.0.3: + resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + engines: {node: 20 || >=22} + hasBin: true dependencies: foreground-child: 3.3.1 jackspeak: 4.1.1 @@ -20370,8 +11306,10 @@ snapshots: minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 2.0.0 + dev: true - glob@7.1.7: + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -20379,8 +11317,11 @@ snapshots: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: true - glob@7.2.3: + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -20389,23 +11330,39 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@9.3.5: + /glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: fs.realpath: 1.0.0 minimatch: 8.0.4 minipass: 4.2.8 path-scurry: 1.11.1 + dev: true + + /global-dirs@0.1.1: + resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} + engines: {node: '>=4'} + dependencies: + ini: 1.3.8 + dev: false - globals@13.24.0: + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.20.2 - globalthis@1.0.4: + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 gopd: 1.2.0 - globby@10.0.1: + /globby@10.0.1: + resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} + engines: {node: '>=8'} dependencies: "@types/glob": 7.2.0 array-union: 2.1.0 @@ -20415,8 +11372,11 @@ snapshots: ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 + dev: true - globby@11.1.0: + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -20425,24 +11385,27 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - gopd@1.2.0: {} + /gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} - graceful-fs@4.2.11: {} + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: {} + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - graphql-tag@2.12.6(graphql@16.11.0): - dependencies: - graphql: 16.11.0 - tslib: 2.8.1 - - graphql@16.11.0: {} - - gzip-size@6.0.0: + /gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} dependencies: duplexer: 0.1.2 + dev: true - handlebars@4.7.8: + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true dependencies: minimist: 1.2.8 neo-async: 2.6.2 @@ -20450,73 +11413,105 @@ snapshots: wordwrap: 1.0.0 optionalDependencies: uglify-js: 3.19.3 + dev: true - has-bigints@1.1.0: {} + /has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + dev: true - has-flag@3.0.0: {} + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: false - has-flag@4.0.0: {} + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} - has-property-descriptors@1.0.2: + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: es-define-property: 1.0.1 - has-proto@1.2.0: + /has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} dependencies: dunder-proto: 1.0.1 + dev: true - has-symbols@1.1.0: {} + /has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} - has-tostringtag@1.0.2: + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.1.0 - hash-wasm@4.12.0: {} - - hash.js@1.1.7: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 + /hash-wasm@4.12.0: + resolution: {integrity: sha512-+/2B2rYLb48I/evdOIhP+K/DD2ca2fgBjp6O+GBEnCDk2e4rpeXIK8GvIyRPjTezgmWn9gmKwkQjjx6BtqDHVQ==} + dev: false - hasown@2.0.2: + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - hermes-estree@0.23.1: {} + /hermes-estree@0.23.1: + resolution: {integrity: sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==} - hermes-estree@0.25.1: {} + /hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} - hermes-parser@0.23.1: + /hermes-estree@0.29.1: + resolution: {integrity: sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==} + dev: false + + /hermes-parser@0.23.1: + resolution: {integrity: sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==} dependencies: hermes-estree: 0.23.1 - hermes-parser@0.25.1: + /hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} dependencies: hermes-estree: 0.25.1 - hmac-drbg@1.0.1: - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - hoist-non-react-statics@3.3.2: + /hermes-parser@0.29.1: + resolution: {integrity: sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==} dependencies: - react-is: 16.13.1 + hermes-estree: 0.29.1 + dev: false - hosted-git-info@2.8.9: {} + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true - hosted-git-info@7.0.2: + /hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} dependencies: lru-cache: 10.4.3 + dev: false - html-encoding-sniffer@3.0.0: + /html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 + dev: true - html-escaper@2.0.2: {} + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true - http-errors@2.0.0: + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} dependencies: depd: 2.0.0 inherits: 2.0.4 @@ -20524,299 +11519,519 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - http-proxy-agent@5.0.0: + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} dependencies: "@tootallnate/once": 2.0.0 agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color + dev: true - https-proxy-agent@5.0.1: + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 transitivePeerDependencies: - supports-color + dev: false - human-id@4.1.1: {} + /human-id@4.1.1: + resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} + hasBin: true + dev: false + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} - human-signals@2.1.0: {} + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true - humanize-ms@1.2.1: + /humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} dependencies: ms: 2.1.3 + dev: true + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true - iconv-lite@0.6.3: + /iconv-lite@0.7.0: + resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} + engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - ieee754@1.2.1: {} + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.3.2: {} + /ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} - image-size@1.2.1: + /image-size@1.2.1: + resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} + engines: {node: '>=16.x'} + hasBin: true dependencies: queue: 6.0.2 - import-fresh@2.0.0: + /import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} dependencies: caller-path: 2.0.0 resolve-from: 3.0.0 - import-fresh@3.3.1: + /import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - import-local@3.2.0: + /import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + dev: true - imurmurhash@0.1.4: {} + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} - indent-string@4.0.0: {} + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true - inflight@1.0.6: + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. dependencies: once: 1.4.0 wrappy: 1.0.2 - inherits@2.0.4: {} + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini@1.3.8: {} + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: false - internal-slot@1.1.0: + /internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.1.0 + dev: true - invariant@2.2.4: + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 - ipaddr.js@1.9.1: {} + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: true - is-arguments@1.2.0: + /is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-array-buffer@3.0.5: + /is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.4 get-intrinsic: 1.3.0 + dev: true - is-arrayish@0.2.1: {} + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-arrayish@0.3.2: {} + /is-arrayish@0.3.4: + resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} + dev: true - is-async-function@2.1.1: + /is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} dependencies: async-function: 1.0.0 call-bound: 1.0.4 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 + dev: true - is-bigint@1.1.0: + /is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} dependencies: has-bigints: 1.1.0 + dev: true - is-binary-path@2.1.0: + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} dependencies: binary-extensions: 2.3.0 + dev: true - is-boolean-object@1.2.2: + /is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 has-tostringtag: 1.0.2 + dev: true - is-builtin-module@3.2.1: + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} dependencies: builtin-modules: 3.3.0 + dev: true - is-bun-module@2.0.0: + /is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} dependencies: semver: 7.7.2 + dev: true - is-callable@1.2.7: {} + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} - is-core-module@2.16.1: + /is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} dependencies: hasown: 2.0.2 - is-data-view@1.0.2: + /is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 get-intrinsic: 1.3.0 is-typed-array: 1.1.15 + dev: true - is-date-object@1.1.0: + /is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 has-tostringtag: 1.0.2 + dev: true - is-directory@0.3.1: {} + /is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} - is-docker@2.2.1: {} + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true - is-extglob@2.1.1: {} + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} - is-finalizationregistry@1.1.1: + /is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 + dev: true - is-fullwidth-code-point@3.0.0: {} + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} - is-generator-fn@2.1.0: {} + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true - is-generator-function@1.1.0: + /is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 - is-glob@4.0.3: + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - is-map@2.0.3: {} + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + dev: true - is-negative-zero@2.0.3: {} + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: true - is-number-object@1.1.1: + /is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 has-tostringtag: 1.0.2 + dev: true - is-number@7.0.0: {} + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: {} + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} - is-plain-obj@2.1.0: {} + /is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: false - is-plain-obj@4.1.0: {} + /is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + dev: true - is-plain-object@2.0.4: + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 - is-plain-object@3.0.1: {} + /is-plain-object@3.0.1: + resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} + engines: {node: '>=0.10.0'} + dev: true - is-potential-custom-element-name@1.0.1: {} + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true - is-promise@4.0.0: {} + /is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + dev: true - is-regex@1.2.1: + /is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 gopd: 1.2.0 has-tostringtag: 1.0.2 hasown: 2.0.2 - is-set@2.0.3: {} + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + dev: true - is-shared-array-buffer@1.0.4: + /is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} - is-stream@2.0.1: {} + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true - is-string@1.1.1: + /is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 has-tostringtag: 1.0.2 + dev: true - is-subdir@1.2.0: + /is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} dependencies: better-path-resolve: 1.0.0 + dev: false - is-symbol@1.1.1: + /is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 has-symbols: 1.1.0 safe-regex-test: 1.1.0 + dev: true - is-typed-array@1.1.15: + /is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} dependencies: which-typed-array: 1.1.19 - is-weakmap@2.0.2: {} + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + dev: true - is-weakref@1.1.1: + /is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 + dev: true - is-weakset@2.0.4: + /is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 get-intrinsic: 1.3.0 + dev: true - is-windows@1.0.2: {} + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: false - is-wsl@2.2.0: + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - isarray@2.0.5: {} + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true - isexe@2.0.0: {} + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isexe@3.1.1: {} + /isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + dev: true - isobject@3.0.1: {} + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} - isomorphic-ws@4.0.1(ws@7.5.10): + /isomorphic-ws@4.0.1(ws@7.5.10): + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' dependencies: ws: 7.5.10 + dev: false - istanbul-lib-coverage@3.2.2: {} + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} - istanbul-lib-instrument@5.2.1: + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} dependencies: - "@babel/core": 7.28.3 - "@babel/parser": 7.28.3 - "@istanbuljs/schema": 0.1.3 + '@babel/core': 7.28.4 + '@babel/parser': 7.28.4 + '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 transitivePeerDependencies: - supports-color - istanbul-lib-instrument@6.0.3: + /istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} dependencies: - "@babel/core": 7.28.3 - "@babel/parser": 7.28.3 - "@istanbuljs/schema": 0.1.3 + '@babel/core': 7.28.4 + '@babel/parser': 7.28.4 + '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.2 transitivePeerDependencies: - supports-color + dev: true - istanbul-lib-report@3.0.1: + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 + dev: true - istanbul-lib-source-maps@4.0.1: + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} dependencies: - debug: 4.4.1 + debug: 4.4.3 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color + dev: true - istanbul-reports@3.2.0: + /istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} + engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + dev: true - iterator.prototype@1.1.5: + /iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 es-object-atoms: 1.1.1 @@ -20824,33 +12039,43 @@ snapshots: get-proto: 1.0.1 has-symbols: 1.1.0 set-function-name: 2.0.2 + dev: true - jackspeak@3.4.3: + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} dependencies: "@isaacs/cliui": 8.0.2 optionalDependencies: "@pkgjs/parseargs": 0.11.0 - jackspeak@4.1.1: + /jackspeak@4.1.1: + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} + engines: {node: 20 || >=22} dependencies: - "@isaacs/cliui": 8.0.2 + '@isaacs/cliui': 8.0.2 + dev: true - jest-changed-files@29.7.0: + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 jest-util: 29.7.0 p-limit: 3.1.0 + dev: true - jest-circus@29.7.0: + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/environment": 29.7.0 - "@jest/expect": 29.7.0 - "@jest/test-result": 29.7.0 - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.16 chalk: 4.1.2 co: 4.6.0 - dedent: 1.6.0 + dedent: 1.7.0 is-generator-fn: 2.1.0 jest-each: 29.7.0 jest-matcher-utils: 29.7.0 @@ -20866,17 +12091,26 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - supports-color + dev: true - jest-cli@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)): + /jest-cli@29.7.0(@types/node@20.19.16)(ts-node@10.9.2): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - "@jest/core": 29.7.0(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) - "@jest/test-result": 29.7.0 - "@jest/types": 29.6.3 + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) + create-jest: 29.7.0(@types/node@20.19.16)(ts-node@10.9.2) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) + jest-config: 29.7.0(@types/node@20.19.16)(ts-node@10.9.2) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -20885,13 +12119,25 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + dev: true - jest-config@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)): + /jest-config@29.7.0(@types/node@20.19.16)(ts-node@10.9.2): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true dependencies: - "@babel/core": 7.28.3 - "@jest/test-sequencer": 29.7.0 - "@jest/types": 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.16 + babel-jest: 29.7.0(@babel/core@7.28.4) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -20910,39 +12156,54 @@ snapshots: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - optionalDependencies: - "@types/node": 20.19.11 - ts-node: 10.9.2(@types/node@20.19.11)(typescript@5.9.2) + ts-node: 10.9.2(@types/node@20.19.16)(typescript@5.9.2) transitivePeerDependencies: - babel-plugin-macros - supports-color + dev: true - jest-diff@29.7.0: + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 diff-sequences: 29.6.3 jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: true - jest-docblock@29.7.0: + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 + dev: true - jest-each@29.7.0: + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: "@jest/types": 29.6.3 chalk: 4.1.2 jest-get-type: 29.6.3 jest-util: 29.7.0 pretty-format: 29.7.0 + dev: true - jest-environment-jsdom@29.7.0: + /jest-environment-jsdom@29.7.0: + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true dependencies: - "@jest/environment": 29.7.0 - "@jest/fake-timers": 29.7.0 - "@jest/types": 29.6.3 - "@types/jsdom": 20.0.1 - "@types/node": 20.19.11 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/jsdom': 20.0.1 + '@types/node': 20.19.16 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -20950,23 +12211,30 @@ snapshots: - bufferutil - supports-color - utf-8-validate + dev: true - jest-environment-node@29.7.0: + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/environment": 29.7.0 - "@jest/fake-timers": 29.7.0 - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.16 jest-mock: 29.7.0 jest-util: 29.7.0 - jest-get-type@29.6.3: {} + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-haste-map@29.7.0: + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/types": 29.6.3 - "@types/graceful-fs": 4.1.9 - "@types/node": 20.19.11 + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 20.19.16 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -20978,19 +12246,27 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - jest-leak-detector@29.7.0: + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: true - jest-matcher-utils@29.7.0: + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 jest-diff: 29.7.0 jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: true - jest-message-util@29.7.0: + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: "@babel/code-frame": 7.27.1 "@jest/types": 29.6.3 @@ -21002,26 +12278,43 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 - jest-mock@29.7.0: + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/types': 29.6.3 + '@types/node': 20.19.16 jest-util: 29.7.0 - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - optionalDependencies: + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: jest-resolve: 29.7.0 + dev: true - jest-regex-util@29.6.3: {} + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-resolve-dependencies@29.7.0: + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-regex-util: 29.6.3 jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color + dev: true - jest-resolve@29.7.0: + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 @@ -21032,15 +12325,18 @@ snapshots: resolve: 1.22.10 resolve.exports: 2.0.3 slash: 3.0.0 - - jest-runner@29.7.0: - dependencies: - "@jest/console": 29.7.0 - "@jest/environment": 29.7.0 - "@jest/test-result": 29.7.0 - "@jest/transform": 29.7.0 - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + dev: true + + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.16 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -21058,17 +12354,20 @@ snapshots: source-map-support: 0.5.13 transitivePeerDependencies: - supports-color - - jest-runtime@29.7.0: - dependencies: - "@jest/environment": 29.7.0 - "@jest/fake-timers": 29.7.0 - "@jest/globals": 29.7.0 - "@jest/source-map": 29.6.3 - "@jest/test-result": 29.7.0 - "@jest/transform": 29.7.0 - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + dev: true + + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.16 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 @@ -21085,18 +12384,21 @@ snapshots: strip-bom: 4.0.0 transitivePeerDependencies: - supports-color - - jest-snapshot@29.7.0: - dependencies: - "@babel/core": 7.28.3 - "@babel/generator": 7.28.3 - "@babel/plugin-syntax-jsx": 7.27.1(@babel/core@7.28.3) - "@babel/plugin-syntax-typescript": 7.27.1(@babel/core@7.28.3) - "@babel/types": 7.28.2 - "@jest/expect-utils": 29.7.0 - "@jest/transform": 29.7.0 - "@jest/types": 29.6.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.3) + dev: true + + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.28.4 + '@babel/generator': 7.28.3 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) + '@babel/types': 7.28.4 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.4) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -21110,17 +12412,22 @@ snapshots: semver: 7.7.2 transitivePeerDependencies: - supports-color + dev: true - jest-util@29.7.0: + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/types': 29.6.3 + '@types/node': 20.19.16 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 - jest-validate@29.7.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} dependencies: "@jest/types": 29.6.3 camelcase: 6.3.0 @@ -21129,78 +12436,117 @@ snapshots: leven: 3.1.0 pretty-format: 29.7.0 - jest-watcher@29.7.0: + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/test-result": 29.7.0 - "@jest/types": 29.6.3 - "@types/node": 20.19.11 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.19.16 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 jest-util: 29.7.0 string-length: 4.0.2 + dev: true - jest-worker@29.7.0: + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@types/node": 20.19.11 + '@types/node': 20.19.16 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)): + /jest@29.7.0(@types/node@20.19.16)(ts-node@10.9.2): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - "@jest/core": 29.7.0(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) - "@jest/types": 29.6.3 + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) + jest-cli: 29.7.0(@types/node@20.19.16)(ts-node@10.9.2) transitivePeerDependencies: - "@types/node" - babel-plugin-macros - supports-color - ts-node + dev: true - jimp-compact@0.16.1: {} + /jimp-compact@0.16.1: + resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} + dev: false - jiti@1.21.7: {} + /jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + dev: true - jju@1.4.0: {} + /jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + dev: true - jose@4.15.9: {} + /jose@5.10.0: + resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} + dev: false - jose@5.10.0: {} + /joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + dev: true - joycon@3.1.1: {} + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@4.0.0: {} + /js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + dev: true - js-yaml@3.14.1: + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true dependencies: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true dependencies: argparse: 2.0.1 - jsc-android@250231.0.0: {} + /jsc-android@250231.0.0: + resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} - jsc-safe-url@0.2.4: {} + /jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} - jscodeshift@0.14.0(@babel/preset-env@7.28.3(@babel/core@7.28.3)): - dependencies: - "@babel/core": 7.28.3 - "@babel/parser": 7.28.3 - "@babel/plugin-proposal-class-properties": 7.18.6(@babel/core@7.28.3) - "@babel/plugin-proposal-nullish-coalescing-operator": 7.18.6(@babel/core@7.28.3) - "@babel/plugin-proposal-optional-chaining": 7.21.0(@babel/core@7.28.3) - "@babel/plugin-transform-modules-commonjs": 7.27.1(@babel/core@7.28.3) - "@babel/preset-env": 7.28.3(@babel/core@7.28.3) - "@babel/preset-flow": 7.27.1(@babel/core@7.28.3) - "@babel/preset-typescript": 7.27.1(@babel/core@7.28.3) - "@babel/register": 7.28.3(@babel/core@7.28.3) - babel-core: 7.0.0-bridge.0(@babel/core@7.28.3) + /jscodeshift@0.14.0(@babel/preset-env@7.28.3): + resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + dependencies: + '@babel/core': 7.28.4 + '@babel/parser': 7.28.4 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.28.4) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.28.4) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/preset-env': 7.28.3(@babel/core@7.28.4) + '@babel/preset-flow': 7.27.1(@babel/core@7.28.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) + '@babel/register': 7.28.3(@babel/core@7.28.4) + babel-core: 7.0.0-bridge.0(@babel/core@7.28.4) chalk: 4.1.2 - flow-parser: 0.279.0 + flow-parser: 0.283.0 graceful-fs: 4.2.11 micromatch: 4.0.8 neo-async: 2.6.2 @@ -21211,7 +12557,14 @@ snapshots: transitivePeerDependencies: - supports-color - jsdom@20.0.3: + /jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true dependencies: abab: 2.0.6 acorn: 8.15.0 @@ -21227,7 +12580,7 @@ snapshots: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.21 + nwsapi: 2.2.22 parse5: 7.3.0 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -21243,256 +12596,522 @@ snapshots: - bufferutil - supports-color - utf-8-validate + dev: true - jsesc@0.5.0: {} + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true - jsesc@3.0.2: {} + /jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true - jsesc@3.1.0: {} + /jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true - json-buffer@3.0.1: {} + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-parse-better-errors@1.0.2: {} + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - json-parse-even-better-errors@2.3.1: {} + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true - json-schema-traverse@0.4.1: {} + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - json-stable-stringify-without-jsonify@1.0.1: {} + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json5@1.0.2: + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true dependencies: minimist: 1.2.8 + dev: true - json5@2.2.3: {} + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true - jsonfile@4.0.0: + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 - jsx-ast-utils@3.3.5: + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} dependencies: array-includes: 3.1.9 array.prototype.flat: 1.3.3 object.assign: 4.1.7 object.values: 1.2.1 + dev: true - keyv@4.5.4: + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 - kind-of@6.0.3: {} + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} - kleur@3.0.3: {} + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} - kleur@4.1.5: {} + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true - lan-network@0.1.7: {} + /lan-network@0.1.7: + resolution: {integrity: sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==} + hasBin: true + dev: false - language-subtag-registry@0.3.23: {} + /language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + dev: true - language-tags@1.0.9: + /language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} dependencies: language-subtag-registry: 0.3.23 + dev: true - leven@3.1.0: {} + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} - levn@0.4.1: + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - libsodium-sumo@0.7.15: {} - - libsodium-wrappers-sumo@0.7.15: - dependencies: - libsodium-sumo: 0.7.15 - - lighthouse-logger@1.4.2: + /lighthouse-logger@1.4.2: + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} dependencies: debug: 2.6.9 marky: 1.3.0 transitivePeerDependencies: - supports-color - lightningcss-darwin-arm64@1.27.0: + /lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false optional: true - lightningcss-darwin-x64@1.27.0: + /lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true - lightningcss-freebsd-x64@1.27.0: + /lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false optional: true - lightningcss-linux-arm-gnueabihf@1.27.0: + /lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false optional: true - lightningcss-linux-arm64-gnu@1.27.0: + /lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - lightningcss-linux-arm64-musl@1.27.0: + /lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - lightningcss-linux-x64-gnu@1.27.0: + /lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - lightningcss-linux-x64-musl@1.27.0: + /lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - lightningcss-win32-arm64-msvc@1.27.0: + /lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false optional: true - lightningcss-win32-x64-msvc@1.27.0: + /lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false optional: true - lightningcss@1.27.0: + /lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} dependencies: - detect-libc: 1.0.3 + detect-libc: 2.1.0 optionalDependencies: - lightningcss-darwin-arm64: 1.27.0 - lightningcss-darwin-x64: 1.27.0 - lightningcss-freebsd-x64: 1.27.0 - lightningcss-linux-arm-gnueabihf: 1.27.0 - lightningcss-linux-arm64-gnu: 1.27.0 - lightningcss-linux-arm64-musl: 1.27.0 - lightningcss-linux-x64-gnu: 1.27.0 - lightningcss-linux-x64-musl: 1.27.0 - lightningcss-win32-arm64-msvc: 1.27.0 - lightningcss-win32-x64-msvc: 1.27.0 - - lilconfig@2.1.0: {} - - lilconfig@3.1.3: {} - - lines-and-columns@1.2.4: {} - - load-tsconfig@0.2.5: {} - - locate-path@3.0.0: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 + dev: false + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + + /lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + /load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + dependencies: + mlly: 1.8.0 + pkg-types: 1.3.1 + dev: true + + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} dependencies: p-locate: 3.0.0 path-exists: 3.0.0 - locate-path@5.0.0: + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} dependencies: p-locate: 4.1.0 - locate-path@6.0.0: + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - lodash.debounce@4.0.8: {} + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - lodash.memoize@4.1.2: {} + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true - lodash.merge@4.6.2: {} + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.sortby@4.7.0: {} + /lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: true - lodash.startcase@4.4.0: {} + /lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + dev: false - lodash.throttle@4.1.1: {} + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - lodash@4.17.21: {} + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true - log-symbols@2.2.0: + /log-symbols@2.2.0: + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} dependencies: chalk: 2.4.2 + dev: false - long@4.0.0: {} + /long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + dev: false - long@5.3.2: {} - - loose-envify@1.4.0: + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true dependencies: js-tokens: 4.0.0 - lru-cache@10.4.3: {} + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.1.0: {} + /lru-cache@11.2.1: + resolution: {integrity: sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==} + engines: {node: 20 || >=22} + dev: true - lru-cache@5.1.1: + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 - lz-string@1.5.0: {} + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + dev: true + + /magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + dev: true - make-dir@2.1.0: + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} dependencies: pify: 4.0.1 semver: 5.7.2 - make-dir@4.0.0: + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} dependencies: semver: 7.7.2 + dev: true - make-error@1.3.6: {} + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true - makeerror@1.0.12: + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 - marky@1.3.0: {} + /map-obj@5.0.0: + resolution: {integrity: sha512-2L3MIgJynYrZ3TYMriLDLWocz15okFakV6J12HXvMXDHui2x/zgChzg1u9mFFGbbGWE+GsLpQByt4POb9Or+uA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + + /marky@1.3.0: + resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==} - math-intrinsics@1.1.0: {} + /math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} - media-typer@1.1.0: {} + /media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + dev: true - memoize-one@5.2.1: {} + /memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - merge-descriptors@2.0.0: {} + /merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + dev: true - merge-options@3.0.4: + /merge-options@3.0.4: + resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} + engines: {node: '>=10'} dependencies: is-plain-obj: 2.1.0 + dev: false - merge-stream@2.0.0: {} + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: {} + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} - methods@1.1.2: {} + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: true - metro-babel-transformer@0.81.5: + /metro-babel-transformer@0.81.5: + resolution: {integrity: sha512-oKCQuajU5srm+ZdDcFg86pG/U8hkSjBlkyFjz380SZ4TTIiI5F+OQB830i53D8hmqmcosa4wR/pnKv8y4Q3dLw==} + engines: {node: '>=18.18'} dependencies: - "@babel/core": 7.28.3 + '@babel/core': 7.28.4 flow-enums-runtime: 0.0.6 hermes-parser: 0.25.1 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - metro-cache-key@0.81.5: + /metro-babel-transformer@0.83.1: + resolution: {integrity: sha512-r3xAD3964E8dwDBaZNSO2aIIvWXjIK80uO2xo0/pi3WI8XWT9h5SCjtGWtMtE5PRWw+t20TN0q1WMRsjvhC1rQ==} + engines: {node: '>=20.19.4'} + dependencies: + '@babel/core': 7.28.4 + flow-enums-runtime: 0.0.6 + hermes-parser: 0.29.1 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-cache-key@0.81.5: + resolution: {integrity: sha512-lGWnGVm1UwO8faRZ+LXQUesZSmP1LOg14OVR+KNPBip8kbMECbQJ8c10nGesw28uQT7AE0lwQThZPXlxDyCLKQ==} + engines: {node: '>=18.18'} + dependencies: + flow-enums-runtime: 0.0.6 + + /metro-cache-key@0.83.1: + resolution: {integrity: sha512-ZUs+GD5CNeDLxx5UUWmfg26IL+Dnbryd+TLqTlZnDEgehkIa11kUSvgF92OFfJhONeXzV4rZDRGNXoo6JT+8Gg==} + engines: {node: '>=20.19.4'} + dependencies: + flow-enums-runtime: 0.0.6 + dev: false + + /metro-cache@0.81.5: + resolution: {integrity: sha512-wOsXuEgmZMZ5DMPoz1pEDerjJ11AuMy9JifH4yNW7NmWS0ghCRqvDxk13LsElzLshey8C+my/tmXauXZ3OqZgg==} + engines: {node: '>=18.18'} dependencies: + exponential-backoff: 3.1.2 flow-enums-runtime: 0.0.6 + metro-core: 0.81.5 - metro-cache@0.81.5: + /metro-cache@0.83.1: + resolution: {integrity: sha512-7N/Ad1PHa1YMWDNiyynTPq34Op2qIE68NWryGEQ4TSE3Zy6a8GpsYnEEZE4Qi6aHgsE+yZHKkRczeBgxhnFIxQ==} + engines: {node: '>=20.19.4'} dependencies: exponential-backoff: 3.1.2 flow-enums-runtime: 0.0.6 + https-proxy-agent: 7.0.6 + metro-core: 0.83.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-config@0.81.5: + resolution: {integrity: sha512-oDRAzUvj6RNRxratFdcVAqtAsg+T3qcKrGdqGZFUdwzlFJdHGR9Z413sW583uD2ynsuOjA2QB6US8FdwiBdNKg==} + engines: {node: '>=18.18'} + dependencies: + connect: 3.7.0 + cosmiconfig: 5.2.1 + flow-enums-runtime: 0.0.6 + jest-validate: 29.7.0 + metro: 0.81.5 + metro-cache: 0.81.5 metro-core: 0.81.5 + metro-runtime: 0.81.5 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate - metro-config@0.81.5: + /metro-config@0.83.1: + resolution: {integrity: sha512-HJhpZx3wyOkux/jeF1o7akFJzZFdbn6Zf7UQqWrvp7gqFqNulQ8Mju09raBgPmmSxKDl4LbbNeigkX0/nKY1QA==} + engines: {node: '>=20.19.4'} dependencies: connect: 3.7.0 cosmiconfig: 5.2.1 flow-enums-runtime: 0.0.6 jest-validate: 29.7.0 - metro: 0.81.5 - metro-cache: 0.81.5 - metro-core: 0.81.5 - metro-runtime: 0.81.5 + metro: 0.83.1 + metro-cache: 0.83.1 + metro-core: 0.83.1 + metro-runtime: 0.83.1 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate + dev: false - metro-core@0.81.5: + /metro-core@0.81.5: + resolution: {integrity: sha512-+2R0c8ByfV2N7CH5wpdIajCWa8escUFd8TukfoXyBq/vb6yTCsznoA25FhNXJ+MC/cz1L447Zj3vdUfCXIZBwg==} + engines: {node: '>=18.18'} dependencies: flow-enums-runtime: 0.0.6 lodash.throttle: 4.1.1 metro-resolver: 0.81.5 - metro-file-map@0.81.5: + /metro-core@0.83.1: + resolution: {integrity: sha512-uVL1eAJcMFd2o2Q7dsbpg8COaxjZBBGaXqO2OHnivpCdfanraVL8dPmY6It9ZeqWLOihUKZ2yHW4b6soVCzH/Q==} + engines: {node: '>=20.19.4'} + dependencies: + flow-enums-runtime: 0.0.6 + lodash.throttle: 4.1.1 + metro-resolver: 0.83.1 + dev: false + + /metro-file-map@0.81.5: + resolution: {integrity: sha512-mW1PKyiO3qZvjeeVjj1brhkmIotObA3/9jdbY1fQQYvEWM6Ml7bN/oJCRDGn2+bJRlG+J8pwyJ+DgdrM4BsKyg==} + engines: {node: '>=18.18'} dependencies: debug: 2.6.9 fb-watchman: 2.0.2 @@ -21506,25 +13125,73 @@ snapshots: transitivePeerDependencies: - supports-color - metro-minify-terser@0.81.5: + /metro-file-map@0.83.1: + resolution: {integrity: sha512-Yu429lnexKl44PttKw3nhqgmpBR+6UQ/tRaYcxPeEShtcza9DWakCn7cjqDTQZtWR2A8xSNv139izJMyQ4CG+w==} + engines: {node: '>=20.19.4'} + dependencies: + debug: 4.4.3 + fb-watchman: 2.0.2 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-worker: 29.7.0 + micromatch: 4.0.8 + nullthrows: 1.1.1 + walker: 1.0.8 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-minify-terser@0.81.5: + resolution: {integrity: sha512-/mn4AxjANnsSS3/Bb+zA1G5yIS5xygbbz/OuPaJYs0CPcZCaWt66D+65j4Ft/nJkffUxcwE9mk4ubpkl3rjgtw==} + engines: {node: '>=18.18'} + dependencies: + flow-enums-runtime: 0.0.6 + terser: 5.44.0 + + /metro-minify-terser@0.83.1: + resolution: {integrity: sha512-kmooOxXLvKVxkh80IVSYO4weBdJDhCpg5NSPkjzzAnPJP43u6+usGXobkTWxxrAlq900bhzqKek4pBsUchlX6A==} + engines: {node: '>=20.19.4'} + dependencies: + flow-enums-runtime: 0.0.6 + terser: 5.44.0 + dev: false + + /metro-resolver@0.81.5: + resolution: {integrity: sha512-6BX8Nq3g3go3FxcyXkVbWe7IgctjDTk6D9flq+P201DfHHQ28J+DWFpVelFcrNTn4tIfbP/Bw7u/0g2BGmeXfQ==} + engines: {node: '>=18.18'} + dependencies: + flow-enums-runtime: 0.0.6 + + /metro-resolver@0.83.1: + resolution: {integrity: sha512-t8j46kiILAqqFS5RNa+xpQyVjULxRxlvMidqUswPEk5nQVNdlJslqizDm/Et3v/JKwOtQGkYAQCHxP1zGStR/g==} + engines: {node: '>=20.19.4'} dependencies: flow-enums-runtime: 0.0.6 - terser: 5.43.1 + dev: false - metro-resolver@0.81.5: + /metro-runtime@0.81.5: + resolution: {integrity: sha512-M/Gf71ictUKP9+77dV/y8XlAWg7xl76uhU7ggYFUwEdOHHWPG6gLBr1iiK0BmTjPFH8yRo/xyqMli4s3oGorPQ==} + engines: {node: '>=18.18'} dependencies: + '@babel/runtime': 7.28.4 flow-enums-runtime: 0.0.6 - metro-runtime@0.81.5: + /metro-runtime@0.83.1: + resolution: {integrity: sha512-3Ag8ZS4IwafL/JUKlaeM6/CbkooY+WcVeqdNlBG0m4S0Qz0om3rdFdy1y6fYBpl6AwXJwWeMuXrvZdMuByTcRA==} + engines: {node: '>=20.19.4'} dependencies: - "@babel/runtime": 7.28.3 + '@babel/runtime': 7.28.4 flow-enums-runtime: 0.0.6 + dev: false - metro-source-map@0.81.5: + /metro-source-map@0.81.5: + resolution: {integrity: sha512-Jz+CjvCKLNbJZYJTBeN3Kq9kIJf6b61MoLBdaOQZJ5Ajhw6Pf95Nn21XwA8BwfUYgajsi6IXsp/dTZsYJbN00Q==} + engines: {node: '>=18.18'} dependencies: - "@babel/traverse": 7.28.3 - "@babel/traverse--for-generate-function-map": "@babel/traverse@7.28.3" - "@babel/types": 7.28.2 + '@babel/traverse': 7.28.4 + '@babel/traverse--for-generate-function-map': /@babel/traverse@7.28.4 + '@babel/types': 7.28.4 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.81.5 @@ -21535,7 +13202,28 @@ snapshots: transitivePeerDependencies: - supports-color - metro-symbolicate@0.81.5: + /metro-source-map@0.83.1: + resolution: {integrity: sha512-De7Vbeo96fFZ2cqmI0fWwVJbtHIwPZv++LYlWSwzTiCzxBDJORncN0LcT48Vi2UlQLzXJg+/CuTAcy7NBVh69A==} + engines: {node: '>=20.19.4'} + dependencies: + '@babel/traverse': 7.28.4 + '@babel/traverse--for-generate-function-map': /@babel/traverse@7.28.4 + '@babel/types': 7.28.4 + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-symbolicate: 0.83.1 + nullthrows: 1.1.1 + ob1: 0.83.1 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-symbolicate@0.81.5: + resolution: {integrity: sha512-X3HV3n3D6FuTE11UWFICqHbFMdTavfO48nXsSpnNGFkUZBexffu0Xd+fYKp+DJLNaQr3S+lAs8q9CgtDTlRRuA==} + engines: {node: '>=18.18'} + hasBin: true dependencies: flow-enums-runtime: 0.0.6 invariant: 2.2.4 @@ -21546,23 +13234,56 @@ snapshots: transitivePeerDependencies: - supports-color - metro-transform-plugins@0.81.5: + /metro-symbolicate@0.83.1: + resolution: {integrity: sha512-wPxYkONlq/Sv8Ji7vHEx5OzFouXAMQJjpcPW41ySKMLP/Ir18SsiJK2h4YkdKpYrTS1+0xf8oqF6nxCsT3uWtg==} + engines: {node: '>=20.19.4'} + hasBin: true + dependencies: + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-source-map: 0.83.1 + nullthrows: 1.1.1 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-transform-plugins@0.81.5: + resolution: {integrity: sha512-MmHhVx/1dJC94FN7m3oHgv5uOjKH8EX8pBeu1pnPMxbJrx6ZuIejO0k84zTSaQTZ8RxX1wqwzWBpXAWPjEX8mA==} + engines: {node: '>=18.18'} + dependencies: + '@babel/core': 7.28.4 + '@babel/generator': 7.28.3 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + flow-enums-runtime: 0.0.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + /metro-transform-plugins@0.83.1: + resolution: {integrity: sha512-1Y+I8oozXwhuS0qwC+ezaHXBf0jXW4oeYn4X39XWbZt9X2HfjodqY9bH9r6RUTsoiK7S4j8Ni2C91bUC+sktJQ==} + engines: {node: '>=20.19.4'} dependencies: - "@babel/core": 7.28.3 - "@babel/generator": 7.28.3 - "@babel/template": 7.27.2 - "@babel/traverse": 7.28.3 + '@babel/core': 7.28.4 + '@babel/generator': 7.28.3 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color + dev: false - metro-transform-worker@0.81.5: + /metro-transform-worker@0.81.5: + resolution: {integrity: sha512-lUFyWVHa7lZFRSLJEv+m4jH8WrR5gU7VIjUlg4XmxQfV8ngY4V10ARKynLhMYPeQGl7Qvf+Ayg0eCZ272YZ4Mg==} + engines: {node: '>=18.18'} dependencies: - "@babel/core": 7.28.3 - "@babel/generator": 7.28.3 - "@babel/parser": 7.28.3 - "@babel/types": 7.28.2 + '@babel/core': 7.28.4 + '@babel/generator': 7.28.3 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 flow-enums-runtime: 0.0.6 metro: 0.81.5 metro-babel-transformer: 0.81.5 @@ -21577,15 +13298,41 @@ snapshots: - supports-color - utf-8-validate - metro@0.81.5: + /metro-transform-worker@0.83.1: + resolution: {integrity: sha512-owCrhPyUxdLgXEEEAL2b14GWTPZ2zYuab1VQXcfEy0sJE71iciD7fuMcrngoufh7e7UHDZ56q4ktXg8wgiYA1Q==} + engines: {node: '>=20.19.4'} dependencies: - "@babel/code-frame": 7.27.1 - "@babel/core": 7.28.3 - "@babel/generator": 7.28.3 - "@babel/parser": 7.28.3 - "@babel/template": 7.27.2 - "@babel/traverse": 7.28.3 - "@babel/types": 7.28.2 + '@babel/core': 7.28.4 + '@babel/generator': 7.28.3 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + flow-enums-runtime: 0.0.6 + metro: 0.83.1 + metro-babel-transformer: 0.83.1 + metro-cache: 0.83.1 + metro-cache-key: 0.83.1 + metro-minify-terser: 0.83.1 + metro-source-map: 0.83.1 + metro-transform-plugins: 0.83.1 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /metro@0.81.5: + resolution: {integrity: sha512-YpFF0DDDpDVygeca2mAn7K0+us+XKmiGk4rIYMz/CRdjFoCGqAei/IQSpV0UrGfQbToSugpMQeQJveaWSH88Hg==} + engines: {node: '>=18.18'} + hasBin: true + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.28.4 + '@babel/generator': 7.28.3 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 @@ -21624,34 +13371,119 @@ snapshots: - supports-color - utf-8-validate - micromatch@4.0.8: + /metro@0.83.1: + resolution: {integrity: sha512-UGKepmTxoGD4HkQV8YWvpvwef7fUujNtTgG4Ygf7m/M0qjvb9VuDmAsEU+UdriRX7F61pnVK/opz89hjKlYTXA==} + engines: {node: '>=20.19.4'} + hasBin: true + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.28.4 + '@babel/generator': 7.28.3 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + accepts: 1.3.8 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 4.4.3 + error-stack-parser: 2.1.4 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + hermes-parser: 0.29.1 + image-size: 1.2.1 + invariant: 2.2.4 + jest-worker: 29.7.0 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.83.1 + metro-cache: 0.83.1 + metro-cache-key: 0.83.1 + metro-config: 0.83.1 + metro-core: 0.83.1 + metro-file-map: 0.83.1 + metro-resolver: 0.83.1 + metro-runtime: 0.83.1 + metro-source-map: 0.83.1 + metro-symbolicate: 0.83.1 + metro-transform-plugins: 0.83.1 + metro-transform-worker: 0.83.1 + mime-types: 2.1.35 + nullthrows: 1.1.1 + serialize-error: 2.1.0 + source-map: 0.5.7 + throat: 5.0.0 + ws: 7.5.10 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} dependencies: braces: 3.0.3 picomatch: 2.3.1 - mime-db@1.52.0: {} + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} - mime-db@1.54.0: {} + /mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} - mime-types@2.1.35: + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - mime-types@3.0.1: + /mime-types@3.0.1: + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.54.0 + dev: true - mime@1.6.0: {} - - mime@3.0.0: {} - - mimic-fn@1.2.0: {} - - mimic-fn@2.1.0: {} - - min-indent@1.0.1: {} + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true - miniflare@4.20250829.0: + /mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: true + + /mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + dev: false + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /miniflare@4.20250913.0: + resolution: {integrity: sha512-EwlUOxtvb9UKg797YZMCtNga/VSAnKG/kbJX9YGqXJoAJjDhDeAeqyCWjSl9O6EzCZNhtHuW7ZV0pD5Hec617g==} + engines: {node: '>=18.0.0'} + hasBin: true dependencies: "@cspotcode/source-map-support": 0.8.1 acorn: 8.14.0 @@ -21660,178 +13492,326 @@ snapshots: glob-to-regexp: 0.4.1 sharp: 0.33.5 stoppable: 1.1.0 - undici: 7.15.0 - workerd: 1.20250829.0 + undici: 7.14.0 + workerd: 1.20250913.0 ws: 8.18.0 youch: 4.1.0-beta.10 zod: 3.22.3 transitivePeerDependencies: - bufferutil - utf-8-validate + dev: true - minimalistic-assert@1.0.1: {} - - minimalistic-crypto-utils@1.0.1: {} - - minimatch@10.0.3: + /minimatch@10.0.3: + resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} + engines: {node: 20 || >=22} dependencies: - "@isaacs/brace-expansion": 5.0.0 + '@isaacs/brace-expansion': 5.0.0 + dev: true - minimatch@3.1.2: + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.12 - minimatch@8.0.4: + /minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.2 + dev: true - minimatch@9.0.3: + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.2 + dev: true - minimatch@9.0.5: + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.2 - minimist@1.2.8: {} + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@4.2.8: {} + /minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + dev: true - minipass@7.1.2: {} + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} - minizlib@3.0.2: + /minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} dependencies: minipass: 7.1.2 + dev: false - mkdirp@0.5.6: + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true dependencies: minimist: 1.2.8 - mkdirp@1.0.4: {} + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + /mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + dev: false - mkdirp@3.0.1: {} + /mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 + dev: true - mnemonist@0.38.3: + /mnemonist@0.38.3: + resolution: {integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==} dependencies: obliterator: 1.6.1 + dev: true - mri@1.2.0: {} + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: false - ms@2.0.0: {} + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.2: {} + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true - ms@2.1.3: {} + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mz@2.7.0: + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.11: {} + /nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true - napi-postinstall@0.3.3: {} + /napi-postinstall@0.3.3: + resolution: {integrity: sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + dev: true - natural-compare@1.4.0: {} + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - negotiator@0.6.3: {} + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} - negotiator@0.6.4: {} + /negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + dev: false - negotiator@1.0.0: {} + /negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + dev: true - neo-async@2.6.2: {} + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - nested-error-stacks@2.0.1: {} + /nested-error-stacks@2.0.1: + resolution: {integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==} + dev: false - next@14.2.31(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + /next@14.2.32(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-fg5g0GZ7/nFc09X8wLe6pNSU8cLWbLRG3TZzPJ1BJvi2s9m7eF991se67wliM9kR5yLHRkyGKU49MMx58s3LJg==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true dependencies: - "@next/env": 14.2.31 - "@swc/helpers": 0.5.5 + '@next/env': 14.2.32 + '@swc/helpers': 0.5.5 busboy: 1.6.0 - caniuse-lite: 1.0.30001735 + caniuse-lite: 1.0.30001743 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) styled-jsx: 5.1.1(react@18.3.1) optionalDependencies: - "@next/swc-darwin-arm64": 14.2.31 - "@next/swc-darwin-x64": 14.2.31 - "@next/swc-linux-arm64-gnu": 14.2.31 - "@next/swc-linux-arm64-musl": 14.2.31 - "@next/swc-linux-x64-gnu": 14.2.31 - "@next/swc-linux-x64-musl": 14.2.31 - "@next/swc-win32-arm64-msvc": 14.2.31 - "@next/swc-win32-ia32-msvc": 14.2.31 - "@next/swc-win32-x64-msvc": 14.2.31 + '@next/swc-darwin-arm64': 14.2.32 + '@next/swc-darwin-x64': 14.2.32 + '@next/swc-linux-arm64-gnu': 14.2.32 + '@next/swc-linux-arm64-musl': 14.2.32 + '@next/swc-linux-x64-gnu': 14.2.32 + '@next/swc-linux-x64-musl': 14.2.32 + '@next/swc-win32-arm64-msvc': 14.2.32 + '@next/swc-win32-ia32-msvc': 14.2.32 + '@next/swc-win32-x64-msvc': 14.2.32 transitivePeerDependencies: - "@babel/core" - babel-plugin-macros + dev: false - node-dir@0.1.17: + /node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} dependencies: minimatch: 3.1.2 - node-domexception@1.0.0: {} + /node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead + dev: true - node-fetch@2.7.0: + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true dependencies: whatwg-url: 5.0.0 - node-forge@1.3.1: {} + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} - node-int64@0.4.0: {} + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-releases@2.0.19: {} + /node-releases@2.0.21: + resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} - normalize-package-data@2.5.0: + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 resolve: 1.22.10 semver: 5.7.2 validate-npm-package-license: 3.0.4 + dev: true - normalize-path@3.0.0: {} + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} - normalize-range@0.1.2: {} + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true - npm-package-arg@11.0.3: + /npm-package-arg@11.0.3: + resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} + engines: {node: ^16.14.0 || >=18.0.0} dependencies: hosted-git-info: 7.0.2 proc-log: 4.2.0 semver: 7.7.2 validate-npm-package-name: 5.0.1 + dev: false - npm-run-path@4.0.1: + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} dependencies: path-key: 3.1.1 - nullthrows@1.1.1: {} + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + + /nwsapi@2.2.22: + resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==} + dev: true - nwsapi@2.2.21: {} + /ob1@0.81.5: + resolution: {integrity: sha512-iNpbeXPLmaiT9I5g16gFFFjsF3sGxLpYG2EGP3dfFB4z+l9X60mp/yRzStHhMtuNt8qmf7Ww80nOPQHngHhnIQ==} + engines: {node: '>=18.18'} + dependencies: + flow-enums-runtime: 0.0.6 - ob1@0.81.5: + /ob1@0.83.1: + resolution: {integrity: sha512-ngwqewtdUzFyycomdbdIhFLjePPSOt1awKMUXQ0L7iLHgWEPF3DsCerblzjzfAUHaXuvE9ccJymWQ/4PNNqvnQ==} + engines: {node: '>=20.19.4'} dependencies: flow-enums-runtime: 0.0.6 + dev: false - object-assign@4.1.1: {} + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} - object-hash@3.0.0: {} + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: true - object-inspect@1.13.4: {} + /object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + dev: true - object-is@1.1.6: + /object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 + dev: true - object-keys@1.1.1: {} + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} - object-treeify@1.1.33: {} + /object-treeify@1.1.33: + resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} + engines: {node: '>= 10'} + dev: true - object.assign@4.1.7: + /object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.4 @@ -21839,79 +13819,116 @@ snapshots: es-object-atoms: 1.1.1 has-symbols: 1.1.0 object-keys: 1.1.1 + dev: true - object.entries@1.1.9: + /object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 + dev: true - object.fromentries@2.0.8: + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.24.0 es-object-atoms: 1.1.1 + dev: true - object.groupby@1.0.3: + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.24.0 + dev: true - object.values@1.2.1: + /object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 + dev: true - obliterator@1.6.1: {} + /obliterator@1.6.1: + resolution: {integrity: sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==} + dev: true - ohash@2.0.11: {} + /ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + dev: true - on-finished@2.3.0: + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 - on-finished@2.4.1: + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 - on-headers@1.1.0: {} + /on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} + dev: false - once@1.4.0: + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - onetime@2.0.1: + /onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} dependencies: mimic-fn: 1.2.0 + dev: false - onetime@5.1.2: + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - open@7.4.2: + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} dependencies: is-docker: 2.2.1 is-wsl: 2.2.0 - open@8.4.2: + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 + dev: false - optimism@0.18.1: - dependencies: - "@wry/caches": 1.0.1 - "@wry/context": 0.7.4 - "@wry/trie": 0.5.0 - tslib: 2.8.1 - - optionator@0.9.4: + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -21920,7 +13937,9 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@3.4.0: + /ora@3.4.0: + resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} + engines: {node: '>=6'} dependencies: chalk: 2.4.2 cli-cursor: 2.1.0 @@ -21928,332 +13947,617 @@ snapshots: log-symbols: 2.2.0 strip-ansi: 5.2.0 wcwidth: 1.0.1 + dev: false - outdent@0.5.0: {} + /outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + dev: false - own-keys@1.0.1: + /own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.3.0 object-keys: 1.1.1 safe-push-apply: 1.0.0 + dev: true - p-filter@2.1.0: + /p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} dependencies: p-map: 2.1.0 + dev: false - p-limit@2.3.0: + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} dependencies: p-try: 2.2.0 - p-limit@3.1.0: + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - p-locate@3.0.0: + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + dependencies: + yocto-queue: 1.2.1 + dev: true + + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} dependencies: p-limit: 2.3.0 - p-locate@4.1.0: + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} dependencies: p-limit: 2.3.0 - p-locate@5.0.0: + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - p-map@2.1.0: {} + /p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + dev: false - p-try@2.2.0: {} + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} - package-json-from-dist@1.0.1: {} + /package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@0.2.11: + /package-manager-detector@0.2.11: + resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} dependencies: quansync: 0.2.11 + dev: false - pako@2.1.0: {} + /pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + dev: false - parent-module@1.0.1: + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} dependencies: callsites: 3.1.0 - parse-json@4.0.0: + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} dependencies: - error-ex: 1.3.2 + error-ex: 1.3.4 json-parse-better-errors: 1.0.2 - parse-json@5.2.0: + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} dependencies: - "@babel/code-frame": 7.27.1 - error-ex: 1.3.2 + '@babel/code-frame': 7.27.1 + error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + dev: true - parse-png@2.1.0: + /parse-png@2.1.0: + resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} + engines: {node: '>=10'} dependencies: pngjs: 3.4.0 + dev: false - parse5@7.3.0: + /parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} dependencies: entities: 6.0.1 + dev: true - parseurl@1.3.3: {} + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} - path-exists@3.0.0: {} + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} - path-exists@4.0.0: {} + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} - path-is-absolute@1.0.1: {} + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} - path-key@3.1.1: {} + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} - path-parse@1.0.7: {} + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true - path-scurry@1.11.1: + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} dependencies: lru-cache: 10.4.3 minipass: 7.1.2 - path-scurry@2.0.0: + /path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} dependencies: - lru-cache: 11.1.0 + lru-cache: 11.2.1 minipass: 7.1.2 + dev: true + + /path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + dev: true - path-to-regexp@6.3.0: {} + /path-to-regexp@8.3.0: + resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} + dev: true - path-to-regexp@8.2.0: {} + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} - path-type@4.0.0: {} + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true - pathe@2.0.3: {} + /pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + dev: true - picocolors@1.1.1: {} + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true - picomatch@2.3.1: {} + /picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@3.0.1: {} + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} - picomatch@4.0.3: {} + /picomatch@3.0.1: + resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} + engines: {node: '>=10'} + dev: false - pify@2.3.0: {} + /picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + dev: true - pify@4.0.1: {} + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true - pirates@4.0.7: {} + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} - pkg-dir@3.0.0: + /pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + /pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} dependencies: find-up: 3.0.0 - pkg-dir@4.2.0: + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} dependencies: find-up: 4.1.0 + dev: true - plist@3.1.0: + /pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} dependencies: - "@xmldom/xmldom": 0.8.11 + confbox: 0.1.8 + mlly: 1.8.0 + pathe: 2.0.3 + dev: true + + /plist@3.1.0: + resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} + engines: {node: '>=10.4.0'} + dependencies: + '@xmldom/xmldom': 0.8.11 base64-js: 1.5.1 xmlbuilder: 15.1.1 + dev: false - pluralize@8.0.0: {} + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true - pngjs@3.4.0: {} + /pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + dev: false - possible-typed-array-names@1.1.0: {} + /possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} - postcss-import@15.1.0(postcss@8.5.6): + /postcss-import@15.1.0(postcss@8.5.6): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.10 + dev: true - postcss-js@4.0.1(postcss@8.5.6): + /postcss-js@4.1.0(postcss@8.5.6): + resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 postcss: 8.5.6 + dev: true - postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)): + /postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2): + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true dependencies: lilconfig: 2.1.0 - yaml: 1.10.2 - optionalDependencies: postcss: 8.5.6 - ts-node: 10.9.2(@types/node@20.19.11)(typescript@5.9.2) + ts-node: 10.9.2(@types/node@20.19.16)(typescript@5.9.2) + yaml: 1.10.2 + dev: true - postcss-load-config@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)): + /postcss-load-config@4.0.2(postcss@8.5.6): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true dependencies: lilconfig: 3.1.3 - yaml: 2.8.1 - optionalDependencies: postcss: 8.5.6 - ts-node: 10.9.2(@types/node@20.19.11)(typescript@5.9.2) + yaml: 2.8.1 + dev: true - postcss-nested@6.2.0(postcss@8.5.6): + /postcss-nested@6.2.0(postcss@8.5.6): + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 dependencies: postcss: 8.5.6 postcss-selector-parser: 6.1.2 + dev: true - postcss-selector-parser@6.1.2: + /postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 + dev: true - postcss-value-parser@4.2.0: {} + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true - postcss@8.4.31: + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 + dev: false - postcss@8.4.49: + /postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 + dev: false - postcss@8.5.6: + /postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 + dev: true - prelude-ls@1.2.1: {} + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} - prettier-plugin-packagejson@2.5.19(prettier@3.6.2): + /prettier-plugin-packagejson@2.5.19(prettier@3.6.2): + resolution: {integrity: sha512-Qsqp4+jsZbKMpEGZB1UP1pxeAT8sCzne2IwnKkr+QhUe665EXUo3BAvTf1kAPCqyMv9kg3ZmO0+7eOni/C6Uag==} + peerDependencies: + prettier: '>= 1.16.0' + peerDependenciesMeta: + prettier: + optional: true dependencies: + prettier: 3.6.2 sort-package-json: 3.4.0 synckit: 0.11.11 - optionalDependencies: - prettier: 3.6.2 + dev: true - prettier-plugin-tailwindcss@0.5.14(prettier@3.6.2): + /prettier-plugin-tailwindcss@0.5.14(prettier@3.6.2): + resolution: {integrity: sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig-melody': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig-melody': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true dependencies: prettier: 3.6.2 + dev: false - prettier@2.8.8: {} + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: false - prettier@3.6.2: {} + /prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + engines: {node: '>=14'} + hasBin: true - pretty-bytes@5.6.0: {} + /pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + dev: false - pretty-format@27.5.1: + /pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 17.0.2 + dev: true - pretty-format@29.7.0: + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: "@jest/schemas": 29.6.3 ansi-styles: 5.2.0 react-is: 18.3.1 - proc-log@4.2.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} + dev: false - process@0.11.10: {} + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: false - progress@2.0.3: {} + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: false - promise@8.3.0: + /promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} dependencies: asap: 2.0.6 - prompts@2.4.2: + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - prop-types@15.8.1: + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - - protobufjs@6.11.4: - dependencies: - "@protobufjs/aspromise": 1.1.2 - "@protobufjs/base64": 1.1.2 - "@protobufjs/codegen": 2.0.4 - "@protobufjs/eventemitter": 1.1.0 - "@protobufjs/fetch": 1.1.0 - "@protobufjs/float": 1.0.2 - "@protobufjs/inquire": 1.1.0 - "@protobufjs/path": 1.1.2 - "@protobufjs/pool": 1.1.0 - "@protobufjs/utf8": 1.1.0 - "@types/long": 4.0.2 - "@types/node": 20.19.11 - long: 4.0.0 - - protobufjs@7.5.4: - dependencies: - "@protobufjs/aspromise": 1.1.2 - "@protobufjs/base64": 1.1.2 - "@protobufjs/codegen": 2.0.4 - "@protobufjs/eventemitter": 1.1.0 - "@protobufjs/fetch": 1.1.0 - "@protobufjs/float": 1.0.2 - "@protobufjs/inquire": 1.1.0 - "@protobufjs/path": 1.1.2 - "@protobufjs/pool": 1.1.0 - "@protobufjs/utf8": 1.1.0 - "@types/node": 20.19.11 + dev: true + + /protobufjs@7.5.4: + resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} + engines: {node: '>=12.0.0'} + requiresBuild: true + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 20.19.16 long: 5.3.2 + dev: false - proxy-addr@2.0.7: + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 + dev: true - proxy-from-env@1.1.0: {} - - psl@1.15.0: + /psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} dependencies: punycode: 2.3.1 + dev: true - punycode@2.3.1: {} + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} - pure-rand@6.1.0: {} + /pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + dev: true - qrcode-terminal@0.11.0: {} + /qrcode-terminal@0.11.0: + resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==} + hasBin: true + dev: false - qs@6.13.0: + /qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} dependencies: side-channel: 1.1.0 + dev: true - qs@6.14.0: + /qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} dependencies: side-channel: 1.1.0 + dev: true - quansync@0.2.11: {} + /quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + dev: false - querystringify@2.2.0: {} + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true - queue-microtask@1.2.3: {} + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - queue@6.0.2: + /queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} dependencies: inherits: 2.0.4 - range-parser@1.2.1: {} + /quick-lru@6.1.2: + resolution: {integrity: sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==} + engines: {node: '>=12'} + dev: false + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} - raw-body@3.0.0: + /raw-body@3.0.1: + resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==} + engines: {node: '>= 0.10'} dependencies: bytes: 3.1.2 http-errors: 2.0.0 - iconv-lite: 0.6.3 + iconv-lite: 0.7.0 unpipe: 1.0.0 + dev: true - rc@1.2.8: + /rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true dependencies: deep-extend: 0.6.0 ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 + dev: false - react-devtools-core@5.3.2: + /react-devtools-core@5.3.2: + resolution: {integrity: sha512-crr9HkVrDiJ0A4zot89oS0Cgv0Oa4OG1Em4jit3P3ZxZSKPMYyMjfwMqgcJna9o625g8oN87rBm8SWWrSTBZxg==} dependencies: shell-quote: 1.8.3 ws: 7.5.10 @@ -22261,58 +14565,142 @@ snapshots: - bufferutil - utf-8-validate - react-dom@18.3.1(react@18.3.1): + /react-dom@18.3.1(react@18.3.1): + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 dependencies: loose-envify: 1.4.0 react: 18.3.1 scheduler: 0.23.2 - react-is@16.13.1: {} + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: true - react-is@17.0.2: {} + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: true - react-is@18.3.1: {} + /react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + /react-native-get-random-values@1.11.0(react-native@0.76.7): + resolution: {integrity: sha512-4BTbDbRmS7iPdhYLRcz3PGFIpFJBwNZg9g42iwa2P6FOv9vZj/xJc678RZXnLNZzd0qd7Q3CCF6Yd+CU2eoXKQ==} + peerDependencies: + react-native: '>=0.56' + dependencies: + fast-base64-decode: 1.0.0 + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(react@18.3.1) + dev: false - react-native-edge-to-edge@1.6.0(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1): + /react-native-quick-base64@2.2.2(react-native@0.76.7)(react@18.3.1): + resolution: {integrity: sha512-WLHSifHLoamr2kF00Gov0W9ud6CfPshe1rmqWTquVIi9c62qxOaJCFVDrXFZhEBU8B8PvGLVuOlVKH78yhY0Fg==} + peerDependencies: + react: '*' + react-native: '*' dependencies: react: 18.3.1 - react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) + react-native: 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(react@18.3.1) + dev: false - react-native-get-random-values@1.11.0(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1)): + /react-native-quick-crypto@0.7.17(react-native@0.76.7)(react@18.3.1): + resolution: {integrity: sha512-cJzp6oA/dM1lujt+Rwtn46Mgcs3w9F/0oQvNz1jcADc/AXktveAOUTzzKrDMxyg6YPziCYnoqMDzHBo6OLSU1g==} dependencies: - fast-base64-decode: 1.0.0 - react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) + '@craftzdog/react-native-buffer': 6.1.0(react-native@0.76.7)(react@18.3.1) + events: 3.3.0 + readable-stream: 4.7.0 + string_decoder: 1.3.0 + util: 0.12.5 + transitivePeerDependencies: + - react + - react-native + dev: false - react-native-quick-base64@2.2.1(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1): + /react-native@0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-GPJcQeO3qUi1MvuhsC2DC6tH8gJQ4uc4JWPORrdeuCGFWE3QLsN8/hiChTEvJREHLfQSV61YPI8gIOtAQ8c37g==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@types/react': ^18.2.47 + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@jest/create-cache-key-function': 29.7.0 + '@react-native/assets-registry': 0.76.7 + '@react-native/codegen': 0.76.7(@babel/preset-env@7.28.3) + '@react-native/community-cli-plugin': 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3) + '@react-native/gradle-plugin': 0.76.7 + '@react-native/js-polyfills': 0.76.7 + '@react-native/normalize-colors': 0.76.7 + '@react-native/virtualized-lists': 0.76.7(@types/react@18.3.24)(react-native@0.76.7)(react@18.3.1) + '@types/react': 18.3.24 + abort-controller: 3.0.0 + anser: 1.4.10 + ansi-regex: 5.0.1 + babel-jest: 29.7.0(@babel/core@7.28.4) + babel-plugin-syntax-hermes-parser: 0.23.1 + base64-js: 1.5.1 + chalk: 4.1.2 + commander: 12.1.0 + event-target-shim: 5.0.1 + flow-enums-runtime: 0.0.6 + glob: 7.2.3 + invariant: 2.2.4 + jest-environment-node: 29.7.0 + jsc-android: 250231.0.0 + memoize-one: 5.2.1 + metro-runtime: 0.81.5 + metro-source-map: 0.81.5 + mkdirp: 0.5.6 + nullthrows: 1.1.1 + pretty-format: 29.7.0 + promise: 8.3.0 react: 18.3.1 - react-native: 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1) - - react-native-quick-crypto@0.7.17(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1): - dependencies: - "@craftzdog/react-native-buffer": 6.1.0(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) - events: 3.3.0 - readable-stream: 4.7.0 - string_decoder: 1.3.0 - util: 0.12.5 + react-devtools-core: 5.3.2 + react-refresh: 0.14.2 + regenerator-runtime: 0.13.11 + scheduler: 0.24.0-canary-efb381bbf-20230505 + semver: 7.7.2 + stacktrace-parser: 0.1.11 + whatwg-fetch: 3.6.20 + ws: 6.2.3 + yargs: 17.7.2 transitivePeerDependencies: - - react - - react-native + - '@babel/core' + - '@babel/preset-env' + - '@react-native-community/cli-server-api' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false - react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1): + /react-native@0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(react@18.3.1): + resolution: {integrity: sha512-GPJcQeO3qUi1MvuhsC2DC6tH8gJQ4uc4JWPORrdeuCGFWE3QLsN8/hiChTEvJREHLfQSV61YPI8gIOtAQ8c37g==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@types/react': ^18.2.47 + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - "@jest/create-cache-key-function": 29.7.0 - "@react-native/assets-registry": 0.76.7 - "@react-native/codegen": 0.76.7(@babel/preset-env@7.28.3(@babel/core@7.28.3)) - "@react-native/community-cli-plugin": 0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3)) - "@react-native/gradle-plugin": 0.76.7 - "@react-native/js-polyfills": 0.76.7 - "@react-native/normalize-colors": 0.76.7 - "@react-native/virtualized-lists": 0.76.7(@types/react@18.3.23)(react-native@0.76.7(@babel/core@7.28.3)(@babel/preset-env@7.28.3(@babel/core@7.28.3))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + '@jest/create-cache-key-function': 29.7.0 + '@react-native/assets-registry': 0.76.7 + '@react-native/codegen': 0.76.7(@babel/preset-env@7.28.3) + '@react-native/community-cli-plugin': 0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3) + '@react-native/gradle-plugin': 0.76.7 + '@react-native/js-polyfills': 0.76.7 + '@react-native/normalize-colors': 0.76.7 + '@react-native/virtualized-lists': 0.76.7(react-native@0.76.7)(react@18.3.1) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 - babel-jest: 29.7.0(@babel/core@7.28.3) + babel-jest: 29.7.0(@babel/core@7.28.4) babel-plugin-syntax-hermes-parser: 0.23.1 base64-js: 1.5.1 chalk: 4.1.2 @@ -22340,103 +14728,157 @@ snapshots: whatwg-fetch: 3.6.20 ws: 6.2.3 yargs: 17.7.2 - optionalDependencies: - "@types/react": 18.3.23 transitivePeerDependencies: - - "@babel/core" - - "@babel/preset-env" - - "@react-native-community/cli-server-api" + - '@babel/core' + - '@babel/preset-env' + - '@react-native-community/cli-server-api' - bufferutil - encoding - supports-color - utf-8-validate + dev: false - react-refresh@0.14.2: {} + /react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} - react-remove-scroll-bar@2.3.8(@types/react@18.3.23)(react@18.3.1): + /react-remove-scroll-bar@2.3.8(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.24 react: 18.3.1 - react-style-singleton: 2.2.3(@types/react@18.3.23)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.24)(react@18.3.1) tslib: 2.8.1 - optionalDependencies: - "@types/react": 18.3.23 + dev: false - react-remove-scroll@2.7.1(@types/react@18.3.23)(react@18.3.1): + /react-remove-scroll@2.7.1(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.24 react: 18.3.1 - react-remove-scroll-bar: 2.3.8(@types/react@18.3.23)(react@18.3.1) - react-style-singleton: 2.2.3(@types/react@18.3.23)(react@18.3.1) + react-remove-scroll-bar: 2.3.8(@types/react@18.3.24)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.24)(react@18.3.1) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@18.3.23)(react@18.3.1) - use-sidecar: 1.1.3(@types/react@18.3.23)(react@18.3.1) - optionalDependencies: - "@types/react": 18.3.23 + use-callback-ref: 1.3.3(@types/react@18.3.24)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.24)(react@18.3.1) + dev: false - react-style-singleton@2.2.3(@types/react@18.3.23)(react@18.3.1): + /react-style-singleton@2.2.3(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.24 get-nonce: 1.0.1 react: 18.3.1 tslib: 2.8.1 - optionalDependencies: - "@types/react": 18.3.23 + dev: false - react@18.3.1: + /react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - read-cache@1.0.0: + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 + dev: true - read-pkg-up@7.0.1: + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 + dev: true - read-pkg@5.2.0: + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} dependencies: "@types/normalize-package-data": 2.4.4 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 + dev: true - read-yaml-file@1.1.0: + /read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 + dev: false - readable-stream@4.7.0: + /readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: abort-controller: 3.0.0 buffer: 6.0.3 events: 3.3.0 process: 0.11.10 string_decoder: 1.3.0 + dev: false - readdirp@3.6.0: + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 + dev: true - readline@1.3.0: {} + /readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - readonly-date@1.0.0: {} + /readonly-date@1.0.0: + resolution: {integrity: sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==} + dev: false - recast@0.21.5: + /recast@0.21.5: + resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + engines: {node: '>= 4'} dependencies: ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 tslib: 2.8.1 - redent@3.0.0: + /redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 + dev: true - reflect.getprototypeof@1.0.10: + /reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 @@ -22446,18 +14888,28 @@ snapshots: get-intrinsic: 1.3.0 get-proto: 1.0.1 which-builtin-type: 1.2.1 + dev: true - regenerate-unicode-properties@10.2.0: + /regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + engines: {node: '>=4'} dependencies: regenerate: 1.4.2 - regenerate@1.4.2: {} + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regenerator-runtime@0.13.11: {} + /regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - regexp-tree@0.1.27: {} + /regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + dev: true - regexp.prototype.flags@1.5.4: + /regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 @@ -22465,174 +14917,305 @@ snapshots: get-proto: 1.0.1 gopd: 1.2.0 set-function-name: 2.0.2 + dev: true - regexpu-core@6.2.0: + /regexpu-core@6.3.1: + resolution: {integrity: sha512-DzcswPr252wEr7Qz8AyAVbfyBDKLoYp6eRA1We2Fa9qirRFSdtkP5sHr3yglDKy2BbA0fd2T+j/CUSKes3FeVQ==} + engines: {node: '>=4'} dependencies: regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 + regenerate-unicode-properties: 10.2.2 regjsgen: 0.8.0 regjsparser: 0.12.0 unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 + unicode-match-property-value-ecmascript: 2.2.1 - regjsgen@0.8.0: {} + /regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - regjsparser@0.10.0: + /regjsparser@0.10.0: + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + hasBin: true dependencies: jsesc: 0.5.0 + dev: true - regjsparser@0.12.0: + /regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true dependencies: jsesc: 3.0.2 - rehackt@0.1.0(@types/react@18.3.23)(react@18.3.1): - optionalDependencies: - "@types/react": 18.3.23 - react: 18.3.1 - - require-directory@2.1.1: {} + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} - require-from-string@2.0.2: {} + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: false - requireg@0.2.2: + /requireg@0.2.2: + resolution: {integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==} + engines: {node: '>= 4.0.0'} dependencies: nested-error-stacks: 2.0.1 rc: 1.2.8 resolve: 1.7.1 + dev: false - requires-port@1.0.0: {} + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true - resolve-cwd@3.0.0: + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 + dev: true - resolve-from@3.0.0: {} + /resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} - resolve-from@4.0.0: {} + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} - resolve-from@5.0.0: {} + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: {} + /resolve-global@1.0.0: + resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} + engines: {node: '>=8'} + dependencies: + global-dirs: 0.1.1 + dev: false + + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true - resolve-workspace-root@2.0.0: {} + /resolve-workspace-root@2.0.0: + resolution: {integrity: sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw==} + dev: false - resolve.exports@2.0.3: {} + /resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} - resolve@1.19.0: + /resolve@1.19.0: + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 + dev: true - resolve@1.22.10: + /resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@1.7.1: + /resolve@1.7.1: + resolution: {integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==} dependencies: path-parse: 1.0.7 + dev: false - resolve@2.0.0-next.5: + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true - restore-cursor@2.0.0: + /restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} dependencies: onetime: 2.0.1 signal-exit: 3.0.7 + dev: false - reusify@1.1.0: {} + /reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rimraf@2.6.3: + /rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true dependencies: glob: 7.2.3 - rimraf@3.0.2: + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true dependencies: glob: 7.2.3 - rimraf@5.0.10: + /rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true dependencies: glob: 10.4.5 + dev: true - rollup-plugin-copy@3.5.0: + /rollup-plugin-copy@3.5.0: + resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} + engines: {node: '>=8.3'} dependencies: "@types/fs-extra": 8.1.5 colorette: 1.4.0 fs-extra: 8.1.0 globby: 10.0.1 is-plain-object: 3.0.1 + dev: true + + /rollup@3.29.5: + resolution: {integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true - rollup@3.29.5: + /rollup@4.52.4: + resolution: {integrity: sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.8 optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.52.4 + '@rollup/rollup-android-arm64': 4.52.4 + '@rollup/rollup-darwin-arm64': 4.52.4 + '@rollup/rollup-darwin-x64': 4.52.4 + '@rollup/rollup-freebsd-arm64': 4.52.4 + '@rollup/rollup-freebsd-x64': 4.52.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.4 + '@rollup/rollup-linux-arm-musleabihf': 4.52.4 + '@rollup/rollup-linux-arm64-gnu': 4.52.4 + '@rollup/rollup-linux-arm64-musl': 4.52.4 + '@rollup/rollup-linux-loong64-gnu': 4.52.4 + '@rollup/rollup-linux-ppc64-gnu': 4.52.4 + '@rollup/rollup-linux-riscv64-gnu': 4.52.4 + '@rollup/rollup-linux-riscv64-musl': 4.52.4 + '@rollup/rollup-linux-s390x-gnu': 4.52.4 + '@rollup/rollup-linux-x64-gnu': 4.52.4 + '@rollup/rollup-linux-x64-musl': 4.52.4 + '@rollup/rollup-openharmony-arm64': 4.52.4 + '@rollup/rollup-win32-arm64-msvc': 4.52.4 + '@rollup/rollup-win32-ia32-msvc': 4.52.4 + '@rollup/rollup-win32-x64-gnu': 4.52.4 + '@rollup/rollup-win32-x64-msvc': 4.52.4 fsevents: 2.3.3 + dev: true - router@2.2.0: + /router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} dependencies: - debug: 4.4.1 + debug: 4.4.3 depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 - path-to-regexp: 8.2.0 + path-to-regexp: 8.3.0 transitivePeerDependencies: - supports-color + dev: true - run-parallel@1.2.0: + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - safe-array-concat@1.1.3: + /safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.4 get-intrinsic: 1.3.0 has-symbols: 1.1.0 isarray: 2.0.5 + dev: true - safe-buffer@5.2.1: {} + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-push-apply@1.0.0: + /safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 isarray: 2.0.5 + dev: true - safe-regex-test@1.1.0: + /safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 es-errors: 1.3.0 is-regex: 1.2.1 - safer-buffer@2.1.2: {} + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sax@1.4.1: {} + /sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + dev: false - saxes@6.0.0: + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 + dev: true - scheduler@0.23.2: + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} dependencies: loose-envify: 1.4.0 - scheduler@0.24.0-canary-efb381bbf-20230505: + /scheduler@0.24.0-canary-efb381bbf-20230505: + resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} dependencies: loose-envify: 1.4.0 - selfsigned@2.4.1: + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} dependencies: - "@types/node-forge": 1.3.13 + '@types/node-forge': 1.3.14 node-forge: 1.3.1 - semver@5.7.2: {} + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true - semver@6.3.1: {} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true - semver@7.7.2: {} + /semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true - send@0.19.0: + /send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} dependencies: debug: 2.6.9 depd: 2.0.0 @@ -22650,7 +15233,9 @@ snapshots: transitivePeerDependencies: - supports-color - send@0.19.1: + /send@0.19.1: + resolution: {integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==} + engines: {node: '>= 0.8.0'} dependencies: debug: 2.6.9 depd: 2.0.0 @@ -22667,10 +15252,13 @@ snapshots: statuses: 2.0.1 transitivePeerDependencies: - supports-color + dev: false - send@1.2.0: + /send@1.2.0: + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} dependencies: - debug: 4.4.1 + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -22683,10 +15271,15 @@ snapshots: statuses: 2.0.1 transitivePeerDependencies: - supports-color + dev: true - serialize-error@2.1.0: {} + /serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} - serve-static@1.16.2: + /serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 @@ -22695,7 +15288,9 @@ snapshots: transitivePeerDependencies: - supports-color - serve-static@2.2.0: + /serve-static@2.2.0: + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 @@ -22703,8 +15298,11 @@ snapshots: send: 1.2.0 transitivePeerDependencies: - supports-color + dev: true - set-function-length@1.2.2: + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -22713,217 +15311,341 @@ snapshots: gopd: 1.2.0 has-property-descriptors: 1.0.2 - set-function-name@2.0.2: + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + dev: true - set-proto@1.0.0: + /set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} dependencies: dunder-proto: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 + dev: true - setprototypeof@1.2.0: {} + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shallow-clone@3.0.1: + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} dependencies: kind-of: 6.0.3 - sharp@0.33.5: + /sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + requiresBuild: true dependencies: color: 4.2.3 - detect-libc: 2.0.4 + detect-libc: 2.1.0 semver: 7.7.2 optionalDependencies: - "@img/sharp-darwin-arm64": 0.33.5 - "@img/sharp-darwin-x64": 0.33.5 - "@img/sharp-libvips-darwin-arm64": 1.0.4 - "@img/sharp-libvips-darwin-x64": 1.0.4 - "@img/sharp-libvips-linux-arm": 1.0.5 - "@img/sharp-libvips-linux-arm64": 1.0.4 - "@img/sharp-libvips-linux-s390x": 1.0.4 - "@img/sharp-libvips-linux-x64": 1.0.4 - "@img/sharp-libvips-linuxmusl-arm64": 1.0.4 - "@img/sharp-libvips-linuxmusl-x64": 1.0.4 - "@img/sharp-linux-arm": 0.33.5 - "@img/sharp-linux-arm64": 0.33.5 - "@img/sharp-linux-s390x": 0.33.5 - "@img/sharp-linux-x64": 0.33.5 - "@img/sharp-linuxmusl-arm64": 0.33.5 - "@img/sharp-linuxmusl-x64": 0.33.5 - "@img/sharp-wasm32": 0.33.5 - "@img/sharp-win32-ia32": 0.33.5 - "@img/sharp-win32-x64": 0.33.5 - - shebang-command@2.0.0: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - shebang-regex@3.0.0: {} + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} - shell-quote@1.8.3: {} + /shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} - side-channel-list@1.0.0: + /side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 + dev: true - side-channel-map@1.0.1: + /side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 es-errors: 1.3.0 get-intrinsic: 1.3.0 object-inspect: 1.13.4 + dev: true - side-channel-weakmap@1.0.2: + /side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 es-errors: 1.3.0 get-intrinsic: 1.3.0 object-inspect: 1.13.4 side-channel-map: 1.0.1 + dev: true - side-channel@1.1.0: + /side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 side-channel-list: 1.0.0 side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + dev: true - signal-exit@3.0.7: {} + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true - signal-exit@4.1.0: {} + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - simple-plist@1.3.1: + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + /simple-plist@1.3.1: + resolution: {integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==} dependencies: bplist-creator: 0.1.0 bplist-parser: 0.3.1 plist: 3.1.0 + dev: false - simple-swizzle@0.2.2: + /simple-swizzle@0.2.4: + resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} dependencies: - is-arrayish: 0.3.2 + is-arrayish: 0.3.4 + dev: true - sisteransi@1.0.5: {} + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - slash@3.0.0: {} + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} - slugify@1.6.6: {} + /slugify@1.6.6: + resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} + engines: {node: '>=8.0.0'} + dev: false - sort-object-keys@1.1.3: {} + /sort-object-keys@1.1.3: + resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + dev: true - sort-package-json@3.4.0: + /sort-package-json@3.4.0: + resolution: {integrity: sha512-97oFRRMM2/Js4oEA9LJhjyMlde+2ewpZQf53pgue27UkbEXfHJnDzHlUxQ/DWUkzqmp7DFwJp8D+wi/TYeQhpA==} + engines: {node: '>=20'} + hasBin: true dependencies: - detect-indent: 7.0.1 + detect-indent: 7.0.2 detect-newline: 4.0.1 git-hooks-list: 4.1.1 is-plain-obj: 4.1.0 semver: 7.7.2 sort-object-keys: 1.1.3 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 + dev: true - source-map-js@1.2.1: {} + /source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} - source-map-support@0.5.13: + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + dev: true - source-map-support@0.5.21: + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - source-map@0.5.7: {} + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} - source-map@0.6.1: {} + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} - source-map@0.8.0-beta.0: + /source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + deprecated: The work that was done in this beta branch won't be included in future versions dependencies: whatwg-url: 7.1.0 + dev: true - spawndamnit@3.0.1: + /spawndamnit@3.0.1: + resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 + dev: false - spdx-correct@3.2.0: + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.22 + dev: true - spdx-exceptions@2.5.0: {} + /spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + dev: true - spdx-expression-parse@3.0.1: + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.5.0 spdx-license-ids: 3.0.22 + dev: true - spdx-license-ids@3.0.22: {} + /spdx-license-ids@3.0.22: + resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} + dev: true - sprintf-js@1.0.3: {} + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - stable-hash@0.0.5: {} + /stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + dev: true - stack-utils@2.0.6: + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 - stackframe@1.3.4: {} + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + + /stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - stacktrace-parser@0.1.11: + /stacktrace-parser@0.1.11: + resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} + engines: {node: '>=6'} dependencies: type-fest: 0.7.1 - statuses@1.5.0: {} + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} - statuses@2.0.1: {} + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} - stop-iteration-iterator@1.1.0: + /std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + dev: true + + /stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 internal-slot: 1.1.0 + dev: true - stoppable@1.1.0: {} + /stoppable@1.1.0: + resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} + engines: {node: '>=4', npm: '>=6'} + dev: true - stream-buffers@2.2.0: {} + /stream-buffers@2.2.0: + resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} + engines: {node: '>= 0.10.0'} + dev: false - streamsearch@1.1.0: {} + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: false - string-length@4.0.2: + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 + dev: true - string-width@4.2.3: + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 - string-width@7.2.0: + /string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} dependencies: emoji-regex: 10.5.0 - get-east-asian-width: 1.3.1 - strip-ansi: 7.1.0 + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 + dev: true - string.prototype.includes@2.0.1: + /string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.24.0 + dev: true - string.prototype.matchall@4.0.12: + /string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.4 @@ -22938,13 +15660,18 @@ snapshots: regexp.prototype.flags: 1.5.4 set-function-name: 2.0.2 side-channel: 1.1.0 + dev: true - string.prototype.repeat@1.0.0: + /string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} dependencies: define-properties: 1.2.1 es-abstract: 1.24.0 + dev: true - string.prototype.trim@1.2.10: + /string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.4 @@ -22953,69 +15680,127 @@ snapshots: es-abstract: 1.24.0 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 + dev: true - string.prototype.trimend@1.0.9: + /string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 + dev: true - string.prototype.trimstart@1.0.8: + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-object-atoms: 1.1.1 + dev: true - string_decoder@1.3.0: + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 + dev: false - strip-ansi@5.2.0: + /strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} dependencies: ansi-regex: 4.1.1 + dev: false - strip-ansi@6.0.1: + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + /strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} dependencies: - ansi-regex: 6.2.0 + ansi-regex: 6.2.2 + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} - strip-bom@3.0.0: {} + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true - strip-bom@4.0.0: {} + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} - strip-final-newline@2.0.0: {} + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true - strip-indent@3.0.0: + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} dependencies: min-indent: 1.0.1 + dev: true - strip-json-comments@2.0.1: {} + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: false - strip-json-comments@3.1.1: {} + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} - strnum@1.1.2: {} + /strip-literal@2.1.1: + resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} + dependencies: + js-tokens: 9.0.1 + dev: true + + /strnum@1.1.2: + resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} + dev: true - strnum@2.1.1: {} + /strnum@2.1.1: + resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} + dev: true - structured-headers@0.4.1: {} + /structured-headers@0.4.1: + resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} + dev: false - styled-jsx@5.1.1(react@18.3.1): + /styled-jsx@5.1.1(react@18.3.1): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true dependencies: client-only: 0.0.1 react: 18.3.1 + dev: false - stytch@9.1.0: - dependencies: - jose: 4.15.9 - undici: 5.29.0 - - sucrase@3.35.0: + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true dependencies: - "@jridgewell/gen-mapping": 0.3.13 + '@jridgewell/gen-mapping': 0.3.13 commander: 4.1.1 glob: 10.4.5 lines-and-columns: 1.2.4 @@ -23023,44 +15808,74 @@ snapshots: pirates: 4.0.7 ts-interface-checker: 0.1.13 - supports-color@10.2.0: {} + /supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + dev: true - supports-color@5.5.0: + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} dependencies: has-flag: 3.0.0 + dev: false - supports-color@7.2.0: + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - supports-color@8.1.1: + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - supports-hyperlinks@2.3.0: + /supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 supports-color: 7.2.0 + dev: false - supports-preserve-symlinks-flag@1.0.0: {} + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} - symbol-observable@2.0.3: {} + /symbol-observable@2.0.3: + resolution: {integrity: sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==} + engines: {node: '>=0.10'} + dev: false - symbol-observable@4.0.0: {} + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true - symbol-tree@3.2.4: {} - - synckit@0.11.11: + /synckit@0.11.11: + resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + engines: {node: ^14.18.0 || >=16.0.0} dependencies: - "@pkgr/core": 0.2.9 + '@pkgr/core': 0.2.9 + dev: true - tailwind-merge@2.6.0: {} + /tailwind-merge@2.6.0: + resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} + dev: true - tailwindcss-animate@1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@20.19.11))): + /tailwindcss-animate@1.0.7(tailwindcss@3.4.17): + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' dependencies: - tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@20.19.11)) + tailwindcss: 3.4.17 + dev: true - tailwindcss@3.4.17(ts-node@10.9.2(@types/node@20.19.11)): + /tailwindcss@3.4.17: + resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} + engines: {node: '>=14.0.0'} + hasBin: true dependencies: "@alloc/quick-lru": 5.2.0 arg: 5.0.2 @@ -23078,16 +15893,19 @@ snapshots: picocolors: 1.1.1 postcss: 8.5.6 postcss-import: 15.1.0(postcss@8.5.6) - postcss-js: 4.0.1(postcss@8.5.6) - postcss-load-config: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)) + postcss-js: 4.1.0(postcss@8.5.6) + postcss-load-config: 4.0.2(postcss@8.5.6) postcss-nested: 6.2.0(postcss@8.5.6) postcss-selector-parser: 6.1.2 resolve: 1.22.10 sucrase: 3.35.0 transitivePeerDependencies: - ts-node + dev: true - tar@7.4.3: + /tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} dependencies: "@isaacs/fs-minipass": 4.0.1 chownr: 3.0.0 @@ -23095,102 +15913,194 @@ snapshots: minizlib: 3.0.2 mkdirp: 3.0.1 yallist: 5.0.0 + dev: false - temp-dir@2.0.0: {} + /temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + dev: false - temp@0.8.4: + /temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} dependencies: rimraf: 2.6.3 - term-size@2.2.1: {} + /term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + dev: false - terminal-link@2.1.1: + /terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} dependencies: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 + dev: false - terser@5.16.9: + /terser@5.16.9: + resolution: {integrity: sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg==} + engines: {node: '>=10'} + hasBin: true dependencies: "@jridgewell/source-map": 0.3.11 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 + dev: true - terser@5.43.1: + /terser@5.44.0: + resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} + engines: {node: '>=10'} + hasBin: true dependencies: "@jridgewell/source-map": 0.3.11 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 - test-exclude@6.0.0: + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} dependencies: "@istanbuljs/schema": 0.1.3 glob: 7.2.3 minimatch: 3.1.2 - text-encoding@0.7.0: {} + /text-encoding@0.7.0: + resolution: {integrity: sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==} + deprecated: no longer maintained + dev: true - text-table@0.2.0: {} + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thenify-all@1.6.0: + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 - thenify@3.3.1: + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 - throat@5.0.0: {} + /throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - tinyglobby@0.2.14: + /tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + dev: true + + /tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + dev: true + + /tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + dev: true - tmpl@1.0.5: {} + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + dev: true - to-regex-range@5.0.1: + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - toidentifier@1.0.1: {} + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} - tough-cookie@4.1.4: + /tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} dependencies: psl: 1.15.0 punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 + dev: true - tr46@0.0.3: {} + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@1.0.1: + /tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: punycode: 2.3.1 + dev: true - tr46@3.0.0: + /tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} dependencies: punycode: 2.3.1 + dev: true - tree-kill@1.2.2: {} + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true - ts-api-utils@1.4.3(typescript@5.9.2): + /ts-api-utils@1.4.3(typescript@5.9.2): + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' dependencies: typescript: 5.9.2 + dev: true - ts-interface-checker@0.1.13: {} - - ts-invariant@0.10.3: - dependencies: - tslib: 2.8.1 + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-jest@29.4.1(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.17.19)(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)))(typescript@5.9.2): + /ts-jest@29.4.2(@babel/core@7.28.4)(esbuild@0.17.19)(jest@29.7.0)(typescript@5.9.2): + resolution: {integrity: sha512-pBNOkn4HtuLpNrXTMVRC9b642CBaDnKqWXny4OzuoULT9S7Kf8MMlaRe2veKax12rjf5WcpMBhVPbQurlWGNxA==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 || ^30.0.0 + '@jest/types': ^29.0.0 || ^30.0.0 + babel-jest: ^29.0.0 || ^30.0.0 + esbuild: '*' + jest: ^29.0.0 || ^30.0.0 + jest-util: ^29.0.0 || ^30.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + jest-util: + optional: true dependencies: + '@babel/core': 7.28.4 bs-logger: 0.2.6 + esbuild: 0.17.19 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.8 - jest: 29.7.0(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) + jest: 29.7.0(@types/node@20.19.16)(ts-node@10.9.2) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -23198,22 +16108,28 @@ snapshots: type-fest: 4.41.0 typescript: 5.9.2 yargs-parser: 21.1.1 - optionalDependencies: - "@babel/core": 7.28.3 - "@jest/transform": 29.7.0 - "@jest/types": 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.3) - esbuild: 0.17.19 - jest-util: 29.7.0 + dev: true - ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2): + /ts-node@10.9.2(@types/node@20.19.16)(typescript@5.9.2): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true dependencies: - "@cspotcode/source-map-support": 0.8.1 - "@tsconfig/node10": 1.0.11 - "@tsconfig/node12": 1.0.11 - "@tsconfig/node14": 1.0.3 - "@tsconfig/node16": 1.0.4 - "@types/node": 20.19.11 + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.19.16 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -23223,67 +16139,126 @@ snapshots: typescript: 5.9.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + dev: true - ts-tqdm@0.8.6: {} + /ts-tqdm@0.8.6: + resolution: {integrity: sha512-3X3M1PZcHtgQbnwizL+xU8CAgbYbeLHrrDwL9xxcZZrV5J+e7loJm1XrXozHjSkl44J0Zg0SgA8rXbh83kCkcQ==} + dev: true - tsconfig-paths@3.15.0: + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: "@types/json5": 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 + dev: true - tslib@1.14.1: {} + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true - tslib@2.8.1: {} + /tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsup@6.7.0(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2))(typescript@5.9.2): + /tsup@6.7.0(postcss@8.5.6)(ts-node@10.9.2)(typescript@5.9.2): + resolution: {integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==} + engines: {node: '>=14.18'} + hasBin: true + peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.1.0' + peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true dependencies: bundle-require: 4.2.1(esbuild@0.17.19) cac: 6.7.14 chokidar: 3.6.0 - debug: 4.4.1 + debug: 4.4.3 esbuild: 0.17.19 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.11)(typescript@5.9.2)) + postcss: 8.5.6 + postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2) resolve-from: 5.0.0 rollup: 3.29.5 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 - optionalDependencies: - postcss: 8.5.6 typescript: 5.9.2 transitivePeerDependencies: - supports-color - ts-node + dev: true - tsutils@3.21.0(typescript@5.9.2): + /tsutils@3.21.0(typescript@5.9.2): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 typescript: 5.9.2 + dev: true - turbo-darwin-64@2.5.6: + /turbo-darwin-64@2.5.6: + resolution: {integrity: sha512-3C1xEdo4aFwMJAPvtlPqz1Sw/+cddWIOmsalHFMrsqqydcptwBfu26WW2cDm3u93bUzMbBJ8k3zNKFqxJ9ei2A==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true - turbo-darwin-arm64@2.5.6: + /turbo-darwin-arm64@2.5.6: + resolution: {integrity: sha512-LyiG+rD7JhMfYwLqB6k3LZQtYn8CQQUePbpA8mF/hMLPAekXdJo1g0bUPw8RZLwQXUIU/3BU7tXENvhSGz5DPA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false optional: true - turbo-linux-64@2.5.6: + /turbo-linux-64@2.5.6: + resolution: {integrity: sha512-GOcUTT0xiT/pSnHL4YD6Yr3HreUhU8pUcGqcI2ksIF9b2/r/kRHwGFcsHgpG3+vtZF/kwsP0MV8FTlTObxsYIA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - turbo-linux-arm64@2.5.6: + /turbo-linux-arm64@2.5.6: + resolution: {integrity: sha512-10Tm15bruJEA3m0V7iZcnQBpObGBcOgUcO+sY7/2vk1bweW34LMhkWi8svjV9iDF68+KJDThnYDlYE/bc7/zzQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - turbo-windows-64@2.5.6: + /turbo-windows-64@2.5.6: + resolution: {integrity: sha512-FyRsVpgaj76It0ludwZsNN40ytHN+17E4PFJyeliBEbxrGTc5BexlXVpufB7XlAaoaZVxbS6KT8RofLfDRyEPg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false optional: true - turbo-windows-arm64@2.5.6: + /turbo-windows-arm64@2.5.6: + resolution: {integrity: sha512-j/tWu8cMeQ7HPpKri6jvKtyXg9K1gRyhdK4tKrrchH8GNHscPX/F71zax58yYtLRWTiK04zNzPcUJuoS0+v/+Q==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false optional: true - turbo@2.5.6: + /turbo@2.5.6: + resolution: {integrity: sha512-gxToHmi9oTBNB05UjUsrWf0OyN5ZXtD0apOarC1KIx232Vp3WimRNy3810QzeNSgyD5rsaIDXlxlbnOzlouo+w==} + hasBin: true optionalDependencies: turbo-darwin-64: 2.5.6 turbo-darwin-arm64: 2.5.6 @@ -23291,46 +16266,81 @@ snapshots: turbo-linux-arm64: 2.5.6 turbo-windows-64: 2.5.6 turbo-windows-arm64: 2.5.6 + dev: false - type-check@0.4.0: + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 - type-detect@4.0.8: {} + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} - type-fest@0.20.2: {} + /type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + dev: true - type-fest@0.21.3: {} + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} - type-fest@0.6.0: {} + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} - type-fest@0.7.1: {} + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true - type-fest@0.8.1: {} + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} - type-fest@4.41.0: {} + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true - type-is@2.0.1: + /type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + /type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} dependencies: content-type: 1.0.5 media-typer: 1.1.0 mime-types: 3.0.1 + dev: true - typed-array-buffer@1.0.3: + /typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 es-errors: 1.3.0 is-typed-array: 1.1.15 + dev: true - typed-array-byte-length@1.0.3: + /typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 for-each: 0.3.5 gopd: 1.2.0 has-proto: 1.2.0 is-typed-array: 1.1.15 + dev: true - typed-array-byte-offset@1.0.4: + /typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 @@ -23339,8 +16349,11 @@ snapshots: has-proto: 1.2.0 is-typed-array: 1.1.15 reflect.getprototypeof: 1.0.10 + dev: true - typed-array-length@1.0.7: + /typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.8 for-each: 0.3.5 @@ -23348,214 +16361,464 @@ snapshots: is-typed-array: 1.1.15 possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 + dev: true - typescript@5.9.2: {} + /typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + engines: {node: '>=14.17'} + hasBin: true + dev: true - ufo@1.6.1: {} + /ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + dev: true - uglify-js@3.19.3: + /uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: true optional: true - unbox-primitive@1.1.0: + /unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 has-bigints: 1.1.0 has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 + dev: true - undici-types@5.26.5: {} - - undici-types@6.21.0: {} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true - undici@5.29.0: - dependencies: - "@fastify/busboy": 2.1.1 + /undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici@6.21.3: {} + /undici@6.21.3: + resolution: {integrity: sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==} + engines: {node: '>=18.17'} + dev: false - undici@7.15.0: {} + /undici@7.14.0: + resolution: {integrity: sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==} + engines: {node: '>=20.18.1'} + dev: true - unenv@2.0.0-rc.19: + /unenv@2.0.0-rc.21: + resolution: {integrity: sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A==} dependencies: defu: 6.1.4 exsolve: 1.0.7 ohash: 2.0.11 pathe: 2.0.3 ufo: 1.6.1 + dev: true - unicode-canonical-property-names-ecmascript@2.0.1: {} + /unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} - unicode-match-property-ecmascript@2.0.0: + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} dependencies: unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.1.0 + unicode-property-aliases-ecmascript: 2.2.0 - unicode-match-property-value-ecmascript@2.2.0: {} + /unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + engines: {node: '>=4'} - unicode-property-aliases-ecmascript@2.1.0: {} + /unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + engines: {node: '>=4'} - unique-string@2.0.0: + /unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} dependencies: crypto-random-string: 2.0.0 + dev: false - universalify@0.1.2: {} + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} - universalify@0.2.0: {} + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true - unpipe@1.0.0: {} + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} - unrs-resolver@1.11.1: + /unrs-resolver@1.11.1: + resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + requiresBuild: true dependencies: napi-postinstall: 0.3.3 optionalDependencies: - "@unrs/resolver-binding-android-arm-eabi": 1.11.1 - "@unrs/resolver-binding-android-arm64": 1.11.1 - "@unrs/resolver-binding-darwin-arm64": 1.11.1 - "@unrs/resolver-binding-darwin-x64": 1.11.1 - "@unrs/resolver-binding-freebsd-x64": 1.11.1 - "@unrs/resolver-binding-linux-arm-gnueabihf": 1.11.1 - "@unrs/resolver-binding-linux-arm-musleabihf": 1.11.1 - "@unrs/resolver-binding-linux-arm64-gnu": 1.11.1 - "@unrs/resolver-binding-linux-arm64-musl": 1.11.1 - "@unrs/resolver-binding-linux-ppc64-gnu": 1.11.1 - "@unrs/resolver-binding-linux-riscv64-gnu": 1.11.1 - "@unrs/resolver-binding-linux-riscv64-musl": 1.11.1 - "@unrs/resolver-binding-linux-s390x-gnu": 1.11.1 - "@unrs/resolver-binding-linux-x64-gnu": 1.11.1 - "@unrs/resolver-binding-linux-x64-musl": 1.11.1 - "@unrs/resolver-binding-wasm32-wasi": 1.11.1 - "@unrs/resolver-binding-win32-arm64-msvc": 1.11.1 - "@unrs/resolver-binding-win32-ia32-msvc": 1.11.1 - "@unrs/resolver-binding-win32-x64-msvc": 1.11.1 - - update-browserslist-db@1.1.3(browserslist@4.25.2): - dependencies: - browserslist: 4.25.2 + '@unrs/resolver-binding-android-arm-eabi': 1.11.1 + '@unrs/resolver-binding-android-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-x64': 1.11.1 + '@unrs/resolver-binding-freebsd-x64': 1.11.1 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 + '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-musl': 1.11.1 + '@unrs/resolver-binding-wasm32-wasi': 1.11.1 + '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 + '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 + '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 + dev: true + + /update-browserslist-db@1.1.3(browserslist@4.26.2): + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.26.2 escalade: 3.2.0 picocolors: 1.1.1 - uri-js@4.4.1: + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.1 - url-parse@1.5.10: + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 + dev: true - urlpattern-polyfill@10.1.0: {} + /urlpattern-polyfill@10.1.0: + resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} + dev: true - use-callback-ref@1.3.3(@types/react@18.3.23)(react@18.3.1): + /use-callback-ref@1.3.3(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.24 react: 18.3.1 tslib: 2.8.1 - optionalDependencies: - "@types/react": 18.3.23 + dev: false - use-sidecar@1.1.3(@types/react@18.3.23)(react@18.3.1): + /use-sidecar@1.1.3(@types/react@18.3.24)(react@18.3.1): + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^18.2.47 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.24 detect-node-es: 1.1.0 react: 18.3.1 tslib: 2.8.1 - optionalDependencies: - "@types/react": 18.3.23 + dev: false - util-deprecate@1.0.2: {} + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true - util@0.12.5: + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} dependencies: inherits: 2.0.4 is-arguments: 1.2.0 is-generator-function: 1.1.0 is-typed-array: 1.1.15 which-typed-array: 1.1.19 + dev: false - utils-merge@1.0.1: {} + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} - uuid@7.0.3: {} + /uuid@7.0.3: + resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==} + hasBin: true + dev: false - uuid@9.0.1: {} + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: true - v8-compile-cache-lib@3.0.1: {} + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true - v8-to-istanbul@9.3.0: + /v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} dependencies: - "@jridgewell/trace-mapping": 0.3.30 - "@types/istanbul-lib-coverage": 2.0.6 + '@jridgewell/trace-mapping': 0.3.31 + '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 + dev: true - validate-npm-package-license@3.0.4: + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 + dev: true + + /validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + /vite-node@1.6.1(@types/node@20.19.16): + resolution: {integrity: sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.4.3 + pathe: 1.1.2 + picocolors: 1.1.1 + vite: 5.4.20(@types/node@20.19.16) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + dev: true - validate-npm-package-name@5.0.1: {} + /vite@5.4.20(@types/node@20.19.16): + resolution: {integrity: sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.19.16 + esbuild: 0.21.5 + postcss: 8.5.6 + rollup: 4.52.4 + optionalDependencies: + fsevents: 2.3.3 + dev: true - vary@1.1.2: {} + /vitest@1.6.1(@types/node@20.19.16): + resolution: {integrity: sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.1 + '@vitest/ui': 1.6.1 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/node': 20.19.16 + '@vitest/expect': 1.6.1 + '@vitest/runner': 1.6.1 + '@vitest/snapshot': 1.6.1 + '@vitest/spy': 1.6.1 + '@vitest/utils': 1.6.1 + acorn-walk: 8.3.4 + chai: 4.5.0 + debug: 4.4.3 + execa: 8.0.1 + local-pkg: 0.5.1 + magic-string: 0.30.19 + pathe: 1.1.2 + picocolors: 1.1.1 + std-env: 3.9.0 + strip-literal: 2.1.1 + tinybench: 2.9.0 + tinypool: 0.8.4 + vite: 5.4.20(@types/node@20.19.16) + vite-node: 1.6.1(@types/node@20.19.16) + why-is-node-running: 2.3.0 + transitivePeerDependencies: + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + dev: true - vlq@1.0.1: {} + /vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} - w3c-xmlserializer@4.0.0: + /w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} dependencies: xml-name-validator: 4.0.0 + dev: true - walker@1.0.8: + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 - wcwidth@1.0.1: + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 + dev: false - web-streams-polyfill@4.0.0-beta.3: {} + /web-streams-polyfill@4.0.0-beta.3: + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} + engines: {node: '>= 14'} + dev: true - webidl-conversions@3.0.1: {} + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@4.0.2: {} + /webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: true - webidl-conversions@5.0.0: {} + /webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + dev: false - webidl-conversions@7.0.0: {} + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true - whatwg-encoding@2.0.0: + /whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 + dev: true - whatwg-fetch@3.6.20: {} + /whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - whatwg-mimetype@3.0.0: {} + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true - whatwg-url-without-unicode@8.0.0-3: + /whatwg-url-without-unicode@8.0.0-3: + resolution: {integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==} + engines: {node: '>=10'} dependencies: buffer: 5.7.1 punycode: 2.3.1 webidl-conversions: 5.0.0 + dev: false - whatwg-url@11.0.0: + /whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} dependencies: tr46: 3.0.0 webidl-conversions: 7.0.0 + dev: true - whatwg-url@5.0.0: + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - whatwg-url@7.1.0: + /whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} dependencies: lodash.sortby: 4.7.0 tr46: 1.0.1 webidl-conversions: 4.0.2 + dev: true - which-boxed-primitive@1.1.1: + /which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} dependencies: is-bigint: 1.1.0 is-boolean-object: 1.2.2 is-number-object: 1.1.1 is-string: 1.1.1 is-symbol: 1.1.1 + dev: true - which-builtin-type@1.2.1: + /which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} dependencies: call-bound: 1.0.4 function.prototype.name: 1.1.8 @@ -23570,15 +16833,21 @@ snapshots: which-boxed-primitive: 1.1.1 which-collection: 1.0.2 which-typed-array: 1.1.19 + dev: true - which-collection@1.0.2: + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} dependencies: is-map: 2.0.3 is-set: 2.0.3 is-weakmap: 2.0.2 is-weakset: 2.0.4 + dev: true - which-typed-array@1.1.19: + /which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 @@ -23588,125 +16857,254 @@ snapshots: gopd: 1.2.0 has-tostringtag: 1.0.2 - which@2.0.2: + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true dependencies: isexe: 2.0.0 - which@4.0.0: + /which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true dependencies: isexe: 3.1.1 + dev: true + + /why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true - wonka@6.3.5: {} + /wonka@6.3.5: + resolution: {integrity: sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==} + dev: false - word-wrap@1.2.5: {} + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} - wordwrap@1.0.0: {} + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: true - workerd@1.20250829.0: + /workerd@1.20250913.0: + resolution: {integrity: sha512-y3J1NjCL10SAWDwgGdcNSRyOVod/dWNypu64CCdjj8VS4/k+Ofa/fHaJGC1stbdzAB1tY2P35Ckgm1PU5HKWiw==} + engines: {node: '>=16'} + hasBin: true + requiresBuild: true optionalDependencies: - "@cloudflare/workerd-darwin-64": 1.20250829.0 - "@cloudflare/workerd-darwin-arm64": 1.20250829.0 - "@cloudflare/workerd-linux-64": 1.20250829.0 - "@cloudflare/workerd-linux-arm64": 1.20250829.0 - "@cloudflare/workerd-windows-64": 1.20250829.0 - - wrangler@4.33.2: + '@cloudflare/workerd-darwin-64': 1.20250913.0 + '@cloudflare/workerd-darwin-arm64': 1.20250913.0 + '@cloudflare/workerd-linux-64': 1.20250913.0 + '@cloudflare/workerd-linux-arm64': 1.20250913.0 + '@cloudflare/workerd-windows-64': 1.20250913.0 + dev: true + + /wrangler@4.37.1: + resolution: {integrity: sha512-ntm1OsIB2r/f7b5bfS84Lzz5QEx3zn4vUsn1JOVz/+7bw8triyytnxbp68OwOimF1vL5A9sQ0Nd+L6u8F3hECg==} + engines: {node: '>=18.0.0'} + hasBin: true + peerDependencies: + '@cloudflare/workers-types': ^4.20250913.0 + peerDependenciesMeta: + '@cloudflare/workers-types': + optional: true dependencies: "@cloudflare/kv-asset-handler": 0.4.0 - "@cloudflare/unenv-preset": 2.7.1(unenv@2.0.0-rc.19)(workerd@1.20250829.0) + "@cloudflare/unenv-preset": 2.7.3(unenv@2.0.0-rc.21)(workerd@1.20250913.0) blake3-wasm: 2.1.5 esbuild: 0.25.4 - miniflare: 4.20250829.0 + miniflare: 4.20250913.0 path-to-regexp: 6.3.0 - unenv: 2.0.0-rc.19 - workerd: 1.20250829.0 + unenv: 2.0.0-rc.21 + workerd: 1.20250913.0 optionalDependencies: fsevents: 2.3.3 transitivePeerDependencies: - bufferutil - utf-8-validate + dev: true - wrap-ansi@7.0.0: + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 - wrap-ansi@9.0.0: + /wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 + dev: true - wrappy@1.0.2: {} + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@2.4.3: + /write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} dependencies: graceful-fs: 4.2.11 imurmurhash: 0.1.4 signal-exit: 3.0.7 - write-file-atomic@4.0.2: + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 - ws@6.2.3: + /ws@6.2.3: + resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true dependencies: async-limiter: 1.0.1 - ws@7.5.10: {} + /ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - ws@8.18.0: {} + /ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true - ws@8.18.3: {} + /ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - xcode@3.0.1: + /xcode@3.0.1: + resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==} + engines: {node: '>=10.0.0'} dependencies: simple-plist: 1.3.1 uuid: 7.0.3 + dev: false - xml-name-validator@4.0.0: {} + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true - xml2js@0.6.0: + /xml2js@0.6.0: + resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} + engines: {node: '>=4.0.0'} dependencies: sax: 1.4.1 xmlbuilder: 11.0.1 + dev: false - xmlbuilder@11.0.1: {} + /xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + dev: false - xmlbuilder@14.0.0: {} + /xmlbuilder@14.0.0: + resolution: {integrity: sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==} + engines: {node: '>=8.0'} + dev: false - xmlbuilder@15.1.1: {} + /xmlbuilder@15.1.1: + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} + dev: false - xmlchars@2.2.0: {} + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true - xstream@11.14.0: + /xstream@11.14.0: + resolution: {integrity: sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==} dependencies: globalthis: 1.0.4 symbol-observable: 2.0.3 + dev: false - y18n@5.0.8: {} + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} - yallist@3.1.1: {} + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@5.0.0: {} + /yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + dev: false - yaml@1.10.2: {} + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true - yaml@2.8.1: {} + /yaml@2.8.1: + resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} + engines: {node: '>= 14.6'} + hasBin: true + dev: true - yargs-parser@21.1.1: {} + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} - yargs-parser@22.0.0: {} + /yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + dev: true - yargs@17.7.2: + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} dependencies: cliui: 8.0.1 escalade: 3.2.0 @@ -23716,7 +17114,9 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yargs@18.0.0: + /yargs@18.0.0: + resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} dependencies: cliui: 9.0.1 escalade: 3.2.0 @@ -23724,28 +17124,51 @@ snapshots: string-width: 7.2.0 y18n: 5.0.8 yargs-parser: 22.0.0 + dev: true - yn@3.1.1: {} + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true - yocto-queue@0.1.0: {} + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} - youch-core@0.3.3: + /yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} + dev: true + + /youch-core@0.3.3: + resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} dependencies: "@poppinss/exception": 1.2.2 error-stack-parser-es: 1.0.5 + dev: true - youch@4.1.0-beta.10: + /youch@4.1.0-beta.10: + resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==} dependencies: "@poppinss/colors": 4.1.5 "@poppinss/dumper": 0.6.4 "@speed-highlight/core": 1.2.7 cookie: 1.0.2 youch-core: 0.3.3 + dev: true - zen-observable-ts@1.2.5: + /zod-to-json-schema@3.24.6(zod@3.25.76): + resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} + peerDependencies: + zod: ^3.24.1 dependencies: - zen-observable: 0.8.15 + zod: 3.25.76 + dev: false - zen-observable@0.8.15: {} + /zod@3.22.3: + resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} + dev: true - zod@3.22.3: {} + /zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + dev: false From 3dbe993d094a899d6cb02ecb7705021f7f3cbec4 Mon Sep 17 00:00:00 2001 From: ertemann Date: Thu, 16 Oct 2025 00:41:13 +0200 Subject: [PATCH 03/27] Dev status - Working demo app for wallet direct mode, packages still need a ton more cleanup, demi app needs through check on, need to make more general utillities around the signing behaviour, need to add ed25119 signing method, need to fix the window.... calling for wallets, persitency for sessions works but local signer method with turnkey is still funky. --- ABSTRAXION_COMPREHENSIVE_GUIDE.md | 1183 +++++++++++++++++ apps/demo-app/src/app/direct-mode/layout.tsx | 121 ++ apps/demo-app/src/app/direct-mode/page.tsx | 173 +++ apps/demo-app/src/app/layout.tsx | 36 +- apps/demo-app/src/app/page.tsx | 13 + apps/demo-app/src/components/WalletModal.tsx | 173 +++ .../src/components/icons/KeplrLogo.tsx | 54 + .../src/components/icons/LeapLogo.tsx | 36 + .../src/components/icons/MetamaskLogo.tsx | 89 ++ .../demo-app/src/components/icons/OKXLogo.tsx | 18 + packages/abstraxion/package.json | 2 +- .../src/components/Abstraxion/index.tsx | 134 +- .../components/AbstraxionContext/index.tsx | 316 ++++- packages/abstraxion/src/hooks/index.ts | 3 + .../src/hooks/useAbstraxionSigningClient.ts | 3 +- .../abstraxion/src/hooks/useGrantsFlow.ts | 275 ++++ .../abstraxion/src/hooks/useWalletAuth.ts | 515 +++++++ packages/abstraxion/src/index.ts | 8 + .../abstraxion/src/utils/classname-util.ts | 7 + packages/account-management/package.json | 1 + .../src/grants/build-grant-messages.ts | 281 ++++ .../account-management/src/grants/feegrant.ts | 6 +- .../src/grants/format-permissions.ts | 302 +++++ .../account-management/src/grants/index.ts | 6 +- .../src/grants/query-treasury-contract.ts | 103 ++ .../src/grants/query-treasury.ts | 90 -- .../composite-treasury-strategy.test.ts | 210 --- .../strategies/composite-treasury-strategy.ts | 42 - .../daodao-treasury-strategy.test.ts | 242 ---- .../strategies/daodao-treasury-strategy.ts | 198 --- .../direct-query-treasury-strategy.test.ts | 209 --- .../direct-query-treasury-strategy.ts | 99 -- .../src/grants/strategies/factory.ts | 58 - .../src/grants/strategies/index.ts | 9 - packages/account-management/src/index.ts | 6 +- .../account-management/src/indexer/index.ts | 5 + .../src/indexer/numia-strategy.ts | 83 ++ .../account-management/src/types/indexer.ts | 3 + packages/wallet-connectors/.eslintrc.js | 7 - packages/wallet-connectors/README.md | 3 - packages/wallet-connectors/package.json | 34 - .../wallet-connectors/src/browser/cosmos.ts | 172 --- .../src/browser/errors/WalletAccountError.ts | 74 -- .../src/browser/errors/index.ts | 5 - .../wallet-connectors/src/browser/ethereum.ts | 96 -- .../wallet-connectors/src/browser/index.ts | 14 - .../src/browser/workflows.ts | 115 -- packages/wallet-connectors/src/global.d.ts | 78 -- packages/wallet-connectors/src/index.ts | 26 - packages/wallet-connectors/src/types/api.ts | 48 - packages/wallet-connectors/src/types/index.ts | 6 - .../wallet-connectors/src/types/wallet.ts | 25 - packages/wallet-connectors/tsconfig.json | 17 - packages/wallet-connectors/tsup.config.ts | 14 - pnpm-lock.yaml | 57 +- 55 files changed, 3847 insertions(+), 2056 deletions(-) create mode 100644 ABSTRAXION_COMPREHENSIVE_GUIDE.md create mode 100644 apps/demo-app/src/app/direct-mode/layout.tsx create mode 100644 apps/demo-app/src/app/direct-mode/page.tsx create mode 100644 apps/demo-app/src/components/WalletModal.tsx create mode 100644 apps/demo-app/src/components/icons/KeplrLogo.tsx create mode 100644 apps/demo-app/src/components/icons/LeapLogo.tsx create mode 100644 apps/demo-app/src/components/icons/MetamaskLogo.tsx create mode 100644 apps/demo-app/src/components/icons/OKXLogo.tsx create mode 100644 packages/abstraxion/src/hooks/useGrantsFlow.ts create mode 100644 packages/abstraxion/src/hooks/useWalletAuth.ts create mode 100644 packages/abstraxion/src/utils/classname-util.ts create mode 100644 packages/account-management/src/grants/build-grant-messages.ts create mode 100644 packages/account-management/src/grants/format-permissions.ts create mode 100644 packages/account-management/src/grants/query-treasury-contract.ts delete mode 100644 packages/account-management/src/grants/query-treasury.ts delete mode 100644 packages/account-management/src/grants/strategies/composite-treasury-strategy.test.ts delete mode 100644 packages/account-management/src/grants/strategies/composite-treasury-strategy.ts delete mode 100644 packages/account-management/src/grants/strategies/daodao-treasury-strategy.test.ts delete mode 100644 packages/account-management/src/grants/strategies/daodao-treasury-strategy.ts delete mode 100644 packages/account-management/src/grants/strategies/direct-query-treasury-strategy.test.ts delete mode 100644 packages/account-management/src/grants/strategies/direct-query-treasury-strategy.ts delete mode 100644 packages/account-management/src/grants/strategies/factory.ts delete mode 100644 packages/account-management/src/grants/strategies/index.ts create mode 100644 packages/account-management/src/indexer/index.ts create mode 100644 packages/account-management/src/indexer/numia-strategy.ts delete mode 100644 packages/wallet-connectors/.eslintrc.js delete mode 100644 packages/wallet-connectors/README.md delete mode 100644 packages/wallet-connectors/package.json delete mode 100644 packages/wallet-connectors/src/browser/cosmos.ts delete mode 100644 packages/wallet-connectors/src/browser/errors/WalletAccountError.ts delete mode 100644 packages/wallet-connectors/src/browser/errors/index.ts delete mode 100644 packages/wallet-connectors/src/browser/ethereum.ts delete mode 100644 packages/wallet-connectors/src/browser/index.ts delete mode 100644 packages/wallet-connectors/src/browser/workflows.ts delete mode 100644 packages/wallet-connectors/src/global.d.ts delete mode 100644 packages/wallet-connectors/src/index.ts delete mode 100644 packages/wallet-connectors/src/types/api.ts delete mode 100644 packages/wallet-connectors/src/types/index.ts delete mode 100644 packages/wallet-connectors/src/types/wallet.ts delete mode 100644 packages/wallet-connectors/tsconfig.json delete mode 100644 packages/wallet-connectors/tsup.config.ts diff --git a/ABSTRAXION_COMPREHENSIVE_GUIDE.md b/ABSTRAXION_COMPREHENSIVE_GUIDE.md new file mode 100644 index 00000000..69cf16bd --- /dev/null +++ b/ABSTRAXION_COMPREHENSIVE_GUIDE.md @@ -0,0 +1,1183 @@ +# Abstraxion Comprehensive Implementation Guide + +> Complete guide to wallet authentication, direct mode, local mode, and smart account management in @burnt-labs/abstraxion + +**Last Updated**: 2024 + +--- + +## Table of Contents + +1. [Overview](#overview) +2. [Current Implementation](#current-implementation) + - [Generic Wallet Connector](#generic-wallet-connector) + - [Supported Ecosystems](#supported-ecosystems) +3. [Direct Mode](#direct-mode) + - [Configuration](#direct-mode-configuration) + - [Usage Examples](#direct-mode-usage) +4. [Local Mode](#local-mode) + - [Turnkey Integration](#turnkey-integration) + - [Custom Signers](#custom-signers) +5. [Technical Architecture](#technical-architecture) + - [Indexer Strategies](#indexer-strategies) + - [Treasury Integration](#treasury-integration) + - [Session Management](#session-management) +6. [Migration Guide](#migration-guide) + - [Dashboard to xion.js](#dashboard-migration) + - [Code Comparison](#code-comparison) +7. [Future Roadmap](#future-roadmap) + - [Wallet Adapter Pattern](#wallet-adapter-pattern) + - [Multi-Ecosystem Support](#multi-ecosystem-support) + +--- + +## Overview + +Abstraxion provides three authentication modes for XION smart accounts: + +| Mode | Description | Use Case | +|------|-------------|----------| +| **Redirect** | Traditional OAuth-style redirect to dashboard | Default mode, full UI provided | +| **Direct** | In-app wallet connection with custom UI | Custom branded experience | +| **Local** | Custom signers (Turnkey, Privy, etc.) | Embedded wallets, MPC solutions | + +--- + +## Current Implementation + +### Generic Wallet Connector + +The current implementation supports **Ethereum** and **Cosmos** ecosystem wallets through a generic interface: + +```typescript +export interface GenericWalletConfig { + name: string; // Display name (e.g., "Keplr", "Leap") + windowKey: string; // Window path with dot notation (e.g., "keplr", "okxwallet.keplr") + signingMethod: SigningMethod; // "cosmos" | "ethereum" | "ed25519" + icon?: React.ReactNode | string; // Optional icon +} + +export type SigningMethod = + | 'cosmos' // Cosmos ecosystem wallets (Keplr, Leap, OKX, etc.) using secp256k1 + | 'ethereum' // Ethereum ecosystem wallets (MetaMask, Rainbow, etc.) + | 'ed25519'; // Reserved for future Solana/Polkadot support +``` + +### Supported Ecosystems + +#### ✅ Ethereum Ecosystem +- **Wallets**: MetaMask, Rainbow, Coinbase Wallet, any wallet using `window.ethereum` +- **Standard**: EIP-1193 (`window.ethereum.request()`) +- **Signatures**: EIP-191 personal_sign + +#### ✅ Cosmos Ecosystem +- **Wallets**: Keplr, Leap, OKX, Compass, Station +- **Standard**: Cosmos wallet API (`wallet.getKey()`, `wallet.signArbitrary()`) +- **Signatures**: Secp256k1 + +#### ❌ Not Yet Supported +- Solana wallets (Phantom, Solflare) - different API +- Polkadot wallets - different extension API +- Near wallets - completely different flow + +--- + +## Direct Mode + +Direct mode allows in-app wallet connections without redirecting to the dashboard. + +### Direct Mode Configuration + +```typescript +import { AbstraxionProvider } from "@burnt-labs/abstraxion"; + +const config = { + chainId: "xion-testnet-1", + rpcUrl: "https://rpc.xion-testnet-2.burnt.com:443", + restUrl: "https://api.xion-testnet-2.burnt.com", + gasPrice: "0.001uxion", + treasury: "xion1...", + feeGranter: "xion1...", + + walletAuth: { + mode: "direct", + aaApiUrl: "http://localhost:8787", + + // Optional: Auto mode (tries wallets automatically) + walletSelectionStrategy: "auto", // Default: tries MetaMask then Keplr + + // Optional: Custom wallets for auto mode + wallets: [ + { name: "MetaMask", windowKey: "ethereum", signingMethod: "ethereum" }, + { name: "Keplr", windowKey: "keplr", signingMethod: "cosmos" }, + { name: "Leap", windowKey: "leap", signingMethod: "cosmos" }, + ], + }, +}; + + + + +``` + +### Direct Mode Usage + +#### Auto Mode (Zero Configuration) + +```typescript +walletAuth: { + mode: "direct", + aaApiUrl: "http://localhost:8787", + // Automatically tries MetaMask then Keplr +} +``` + +#### Custom Modal (Full Control) + +```typescript +const [showModal, setShowModal] = useState(false); +const [methods, setMethods] = useState(null); + +const config = { + walletAuth: { + mode: "direct", + walletSelectionStrategy: "custom", + + wallets: [ + { name: "Keplr", windowKey: "keplr", signingMethod: "cosmos" }, + { name: "OKX", windowKey: "okxwallet.keplr", signingMethod: "cosmos" }, + { name: "MetaMask", windowKey: "ethereum", signingMethod: "ethereum" }, + ], + + onWalletSelectionRequired: (connectionMethods) => { + setMethods(connectionMethods); + setShowModal(true); + }, + }, +}; + +// In your UI: + setShowModal(false)} + connectionMethods={methods} + chainId="xion-testnet-1" +/> +``` + +#### Example Custom Modal + +```typescript +export function WalletModal({ isOpen, onClose, connectionMethods, chainId }) { + const { connectWallet, isConnecting, error } = connectionMethods; + + const wallets = [ + { name: "MetaMask", windowKey: "ethereum", signingMethod: "ethereum" }, + { name: "Keplr", windowKey: "keplr", signingMethod: "cosmos" }, + { name: "OKX", windowKey: "okxwallet.keplr", signingMethod: "cosmos" }, + ]; + + return ( +
+
+

Connect Wallet

+ {wallets.map((wallet) => ( + + ))} + {error &&

{error}

} +
+
+ ); +} +``` + +--- + +## Local Mode + +Local mode allows you to use custom signing solutions (Turnkey, Privy, Lit Protocol) without browser wallets. + +### Turnkey Integration + +#### Step 1: Configure Custom Signer + +```typescript +import { AbstraxionProvider, type CustomSigner } from "@burnt-labs/abstraxion"; +import { useTurnkey } from "@turnkey/sdk-react"; + +function MyApp() { + const { turnkey } = useTurnkey(); + + const turnkeySigner: CustomSigner = { + type: "Secp256K1", // or "EthWallet" for Ethereum-based Turnkey + + getPubkey: async () => { + const wallet = await turnkey.getWalletClient(); + const [account] = await wallet.getAccounts(); + return Buffer.from(account.pubkey).toString('hex'); + }, + + sign: async (message: string) => { + const wallet = await turnkey.getWalletClient(); + const [account] = await wallet.getAccounts(); + + const { signature } = await wallet.signArbitrary( + "xion-testnet-1", + account.address, + message + ); + + return Buffer.from(signature, 'base64').toString('hex'); + }, + }; + + const config = { + chainId: "xion-testnet-1", + rpcUrl: "https://rpc.xion-testnet-2.burnt.com:443", + restUrl: "https://api.xion-testnet-2.burnt.com", + gasPrice: "0.001uxion", + + walletAuth: { + mode: "local", + customSigner: turnkeySigner, + aaApiUrl: "http://localhost:8787", // For account creation + + localConfig: { + codeId: 4, + checksum: "abc123...", + feeGranter: "xion1...", + }, + }, + }; + + return ( + + + + ); +} +``` + +#### Step 2: Connect and Use + +```typescript +function ConnectButton() { + const { data, login, isConnecting } = useAbstraxionAccount(); + const { client } = useAbstraxionSigningClient(); + + const handleSend = async () => { + await client.sendTokens( + data.bech32Address, + "xion1recipient...", + [{ denom: "uxion", amount: "1000000" }], + "auto" + ); + }; + + return ( +
+ + {data.bech32Address && ( + + )} +
+ ); +} +``` + +### Custom Signers + +#### Interface + +```typescript +export interface CustomSigner { + type: 'Secp256K1' | 'EthWallet'; + + // Sign arbitrary messages (required) + sign: (message: string) => Promise; + + // For Secp256K1 signers (Turnkey Cosmos, Privy Cosmos) + getPubkey?: () => Promise; // Return hex-encoded pubkey + + // For Ethereum signers (Turnkey Ethereum, Privy Ethereum) + getAddress?: () => Promise; // Return 0x... address +} +``` + +#### Ethereum Signer Example + +```typescript +const privyEthSigner: CustomSigner = { + type: "EthWallet", + + getAddress: async () => { + const address = await privy.getAddress(); + return address; // 0x... + }, + + sign: async (message: string) => { + const signature = await privy.signMessage(message); + return signature.replace('0x', ''); // Remove 0x prefix + }, +}; +``` + +--- + +## Technical Architecture + +### Indexer Strategies + +Abstraxion uses the **Numia Indexer** to look up existing smart accounts by authenticator. + +#### NumiaIndexerStrategy + +```typescript +import { NumiaIndexerStrategy } from "@burnt-labs/account-management"; + +const indexer = new NumiaIndexerStrategy( + "https://xion-testnet-2.api.numia.xyz", + "your-auth-token" +); + +// Look up accounts by authenticator (pubkey or address) +const accounts = await indexer.fetchSmartAccounts(authenticator); + +// Returns: SmartAccountWithCodeId[] +// { +// id: "xion1...", +// codeId: 4, +// authenticators: [ +// { authenticator: "base64-pubkey", authenticatorIndex: 0 } +// ] +// } +``` + +#### Account Lookup Flow + +1. User connects wallet (MetaMask, Keplr, etc.) +2. Get authenticator (Ethereum: `address`, Cosmos: `base64(pubkey)`) +3. Query Numia indexer for existing accounts +4. If exists → use existing account +5. If not exists → create new account via AA API + +### Treasury Integration + +Treasury contracts define grant configurations for smart accounts. + +#### Querying Treasury + +```typescript +import { generateTreasuryGrants } from "@burnt-labs/account-management"; + +const grantMsgs = await generateTreasuryGrants( + "xion1treasury...", // Treasury contract address + client, // CosmWasmClient + "xion1granter...", // Smart account address (granter) + "xion1grantee..." // Session keypair address (grantee) +); + +// Returns array of grant messages: +// - Contract execution grants +// - Bank send grants +// - Stake/gov grants +``` + +#### Grant Flow + +1. User connects wallet and creates/loads smart account +2. Generate temporary session keypair +3. Query treasury for grant configurations +4. Build authz grant messages +5. Add `deploy_fee_grant` contract execution +6. Sign transaction with smart account (using wallet as authenticator) +7. Store session keypair in localStorage +8. Use session keypair for subsequent transactions + +### Session Management + +#### Session Storage + +```typescript +// Session keypair stored in localStorage +const SESSION_KEY = "xion-authz-temp-account"; +const GRANTER_KEY = "xion-authz-granter-account"; + +// Generated by abstraxionAuth +import { abstraxionAuth } from "@burnt-labs/abstraxion"; + +// Generate and store session +await abstraxionAuth.generateAndStoreTempAccount(); + +// Get session keypair +const keypair = await abstraxionAuth.getKeypair(); + +// Authenticate (verify grants exist) +await abstraxionAuth.authenticate(rpcUrl, smartAccountAddress); +``` + +#### Session Restoration (Planned) + +**Currently Missing**: Session restoration on page refresh for direct mode. + +**Proposed Utilities** (`packages/abstraxion-core/src/session.ts`): + +```typescript +export function hasActiveSession(): boolean; +export function getSessionKeypair(): Promise; +export function getSessionGranter(): string | null; +export function clearSession(): void; +export function verifySessionGrants(rpcUrl: string): Promise; +``` + +--- + +## Migration Guide + +### Dashboard Migration + +The XION dashboard can migrate to use `@burnt-labs/abstraxion` directly. + +#### Current Dashboard Flow + +``` +Dashboard (Monolithic): +├── handleExternalWalletAALoginOrCreate() +│ ├── createAccountWithMetaMask() +│ ├── createAccountWithCosmosWallet() +│ └── Store in localStorage +├── grantTreasuryPermissions() +│ ├── generateTreasuryGrants() +│ ├── buildGrantMessages() +│ └── Sign with wallet +└── useNumiaSmartAccounts() + └── TanStack Query polling +``` + +#### New xion.js Flow + +``` +xion.js (Composable): +├── useWalletAuth() hook +│ ├── connectWallet() +│ ├── Check indexer +│ └── Create/use account +├── useGrantsFlow() hook +│ ├── Generate session +│ ├── Query treasury +│ ├── Build grants +│ └── Sign transaction +└── Direct indexer usage + └── No polling needed +``` + +#### Migration Steps + +**Phase 1**: Use shared packages +```typescript +// Replace dashboard local code with shared packages +import { NumiaIndexerStrategy } from "@burnt-labs/account-management"; +import { generateTreasuryGrants } from "@burnt-labs/account-management"; +import { buildGrantMessages } from "@burnt-labs/account-management"; +``` + +**Phase 2**: Use abstraxion hooks +```typescript +// Replace custom hooks with xion.js +import { useWalletAuth, useGrantsFlow } from "@burnt-labs/abstraxion"; + +// Instead of handleExternalWalletAALoginOrCreate: +const walletAuth = useWalletAuth({ + config: walletAuthConfig, + rpcUrl, + onSuccess: (smartAccountAddress, walletInfo) => { + // Connected! + } +}); + +// Instead of grantTreasuryPermissions: +const { createGrants } = useGrantsFlow({ + rpcUrl, + treasury, + feeGranter, +}); +``` + +**Phase 3**: Use AbstraxionProvider +```typescript +// Replace entire custom implementation + + + +``` + +### Code Comparison + +#### Account Creation + +**Dashboard**: +```typescript +const handleExternalWalletAALoginOrCreate = async (walletType) => { + if (walletType === "metamask") { + const accountData = await createAccountWithMetaMask(apiUrl); + setAbstractAccount(accountData.abstractAccount); + localStorage.setItem("xion-logged-in-via", "metamask"); + } else { + const accountData = await createAccountWithCosmosWallet(apiUrl, chainId, walletName); + setAbstractAccount(accountData.abstractAccount); + localStorage.setItem("xion-logged-in-via", walletName); + } +}; +``` + +**xion.js**: +```typescript +const { connectWallet } = useWalletAuth({ + config: walletAuth, + rpcUrl, + onSuccess: (smartAccountAddress, walletInfo) => { + // Already connected, account created if needed + // walletInfo includes authenticatorIndex automatically + } +}); + +// Use it: +await connectWallet(walletConfig, chainId); +``` + +#### Grant Creation + +**Dashboard**: +```typescript +const grantTreasuryPermissions = async (granter, expiration, feeGranter) => { + const grantMsgs = await generateTreasuryGrants(treasury, client, granter, grantee); + + // Add deploy_fee_grant + grantMsgs.push({ + typeUrl: "/cosmwasm.wasm.v1.MsgExecuteContract", + value: MsgExecuteContract.fromPartial({ + sender: granter, + contract: treasury, + msg: toUtf8(JSON.stringify({ deploy_fee_grant: { grantee } })), + funds: [], + }), + }); + + // Simulate and broadcast + const txResult = await client.signAndBroadcast(granter, grantMsgs, fee); +}; +``` + +**xion.js**: +```typescript +const { createGrants } = useGrantsFlow({ + rpcUrl, + treasury, + feeGranter, +}); + +// Use it: +await createGrants(smartAccountAddress, walletInfo, chainId); +// All grant logic + deploy_fee_grant handled automatically +``` + +### What Can Be Removed from Dashboard + +Once migrated: + +1. ❌ `handleExternalWalletAALoginOrCreate` → use `useWalletAuth` +2. ❌ `grantTreasuryPermissions` → use `useGrantsFlow` +3. ❌ `generateContractGrant.ts` → use `buildGrantMessages` from account-management +4. ❌ `generateBankGrant.ts` → use `buildGrantMessages` from account-management +5. ❌ `generateStakeAndGovGrant.ts` → use `buildGrantMessages` from account-management +6. ❌ `query-treasury-contract.ts` → use `generateTreasuryGrants` from account-management +7. ❌ Local `NumiaIndexerStrategy` → import from account-management +8. 🟡 `useNumiaSmartAccounts` → Eventually remove (polling wrapper) +9. 🟡 `baseSmartAccount.ts` → Eventually remove (TanStack Query wrapper) + +--- + +## Future Roadmap + +### Wallet Adapter Pattern + +To support **true multi-ecosystem** wallets (Solana, Polkadot, Near), we plan to implement an adapter pattern. + +#### Problem + +Current implementation is ecosystem-specific: +- ✅ Ethereum: Uses `window.ethereum.request()` +- ✅ Cosmos: Uses `wallet.getKey()` and `wallet.signArbitrary()` +- ❌ Solana: Uses `window.solana.connect()` ← **Different API!** +- ❌ Polkadot: Uses `window.injectedWeb3['polkadot-js'].enable()` ← **Different API!** + +Each blockchain has its own wallet standard. + +#### Solution: Adapter Interface + +```typescript +export interface WalletAdapter { + connect: () => Promise<{ + pubkey?: string; // Public key in hex + address?: string; // Wallet address + metadata?: Record; + }>; + + sign: (message: string) => Promise; // Return hex signature + + disconnect?: () => Promise; +} +``` + +#### Updated Wallet Config + +```typescript +export type SigningMethod = + | 'ethereum' // Ethereum ecosystem (built-in) + | 'cosmos' // Cosmos ecosystem (built-in) + | 'custom'; // Custom adapter (developer-provided) + +export interface GenericWalletConfig { + name: string; + windowKey?: string; // Optional for custom adapters + signingMethod: SigningMethod; + icon?: React.ReactNode | string; + adapter?: WalletAdapter; // Required when signingMethod is 'custom' +} +``` + +#### Example: Solana Phantom Adapter + +```typescript +const phantomAdapter: WalletAdapter = { + connect: async () => { + if (!window.solana?.isPhantom) { + throw new Error("Phantom wallet not found"); + } + + const response = await window.solana.connect(); + const pubkeyHex = Buffer.from(response.publicKey.toBytes()).toString('hex'); + + return { pubkey: pubkeyHex }; + }, + + sign: async (message: string) => { + const messageBytes = new TextEncoder().encode(message); + const signedMessage = await window.solana.signMessage(messageBytes); + return Buffer.from(signedMessage.signature).toString('hex'); + }, + + disconnect: async () => { + await window.solana.disconnect(); + }, +}; + +// Usage: +connectWallet({ + name: "Phantom", + signingMethod: "custom", + adapter: phantomAdapter, +}); +``` + +#### Example: Polkadot Adapter + +```typescript +const polkadotAdapter: WalletAdapter = { + connect: async () => { + const { web3Enable, web3Accounts } = await import('@polkadot/extension-dapp'); + + const extensions = await web3Enable('My XION App'); + if (extensions.length === 0) { + throw new Error("Polkadot extension not found"); + } + + const accounts = await web3Accounts(); + const account = accounts[0]; + const pubkeyHex = Buffer.from(account.publicKey).toString('hex'); + + return { pubkey: pubkeyHex }; + }, + + sign: async (message: string) => { + const { web3FromAddress } = await import('@polkadot/extension-dapp'); + const injector = await web3FromAddress(currentAddress); + + const messageBytes = new TextEncoder().encode(message); + const signature = await injector.signer.signRaw({ + address: currentAddress, + data: Buffer.from(messageBytes).toString('hex'), + type: 'bytes', + }); + + return signature.signature.replace('0x', ''); + }, +}; +``` + +### Multi-Ecosystem Support + +#### Migration Path + +**Phase 1**: Current (Ethereum + Cosmos) +- Support built-in for Ethereum and Cosmos +- Document as "Ethereum and Cosmos ecosystem support" + +**Phase 2**: Add Adapter Interface +- Add `WalletAdapter` interface +- Add `custom` signing method +- Keep Ethereum/Cosmos as built-in convenience + +**Phase 3**: Pre-built Adapters +- Create `@burnt-labs/wallet-adapters` package +- Publish adapters for popular wallets: + - `@burnt-labs/wallet-adapter-phantom` (Solana) + - `@burnt-labs/wallet-adapter-solflare` (Solana) + - `@burnt-labs/wallet-adapter-polkadot` + - `@burnt-labs/wallet-adapter-near` + +**Phase 4**: Community Adapters +- Allow community to publish adapters +- Create adapter registry/marketplace +- CLI tool: `npx create-wallet-adapter --wallet phantom --ecosystem solana` + +#### Benefits + +1. **True Multi-Ecosystem** - Any blockchain can integrate +2. **Developer Control** - Developers provide wallet-specific logic +3. **Type Safety** - TypeScript ensures proper implementation +4. **Backwards Compatible** - Existing wallets continue to work +5. **Flexible** - Even custom enterprise wallets can integrate + +--- + +## Summary + +### Current Capabilities + +| Feature | Status | Notes | +|---------|--------|-------| +| Ethereum wallets | ✅ Supported | MetaMask, Rainbow, Coinbase Wallet | +| Cosmos wallets | ✅ Supported | Keplr, Leap, OKX, Compass | +| Solana wallets | ❌ Not yet | Requires adapter pattern | +| Custom signers | ✅ Supported | Turnkey, Privy, etc. (local mode) | +| Direct mode | ✅ Implemented | Custom UI with wallet selection | +| Auto mode | ✅ Implemented | Automatic wallet detection | +| Session persistence | ❌ Planned | Restore on page refresh | +| Generic interface | ✅ Implemented | Add any Ethereum/Cosmos wallet | + +### Key Differences + +**Dashboard vs xion.js**: +- Dashboard: Monolithic components with UI +- xion.js: Composable hooks without UI (more flexible) + +**Benefits of xion.js**: +1. ✅ Reusable across any app +2. ✅ Fully configurable (treasury, RPC, fees) +3. ✅ Testable hooks +4. ✅ Type-safe +5. ✅ Maintainable package structure +6. ✅ Flexible - build custom UI on top + +### Next Steps + +**Immediate**: +1. Implement session persistence for direct mode +2. Create UI component library (@burnt-labs/ui) +3. Add session management utilities + +**Future**: +1. Implement wallet adapter pattern +2. Add Solana/Polkadot support +3. Create pre-built adapter packages +4. Community adapter registry + +--- + +## References + +- [Solana Wallet Adapter](https://github.com/solana-labs/wallet-adapter) +- [WalletConnect](https://docs.walletconnect.com/) +- [RainbowKit](https://www.rainbowkit.com/) +- [Cosmos Kit](https://github.com/cosmology-tech/cosmos-kit) +- [Turnkey SDK](https://www.turnkey.com/docs) + +## Related Documentation + +- Demo app: `/apps/demo-app/` +- Package source: `/packages/abstraxion/` +- Account management: `/packages/account-management/` +- Signers: `/packages/signers/` + +--- + +## Changelog: Changes from Main Branch + +> **Summary**: 65 files changed, 15,093 insertions(+), 12,081 deletions(-) + +### New Packages Created + +#### 1. `@burnt-labs/account-management` ✅ +**Purpose**: Shared utilities for smart account management, grants, and indexer strategies + +**New Files**: +- `src/authenticators/` - Authenticator utilities and JWT handling + - `utils.ts` - Authenticator type detection, pubkey extraction + - `jwt.ts` - JWT-based authentication + - `authenticator-utils.test.ts` - Test coverage +- `src/grants/` - Grant message building and treasury integration + - `build-grant-messages.ts` - Unified grant message builder + - `authz.ts` - Authorization grants + - `feegrant.ts` - Fee grant utilities + - `treasury.ts` - Treasury grant generation + - `query-treasury-contract.ts` - Treasury contract querying + - `format-permissions.ts` - Permission formatting +- `src/indexer/` - Indexer strategies for account lookup + - `numia-strategy.ts` - Numia indexer implementation +- `src/types/` - TypeScript type definitions + - `authenticator.ts`, `grants.ts`, `indexer.ts`, `treasury.ts` + +**Status**: ✅ Complete and working + +--- + +#### 2. `@burnt-labs/wallet-connectors` ❌ REMOVED +**Status**: Created then deleted - not needed + +**Why removed**: +- Ethereum utilities were small enough to inline into `useWalletAuth.ts` +- Cosmos wallet logic is now part of generic `connectWallet()` method +- Only exported types (`WalletConnectionInfo`) which were moved to `useWalletAuth.ts` + +**Final outcome**: All wallet connection logic is now in `packages/abstraxion/src/hooks/useWalletAuth.ts` + +--- + +### Modified Packages + +#### `@burnt-labs/abstraxion` + +**New Files**: +- ✅ `src/hooks/useWalletAuth.ts` (515 lines) + - Generic wallet connection method + - Ethereum wallet utilities (inlined) + - Cosmos wallet connection (inline) + - Custom signer support + - Smart account lookup and creation + - Session management integration + +- ✅ `src/hooks/useGrantsFlow.ts` (275 lines) + - Migrated from dashboard grant flow + - Treasury query integration + - Grant message building + - Transaction signing with wallet authenticators + - Fee granter support + +- ✅ `src/utils/classname-util.ts` (7 lines) + - Simple utility for className merging + - Temporary (can be deleted if not needed) + +**Modified Files**: +- ✅ `src/components/Abstraxion/index.tsx` + - Added `GenericWalletConfig` interface + - Added `SigningMethod` type: `'cosmos' | 'ethereum' | 'ed25519'` + - Added `CustomSigner` interface for local mode + - Removed built-in modal for direct mode + - Updated exports + +- ✅ `src/components/AbstraxionContext/index.tsx` + - Added direct mode support + - Added local mode support + - Added wallet selection strategies (auto/custom) + - Integrated `useWalletAuth` hook + - Integrated `useGrantsFlow` hook + - Auto-close modal on connection + +- ✅ `src/hooks/index.ts` + - Exported `useWalletAuth` and `useGrantsFlow` + +- ✅ `src/index.ts` + - Exported new types: `GenericWalletConfig`, `SigningMethod`, `CustomSigner`, `WalletConnectionMethods` + +- ✅ `package.json` + - Removed `@burnt-labs/wallet-connectors` dependency + - Added `@burnt-labs/account-management` dependency + +**Deleted Files**: +- ❌ `utils/queries.ts` - Replaced by account-management package +- ❌ Entire `src/components/WalletSelect/` directory - No built-in modal for direct mode + +--- + +#### `@burnt-labs/signers` + +**New Files**: +- ✅ `src/crypto/` - Crypto utilities for account creation + - `address.ts` - Address generation + - `messages.ts` - Message building + - `prepare.ts` - Signature preparation + - `salt.ts` - Salt generation +- ✅ `src/signers/passkey-signer.ts` - WebAuthn/Passkey support +- ✅ `src/signers/utils/webauthn-utils.ts` - WebAuthn utilities +- ✅ `src/types/generated/abstractaccount/v1/feegrant.ts` - Fee grant types + +**Modified Files**: +- ✅ `src/index.ts` - Updated exports +- ✅ `src/interfaces/AASigner.ts` - Interface updates +- ✅ `src/signers/direct-signer.ts` - Enhanced functionality +- ✅ `src/signers/eth-signer.ts` - Enhanced functionality +- ✅ `src/signers/jwt-signer.ts` - Enhanced functionality +- ✅ `src/signers/utils/index.ts` - Utility updates + +**Deleted Files**: +- ❌ `src/interfaces/fragments.ts` - Consolidated elsewhere +- ❌ `src/interfaces/queries.ts` - Moved to account-management + +--- + +### Demo App Updates + +**New Files**: +- ✅ `src/app/direct-mode/layout.tsx` - Direct mode demo configuration +- ✅ `src/app/direct-mode/page.tsx` - Direct mode demo UI +- ✅ `src/components/WalletModal.tsx` - Custom wallet modal example +- ✅ `src/components/icons/` - Wallet logo components + - `KeplrLogo.tsx`, `LeapLogo.tsx`, `MetamaskLogo.tsx`, `OKXLogo.tsx` + +**Modified Files**: +- ✅ `src/app/layout.tsx` - Added direct mode route +- ✅ `src/app/page.tsx` - Added direct mode link + +--- + +## What Still Needs Work + +### Critical (Blocking) + +#### 1. Session Persistence on Page Refresh ⚠️ +**Status**: Not implemented for direct/local modes + +**What's needed**: +```typescript +// In AbstraxionContext, add on mount: +useEffect(() => { + if (walletAuthMode === 'direct' || walletAuthMode === 'local') { + // Check localStorage for session + const hasSession = abstraxionAuth.hasSession(); + if (hasSession) { + // Verify grants still exist + const isValid = await abstraxionAuth.authenticate(rpcUrl, smartAccountAddress); + if (isValid) { + // Restore connected state + setAbstraxionAccount(/* ... */); + } + } + } +}, []); +``` + +**Files to modify**: +- `packages/abstraxion/src/components/AbstraxionContext/index.tsx` +- Possibly create `packages/abstraxion-core/src/session.ts` utilities + +--- + +### Cleanup Tasks + +#### 1. Remove Temporary Utilities +- ❌ `packages/abstraxion/src/utils/classname-util.ts` - Not needed if WalletSelect is deleted + +**Action**: Delete file if confirmed unused + +--- + +#### 2. Verify Build System +**Current Status**: Bash commands failing during testing + +**What's needed**: +- Verify `pnpm install` works correctly +- Verify all packages build: `pnpm -r build` +- Run tests: `pnpm -r test` + +**Files affected**: Build configuration across all packages + +--- + +#### 3. Update Package Dependencies +**Issue**: Removed `@burnt-labs/wallet-connectors` but may have orphaned dependencies + +**Action**: +```bash +pnpm install # Update lockfile +pnpm -r build # Verify all builds +``` + +--- + +### Future Enhancements + +#### 1. Session Management Utilities +**Proposal**: Create `packages/abstraxion-core/src/session.ts` + +**Functions needed**: +```typescript +export function hasActiveSession(): boolean; +export function getSessionKeypair(): Promise; +export function getSessionGranter(): string | null; +export function clearSession(): void; +export function verifySessionGrants(rpcUrl: string): Promise; +``` + +**Benefits**: +- Shared by abstraxion and dashboard +- Easier to test +- Cleaner session logic + +--- + +#### 2. UI Component Library +**Proposal**: Create `@burnt-labs/ui` package + +**Components needed**: +- `WalletSelectorModal` - Reusable wallet selection UI +- `GrantsProgressModal` - Progress indicator for grant creation +- `ConnectButton` - Pre-styled connect button +- Wallet logos as React components + +**Benefits**: +- Dashboard can use same UI +- Consistent branding +- Easier for developers to build custom UIs + +--- + +#### 3. Wallet Adapter Implementation +**Status**: Designed, not implemented + +**See**: "Future Roadmap > Wallet Adapter Pattern" section above + +**Priority**: Medium (after session persistence) + +--- + +## Testing Checklist + +### ✅ Completed +- [x] Generic wallet connection (Ethereum + Cosmos) +- [x] Smart account lookup via Numia indexer +- [x] Smart account creation via AA API +- [x] Treasury grant generation +- [x] Grant transaction signing +- [x] Fee granter support +- [x] Custom modal example +- [x] Auto-close modal on connection +- [x] Direct mode basic flow +- [x] Local mode with custom signers + +### ❌ Not Tested +- [ ] Session persistence on page refresh +- [ ] Session restoration from localStorage +- [ ] Grant expiration handling +- [ ] Multiple authenticators per account +- [ ] Wallet disconnection flow +- [ ] Error recovery (failed transactions, rejected signatures) +- [ ] Network switching (testnet <-> mainnet) + +### 🔄 Needs Verification +- [ ] Build system working end-to-end +- [ ] All packages publish correctly +- [ ] No orphaned dependencies +- [ ] TypeScript types export correctly +- [ ] Demo app runs without errors + +--- + +## Migration Checklist for Dashboard + +### Phase 1: Use Shared Packages +- [ ] Replace local `NumiaIndexerStrategy` with `@burnt-labs/account-management` +- [ ] Replace grant utilities with `@burnt-labs/account-management` +- [ ] Test that existing dashboard flows still work + +### Phase 2: Use Abstraxion Hooks +- [ ] Replace `handleExternalWalletAALoginOrCreate` with `useWalletAuth` +- [ ] Replace `grantTreasuryPermissions` with `useGrantsFlow` +- [ ] Test wallet connection and grant creation + +### Phase 3: Full Migration +- [ ] Use `AbstraxionProvider` in dashboard +- [ ] Remove custom wallet connection code +- [ ] Remove custom grant creation code +- [ ] Remove local indexer hooks +- [ ] Update UI to work with abstraxion context + +### Files Dashboard Can Delete (After Migration) +1. `src/hooks/useWalletAccountCreation.ts` +2. `src/hooks/useWalletAccountPrepare.ts` +3. `src/components/AbstraxionGrant/generateContractGrant.ts` +4. `src/components/AbstraxionGrant/generateBankGrant.ts` +5. `src/components/AbstraxionGrant/generateStakeAndGovGrant.ts` +6. `src/utils/query-treasury-contract.ts` +7. `src/indexer-strategies/numia-indexer-strategy.ts` (use from account-management) +8. `src/hooks/useNumiaSmartAccounts.ts` (eventually) +9. `src/hooks/baseSmartAccount.ts` (eventually) + +--- + +## Known Issues + +### 1. Build System +**Issue**: Bash commands timing out during verification + +**Workaround**: Run builds manually: +```bash +cd packages/abstraxion && npm run build +cd apps/demo-app && npm run build +``` + +### 2. Cosmos Wallet Naming +**Issue**: Used `secp256k1` naming initially, should be `cosmos` + +**Status**: ✅ Fixed - renamed to `cosmos` throughout codebase + +### 3. Wallet-Connectors Package +**Issue**: Created package, then realized it wasn't needed + +**Status**: ✅ Fixed - package deleted, utilities inlined + +--- + +## Summary of Key Decisions + +### Architecture Decisions +1. ✅ **No built-in modal for direct mode** - Developers provide custom UI +2. ✅ **Generic wallet interface** - Add any wallet with name + windowKey + signingMethod +3. ✅ **Inlined utilities** - Small Ethereum utilities don't need separate package +4. ✅ **Shared account-management package** - Treasury, grants, indexer logic shared +5. ✅ **Ecosystem-specific naming** - `cosmos` and `ethereum` instead of `secp256k1` + +### Breaking Changes from Main +1. Direct mode requires custom modal (no built-in WalletSelect) +2. SigningMethod changed from `secp256k1` to `cosmos` +3. Removed `@burnt-labs/wallet-connectors` package +4. New required props: `walletAuth.wallets`, `walletAuth.onWalletSelectionRequired` + +### Non-Breaking Additions +1. New hooks: `useWalletAuth`, `useGrantsFlow` +2. New mode: `local` for custom signers +3. New types: `GenericWalletConfig`, `CustomSigner`, `WalletConnectionMethods` +4. New package: `@burnt-labs/account-management` diff --git a/apps/demo-app/src/app/direct-mode/layout.tsx b/apps/demo-app/src/app/direct-mode/layout.tsx new file mode 100644 index 00000000..658afe2a --- /dev/null +++ b/apps/demo-app/src/app/direct-mode/layout.tsx @@ -0,0 +1,121 @@ +"use client"; +import { useState, useEffect, useMemo } from "react"; +import { + AbstraxionProvider, + type AbstraxionConfig, + type WalletConnectionMethods, + useAbstraxionAccount, +} from "@burnt-labs/abstraxion"; +import { WalletModal } from "../../components/WalletModal"; + +export default function DirectModeLayout({ + children, +}: { + children: React.ReactNode; +}): JSX.Element { + const [showWalletModal, setShowWalletModal] = useState(false); + const [walletMethods, setWalletMethods] = useState(null); + + // Direct mode configuration with treasury contract + const directModeConfig: AbstraxionConfig = useMemo(() => ({ + // REQUIRED: Chain ID + chainId: "xion-testnet-2", + + // REQUIRED: RPC URL for blockchain connection + rpcUrl: process.env.NEXT_PUBLIC_RPC_URL || "https://rpc.xion-testnet-2.burnt.com:443", + + // REQUIRED: REST API endpoint + restUrl: process.env.NEXT_PUBLIC_REST_URL || "https://api.xion-testnet-2.burnt.com", + + // REQUIRED: Gas price + gasPrice: "0.001uxion", + + // Treasury contract address (optional - for dynamic grant configs) + treasury: process.env.NEXT_PUBLIC_TREASURY_ADDRESS, + + // Fee granter address (optional - pays transaction fees for grant creation) + // Must match the FEE_GRANTER_ADDRESS used by your AA API + feeGranter: + process.env.NEXT_PUBLIC_FEE_GRANTER_ADDRESS || + "xion10y5pzqs0jn89zpm6va625v6xzsqjkm293efwq8", + + // Enable direct mode for in-app wallet connections + walletAuth: { + mode: "direct" as const, + + // Point to local AA API for development + aaApiUrl: "http://localhost:8787", + + // Use custom strategy to show our custom wallet modal + walletSelectionStrategy: "custom" as const, + + // Define wallets to support (optional - defaults to MetaMask + Keplr for auto mode) + // You can add any Ethereum or Cosmos wallet by specifying its window key! + wallets: [ + { name: "MetaMask", windowKey: "ethereum", signingMethod: "ethereum" }, + { name: "Keplr", windowKey: "keplr", signingMethod: "cosmos" }, + { name: "OKX", windowKey: "okxwallet.keplr", signingMethod: "cosmos" }, + // Example: Add Leap wallet (Cosmos) + // { name: "Leap", windowKey: "leap", signingMethod: "cosmos" }, + // Example: Add Rainbow wallet (Ethereum) + // { name: "Rainbow", windowKey: "ethereum", signingMethod: "ethereum" }, + // Example: Add Compass wallet (Cosmos) + // { name: "Compass", windowKey: "compass", signingMethod: "cosmos" }, + ], + + // Custom wallet selection callback - shows our modal + onWalletSelectionRequired: (methods) => { + setWalletMethods(methods); + setShowWalletModal(true); + }, + }, + }), []); + + return ( + + + {children} + + + ); +} + +// Component inside provider that can access context to close modal on connection +function ModalHandler({ + children, + showWalletModal, + setShowWalletModal, + walletMethods, +}: { + children: React.ReactNode; + showWalletModal: boolean; + setShowWalletModal: (show: boolean) => void; + walletMethods: WalletConnectionMethods | null; +}) { + const { isConnected } = useAbstraxionAccount(); + + // Close modal when connection succeeds + useEffect(() => { + if (isConnected && showWalletModal) { + setShowWalletModal(false); + } + }, [isConnected, showWalletModal, setShowWalletModal]); + + return ( + <> + {children} + + {/* Custom Wallet Selection Modal */} + setShowWalletModal(false)} + connectionMethods={walletMethods} + chainId="xion-testnet-1" + /> + + ); +} diff --git a/apps/demo-app/src/app/direct-mode/page.tsx b/apps/demo-app/src/app/direct-mode/page.tsx new file mode 100644 index 00000000..75e3ceb8 --- /dev/null +++ b/apps/demo-app/src/app/direct-mode/page.tsx @@ -0,0 +1,173 @@ +"use client"; +import { useState } from "react"; +import { + useAbstraxionAccount, + useAbstraxionSigningClient, +} from "@burnt-labs/abstraxion"; +import { Button } from "@burnt-labs/ui"; +import "@burnt-labs/ui/dist/index.css"; +import "@burnt-labs/abstraxion/dist/index.css"; +import Link from "next/link"; + +export default function DirectModePage(): JSX.Element { + const { data: account, login } = useAbstraxionAccount(); + const { client, logout } = useAbstraxionSigningClient(); + + // Send transaction state + const [recipient, setRecipient] = useState(""); + const [amount, setAmount] = useState(""); + const [isSending, setIsSending] = useState(false); + const [txHash, setTxHash] = useState(null); + const [txError, setTxError] = useState(null); + + const handleSendTokens = async () => { + if (!client || !account.bech32Address || !recipient || !amount) { + setTxError("Please fill in all fields"); + return; + } + + try { + setIsSending(true); + setTxError(null); + setTxHash(null); + + const amountInUxion = (parseFloat(amount) * 1_000_000).toString(); + + const result = await client.sendTokens( + account.bech32Address, + recipient, + [{ denom: "uxion", amount: amountInUxion }], + "auto", + "Send XION via Abstraxion Direct Mode" + ); + + setTxHash(result.transactionHash); + setRecipient(""); + setAmount(""); + } catch (error: any) { + console.error("Send error:", error); + setTxError(error.message || "Failed to send tokens"); + } finally { + setIsSending(false); + } + }; + + return ( +
+

+ Direct Mode Abstraxion Example +

+

+ This example uses the new direct mode which allows in-app wallet + connections without redirecting to the dashboard. Connect with MetaMask, + Keplr, Leap, or OKX directly in this app. +

+ +
+ {!account.bech32Address && ( + + )} + + {account.bech32Address && ( + <> +
+

Account Info

+

+ Address: {account.bech32Address} +

+

+ Client: {client ? "Connected" : "Not connected"} +

+
+ +
+

+ ✓ Successfully connected using direct mode! No dashboard redirect needed. +

+
+ + {/* Send XION Section */} +
+

Send XION

+ +
+ + setRecipient(e.target.value)} + placeholder="xion1..." + className="w-full rounded bg-black/30 border border-white/10 px-3 py-2 text-sm text-white placeholder-gray-500 focus:border-blue-500 focus:outline-none" + /> +
+ +
+ + setAmount(e.target.value)} + placeholder="0.001" + step="0.001" + min="0" + className="w-full rounded bg-black/30 border border-white/10 px-3 py-2 text-sm text-white placeholder-gray-500 focus:border-blue-500 focus:outline-none" + /> +
+ + + + {txHash && ( +
+

+ ✓ Transaction Successful +

+

+ Hash: {txHash} +

+
+ )} + + {txError && ( +
+

+ ✗ {txError} +

+
+ )} +
+ + + + )} +
+ + + ← Back to examples + +
+ ); +} diff --git a/apps/demo-app/src/app/layout.tsx b/apps/demo-app/src/app/layout.tsx index 16fb4cd8..20a383fe 100644 --- a/apps/demo-app/src/app/layout.tsx +++ b/apps/demo-app/src/app/layout.tsx @@ -5,37 +5,13 @@ import { AbstraxionProvider } from "@burnt-labs/abstraxion"; const inter = Inter({ subsets: ["latin"] }); -// Example XION seat contract -const seatContractAddress = - "xion1z70cvc08qv5764zeg3dykcyymj5z6nu4sqr7x8vl4zjef2gyp69s9mmdka"; - -const legacyConfig = { - contracts: [ - // Usually, you would have a list of different contracts here - seatContractAddress, - { - address: seatContractAddress, - amounts: [{ denom: "uxion", amount: "1000000" }], - }, - ], - stake: true, - bank: [ - { - denom: "uxion", - amount: "1000000", - }, - ], - // Optional params to activate mainnet config - // rpcUrl: "https://rpc.xion-mainnet-1.burnt.com:443", - // restUrl: "https://api.xion-mainnet-1.burnt.com:443", -}; - +// Treasury configuration from environment variables const treasuryConfig = { - treasury: "xion13uwmwzdes7urtjyv7mye8ty6uk0vsgdrh2a2k94tp0yxx9vv3e9qazapyu", // Example XION treasury instance for instantiating smart contracts - gasPrice: "0.001uxion", // If you feel the need to change the gasPrice when connecting to signer, set this value. Please stick to the string format seen in example - // Optional params to activate mainnet config - // rpcUrl: "https://rpc.xion-mainnet-1.burnt.com:443", - // restUrl: "https://api.xion-mainnet-1.burnt.com:443", + chainId: "xion-testnet-1", + treasury: process.env.NEXT_PUBLIC_TREASURY_ADDRESS, + rpcUrl: process.env.NEXT_PUBLIC_RPC_URL || "https://rpc.xion-testnet-2.burnt.com:443", + restUrl: process.env.NEXT_PUBLIC_REST_URL || "https://api.xion-testnet-2.burnt.com", + gasPrice: "0.001uxion", }; export default function RootLayout({ diff --git a/apps/demo-app/src/app/page.tsx b/apps/demo-app/src/app/page.tsx index 0eac0a63..4444b0a7 100644 --- a/apps/demo-app/src/app/page.tsx +++ b/apps/demo-app/src/app/page.tsx @@ -11,11 +11,24 @@ export default function Page(): JSX.Element {
+ + + + + +
+

+ Direct Mode allows wallet connections without dashboard redirect +

); } diff --git a/apps/demo-app/src/components/WalletModal.tsx b/apps/demo-app/src/components/WalletModal.tsx new file mode 100644 index 00000000..bdc5066e --- /dev/null +++ b/apps/demo-app/src/components/WalletModal.tsx @@ -0,0 +1,173 @@ +"use client"; + +import { useEffect } from "react"; +import type { WalletConnectionMethods, GenericWalletConfig } from "@burnt-labs/abstraxion"; +import { KeplrLogo } from "./icons/KeplrLogo"; +import { LeapLogo } from "./icons/LeapLogo"; +import { OKXLogo } from "./icons/OKXLogo"; +import { MetamaskLogo } from "./icons/MetamaskLogo"; + +interface WalletModalProps { + isOpen: boolean; + onClose: () => void; + connectionMethods: WalletConnectionMethods | null; + chainId: string; +} + +// Define wallet configurations using the generic interface +const WALLET_CONFIGS: GenericWalletConfig[] = [ + { + name: "MetaMask", + windowKey: "ethereum", + signingMethod: "ethereum", + }, + { + name: "Keplr", + windowKey: "keplr", + signingMethod: "cosmos", + }, + { + name: "OKX", + windowKey: "okxwallet.keplr", + signingMethod: "cosmos", + }, +]; + +export function WalletModal({ + isOpen, + onClose, + connectionMethods, + chainId, +}: WalletModalProps) { + // Close on Escape key + useEffect(() => { + const handleEscape = (e: KeyboardEvent) => { + if (e.key === "Escape") onClose(); + }; + + if (isOpen) { + document.addEventListener("keydown", handleEscape); + return () => document.removeEventListener("keydown", handleEscape); + } + }, [isOpen, onClose]); + + if (!isOpen || !connectionMethods) return null; + + const { connectWallet, isConnecting, error } = connectionMethods; + + // Map wallet configs to logos + const getWalletLogo = (walletName: string) => { + switch (walletName) { + case "MetaMask": + return ; + case "Keplr": + return ; + case "Leap": + return ; + case "OKX": + return ; + default: + return null; + } + }; + + return ( + <> + {/* Overlay */} +

- Direct Mode allows wallet connections without dashboard redirect + Direct Mode allows wallet connections without dashboard redirect, +
+ Loading States shows how the app reacts to state changes in standard redirect mode.

); diff --git a/apps/demo-app/src/components/WalletModal.tsx b/apps/demo-app/src/components/WalletModal.tsx index bdc5066e..ca73144a 100644 --- a/apps/demo-app/src/components/WalletModal.tsx +++ b/apps/demo-app/src/components/WalletModal.tsx @@ -3,7 +3,6 @@ import { useEffect } from "react"; import type { WalletConnectionMethods, GenericWalletConfig } from "@burnt-labs/abstraxion"; import { KeplrLogo } from "./icons/KeplrLogo"; -import { LeapLogo } from "./icons/LeapLogo"; import { OKXLogo } from "./icons/OKXLogo"; import { MetamaskLogo } from "./icons/MetamaskLogo"; @@ -62,8 +61,6 @@ export function WalletModal({ return ; case "Keplr": return ; - case "Leap": - return ; case "OKX": return ; default: diff --git a/apps/demo-app/src/components/blocking-button.tsx b/apps/demo-app/src/components/blocking-button.tsx deleted file mode 100644 index 3c991e54..00000000 --- a/apps/demo-app/src/components/blocking-button.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { useState } from "react"; -import { ArrowPathIcon } from "@heroicons/react/24/outline"; - -interface BlockingButtonProps { - text: string; - - /** - * Function to execute when button is pressed - */ - onExecute(): Promise; -} - -export function BlockingButton({ text, onExecute }: BlockingButtonProps) { - const [loading, setLoading] = useState(false); - - const handleClick = async () => { - try { - setLoading(true); - // Execute the supplied function - await onExecute(); - } catch (err) { - console.error(err); - } finally { - setLoading(false); - } - }; - - return ( - - ); -} diff --git a/apps/demo-app/src/components/icons/LeapLogo.tsx b/apps/demo-app/src/components/icons/LeapLogo.tsx deleted file mode 100644 index 68c1d2ff..00000000 --- a/apps/demo-app/src/components/icons/LeapLogo.tsx +++ /dev/null @@ -1,36 +0,0 @@ -export function LeapLogo({ className }: { className?: string }) { - return ( - - - - - - - - - - - - ); -} diff --git a/apps/demo-app/src/components/sign-arb.tsx b/apps/demo-app/src/components/sign-arb.tsx deleted file mode 100644 index 0a69ef7c..00000000 --- a/apps/demo-app/src/components/sign-arb.tsx +++ /dev/null @@ -1,190 +0,0 @@ -import { Button, Input } from "@burnt-labs/ui"; -import { useState } from "react"; -import { - useAbstraxionAccount, - useAbstraxionSigningClient, -} from "@burnt-labs/abstraxion"; -import type { GranteeSignerClient } from "@burnt-labs/abstraxion-core"; -import { BlockingButton } from "./blocking-button.tsx"; - -const copyToClipboard = (textToCopy: string) => async () => { - await window.navigator.clipboard.writeText(textToCopy); -}; - -// This component is a wizard of sorts showcasing the ability to sign and verify arbitrary ADR-036 signatures -export function SignArb(): React.ReactNode { - const [signArbResult, setSignArbResult] = useState(); - const [arbitraryMessage, setArbitraryMessage] = useState(""); - - if (signArbResult) { - return ( - { - setArbitraryMessage(""); - setSignArbResult(undefined); - - // Added to make ESLint happy - return Promise.resolve(); - }} - message={arbitraryMessage} - signature={signArbResult} - /> - ); - } - - return ( - - ); -} - -interface SignArbSignProps { - setResult: (signature: string) => void; - arbitraryMessage: string; - setArbitraryMessage: (signature: string) => void; -} - -function SignArbSign({ - setResult, - arbitraryMessage, - setArbitraryMessage, -}: SignArbSignProps) { - const { client, signArb } = useAbstraxionSigningClient(); - - async function handleSign(): Promise { - if (client?.granteeAddress) { - const response = await signArb?.(client.granteeAddress, arbitraryMessage); - - if (response) setResult(response); - } - } - - return ( -
-

- SIGN ARBITRARY MESSAGE -

- { - setArbitraryMessage(e.target.value); - }} - placeholder="Message..." - value={arbitraryMessage} - /> - -
- ); -} - -interface SignArbVerifyProps { - message: string; - signature: string; - clearSigFn: () => Promise; -} - -const verifySignatureWithApi = async ( - client: GranteeSignerClient, - metaAccountAddress: string, - message: string, - signature: string, -) => { - const granteeAccountData = await client.getGranteeAccountData(); - - if (!granteeAccountData) return false; - - const userSessionAddress = granteeAccountData.address; - const userSessionPubKey = Buffer.from(granteeAccountData.pubkey).toString( - "base64", - ); - - const baseUrl = `${window.location.origin}/api/check-signature`; - const url = new URL(baseUrl); - const params = new URLSearchParams({ - userSessionAddress, - userSessionPubKey, - metaAccountAddress, - message, - signature, - }); - url.search = params.toString(); - const data = await fetch(url, { - cache: "no-store", - }) - .then( - ( - response, - ): Promise<{ - valid: boolean; - }> => response.json(), - ) - .catch((err) => { - console.error("Could not fetch grants info", err); - }); - - if (data && data.valid) { - return true; - } - - return false; -}; - -function SignArbVerify({ message, signature, clearSigFn }: SignArbVerifyProps) { - const { client } = useAbstraxionSigningClient(); - const { data: account } = useAbstraxionAccount(); - - if (!client) return
; - - return ( -
-

- Signature -

-

{signature}

-

- User Session Address -

-

- {client.granteeAddress} -

-

- Meta Account Address -

-

- {account.bech32Address} -

- -
- { - const result = await verifySignatureWithApi( - client, - account.bech32Address, - message, - signature, - ); - - // eslint-disable-next-line no-alert --- No need for more complex user notification scheme - alert(`You message is ${result ? "valid" : "invalid"}!!!!`); - }} - text="Verify Signature" - /> - - -
-
- ); -} From 049cc212e8d47136e6f6c1b35be11f0b44d805ee Mon Sep 17 00:00:00 2001 From: ertemann Date: Sun, 26 Oct 2025 18:16:13 +0100 Subject: [PATCH 06/27] externalise many defaults, re-implement indexer strategies, create RPC fallback strat for checking accounts --- ABSTRAXION_COMPREHENSIVE_GUIDE.md | 1183 ----------------- apps/demo-app/src/app/direct-mode/layout.tsx | 33 +- apps/demo-app/src/app/direct-mode/page.tsx | 61 +- apps/demo-app/src/app/layout.tsx | 2 +- .../src/components/Abstraxion/index.tsx | 6 +- .../components/AbstraxionContext/index.tsx | 10 + .../abstraxion/src/hooks/useGrantsFlow.ts | 66 +- .../abstraxion/src/hooks/useWalletAuth.ts | 77 +- packages/account-management/package.json | 1 + .../accounts/account-composite-strategy.ts | 68 + .../src/accounts/account-empty-strategy.ts | 28 + .../account-numia-strategy.ts} | 2 +- .../src/accounts/account-rpc-strategy.ts | 221 +++ .../account-management/src/accounts/index.ts | 15 + .../src/authenticators/index.ts | 1 + .../src/authenticators/type-detection.ts | 98 ++ .../src/grants/generate-treasury-grants.ts | 116 ++ .../account-management/src/grants/index.ts | 6 +- .../src/grants/query-treasury-contract.ts | 17 +- .../src/grants/strategies/index.ts | 12 + .../strategies/treasury-composite-strategy.ts | 68 + .../strategies/treasury-daodao-strategy.ts | 229 ++++ .../treasury-direct-query-strategy.ts | 117 ++ packages/account-management/src/index.ts | 17 +- .../account-management/src/indexer/index.ts | 5 - pnpm-lock.yaml | 1044 +++++++-------- 26 files changed, 1727 insertions(+), 1776 deletions(-) delete mode 100644 ABSTRAXION_COMPREHENSIVE_GUIDE.md create mode 100644 packages/account-management/src/accounts/account-composite-strategy.ts create mode 100644 packages/account-management/src/accounts/account-empty-strategy.ts rename packages/account-management/src/{indexer/numia-strategy.ts => accounts/account-numia-strategy.ts} (97%) create mode 100644 packages/account-management/src/accounts/account-rpc-strategy.ts create mode 100644 packages/account-management/src/accounts/index.ts create mode 100644 packages/account-management/src/authenticators/type-detection.ts create mode 100644 packages/account-management/src/grants/generate-treasury-grants.ts create mode 100644 packages/account-management/src/grants/strategies/index.ts create mode 100644 packages/account-management/src/grants/strategies/treasury-composite-strategy.ts create mode 100644 packages/account-management/src/grants/strategies/treasury-daodao-strategy.ts create mode 100644 packages/account-management/src/grants/strategies/treasury-direct-query-strategy.ts delete mode 100644 packages/account-management/src/indexer/index.ts diff --git a/ABSTRAXION_COMPREHENSIVE_GUIDE.md b/ABSTRAXION_COMPREHENSIVE_GUIDE.md deleted file mode 100644 index 69cf16bd..00000000 --- a/ABSTRAXION_COMPREHENSIVE_GUIDE.md +++ /dev/null @@ -1,1183 +0,0 @@ -# Abstraxion Comprehensive Implementation Guide - -> Complete guide to wallet authentication, direct mode, local mode, and smart account management in @burnt-labs/abstraxion - -**Last Updated**: 2024 - ---- - -## Table of Contents - -1. [Overview](#overview) -2. [Current Implementation](#current-implementation) - - [Generic Wallet Connector](#generic-wallet-connector) - - [Supported Ecosystems](#supported-ecosystems) -3. [Direct Mode](#direct-mode) - - [Configuration](#direct-mode-configuration) - - [Usage Examples](#direct-mode-usage) -4. [Local Mode](#local-mode) - - [Turnkey Integration](#turnkey-integration) - - [Custom Signers](#custom-signers) -5. [Technical Architecture](#technical-architecture) - - [Indexer Strategies](#indexer-strategies) - - [Treasury Integration](#treasury-integration) - - [Session Management](#session-management) -6. [Migration Guide](#migration-guide) - - [Dashboard to xion.js](#dashboard-migration) - - [Code Comparison](#code-comparison) -7. [Future Roadmap](#future-roadmap) - - [Wallet Adapter Pattern](#wallet-adapter-pattern) - - [Multi-Ecosystem Support](#multi-ecosystem-support) - ---- - -## Overview - -Abstraxion provides three authentication modes for XION smart accounts: - -| Mode | Description | Use Case | -|------|-------------|----------| -| **Redirect** | Traditional OAuth-style redirect to dashboard | Default mode, full UI provided | -| **Direct** | In-app wallet connection with custom UI | Custom branded experience | -| **Local** | Custom signers (Turnkey, Privy, etc.) | Embedded wallets, MPC solutions | - ---- - -## Current Implementation - -### Generic Wallet Connector - -The current implementation supports **Ethereum** and **Cosmos** ecosystem wallets through a generic interface: - -```typescript -export interface GenericWalletConfig { - name: string; // Display name (e.g., "Keplr", "Leap") - windowKey: string; // Window path with dot notation (e.g., "keplr", "okxwallet.keplr") - signingMethod: SigningMethod; // "cosmos" | "ethereum" | "ed25519" - icon?: React.ReactNode | string; // Optional icon -} - -export type SigningMethod = - | 'cosmos' // Cosmos ecosystem wallets (Keplr, Leap, OKX, etc.) using secp256k1 - | 'ethereum' // Ethereum ecosystem wallets (MetaMask, Rainbow, etc.) - | 'ed25519'; // Reserved for future Solana/Polkadot support -``` - -### Supported Ecosystems - -#### ✅ Ethereum Ecosystem -- **Wallets**: MetaMask, Rainbow, Coinbase Wallet, any wallet using `window.ethereum` -- **Standard**: EIP-1193 (`window.ethereum.request()`) -- **Signatures**: EIP-191 personal_sign - -#### ✅ Cosmos Ecosystem -- **Wallets**: Keplr, Leap, OKX, Compass, Station -- **Standard**: Cosmos wallet API (`wallet.getKey()`, `wallet.signArbitrary()`) -- **Signatures**: Secp256k1 - -#### ❌ Not Yet Supported -- Solana wallets (Phantom, Solflare) - different API -- Polkadot wallets - different extension API -- Near wallets - completely different flow - ---- - -## Direct Mode - -Direct mode allows in-app wallet connections without redirecting to the dashboard. - -### Direct Mode Configuration - -```typescript -import { AbstraxionProvider } from "@burnt-labs/abstraxion"; - -const config = { - chainId: "xion-testnet-1", - rpcUrl: "https://rpc.xion-testnet-2.burnt.com:443", - restUrl: "https://api.xion-testnet-2.burnt.com", - gasPrice: "0.001uxion", - treasury: "xion1...", - feeGranter: "xion1...", - - walletAuth: { - mode: "direct", - aaApiUrl: "http://localhost:8787", - - // Optional: Auto mode (tries wallets automatically) - walletSelectionStrategy: "auto", // Default: tries MetaMask then Keplr - - // Optional: Custom wallets for auto mode - wallets: [ - { name: "MetaMask", windowKey: "ethereum", signingMethod: "ethereum" }, - { name: "Keplr", windowKey: "keplr", signingMethod: "cosmos" }, - { name: "Leap", windowKey: "leap", signingMethod: "cosmos" }, - ], - }, -}; - - - - -``` - -### Direct Mode Usage - -#### Auto Mode (Zero Configuration) - -```typescript -walletAuth: { - mode: "direct", - aaApiUrl: "http://localhost:8787", - // Automatically tries MetaMask then Keplr -} -``` - -#### Custom Modal (Full Control) - -```typescript -const [showModal, setShowModal] = useState(false); -const [methods, setMethods] = useState(null); - -const config = { - walletAuth: { - mode: "direct", - walletSelectionStrategy: "custom", - - wallets: [ - { name: "Keplr", windowKey: "keplr", signingMethod: "cosmos" }, - { name: "OKX", windowKey: "okxwallet.keplr", signingMethod: "cosmos" }, - { name: "MetaMask", windowKey: "ethereum", signingMethod: "ethereum" }, - ], - - onWalletSelectionRequired: (connectionMethods) => { - setMethods(connectionMethods); - setShowModal(true); - }, - }, -}; - -// In your UI: - setShowModal(false)} - connectionMethods={methods} - chainId="xion-testnet-1" -/> -``` - -#### Example Custom Modal - -```typescript -export function WalletModal({ isOpen, onClose, connectionMethods, chainId }) { - const { connectWallet, isConnecting, error } = connectionMethods; - - const wallets = [ - { name: "MetaMask", windowKey: "ethereum", signingMethod: "ethereum" }, - { name: "Keplr", windowKey: "keplr", signingMethod: "cosmos" }, - { name: "OKX", windowKey: "okxwallet.keplr", signingMethod: "cosmos" }, - ]; - - return ( -
-
-

Connect Wallet

- {wallets.map((wallet) => ( - - ))} - {error &&

{error}

} -
-
- ); -} -``` - ---- - -## Local Mode - -Local mode allows you to use custom signing solutions (Turnkey, Privy, Lit Protocol) without browser wallets. - -### Turnkey Integration - -#### Step 1: Configure Custom Signer - -```typescript -import { AbstraxionProvider, type CustomSigner } from "@burnt-labs/abstraxion"; -import { useTurnkey } from "@turnkey/sdk-react"; - -function MyApp() { - const { turnkey } = useTurnkey(); - - const turnkeySigner: CustomSigner = { - type: "Secp256K1", // or "EthWallet" for Ethereum-based Turnkey - - getPubkey: async () => { - const wallet = await turnkey.getWalletClient(); - const [account] = await wallet.getAccounts(); - return Buffer.from(account.pubkey).toString('hex'); - }, - - sign: async (message: string) => { - const wallet = await turnkey.getWalletClient(); - const [account] = await wallet.getAccounts(); - - const { signature } = await wallet.signArbitrary( - "xion-testnet-1", - account.address, - message - ); - - return Buffer.from(signature, 'base64').toString('hex'); - }, - }; - - const config = { - chainId: "xion-testnet-1", - rpcUrl: "https://rpc.xion-testnet-2.burnt.com:443", - restUrl: "https://api.xion-testnet-2.burnt.com", - gasPrice: "0.001uxion", - - walletAuth: { - mode: "local", - customSigner: turnkeySigner, - aaApiUrl: "http://localhost:8787", // For account creation - - localConfig: { - codeId: 4, - checksum: "abc123...", - feeGranter: "xion1...", - }, - }, - }; - - return ( - - - - ); -} -``` - -#### Step 2: Connect and Use - -```typescript -function ConnectButton() { - const { data, login, isConnecting } = useAbstraxionAccount(); - const { client } = useAbstraxionSigningClient(); - - const handleSend = async () => { - await client.sendTokens( - data.bech32Address, - "xion1recipient...", - [{ denom: "uxion", amount: "1000000" }], - "auto" - ); - }; - - return ( -
- - {data.bech32Address && ( - - )} -
- ); -} -``` - -### Custom Signers - -#### Interface - -```typescript -export interface CustomSigner { - type: 'Secp256K1' | 'EthWallet'; - - // Sign arbitrary messages (required) - sign: (message: string) => Promise; - - // For Secp256K1 signers (Turnkey Cosmos, Privy Cosmos) - getPubkey?: () => Promise; // Return hex-encoded pubkey - - // For Ethereum signers (Turnkey Ethereum, Privy Ethereum) - getAddress?: () => Promise; // Return 0x... address -} -``` - -#### Ethereum Signer Example - -```typescript -const privyEthSigner: CustomSigner = { - type: "EthWallet", - - getAddress: async () => { - const address = await privy.getAddress(); - return address; // 0x... - }, - - sign: async (message: string) => { - const signature = await privy.signMessage(message); - return signature.replace('0x', ''); // Remove 0x prefix - }, -}; -``` - ---- - -## Technical Architecture - -### Indexer Strategies - -Abstraxion uses the **Numia Indexer** to look up existing smart accounts by authenticator. - -#### NumiaIndexerStrategy - -```typescript -import { NumiaIndexerStrategy } from "@burnt-labs/account-management"; - -const indexer = new NumiaIndexerStrategy( - "https://xion-testnet-2.api.numia.xyz", - "your-auth-token" -); - -// Look up accounts by authenticator (pubkey or address) -const accounts = await indexer.fetchSmartAccounts(authenticator); - -// Returns: SmartAccountWithCodeId[] -// { -// id: "xion1...", -// codeId: 4, -// authenticators: [ -// { authenticator: "base64-pubkey", authenticatorIndex: 0 } -// ] -// } -``` - -#### Account Lookup Flow - -1. User connects wallet (MetaMask, Keplr, etc.) -2. Get authenticator (Ethereum: `address`, Cosmos: `base64(pubkey)`) -3. Query Numia indexer for existing accounts -4. If exists → use existing account -5. If not exists → create new account via AA API - -### Treasury Integration - -Treasury contracts define grant configurations for smart accounts. - -#### Querying Treasury - -```typescript -import { generateTreasuryGrants } from "@burnt-labs/account-management"; - -const grantMsgs = await generateTreasuryGrants( - "xion1treasury...", // Treasury contract address - client, // CosmWasmClient - "xion1granter...", // Smart account address (granter) - "xion1grantee..." // Session keypair address (grantee) -); - -// Returns array of grant messages: -// - Contract execution grants -// - Bank send grants -// - Stake/gov grants -``` - -#### Grant Flow - -1. User connects wallet and creates/loads smart account -2. Generate temporary session keypair -3. Query treasury for grant configurations -4. Build authz grant messages -5. Add `deploy_fee_grant` contract execution -6. Sign transaction with smart account (using wallet as authenticator) -7. Store session keypair in localStorage -8. Use session keypair for subsequent transactions - -### Session Management - -#### Session Storage - -```typescript -// Session keypair stored in localStorage -const SESSION_KEY = "xion-authz-temp-account"; -const GRANTER_KEY = "xion-authz-granter-account"; - -// Generated by abstraxionAuth -import { abstraxionAuth } from "@burnt-labs/abstraxion"; - -// Generate and store session -await abstraxionAuth.generateAndStoreTempAccount(); - -// Get session keypair -const keypair = await abstraxionAuth.getKeypair(); - -// Authenticate (verify grants exist) -await abstraxionAuth.authenticate(rpcUrl, smartAccountAddress); -``` - -#### Session Restoration (Planned) - -**Currently Missing**: Session restoration on page refresh for direct mode. - -**Proposed Utilities** (`packages/abstraxion-core/src/session.ts`): - -```typescript -export function hasActiveSession(): boolean; -export function getSessionKeypair(): Promise; -export function getSessionGranter(): string | null; -export function clearSession(): void; -export function verifySessionGrants(rpcUrl: string): Promise; -``` - ---- - -## Migration Guide - -### Dashboard Migration - -The XION dashboard can migrate to use `@burnt-labs/abstraxion` directly. - -#### Current Dashboard Flow - -``` -Dashboard (Monolithic): -├── handleExternalWalletAALoginOrCreate() -│ ├── createAccountWithMetaMask() -│ ├── createAccountWithCosmosWallet() -│ └── Store in localStorage -├── grantTreasuryPermissions() -│ ├── generateTreasuryGrants() -│ ├── buildGrantMessages() -│ └── Sign with wallet -└── useNumiaSmartAccounts() - └── TanStack Query polling -``` - -#### New xion.js Flow - -``` -xion.js (Composable): -├── useWalletAuth() hook -│ ├── connectWallet() -│ ├── Check indexer -│ └── Create/use account -├── useGrantsFlow() hook -│ ├── Generate session -│ ├── Query treasury -│ ├── Build grants -│ └── Sign transaction -└── Direct indexer usage - └── No polling needed -``` - -#### Migration Steps - -**Phase 1**: Use shared packages -```typescript -// Replace dashboard local code with shared packages -import { NumiaIndexerStrategy } from "@burnt-labs/account-management"; -import { generateTreasuryGrants } from "@burnt-labs/account-management"; -import { buildGrantMessages } from "@burnt-labs/account-management"; -``` - -**Phase 2**: Use abstraxion hooks -```typescript -// Replace custom hooks with xion.js -import { useWalletAuth, useGrantsFlow } from "@burnt-labs/abstraxion"; - -// Instead of handleExternalWalletAALoginOrCreate: -const walletAuth = useWalletAuth({ - config: walletAuthConfig, - rpcUrl, - onSuccess: (smartAccountAddress, walletInfo) => { - // Connected! - } -}); - -// Instead of grantTreasuryPermissions: -const { createGrants } = useGrantsFlow({ - rpcUrl, - treasury, - feeGranter, -}); -``` - -**Phase 3**: Use AbstraxionProvider -```typescript -// Replace entire custom implementation - - - -``` - -### Code Comparison - -#### Account Creation - -**Dashboard**: -```typescript -const handleExternalWalletAALoginOrCreate = async (walletType) => { - if (walletType === "metamask") { - const accountData = await createAccountWithMetaMask(apiUrl); - setAbstractAccount(accountData.abstractAccount); - localStorage.setItem("xion-logged-in-via", "metamask"); - } else { - const accountData = await createAccountWithCosmosWallet(apiUrl, chainId, walletName); - setAbstractAccount(accountData.abstractAccount); - localStorage.setItem("xion-logged-in-via", walletName); - } -}; -``` - -**xion.js**: -```typescript -const { connectWallet } = useWalletAuth({ - config: walletAuth, - rpcUrl, - onSuccess: (smartAccountAddress, walletInfo) => { - // Already connected, account created if needed - // walletInfo includes authenticatorIndex automatically - } -}); - -// Use it: -await connectWallet(walletConfig, chainId); -``` - -#### Grant Creation - -**Dashboard**: -```typescript -const grantTreasuryPermissions = async (granter, expiration, feeGranter) => { - const grantMsgs = await generateTreasuryGrants(treasury, client, granter, grantee); - - // Add deploy_fee_grant - grantMsgs.push({ - typeUrl: "/cosmwasm.wasm.v1.MsgExecuteContract", - value: MsgExecuteContract.fromPartial({ - sender: granter, - contract: treasury, - msg: toUtf8(JSON.stringify({ deploy_fee_grant: { grantee } })), - funds: [], - }), - }); - - // Simulate and broadcast - const txResult = await client.signAndBroadcast(granter, grantMsgs, fee); -}; -``` - -**xion.js**: -```typescript -const { createGrants } = useGrantsFlow({ - rpcUrl, - treasury, - feeGranter, -}); - -// Use it: -await createGrants(smartAccountAddress, walletInfo, chainId); -// All grant logic + deploy_fee_grant handled automatically -``` - -### What Can Be Removed from Dashboard - -Once migrated: - -1. ❌ `handleExternalWalletAALoginOrCreate` → use `useWalletAuth` -2. ❌ `grantTreasuryPermissions` → use `useGrantsFlow` -3. ❌ `generateContractGrant.ts` → use `buildGrantMessages` from account-management -4. ❌ `generateBankGrant.ts` → use `buildGrantMessages` from account-management -5. ❌ `generateStakeAndGovGrant.ts` → use `buildGrantMessages` from account-management -6. ❌ `query-treasury-contract.ts` → use `generateTreasuryGrants` from account-management -7. ❌ Local `NumiaIndexerStrategy` → import from account-management -8. 🟡 `useNumiaSmartAccounts` → Eventually remove (polling wrapper) -9. 🟡 `baseSmartAccount.ts` → Eventually remove (TanStack Query wrapper) - ---- - -## Future Roadmap - -### Wallet Adapter Pattern - -To support **true multi-ecosystem** wallets (Solana, Polkadot, Near), we plan to implement an adapter pattern. - -#### Problem - -Current implementation is ecosystem-specific: -- ✅ Ethereum: Uses `window.ethereum.request()` -- ✅ Cosmos: Uses `wallet.getKey()` and `wallet.signArbitrary()` -- ❌ Solana: Uses `window.solana.connect()` ← **Different API!** -- ❌ Polkadot: Uses `window.injectedWeb3['polkadot-js'].enable()` ← **Different API!** - -Each blockchain has its own wallet standard. - -#### Solution: Adapter Interface - -```typescript -export interface WalletAdapter { - connect: () => Promise<{ - pubkey?: string; // Public key in hex - address?: string; // Wallet address - metadata?: Record; - }>; - - sign: (message: string) => Promise; // Return hex signature - - disconnect?: () => Promise; -} -``` - -#### Updated Wallet Config - -```typescript -export type SigningMethod = - | 'ethereum' // Ethereum ecosystem (built-in) - | 'cosmos' // Cosmos ecosystem (built-in) - | 'custom'; // Custom adapter (developer-provided) - -export interface GenericWalletConfig { - name: string; - windowKey?: string; // Optional for custom adapters - signingMethod: SigningMethod; - icon?: React.ReactNode | string; - adapter?: WalletAdapter; // Required when signingMethod is 'custom' -} -``` - -#### Example: Solana Phantom Adapter - -```typescript -const phantomAdapter: WalletAdapter = { - connect: async () => { - if (!window.solana?.isPhantom) { - throw new Error("Phantom wallet not found"); - } - - const response = await window.solana.connect(); - const pubkeyHex = Buffer.from(response.publicKey.toBytes()).toString('hex'); - - return { pubkey: pubkeyHex }; - }, - - sign: async (message: string) => { - const messageBytes = new TextEncoder().encode(message); - const signedMessage = await window.solana.signMessage(messageBytes); - return Buffer.from(signedMessage.signature).toString('hex'); - }, - - disconnect: async () => { - await window.solana.disconnect(); - }, -}; - -// Usage: -connectWallet({ - name: "Phantom", - signingMethod: "custom", - adapter: phantomAdapter, -}); -``` - -#### Example: Polkadot Adapter - -```typescript -const polkadotAdapter: WalletAdapter = { - connect: async () => { - const { web3Enable, web3Accounts } = await import('@polkadot/extension-dapp'); - - const extensions = await web3Enable('My XION App'); - if (extensions.length === 0) { - throw new Error("Polkadot extension not found"); - } - - const accounts = await web3Accounts(); - const account = accounts[0]; - const pubkeyHex = Buffer.from(account.publicKey).toString('hex'); - - return { pubkey: pubkeyHex }; - }, - - sign: async (message: string) => { - const { web3FromAddress } = await import('@polkadot/extension-dapp'); - const injector = await web3FromAddress(currentAddress); - - const messageBytes = new TextEncoder().encode(message); - const signature = await injector.signer.signRaw({ - address: currentAddress, - data: Buffer.from(messageBytes).toString('hex'), - type: 'bytes', - }); - - return signature.signature.replace('0x', ''); - }, -}; -``` - -### Multi-Ecosystem Support - -#### Migration Path - -**Phase 1**: Current (Ethereum + Cosmos) -- Support built-in for Ethereum and Cosmos -- Document as "Ethereum and Cosmos ecosystem support" - -**Phase 2**: Add Adapter Interface -- Add `WalletAdapter` interface -- Add `custom` signing method -- Keep Ethereum/Cosmos as built-in convenience - -**Phase 3**: Pre-built Adapters -- Create `@burnt-labs/wallet-adapters` package -- Publish adapters for popular wallets: - - `@burnt-labs/wallet-adapter-phantom` (Solana) - - `@burnt-labs/wallet-adapter-solflare` (Solana) - - `@burnt-labs/wallet-adapter-polkadot` - - `@burnt-labs/wallet-adapter-near` - -**Phase 4**: Community Adapters -- Allow community to publish adapters -- Create adapter registry/marketplace -- CLI tool: `npx create-wallet-adapter --wallet phantom --ecosystem solana` - -#### Benefits - -1. **True Multi-Ecosystem** - Any blockchain can integrate -2. **Developer Control** - Developers provide wallet-specific logic -3. **Type Safety** - TypeScript ensures proper implementation -4. **Backwards Compatible** - Existing wallets continue to work -5. **Flexible** - Even custom enterprise wallets can integrate - ---- - -## Summary - -### Current Capabilities - -| Feature | Status | Notes | -|---------|--------|-------| -| Ethereum wallets | ✅ Supported | MetaMask, Rainbow, Coinbase Wallet | -| Cosmos wallets | ✅ Supported | Keplr, Leap, OKX, Compass | -| Solana wallets | ❌ Not yet | Requires adapter pattern | -| Custom signers | ✅ Supported | Turnkey, Privy, etc. (local mode) | -| Direct mode | ✅ Implemented | Custom UI with wallet selection | -| Auto mode | ✅ Implemented | Automatic wallet detection | -| Session persistence | ❌ Planned | Restore on page refresh | -| Generic interface | ✅ Implemented | Add any Ethereum/Cosmos wallet | - -### Key Differences - -**Dashboard vs xion.js**: -- Dashboard: Monolithic components with UI -- xion.js: Composable hooks without UI (more flexible) - -**Benefits of xion.js**: -1. ✅ Reusable across any app -2. ✅ Fully configurable (treasury, RPC, fees) -3. ✅ Testable hooks -4. ✅ Type-safe -5. ✅ Maintainable package structure -6. ✅ Flexible - build custom UI on top - -### Next Steps - -**Immediate**: -1. Implement session persistence for direct mode -2. Create UI component library (@burnt-labs/ui) -3. Add session management utilities - -**Future**: -1. Implement wallet adapter pattern -2. Add Solana/Polkadot support -3. Create pre-built adapter packages -4. Community adapter registry - ---- - -## References - -- [Solana Wallet Adapter](https://github.com/solana-labs/wallet-adapter) -- [WalletConnect](https://docs.walletconnect.com/) -- [RainbowKit](https://www.rainbowkit.com/) -- [Cosmos Kit](https://github.com/cosmology-tech/cosmos-kit) -- [Turnkey SDK](https://www.turnkey.com/docs) - -## Related Documentation - -- Demo app: `/apps/demo-app/` -- Package source: `/packages/abstraxion/` -- Account management: `/packages/account-management/` -- Signers: `/packages/signers/` - ---- - -## Changelog: Changes from Main Branch - -> **Summary**: 65 files changed, 15,093 insertions(+), 12,081 deletions(-) - -### New Packages Created - -#### 1. `@burnt-labs/account-management` ✅ -**Purpose**: Shared utilities for smart account management, grants, and indexer strategies - -**New Files**: -- `src/authenticators/` - Authenticator utilities and JWT handling - - `utils.ts` - Authenticator type detection, pubkey extraction - - `jwt.ts` - JWT-based authentication - - `authenticator-utils.test.ts` - Test coverage -- `src/grants/` - Grant message building and treasury integration - - `build-grant-messages.ts` - Unified grant message builder - - `authz.ts` - Authorization grants - - `feegrant.ts` - Fee grant utilities - - `treasury.ts` - Treasury grant generation - - `query-treasury-contract.ts` - Treasury contract querying - - `format-permissions.ts` - Permission formatting -- `src/indexer/` - Indexer strategies for account lookup - - `numia-strategy.ts` - Numia indexer implementation -- `src/types/` - TypeScript type definitions - - `authenticator.ts`, `grants.ts`, `indexer.ts`, `treasury.ts` - -**Status**: ✅ Complete and working - ---- - -#### 2. `@burnt-labs/wallet-connectors` ❌ REMOVED -**Status**: Created then deleted - not needed - -**Why removed**: -- Ethereum utilities were small enough to inline into `useWalletAuth.ts` -- Cosmos wallet logic is now part of generic `connectWallet()` method -- Only exported types (`WalletConnectionInfo`) which were moved to `useWalletAuth.ts` - -**Final outcome**: All wallet connection logic is now in `packages/abstraxion/src/hooks/useWalletAuth.ts` - ---- - -### Modified Packages - -#### `@burnt-labs/abstraxion` - -**New Files**: -- ✅ `src/hooks/useWalletAuth.ts` (515 lines) - - Generic wallet connection method - - Ethereum wallet utilities (inlined) - - Cosmos wallet connection (inline) - - Custom signer support - - Smart account lookup and creation - - Session management integration - -- ✅ `src/hooks/useGrantsFlow.ts` (275 lines) - - Migrated from dashboard grant flow - - Treasury query integration - - Grant message building - - Transaction signing with wallet authenticators - - Fee granter support - -- ✅ `src/utils/classname-util.ts` (7 lines) - - Simple utility for className merging - - Temporary (can be deleted if not needed) - -**Modified Files**: -- ✅ `src/components/Abstraxion/index.tsx` - - Added `GenericWalletConfig` interface - - Added `SigningMethod` type: `'cosmos' | 'ethereum' | 'ed25519'` - - Added `CustomSigner` interface for local mode - - Removed built-in modal for direct mode - - Updated exports - -- ✅ `src/components/AbstraxionContext/index.tsx` - - Added direct mode support - - Added local mode support - - Added wallet selection strategies (auto/custom) - - Integrated `useWalletAuth` hook - - Integrated `useGrantsFlow` hook - - Auto-close modal on connection - -- ✅ `src/hooks/index.ts` - - Exported `useWalletAuth` and `useGrantsFlow` - -- ✅ `src/index.ts` - - Exported new types: `GenericWalletConfig`, `SigningMethod`, `CustomSigner`, `WalletConnectionMethods` - -- ✅ `package.json` - - Removed `@burnt-labs/wallet-connectors` dependency - - Added `@burnt-labs/account-management` dependency - -**Deleted Files**: -- ❌ `utils/queries.ts` - Replaced by account-management package -- ❌ Entire `src/components/WalletSelect/` directory - No built-in modal for direct mode - ---- - -#### `@burnt-labs/signers` - -**New Files**: -- ✅ `src/crypto/` - Crypto utilities for account creation - - `address.ts` - Address generation - - `messages.ts` - Message building - - `prepare.ts` - Signature preparation - - `salt.ts` - Salt generation -- ✅ `src/signers/passkey-signer.ts` - WebAuthn/Passkey support -- ✅ `src/signers/utils/webauthn-utils.ts` - WebAuthn utilities -- ✅ `src/types/generated/abstractaccount/v1/feegrant.ts` - Fee grant types - -**Modified Files**: -- ✅ `src/index.ts` - Updated exports -- ✅ `src/interfaces/AASigner.ts` - Interface updates -- ✅ `src/signers/direct-signer.ts` - Enhanced functionality -- ✅ `src/signers/eth-signer.ts` - Enhanced functionality -- ✅ `src/signers/jwt-signer.ts` - Enhanced functionality -- ✅ `src/signers/utils/index.ts` - Utility updates - -**Deleted Files**: -- ❌ `src/interfaces/fragments.ts` - Consolidated elsewhere -- ❌ `src/interfaces/queries.ts` - Moved to account-management - ---- - -### Demo App Updates - -**New Files**: -- ✅ `src/app/direct-mode/layout.tsx` - Direct mode demo configuration -- ✅ `src/app/direct-mode/page.tsx` - Direct mode demo UI -- ✅ `src/components/WalletModal.tsx` - Custom wallet modal example -- ✅ `src/components/icons/` - Wallet logo components - - `KeplrLogo.tsx`, `LeapLogo.tsx`, `MetamaskLogo.tsx`, `OKXLogo.tsx` - -**Modified Files**: -- ✅ `src/app/layout.tsx` - Added direct mode route -- ✅ `src/app/page.tsx` - Added direct mode link - ---- - -## What Still Needs Work - -### Critical (Blocking) - -#### 1. Session Persistence on Page Refresh ⚠️ -**Status**: Not implemented for direct/local modes - -**What's needed**: -```typescript -// In AbstraxionContext, add on mount: -useEffect(() => { - if (walletAuthMode === 'direct' || walletAuthMode === 'local') { - // Check localStorage for session - const hasSession = abstraxionAuth.hasSession(); - if (hasSession) { - // Verify grants still exist - const isValid = await abstraxionAuth.authenticate(rpcUrl, smartAccountAddress); - if (isValid) { - // Restore connected state - setAbstraxionAccount(/* ... */); - } - } - } -}, []); -``` - -**Files to modify**: -- `packages/abstraxion/src/components/AbstraxionContext/index.tsx` -- Possibly create `packages/abstraxion-core/src/session.ts` utilities - ---- - -### Cleanup Tasks - -#### 1. Remove Temporary Utilities -- ❌ `packages/abstraxion/src/utils/classname-util.ts` - Not needed if WalletSelect is deleted - -**Action**: Delete file if confirmed unused - ---- - -#### 2. Verify Build System -**Current Status**: Bash commands failing during testing - -**What's needed**: -- Verify `pnpm install` works correctly -- Verify all packages build: `pnpm -r build` -- Run tests: `pnpm -r test` - -**Files affected**: Build configuration across all packages - ---- - -#### 3. Update Package Dependencies -**Issue**: Removed `@burnt-labs/wallet-connectors` but may have orphaned dependencies - -**Action**: -```bash -pnpm install # Update lockfile -pnpm -r build # Verify all builds -``` - ---- - -### Future Enhancements - -#### 1. Session Management Utilities -**Proposal**: Create `packages/abstraxion-core/src/session.ts` - -**Functions needed**: -```typescript -export function hasActiveSession(): boolean; -export function getSessionKeypair(): Promise; -export function getSessionGranter(): string | null; -export function clearSession(): void; -export function verifySessionGrants(rpcUrl: string): Promise; -``` - -**Benefits**: -- Shared by abstraxion and dashboard -- Easier to test -- Cleaner session logic - ---- - -#### 2. UI Component Library -**Proposal**: Create `@burnt-labs/ui` package - -**Components needed**: -- `WalletSelectorModal` - Reusable wallet selection UI -- `GrantsProgressModal` - Progress indicator for grant creation -- `ConnectButton` - Pre-styled connect button -- Wallet logos as React components - -**Benefits**: -- Dashboard can use same UI -- Consistent branding -- Easier for developers to build custom UIs - ---- - -#### 3. Wallet Adapter Implementation -**Status**: Designed, not implemented - -**See**: "Future Roadmap > Wallet Adapter Pattern" section above - -**Priority**: Medium (after session persistence) - ---- - -## Testing Checklist - -### ✅ Completed -- [x] Generic wallet connection (Ethereum + Cosmos) -- [x] Smart account lookup via Numia indexer -- [x] Smart account creation via AA API -- [x] Treasury grant generation -- [x] Grant transaction signing -- [x] Fee granter support -- [x] Custom modal example -- [x] Auto-close modal on connection -- [x] Direct mode basic flow -- [x] Local mode with custom signers - -### ❌ Not Tested -- [ ] Session persistence on page refresh -- [ ] Session restoration from localStorage -- [ ] Grant expiration handling -- [ ] Multiple authenticators per account -- [ ] Wallet disconnection flow -- [ ] Error recovery (failed transactions, rejected signatures) -- [ ] Network switching (testnet <-> mainnet) - -### 🔄 Needs Verification -- [ ] Build system working end-to-end -- [ ] All packages publish correctly -- [ ] No orphaned dependencies -- [ ] TypeScript types export correctly -- [ ] Demo app runs without errors - ---- - -## Migration Checklist for Dashboard - -### Phase 1: Use Shared Packages -- [ ] Replace local `NumiaIndexerStrategy` with `@burnt-labs/account-management` -- [ ] Replace grant utilities with `@burnt-labs/account-management` -- [ ] Test that existing dashboard flows still work - -### Phase 2: Use Abstraxion Hooks -- [ ] Replace `handleExternalWalletAALoginOrCreate` with `useWalletAuth` -- [ ] Replace `grantTreasuryPermissions` with `useGrantsFlow` -- [ ] Test wallet connection and grant creation - -### Phase 3: Full Migration -- [ ] Use `AbstraxionProvider` in dashboard -- [ ] Remove custom wallet connection code -- [ ] Remove custom grant creation code -- [ ] Remove local indexer hooks -- [ ] Update UI to work with abstraxion context - -### Files Dashboard Can Delete (After Migration) -1. `src/hooks/useWalletAccountCreation.ts` -2. `src/hooks/useWalletAccountPrepare.ts` -3. `src/components/AbstraxionGrant/generateContractGrant.ts` -4. `src/components/AbstraxionGrant/generateBankGrant.ts` -5. `src/components/AbstraxionGrant/generateStakeAndGovGrant.ts` -6. `src/utils/query-treasury-contract.ts` -7. `src/indexer-strategies/numia-indexer-strategy.ts` (use from account-management) -8. `src/hooks/useNumiaSmartAccounts.ts` (eventually) -9. `src/hooks/baseSmartAccount.ts` (eventually) - ---- - -## Known Issues - -### 1. Build System -**Issue**: Bash commands timing out during verification - -**Workaround**: Run builds manually: -```bash -cd packages/abstraxion && npm run build -cd apps/demo-app && npm run build -``` - -### 2. Cosmos Wallet Naming -**Issue**: Used `secp256k1` naming initially, should be `cosmos` - -**Status**: ✅ Fixed - renamed to `cosmos` throughout codebase - -### 3. Wallet-Connectors Package -**Issue**: Created package, then realized it wasn't needed - -**Status**: ✅ Fixed - package deleted, utilities inlined - ---- - -## Summary of Key Decisions - -### Architecture Decisions -1. ✅ **No built-in modal for direct mode** - Developers provide custom UI -2. ✅ **Generic wallet interface** - Add any wallet with name + windowKey + signingMethod -3. ✅ **Inlined utilities** - Small Ethereum utilities don't need separate package -4. ✅ **Shared account-management package** - Treasury, grants, indexer logic shared -5. ✅ **Ecosystem-specific naming** - `cosmos` and `ethereum` instead of `secp256k1` - -### Breaking Changes from Main -1. Direct mode requires custom modal (no built-in WalletSelect) -2. SigningMethod changed from `secp256k1` to `cosmos` -3. Removed `@burnt-labs/wallet-connectors` package -4. New required props: `walletAuth.wallets`, `walletAuth.onWalletSelectionRequired` - -### Non-Breaking Additions -1. New hooks: `useWalletAuth`, `useGrantsFlow` -2. New mode: `local` for custom signers -3. New types: `GenericWalletConfig`, `CustomSigner`, `WalletConnectionMethods` -4. New package: `@burnt-labs/account-management` diff --git a/apps/demo-app/src/app/direct-mode/layout.tsx b/apps/demo-app/src/app/direct-mode/layout.tsx index 658afe2a..a267faeb 100644 --- a/apps/demo-app/src/app/direct-mode/layout.tsx +++ b/apps/demo-app/src/app/direct-mode/layout.tsx @@ -22,34 +22,49 @@ export default function DirectModeLayout({ chainId: "xion-testnet-2", // REQUIRED: RPC URL for blockchain connection - rpcUrl: process.env.NEXT_PUBLIC_RPC_URL || "https://rpc.xion-testnet-2.burnt.com:443", + rpcUrl: process.env.NEXT_PUBLIC_RPC_URL!, // REQUIRED: REST API endpoint - restUrl: process.env.NEXT_PUBLIC_REST_URL || "https://api.xion-testnet-2.burnt.com", + restUrl: process.env.NEXT_PUBLIC_REST_URL!, // REQUIRED: Gas price - gasPrice: "0.001uxion", + gasPrice: process.env.NEXT_PUBLIC_GAS_PRICE || "0.001uxion", // Treasury contract address (optional - for dynamic grant configs) treasury: process.env.NEXT_PUBLIC_TREASURY_ADDRESS, // Fee granter address (optional - pays transaction fees for grant creation) - // Must match the FEE_GRANTER_ADDRESS used by your AA API - feeGranter: - process.env.NEXT_PUBLIC_FEE_GRANTER_ADDRESS || - "xion10y5pzqs0jn89zpm6va625v6xzsqjkm293efwq8", + feeGranter: process.env.NEXT_PUBLIC_FEE_GRANTER_ADDRESS, // Enable direct mode for in-app wallet connections walletAuth: { mode: "direct" as const, // Point to local AA API for development - aaApiUrl: "http://localhost:8787", + aaApiUrl: process.env.NEXT_PUBLIC_AA_API_URL, + + // Indexer configuration for account lookup (optional but recommended) + ...(process.env.NEXT_PUBLIC_INDEXER_URL && { + indexer: { + url: process.env.NEXT_PUBLIC_INDEXER_URL, + authToken: process.env.NEXT_PUBLIC_INDEXER_TOKEN, + }, + }), + + // Local configuration for RPC fallback (required for direct chain queries) + ...(process.env.NEXT_PUBLIC_CHECKSUM && process.env.NEXT_PUBLIC_FEE_GRANTER_ADDRESS && { + localConfig: { + codeId: Number(process.env.NEXT_PUBLIC_CODE_ID) || 1, + checksum: process.env.NEXT_PUBLIC_CHECKSUM, + feeGranter: process.env.NEXT_PUBLIC_FEE_GRANTER_ADDRESS, + addressPrefix: process.env.NEXT_PUBLIC_ADDRESS_PREFIX || "xion", + }, + }), // Use custom strategy to show our custom wallet modal walletSelectionStrategy: "custom" as const, - // Define wallets to support (optional - defaults to MetaMask + Keplr for auto mode) + // Define wallets to support in the custom modal // You can add any Ethereum or Cosmos wallet by specifying its window key! wallets: [ { name: "MetaMask", windowKey: "ethereum", signingMethod: "ethereum" }, diff --git a/apps/demo-app/src/app/direct-mode/page.tsx b/apps/demo-app/src/app/direct-mode/page.tsx index 75e3ceb8..60d156d6 100644 --- a/apps/demo-app/src/app/direct-mode/page.tsx +++ b/apps/demo-app/src/app/direct-mode/page.tsx @@ -10,7 +10,14 @@ import "@burnt-labs/abstraxion/dist/index.css"; import Link from "next/link"; export default function DirectModePage(): JSX.Element { - const { data: account, login } = useAbstraxionAccount(); + const { + data: account, + login, + isConnected, + isConnecting, + isInitializing, + isLoading + } = useAbstraxionAccount(); const { client, logout } = useAbstraxionSigningClient(); // Send transaction state @@ -54,6 +61,40 @@ export default function DirectModePage(): JSX.Element { return (
+ {/* Initialization Loading Overlay */} + {isInitializing && ( +
+
+
+
+
+
+
+

Initializing

+

+ Checking for existing session... +

+
+
+ )} + + {/* Wallet Connection Loading Overlay */} + {isConnecting && !isInitializing && ( +
+
+
+
+
+
+
+

Connecting Wallet

+

+ Please approve the connection in your wallet +

+
+
+ )} +

Direct Mode Abstraxion Example

@@ -65,8 +106,22 @@ export default function DirectModePage(): JSX.Element {
{!account.bech32Address && ( - )} diff --git a/apps/demo-app/src/app/layout.tsx b/apps/demo-app/src/app/layout.tsx index 20a383fe..967fba5e 100644 --- a/apps/demo-app/src/app/layout.tsx +++ b/apps/demo-app/src/app/layout.tsx @@ -11,7 +11,7 @@ const treasuryConfig = { treasury: process.env.NEXT_PUBLIC_TREASURY_ADDRESS, rpcUrl: process.env.NEXT_PUBLIC_RPC_URL || "https://rpc.xion-testnet-2.burnt.com:443", restUrl: process.env.NEXT_PUBLIC_REST_URL || "https://api.xion-testnet-2.burnt.com", - gasPrice: "0.001uxion", + gasPrice: process.env.NEXT_PUBLIC_GAS_PRICE || "0.001uxion", }; export default function RootLayout({ diff --git a/packages/abstraxion/src/components/Abstraxion/index.tsx b/packages/abstraxion/src/components/Abstraxion/index.tsx index 1abdb056..0550e0aa 100644 --- a/packages/abstraxion/src/components/Abstraxion/index.tsx +++ b/packages/abstraxion/src/components/Abstraxion/index.tsx @@ -142,8 +142,8 @@ export interface WalletAuthConfig { /** Indexer configuration for querying existing accounts */ indexer?: { - url?: string; - authToken?: string; + url: string; + authToken: string; }; /** Custom signer (Turnkey, Privy, etc.) */ @@ -154,8 +154,8 @@ export interface WalletAuthConfig { codeId: number; checksum: string; feeGranter: string; + addressPrefix: string; workerAddress?: string; - addressPrefix?: string; }; /** diff --git a/packages/abstraxion/src/components/AbstraxionContext/index.tsx b/packages/abstraxion/src/components/AbstraxionContext/index.tsx index d0333577..563139c6 100644 --- a/packages/abstraxion/src/components/AbstraxionContext/index.tsx +++ b/packages/abstraxion/src/components/AbstraxionContext/index.tsx @@ -324,6 +324,7 @@ export function AbstraxionContextProvider({ } async function restoreDirectModeSession() { + console.log('[AbstraxionContext] Checking for existing session keys in direct mode...'); try { // Check if session keypair exists const storedKeypair = await abstraxionAuth.getLocalKeypair(); @@ -331,22 +332,31 @@ export function AbstraxionContextProvider({ // No session to restore - this is normal on first visit if (!storedKeypair || !storedGranter) { + console.log('[AbstraxionContext] No existing session found (first visit or logged out)'); + setIsInitializing(false); return; } + console.log('[AbstraxionContext] Found stored session, verifying grants on-chain...'); + console.log('[AbstraxionContext] → Stored granter address:', storedGranter); + // Verify grants still exist on-chain via authenticate await abstraxionAuth.authenticate(); // If we get here, grants are valid + console.log('[AbstraxionContext] ✅ Session restored successfully!'); setAbstraxionAccount(storedKeypair); setGranterAddress(storedGranter); setIsConnected(true); + setIsInitializing(false); } catch (error) { // Session expired or invalid - clear it silently + console.log('[AbstraxionContext] ⚠️ Session expired or invalid, clearing stored session'); localStorage.removeItem('xion-authz-granter-account'); localStorage.removeItem('xion-authz-temp-account'); localStorage.removeItem('loginType'); localStorage.removeItem('loginAuthenticator'); + setIsInitializing(false); } } diff --git a/packages/abstraxion/src/hooks/useGrantsFlow.ts b/packages/abstraxion/src/hooks/useGrantsFlow.ts index 85c1c6a5..65759b4e 100644 --- a/packages/abstraxion/src/hooks/useGrantsFlow.ts +++ b/packages/abstraxion/src/hooks/useGrantsFlow.ts @@ -7,7 +7,10 @@ import { useState, useCallback } from "react"; import { GasPrice } from "@cosmjs/stargate"; import { buildGrantMessages, - generateTreasuryGrants, + DirectQueryTreasuryStrategy, + CompositeTreasuryStrategy, + DaoDaoTreasuryStrategy, + generateTreasuryGrants as generateTreasuryGrantMessages, } from "@burnt-labs/account-management"; import { AADirectSigner, AAEthSigner, AAClient } from "@burnt-labs/signers"; import { abstraxionAuth } from "../components/Abstraxion"; @@ -36,6 +39,7 @@ interface UseGrantsFlowProps { stake?: boolean; treasury?: string; feeGranter?: string; // Address that will pay transaction fees + daodaoIndexerUrl?: string; // Optional DaoDao indexer URL for fast treasury queries } interface GrantsFlowState { @@ -48,6 +52,50 @@ interface GrantsFlowState { ) => Promise; } +/** + * Generate grant messages from treasury contract using composite strategy + * Tries DaoDao indexer first, falls back to direct RPC query + */ +async function generateTreasuryGrants( + treasuryAddress: string, + client: any, // CosmWasmClient or AAClient + granter: string, + grantee: string, + daodaoIndexerUrl?: string, +): Promise { + // Create composite treasury strategy with fallback chain + const strategies = []; + + // Add DaoDao indexer strategy if URL provided (fast) + if (daodaoIndexerUrl) { + strategies.push(new DaoDaoTreasuryStrategy({ + indexerUrl: daodaoIndexerUrl, + })); + } + + // Always add direct query strategy as fallback (reliable) + strategies.push(new DirectQueryTreasuryStrategy()); + + const treasuryStrategy = new CompositeTreasuryStrategy(...strategies); + + // Generate grant messages from treasury contract + // Default expiration: 3 months from now + const threeMonthsFromNow = BigInt( + Math.floor( + new Date(new Date().setMonth(new Date().getMonth() + 3)).getTime() / 1000, + ), + ); + + return generateTreasuryGrantMessages( + treasuryAddress, + client, + granter, + grantee, + treasuryStrategy, + threeMonthsFromNow, + ); +} + /** * Hook for creating grants after wallet connection * @@ -67,6 +115,7 @@ export function useGrantsFlow({ stake, treasury, feeGranter, + daodaoIndexerUrl, }: UseGrantsFlowProps): GrantsFlowState { const [isCreatingGrants, setIsCreatingGrants] = useState(false); const [grantsError, setGrantsError] = useState(null); @@ -101,6 +150,7 @@ export function useGrantsFlow({ queryClient, smartAccountAddress, granteeAddress, + daodaoIndexerUrl, ); needsDeployFeeGrant = true; // Treasury mode requires deploy_fee_grant @@ -110,6 +160,7 @@ export function useGrantsFlow({ } } + // TODO: Verify if this is the correct fallback approach // Fall back to manual grant building if treasury query failed or not configured if (grantMessages.length === 0) { const oneYearFromNow = BigInt(Math.floor(Date.now() / 1000) + 365 * 24 * 60 * 60); @@ -226,12 +277,19 @@ export function useGrantsFlow({ messagesToSign, 'Create grants for abstraxion', ); + + // Parse gas price from config (e.g., "0.001uxion" -> { amount: 0.001, denom: "uxion" }) + const gasPriceMatch = gasPrice.match(/^([\d.]+)(.+)$/); + if (!gasPriceMatch) { + throw new Error(`Invalid gas price format: ${gasPrice}. Expected format: "0.001uxion"`); + } + const gasPriceNum = parseFloat(gasPriceMatch[1]); + const denom = gasPriceMatch[2]; // Calculate fee based on simulated gas with generous buffer // Using higher multiplier to account for fee market fluctuations - const gasPriceNum = rpcUrl.includes('mainnet') ? 0.025 : 0.001; const calculatedFee = { - amount: [{ denom: 'uxion', amount: String(Math.ceil(simmedGas * gasPriceNum * 2)) }], // 2x buffer on amount + amount: [{ denom, amount: String(Math.ceil(simmedGas * gasPriceNum * 2)) }], // 2x buffer on amount gas: String(Math.ceil(simmedGas * 1.6)), // 60% buffer on gas limit }; @@ -265,7 +323,7 @@ export function useGrantsFlow({ } finally { setIsCreatingGrants(false); } - }, [rpcUrl, contracts, bank, stake, treasury]); + }, [rpcUrl, contracts, bank, stake, treasury, daodaoIndexerUrl]); return { isCreatingGrants, diff --git a/packages/abstraxion/src/hooks/useWalletAuth.ts b/packages/abstraxion/src/hooks/useWalletAuth.ts index 3a734d8c..e6c9da61 100644 --- a/packages/abstraxion/src/hooks/useWalletAuth.ts +++ b/packages/abstraxion/src/hooks/useWalletAuth.ts @@ -12,10 +12,13 @@ import { useState, useCallback } from "react"; import { Buffer } from "buffer"; -import { sha256 } from "@cosmjs/crypto"; -import { instantiate2Address } from "@cosmjs/cosmwasm-stargate"; -import { CosmWasmClient } from "@cosmjs/cosmwasm-stargate"; -import { NumiaIndexerStrategy, type Authenticator } from "@burnt-labs/account-management"; +import { + NumiaAccountStrategy, + EmptyAccountStrategy, + CompositeAccountStrategy, + RpcAccountStrategy, + type Authenticator, +} from "@burnt-labs/account-management"; import type { WalletAuthConfig } from "../components/Abstraxion"; /** @@ -118,14 +121,36 @@ export function useWalletAuth({ const [error, setError] = useState(null); // Default to testnet AA API URL (matching dashboard .env.testnet) - const aaApiUrl = config.aaApiUrl || ''; + const aaApiUrl = config.aaApiUrl; + + // Initialize composite account query strategy with proper fallback chain: + // 1. Try Numia indexer API (fast, requires indexer to be available) + // 2. Fallback to direct RPC query (slower but reliable, only needs RPC endpoint) + // 3. Final fallback to empty (creates new account) + const strategies = []; + + // Add indexer strategy if configured + if (config.indexer) { + console.log('[useWalletAuth] Using Numia indexer strategy:', config.indexer.url); + strategies.push(new NumiaAccountStrategy(config.indexer.url, config.indexer.authToken)); + } + + // Add RPC strategy if config is available (recommended for production) + if (config.localConfig) { + console.log('[useWalletAuth] Using RPC fallback strategy with checksum:', config.localConfig.checksum.slice(0, 10) + '...'); + strategies.push(new RpcAccountStrategy({ + rpcUrl, + checksum: config.localConfig.checksum, + creator: config.localConfig.feeGranter, + prefix: config.localConfig.addressPrefix, + codeId: config.localConfig.codeId, + })); + } - // Default indexer configuration (testnet Numia) - const indexerUrl = config.indexer?.url || ''; - const indexerToken = config.indexer?.authToken || ''; + // Always add empty strategy as final fallback + strategies.push(new EmptyAccountStrategy()); - // Initialize indexer strategy - const indexer = new NumiaIndexerStrategy(indexerUrl, indexerToken); + const accountStrategy = new CompositeAccountStrategy(...strategies); /** * Check if account exists by querying the indexer @@ -135,7 +160,7 @@ export function useWalletAuth({ authenticator: string, ): Promise<{ exists: boolean; accounts: any[] }> => { try { - const accounts = await indexer.fetchSmartAccounts(authenticator); + const accounts = await accountStrategy.fetchSmartAccounts(authenticator); return { exists: accounts.length > 0, @@ -148,7 +173,7 @@ export function useWalletAuth({ accounts: [], }; } - }, [indexer]); + }, [accountStrategy]); /** * Call AA API /prepare endpoint @@ -213,10 +238,17 @@ export function useWalletAuth({ setWalletAddress(ethAddress); // 2. Check if account already exists (authenticator is eth address for EthWallet) + console.log(`[useWalletAuth] Checking if account exists for authenticator: ${ethAddress}`); const { exists, accounts } = await checkAccountExistsByAuthenticator(ethAddress); if (exists && accounts.length > 0) { // Account already exists, use the first one + console.log(`[useWalletAuth] ✅ Found existing account on-chain: ${accounts[0].id}`); + console.log(`[useWalletAuth] Account details:`, { + smartAccount: accounts[0].id, + codeId: accounts[0].codeId, + authenticators: accounts[0].authenticators.length + }); const existingAccount = accounts[0]; setSmartAccountAddress(existingAccount.id); setCodeId(existingAccount.codeId); @@ -242,16 +274,21 @@ export function useWalletAuth({ } // 3. Account doesn't exist, create it + console.log(`[useWalletAuth] 🆕 No existing account found, creating new account via AA API`); + // Call backend prepare endpoint + console.log(`[useWalletAuth] → Calling AA API /prepare endpoint`); const { message_to_sign, salt, metadata } = await callPrepare({ wallet_type: 'EthWallet', address: ethAddress, }); // 4. Get user signature + console.log(`[useWalletAuth] → Requesting signature from wallet`); const signature = await signWithEthWallet(message_to_sign, ethAddress); // 5. Create account + console.log(`[useWalletAuth] → Calling AA API /create endpoint`); const result = await createWalletAccount({ wallet_type: 'EthWallet', address: ethAddress, @@ -260,6 +297,8 @@ export function useWalletAuth({ message: JSON.stringify(metadata), }); + console.log(`[useWalletAuth] ✅ Successfully created new account: ${result.account_address}`); + // 6. Store results setSmartAccountAddress(result.account_address); setCodeId(result.code_id); @@ -407,10 +446,17 @@ export function useWalletAuth({ const pubkeyBase64 = Buffer.from(pubkeyHex, 'hex').toString('base64'); // Check if account exists + console.log(`[useWalletAuth] Checking if account exists for authenticator (pubkey base64): ${pubkeyBase64.substring(0, 20)}...`); const { exists, accounts } = await checkAccountExistsByAuthenticator(pubkeyBase64); if (exists && accounts.length > 0) { // Account exists + console.log(`[useWalletAuth] ✅ Found existing account on-chain: ${accounts[0].id}`); + console.log(`[useWalletAuth] Account details:`, { + smartAccount: accounts[0].id, + codeId: accounts[0].codeId, + authenticators: accounts[0].authenticators.length + }); const existingAccount = accounts[0]; setSmartAccountAddress(existingAccount.id); setCodeId(existingAccount.codeId); @@ -436,12 +482,16 @@ export function useWalletAuth({ } // Create new account + console.log(`[useWalletAuth] 🆕 No existing account found, creating new account via AA API`); + + console.log(`[useWalletAuth] → Calling AA API /prepare endpoint`); const { message_to_sign, salt, metadata } = await callPrepare({ wallet_type: 'Secp256K1', pubkey: pubkeyHex, }); // Sign with wallet + console.log(`[useWalletAuth] → Requesting signature from ${walletConfig.name} wallet`); const response = await wallet.signArbitrary(chainId, cosmosWalletAddress, message_to_sign); if (!response || !response.signature) { throw new Error(`Failed to get signature from ${walletConfig.name}`); @@ -454,6 +504,7 @@ export function useWalletAuth({ const signatureBytes = Buffer.from(signatureBase64, 'base64'); const signatureHex = signatureBytes.toString('hex'); + console.log(`[useWalletAuth] → Calling AA API /create endpoint`); const result = await createWalletAccount({ wallet_type: 'Secp256K1', pubkey: pubkeyHex, @@ -462,6 +513,8 @@ export function useWalletAuth({ message: JSON.stringify(metadata), }); + console.log(`[useWalletAuth] ✅ Successfully created new account: ${result.account_address}`); + setSmartAccountAddress(result.account_address); setCodeId(result.code_id); diff --git a/packages/account-management/package.json b/packages/account-management/package.json index b1538481..77eccabe 100644 --- a/packages/account-management/package.json +++ b/packages/account-management/package.json @@ -15,6 +15,7 @@ "test": "vitest" }, "dependencies": { + "@burnt-labs/abstraxion-core": "workspace:*", "@burnt-labs/signers": "workspace:*", "@cosmjs/cosmwasm-stargate": "^0.36.0", "@cosmjs/proto-signing": "^0.36.0", diff --git a/packages/account-management/src/accounts/account-composite-strategy.ts b/packages/account-management/src/accounts/account-composite-strategy.ts new file mode 100644 index 00000000..08a67918 --- /dev/null +++ b/packages/account-management/src/accounts/account-composite-strategy.ts @@ -0,0 +1,68 @@ +/** + * Composite Indexer Strategy + * Tries multiple indexer strategies in order until one succeeds + * Implements the Strategy pattern with fallback behavior + */ + +import type { IndexerStrategy, SmartAccountWithCodeId } from "../types/indexer"; + +/** + * Composite Indexer Strategy + * Tries multiple indexer strategies in order, returning the first successful result + * + * Example usage (with proper fallback chain): + * ```typescript + * const strategy = new CompositeIndexerStrategy( + * new NumiaIndexerStrategy(url, token), // Try Numia indexer first (fast) + * new DirectChainIndexerStrategy({ // Fallback to direct chain query (slower but reliable) + * rpcUrl, + * checksum, + * creator, + * prefix, + * }), + * new EmptyIndexerStrategy(), // Final fallback: create new account + * ); + * ``` + */ +export class CompositeAccountStrategy implements IndexerStrategy { + private readonly strategies: IndexerStrategy[]; + + constructor(...strategies: IndexerStrategy[]) { + if (strategies.length === 0) { + throw new Error( + "CompositeAccountStrategy requires at least one strategy", + ); + } + this.strategies = strategies; + } + + async fetchSmartAccounts( + loginAuthenticator: string, + ): Promise { + console.log(`[CompositeIndexerStrategy] Trying ${this.strategies.length} strategies for authenticator: ${loginAuthenticator.substring(0, 20)}...`); + + for (let i = 0; i < this.strategies.length; i++) { + const strategy = this.strategies[i]; + const strategyName = strategy.constructor.name; + + try { + console.log(`[CompositeIndexerStrategy] Attempting strategy ${i + 1}/${this.strategies.length}: ${strategyName}`); + + const result = await strategy.fetchSmartAccounts(loginAuthenticator); + + if (result && result.length > 0) { + console.log(`[CompositeIndexerStrategy] ✅ Strategy ${strategyName} found ${result.length} account(s)`); + return result; + } + + console.log(`[CompositeIndexerStrategy] Strategy ${strategyName} returned empty, trying next...`); + } catch (error) { + console.warn(`[CompositeIndexerStrategy] Strategy ${strategyName} failed:`, error); + // Continue to next strategy + } + } + + console.log(`[CompositeIndexerStrategy] All strategies returned empty - no existing accounts found`); + return []; + } +} diff --git a/packages/account-management/src/accounts/account-empty-strategy.ts b/packages/account-management/src/accounts/account-empty-strategy.ts new file mode 100644 index 00000000..6a10ced5 --- /dev/null +++ b/packages/account-management/src/accounts/account-empty-strategy.ts @@ -0,0 +1,28 @@ +/** + * Empty Indexer Strategy + * Returns an empty array, indicating no existing accounts found + * This is the fallback strategy when no indexer is available + * + * When this strategy is used, the system will create a new smart account + * instead of trying to find an existing one. + */ + +import type { IndexerStrategy, SmartAccountWithCodeId } from "../types/indexer"; + +/** + * Empty Indexer Strategy + * Always returns an empty array (no accounts found) + * + * Use this as a fallback when: + * - No indexer is configured + * - Indexer is unavailable + * - You want to force creation of a new account + */ +export class EmptyAccountStrategy implements IndexerStrategy { + async fetchSmartAccounts( + loginAuthenticator: string, + ): Promise { + console.log(`[EmptyIndexerStrategy] No indexer available, returning empty array (will create new account)`); + return []; + } +} diff --git a/packages/account-management/src/indexer/numia-strategy.ts b/packages/account-management/src/accounts/account-numia-strategy.ts similarity index 97% rename from packages/account-management/src/indexer/numia-strategy.ts rename to packages/account-management/src/accounts/account-numia-strategy.ts index 3cdc9c87..713855c3 100644 --- a/packages/account-management/src/indexer/numia-strategy.ts +++ b/packages/account-management/src/accounts/account-numia-strategy.ts @@ -17,7 +17,7 @@ interface NumiaSmartAccountResp { authenticators: NumiaAuthenticatorResp[]; } -export class NumiaIndexerStrategy implements IndexerStrategy { +export class NumiaAccountStrategy implements IndexerStrategy { private baseURL: string; constructor( diff --git a/packages/account-management/src/accounts/account-rpc-strategy.ts b/packages/account-management/src/accounts/account-rpc-strategy.ts new file mode 100644 index 00000000..27c28f63 --- /dev/null +++ b/packages/account-management/src/accounts/account-rpc-strategy.ts @@ -0,0 +1,221 @@ +/** + * Direct Chain Indexer Strategy + * Queries the chain directly to find existing smart accounts + * This is a fallback when indexers are unavailable + * + * How it works: + * 1. Calculate predicted instantiate2 address from authenticator (using crypto utilities) + * 2. Check if contract exists at that address via RPC + * 3. If exists, query contract state for authenticators + * 4. Return account info + */ + +import { CosmWasmClient } from "@cosmjs/cosmwasm-stargate"; +import { calculateSalt, predictSmartAccountAddress } from "@burnt-labs/signers"; +import type { IndexerStrategy, SmartAccountWithCodeId } from "../types/indexer"; +import { Buffer } from "buffer"; + +export interface RpcAccountStrategyConfig { + /** RPC URL for querying the chain */ + rpcUrl: string; + /** Contract checksum (hex) for instantiate2 calculation */ + checksum: string; + /** Creator/fee granter address */ + creator: string; + /** Address prefix (e.g., "xion") */ + prefix: string; + /** Code ID of the smart account contract */ + codeId: number; +} + +/** + * Direct Chain Indexer Strategy + * Calculates predicted address and queries chain directly (no indexer needed) + * + * Example usage: + * ```typescript + * const strategy = new RpcAccountStrategy({ + * rpcUrl: "https://rpc.xion-testnet-1.burnt.com:443", + * checksum: "abc123...", + * creator: "xion1feeGranter...", + * prefix: "xion", + * codeId: 1, + * }); + * ``` + */ +export class RpcAccountStrategy implements IndexerStrategy { + private config: RpcAccountStrategyConfig; + + constructor(config: RpcAccountStrategyConfig) { + this.config = config; + } + + async fetchSmartAccounts( + loginAuthenticator: string, + ): Promise { + try { + console.log(`[RpcAccountStrategy] Querying chain for authenticator: ${loginAuthenticator.substring(0, 20)}...`); + + // 1. Determine wallet type explicitly from authenticator format + const walletType = this.getWalletTypeForSaltCalculation(loginAuthenticator); + console.log(`[RpcAccountStrategy] Detected wallet type: ${walletType}`); + + // 2. Calculate salt from authenticator (uses same logic as AA API) + const salt = calculateSalt(walletType, loginAuthenticator); + console.log(`[RpcAccountStrategy] Salt (hex): ${salt.slice(0, 20)}...`); + console.log(`[RpcAccountStrategy] Config - checksum: ${this.config.checksum.slice(0, 20)}..., creator: ${this.config.creator}, prefix: ${this.config.prefix}`); + + // 3. Predict smart account address using instantiate2 + const predictedAddress = predictSmartAccountAddress({ + checksum: this.config.checksum, + creator: this.config.creator, + salt, + prefix: this.config.prefix, + }); + + console.log(`[RpcAccountStrategy] Predicted address: ${predictedAddress}`); + + // 4. Connect to chain and query contract + console.log(`[RpcAccountStrategy] Connecting to RPC: ${this.config.rpcUrl}`); + const client = await CosmWasmClient.connect(this.config.rpcUrl); + console.log(`[RpcAccountStrategy] ✅ Connected to RPC`); + + // 5. Query authenticators directly (more reliable than getContract) + // getContract() can fail with protobuf errors on some contract types + console.log(`[RpcAccountStrategy] Querying authenticators at ${predictedAddress}...`); + const authenticators = await this.queryAuthenticators(client, predictedAddress, loginAuthenticator); + + if (!authenticators || authenticators.length === 0) { + // If query failed, contract likely doesn't exist (this is normal) + console.log(`[RpcAccountStrategy] No contract or authenticators found at ${predictedAddress}`); + return []; + } + + console.log(`[RpcAccountStrategy] ✅ Found contract with ${authenticators.length} authenticator(s)`); + + // 6. Return smart account with authenticators + // Use configured codeId (same as AA API and Dashboard) + return [{ + id: predictedAddress, + codeId: this.config.codeId, + authenticators: authenticators, + }]; + } catch (error) { + console.error("[RpcAccountStrategy] Failed to query chain:", error); + return []; + } + } + + /** + * Determine wallet type for salt calculation + * Only EthWallet and Secp256K1 are supported for salt calculation currently + */ + private getWalletTypeForSaltCalculation(authenticator: string): "EthWallet" | "Secp256K1" { + // JWT format: "aud.sub" - treat as Secp256K1 for salt calculation + if (authenticator.includes(".") && !authenticator.startsWith("0x")) { + return "Secp256K1"; + } + + // EthWallet format: 0x-prefixed or 40-character hex + if (authenticator.startsWith("0x") || /^[0-9a-fA-F]{40}$/i.test(authenticator)) { + return "EthWallet"; + } + + // Default to Secp256K1 for all other formats (pubkeys, passkeys, etc.) + return "Secp256K1"; + } + + /** + * Query authenticators from smart account contract + * + * Contract query schema: + * 1. Get authenticator IDs: {"authenticator_i_ds":{}} → [0, 1, 2, ...] + * 2. Get specific authenticator: {"authenticator_by_i_d":{"id":0}} → base64-encoded authenticator data + * + * Returns empty array if contract doesn't exist or query fails + */ + private async queryAuthenticators( + client: CosmWasmClient, + contractAddress: string, + loginAuthenticator: string, + ): Promise> { + try { + // Step 1: Query all authenticator IDs + const idsResponse = await client.queryContractSmart(contractAddress, { + authenticator_i_ds: {}, + }); + + if (!Array.isArray(idsResponse) || idsResponse.length === 0) { + console.log("[RpcAccountStrategy] No authenticator IDs found"); + return []; + } + + console.log(`[RpcAccountStrategy] Found ${idsResponse.length} authenticator ID(s): ${idsResponse.join(", ")}`); + + // Step 2: Query each authenticator by ID + const authenticators = await Promise.all( + idsResponse.map(async (id: number) => { + try { + const authResponse = await client.queryContractSmart(contractAddress, { + authenticator_by_i_d: { id }, + }); + + // Parse the authenticator data (it's base64-encoded JSON) + // Format: {"EthWallet":{"address":"0x..."}} or {"Secp256K1":{"pubkey":"..."}} + let authenticatorData: any; + let authenticatorString: string; + let authenticatorType: string; + + if (typeof authResponse === 'string') { + // Response is base64-encoded + const decoded = Buffer.from(authResponse, 'base64').toString('utf-8'); + authenticatorData = JSON.parse(decoded); + } else { + // Response is already JSON + authenticatorData = authResponse; + } + + // Extract authenticator string and type + if (authenticatorData.EthWallet) { + authenticatorString = authenticatorData.EthWallet.address; + authenticatorType = "EthWallet"; + } else if (authenticatorData.Secp256K1) { + authenticatorString = authenticatorData.Secp256K1.pubkey; + authenticatorType = "Secp256K1"; + } else if (authenticatorData.JWT) { + authenticatorString = authenticatorData.JWT.aud_and_sub; + authenticatorType = "JWT"; + } else if (authenticatorData.Passkey) { + authenticatorString = authenticatorData.Passkey.credential_id; + authenticatorType = "Passkey"; + } else { + console.log(`[RpcAccountStrategy] Unknown authenticator format for ID ${id}:`, authenticatorData); + return null; + } + + return { + id: `${contractAddress}-${id}`, + type: authenticatorType, + authenticator: authenticatorString, + authenticatorIndex: id, + }; + } catch (error: any) { + console.log(`[RpcAccountStrategy] Failed to query authenticator ${id}: ${error.message}`); + return null; + } + }) + ); + + // Filter out null results + const validAuthenticators = authenticators.filter((auth): auth is NonNullable => auth !== null); + + console.log(`[RpcAccountStrategy] Successfully queried ${validAuthenticators.length} authenticator(s)`); + return validAuthenticators; + } catch (error: any) { + // If the query fails, the contract likely doesn't exist + // This is normal for addresses that haven't been instantiated yet + console.log(`[RpcAccountStrategy] Failed to query authenticators: ${error.message || error}`); + return []; + } + } +} diff --git a/packages/account-management/src/accounts/index.ts b/packages/account-management/src/accounts/index.ts new file mode 100644 index 00000000..d0e780c8 --- /dev/null +++ b/packages/account-management/src/accounts/index.ts @@ -0,0 +1,15 @@ +/** + * Account query strategies for finding existing smart accounts + * + * Strategy types: + * - NumiaAccountStrategy: Queries Numia indexer API (fast, requires indexer) + * - RpcAccountStrategy: Queries chain directly via RPC (slower, only needs RPC) + * - EmptyAccountStrategy: Returns empty (forces new account creation) + * - CompositeAccountStrategy: Tries multiple strategies with fallback chain + */ + +// Account query strategies +export * from "./account-numia-strategy"; +export * from "./account-rpc-strategy"; +export * from "./account-empty-strategy"; +export * from "./account-composite-strategy"; diff --git a/packages/account-management/src/authenticators/index.ts b/packages/account-management/src/authenticators/index.ts index 31c9f5fb..bde04020 100644 --- a/packages/account-management/src/authenticators/index.ts +++ b/packages/account-management/src/authenticators/index.ts @@ -4,3 +4,4 @@ export * from "./utils"; export * from "./jwt"; +export * from "./type-detection"; diff --git a/packages/account-management/src/authenticators/type-detection.ts b/packages/account-management/src/authenticators/type-detection.ts new file mode 100644 index 00000000..f3ceccd7 --- /dev/null +++ b/packages/account-management/src/authenticators/type-detection.ts @@ -0,0 +1,98 @@ +/** + * Authenticator type detection utilities + * Explicitly identifies authenticator types based on format + */ + +/** + * All supported authenticator types in XION smart accounts + */ +export type AuthenticatorType = + | "EthWallet" // Ethereum wallets (MetaMask, Rainbow, etc.) + | "Secp256K1" // Cosmos wallets (Keplr, Leap, OKX, etc.) + | "Ed25519" // Ed25519 curve wallets (Solana, etc.) + | "JWT" // Social logins (Google, TikTok, etc.) + | "Passkey" // WebAuthn/Passkey + | "Sr25519"; // Sr25519 curve (Polkadot, etc.) + +/** + * Explicitly determine authenticator type from the authenticator string + * + * @param authenticator - The authenticator string (address, pubkey, JWT, etc.) + * @returns The authenticator type + * + * Format detection rules: + * - JWT: Contains a dot (aud.sub format) + * - EthWallet: Starts with 0x or is 40-char hex + * - Passkey: Starts with "passkey:" or contains WebAuthn credential format + * - Secp256K1/Ed25519/Sr25519: Base64-encoded pubkeys (need additional context) + */ +export function detectAuthenticatorType(authenticator: string): AuthenticatorType { + // JWT format: "aud.sub" (e.g., "google.com.user123") + if (authenticator.includes(".") && !authenticator.startsWith("0x")) { + return "JWT"; + } + + // EthWallet format: 0x-prefixed or 40-character hex + if (authenticator.startsWith("0x") || /^[0-9a-fA-F]{40}$/i.test(authenticator)) { + return "EthWallet"; + } + + // Passkey format: typically starts with "passkey:" or is a WebAuthn credential + if (authenticator.startsWith("passkey:") || authenticator.includes("webauthn")) { + return "Passkey"; + } + + // Default to Secp256K1 for base64-encoded pubkeys + // Note: Cannot distinguish between Secp256K1/Ed25519/Sr25519 from string alone + // These are all base64-encoded pubkeys of different lengths: + // - Secp256K1: 33 bytes (compressed) = 44 chars base64 + // - Ed25519: 32 bytes = 43-44 chars base64 + // - Sr25519: 32 bytes = 43-44 chars base64 + // Default to Secp256K1 as it's the most common in Cosmos ecosystem + return "Secp256K1"; +} + +/** + * Determine authenticator type with additional context + * + * @param authenticator - The authenticator string + * @param hint - Optional hint about the authenticator type (from contract query, etc.) + * @returns The authenticator type + */ +export function detectAuthenticatorTypeWithHint( + authenticator: string, + hint?: string, +): AuthenticatorType { + // If we have an explicit hint, use it + if (hint) { + const normalizedHint = hint.toLowerCase(); + if (normalizedHint.includes("ethwallet")) return "EthWallet"; + if (normalizedHint.includes("secp256k1")) return "Secp256K1"; + if (normalizedHint.includes("ed25519")) return "Ed25519"; + if (normalizedHint.includes("sr25519")) return "Sr25519"; + if (normalizedHint.includes("jwt")) return "JWT"; + if (normalizedHint.includes("passkey")) return "Passkey"; + } + + // Fall back to format detection + return detectAuthenticatorType(authenticator); +} + +/** + * Check if authenticator is a specific type + */ +export function isEthWallet(authenticator: string): boolean { + return detectAuthenticatorType(authenticator) === "EthWallet"; +} + +export function isJWT(authenticator: string): boolean { + return detectAuthenticatorType(authenticator) === "JWT"; +} + +export function isPasskey(authenticator: string): boolean { + return detectAuthenticatorType(authenticator) === "Passkey"; +} + +export function isSecp256k1(authenticator: string): boolean { + return detectAuthenticatorType(authenticator) === "Secp256K1"; +} diff --git a/packages/account-management/src/grants/generate-treasury-grants.ts b/packages/account-management/src/grants/generate-treasury-grants.ts new file mode 100644 index 00000000..e3709462 --- /dev/null +++ b/packages/account-management/src/grants/generate-treasury-grants.ts @@ -0,0 +1,116 @@ +/** + * Generate grant messages from treasury contract + * Builds MsgGrant messages directly from treasury authorization configs + * Based on dashboard's utils/generate-treasury-grants.ts + */ + +import { MsgGrant } from "cosmjs-types/cosmos/authz/v1beta1/tx"; +import { EncodeObject } from "@cosmjs/proto-signing"; +import type { GrantConfigByTypeUrl } from "../types/treasury"; +import type { TreasuryStrategy } from "../types/treasury"; + +/** + * Construct a single authz grant message from treasury grant config + * Uses the raw authorization value (base64-encoded protobuf) from the treasury + */ +function constructGrantMessage( + grantConfig: GrantConfigByTypeUrl, + granter: string, + grantee: string, + expiration: bigint, +): EncodeObject { + // Convert base64 authorization value to Uint8Array + const authorizationByteArray = new Uint8Array( + Buffer.from(grantConfig.authorization.value, "base64"), + ); + + const authorization = { + typeUrl: grantConfig.authorization.type_url, + value: authorizationByteArray, + }; + + return { + typeUrl: MsgGrant.typeUrl, + value: MsgGrant.fromPartial({ + grant: { + authorization, + expiration: { + seconds: expiration, + nanos: 0, + }, + }, + grantee, + granter, + }), + }; +} + +/** + * Generate authz grant messages from treasury contract using strategy + * + * @param contractAddress - The address for the deployed treasury contract instance + * @param client - Client to query RPC (must have queryContractSmart method) + * @param granter - The granter address (smart account) + * @param grantee - The grantee address (temp keypair or user wallet) + * @param strategy - Treasury strategy to use for fetching configs + * @param expiration - Grant expiration timestamp (default: 3 months from now) + * @returns Array of authz grant messages to pass into transaction + */ +export async function generateTreasuryGrants( + contractAddress: string, + client: any, // AAClient from @burnt-labs/signers + granter: string, + grantee: string, + strategy: TreasuryStrategy, + expiration?: bigint, +): Promise { + if (!contractAddress) { + throw new Error("Missing contract address"); + } + + if (!client) { + throw new Error("Missing client"); + } + + if (!granter) { + throw new Error("Missing granter address"); + } + + if (!grantee) { + throw new Error("Missing grantee address"); + } + + if (!strategy) { + throw new Error("Missing treasury strategy"); + } + + // Default expiration: 3 months from now + const expirationTime = expiration || BigInt( + Math.floor( + new Date(new Date().setMonth(new Date().getMonth() + 3)).getTime() / 1000, + ), + ); + + // Fetch treasury configuration using strategy + const treasuryConfig = await strategy.fetchTreasuryConfig( + contractAddress, + client, + ); + + if (!treasuryConfig) { + throw new Error( + "Something went wrong querying the treasury contract for grants", + ); + } + + if (!treasuryConfig.grantConfigs || treasuryConfig.grantConfigs.length === 0) { + throw new Error("No grant configs found in treasury contract"); + } + + // Build grant messages from raw authorization values + const grantMessages = treasuryConfig.grantConfigs.map((grantConfig) => { + return constructGrantMessage(grantConfig, granter, grantee, expirationTime); + }); + + return grantMessages; +} diff --git a/packages/account-management/src/grants/index.ts b/packages/account-management/src/grants/index.ts index 76a55419..8f86d045 100644 --- a/packages/account-management/src/grants/index.ts +++ b/packages/account-management/src/grants/index.ts @@ -1,12 +1,16 @@ /** * Grant management utilities - * */ +// Grant building and permissions export * from "./authz"; export * from "./feegrant"; export * from "./format-permissions"; export * from "./build-grant-messages"; export { queryTreasuryContractWithPermissions } from "./query-treasury-contract"; export type { TreasuryContractResponse } from "./query-treasury-contract"; +export { generateTreasuryGrants } from "./generate-treasury-grants"; export * from "./treasury"; + +// Treasury strategies +export * from "./strategies"; diff --git a/packages/account-management/src/grants/query-treasury-contract.ts b/packages/account-management/src/grants/query-treasury-contract.ts index 53b1d782..f6fba5ef 100644 --- a/packages/account-management/src/grants/query-treasury-contract.ts +++ b/packages/account-management/src/grants/query-treasury-contract.ts @@ -3,6 +3,7 @@ * Extracted from dashboard utils/query-treasury-contract.ts */ +import { decodeAuthorization } from "@burnt-labs/abstraxion-core"; import type { TreasuryStrategy } from "../types/treasury"; import type { PermissionDescription } from "./format-permissions"; import { generatePermissionDescriptions } from "./format-permissions"; @@ -16,22 +17,6 @@ export interface TreasuryContractResponse { }; } -/** - * Decodes an authorization from base64-encoded protobuf - * This is a placeholder - should import from abstraxion-core or implement here - */ -function decodeAuthorization( - typeUrl: string, - value: string, -): { type: string; data: any } { - // TODO: Implement proper decoding or import from abstraxion-core - // For now, return a basic structure - return { - type: typeUrl, - data: null, - }; -} - /** * Queries the DAPP treasury contract to parse and display requested permissions to end user * @param contractAddress - The address for the deployed treasury contract instance diff --git a/packages/account-management/src/grants/strategies/index.ts b/packages/account-management/src/grants/strategies/index.ts new file mode 100644 index 00000000..b6965d66 --- /dev/null +++ b/packages/account-management/src/grants/strategies/index.ts @@ -0,0 +1,12 @@ +/** + * Treasury strategies for querying treasury contract configurations + * + * Strategy types: + * - DaoDaoTreasuryStrategy: Queries DaoDao indexer API (fast, requires indexer) + * - DirectQueryTreasuryStrategy: Queries contract directly via RPC (slower, only needs RPC) + * - CompositeTreasuryStrategy: Tries multiple strategies with fallback chain + */ + +export * from "./treasury-daodao-strategy"; +export * from "./treasury-direct-query-strategy"; +export * from "./treasury-composite-strategy"; diff --git a/packages/account-management/src/grants/strategies/treasury-composite-strategy.ts b/packages/account-management/src/grants/strategies/treasury-composite-strategy.ts new file mode 100644 index 00000000..036743c2 --- /dev/null +++ b/packages/account-management/src/grants/strategies/treasury-composite-strategy.ts @@ -0,0 +1,68 @@ +/** + * Composite Treasury Strategy + * Tries multiple strategies in order until one succeeds + * Implements the Strategy pattern with fallback behavior + * + * Based on dashboard's src/treasury-strategies/composite-treasury-strategy.ts + */ + +import type { TreasuryStrategy, TreasuryConfig } from "../../types/treasury"; + +/** + * Composite Treasury Strategy + * Tries multiple treasury strategies in order, returning the first successful result + * + * Example usage: + * ```typescript + * const strategy = new CompositeTreasuryStrategy( + * new DaoDaoTreasuryStrategy(), // Try indexer first (fast) + * new DirectQueryTreasuryStrategy(), // Fallback to direct query (slower but reliable) + * ); + * ``` + */ +export class CompositeTreasuryStrategy implements TreasuryStrategy { + private readonly strategies: TreasuryStrategy[]; + + constructor(...strategies: TreasuryStrategy[]) { + if (strategies.length === 0) { + throw new Error( + "CompositeTreasuryStrategy requires at least one strategy", + ); + } + this.strategies = strategies; + } + + async fetchTreasuryConfig( + treasuryAddress: string, + client: any, // AAClient from @burnt-labs/signers + ): Promise { + console.log(`[CompositeTreasuryStrategy] Trying ${this.strategies.length} strategies for treasury: ${treasuryAddress}`); + + for (let i = 0; i < this.strategies.length; i++) { + const strategy = this.strategies[i]; + const strategyName = strategy.constructor.name; + + try { + console.log(`[CompositeTreasuryStrategy] Attempting strategy ${i + 1}/${this.strategies.length}: ${strategyName}`); + + const result = await strategy.fetchTreasuryConfig( + treasuryAddress, + client, + ); + + if (result) { + console.log(`[CompositeTreasuryStrategy] ✅ Strategy ${strategyName} succeeded`); + return result; + } + + console.log(`[CompositeTreasuryStrategy] Strategy ${strategyName} returned null, trying next...`); + } catch (error) { + console.warn(`[CompositeTreasuryStrategy] Strategy ${strategyName} failed:`, error); + // Continue to next strategy + } + } + + console.error(`[CompositeTreasuryStrategy] ❌ All ${this.strategies.length} strategies failed`); + return null; + } +} diff --git a/packages/account-management/src/grants/strategies/treasury-daodao-strategy.ts b/packages/account-management/src/grants/strategies/treasury-daodao-strategy.ts new file mode 100644 index 00000000..97a9ce14 --- /dev/null +++ b/packages/account-management/src/grants/strategies/treasury-daodao-strategy.ts @@ -0,0 +1,229 @@ +/** + * DaoDao Treasury Indexer Strategy + * Fetches treasury configurations from the DaoDao indexer API + * This is the fastest approach when the indexer is available + * + * How it works: + * 1. Queries DaoDao indexer API at /{chainId}/contract/{address}/xion/treasury/all + * 2. Transforms indexer response to standard TreasuryConfig format + * 3. Validates all data for security (URLs, structure) + * + * Based on dashboard's src/treasury-strategies/daodao-treasury-strategy.ts + */ + +import type { TreasuryStrategy, TreasuryConfig, GrantConfigByTypeUrl, TreasuryParams } from "../../types/treasury"; + +// Helper to validate URLs for security +function isUrlSafe(url?: string): boolean { + if (!url) return false; + + try { + const parsed = new URL(url); + // Only allow http and https protocols + return parsed.protocol === 'http:' || parsed.protocol === 'https:'; + } catch { + return false; + } +} + +// DaoDao indexer response formats +interface TreasuryIndexerGrantConfig { + authorization: { + type_url: string; + value: string; // base64 encoded + }; + description: string; + optional?: boolean; + allowance?: { + type_url: string; + value: string; + }; + maxDuration?: number; +} + +interface TreasuryIndexerAllResponse { + grantConfigs: { + [typeUrl: string]: TreasuryIndexerGrantConfig; + }; + params: { + icon_url?: string; + redirect_url?: string; + metadata?: string; + display_url?: string; + }; + feeConfig?: unknown; + admin?: string; + pendingAdmin?: string | null; + balances?: Record; +} + +export interface DaoDaoTreasuryStrategyConfig { + /** DaoDao indexer base URL (e.g., "https://daodaoindexer.burnt.com") */ + indexerUrl: string; + /** Request timeout in milliseconds (default: 30000) */ + timeout?: number; +} + +/** + * DaoDao Treasury Indexer Strategy + * Queries DaoDao indexer API for treasury configurations (fast, requires indexer) + * + * Example usage: + * ```typescript + * const strategy = new DaoDaoTreasuryStrategy({ + * indexerUrl: "https://daodaoindexer.burnt.com", + * }); + * const config = await strategy.fetchTreasuryConfig(treasuryAddress, client); + * ``` + */ +export class DaoDaoTreasuryStrategy implements TreasuryStrategy { + private config: DaoDaoTreasuryStrategyConfig; + + constructor(config: DaoDaoTreasuryStrategyConfig) { + this.config = { + timeout: 30000, // 30 seconds default + ...config, + }; + } + + async fetchTreasuryConfig( + treasuryAddress: string, + client: any, // AAClient from @burnt-labs/signers + ): Promise { + try { + console.log(`[DaoDaoTreasuryStrategy] Querying indexer for treasury: ${treasuryAddress}`); + + // Get chain ID from client + const chainId = await client.getChainId(); + + // Use the /all endpoint to get everything in one call + const indexerUrl = `${this.config.indexerUrl}/${chainId}/contract/${treasuryAddress}/xion/treasury/all`; + + // Add timeout to prevent hanging requests + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), this.config.timeout); + + try { + const response = await fetch(indexerUrl, { + signal: controller.signal, + }); + clearTimeout(timeoutId); + + if (!response.ok) { + throw new Error( + `DaoDao indexer returned ${response.status}: ${response.statusText}`, + ); + } + + const data = await response.json(); + const validatedData = this.validateAllResponse(data); + + // Transform grant configs from the response + const grantConfigs = this.transformAllResponseGrants( + validatedData.grantConfigs, + ); + + // Extract and validate params from the response + const params: TreasuryParams = { + display_url: isUrlSafe(validatedData.params.display_url) + ? validatedData.params.display_url || "" + : "", + redirect_url: isUrlSafe(validatedData.params.redirect_url) + ? validatedData.params.redirect_url || "" + : "", + icon_url: isUrlSafe(validatedData.params.icon_url) + ? validatedData.params.icon_url || "" + : "", + }; + + console.log(`[DaoDaoTreasuryStrategy] ✅ Successfully fetched treasury config`); + + return { + grantConfigs, + params, + }; + } catch (error) { + clearTimeout(timeoutId); + if (error instanceof Error && error.name === "AbortError") { + throw new Error( + `DaoDao indexer request timed out after ${this.config.timeout}ms`, + ); + } + throw error; + } + } catch (error) { + console.debug("[DaoDaoTreasuryStrategy] Failed to fetch treasury config:", error); + return null; + } + } + + /** + * Validates the /all endpoint response structure + */ + private validateAllResponse(data: unknown): TreasuryIndexerAllResponse { + if (!data || typeof data !== "object") { + throw new Error("Invalid indexer response: not an object"); + } + + const response = data as Record; + + // Validate the top-level structure + if (!response.grantConfigs || typeof response.grantConfigs !== "object") { + throw new Error("Invalid indexer response: missing grantConfigs"); + } + + if (!response.params || typeof response.params !== "object") { + throw new Error("Invalid indexer response: missing params"); + } + + // Validate each grant config + const grantConfigs = response.grantConfigs as Record; + for (const [typeUrl, config] of Object.entries(grantConfigs)) { + if (!config || typeof config !== "object") { + throw new Error(`Invalid grant config for ${typeUrl}`); + } + + const grantConfig = config as Record; + + // Check required fields + if ( + !grantConfig.authorization || + typeof grantConfig.authorization !== "object" + ) { + throw new Error(`Missing authorization for ${typeUrl}`); + } + + const auth = grantConfig.authorization as Record; + if (typeof auth.type_url !== "string" || typeof auth.value !== "string") { + throw new Error(`Invalid authorization format for ${typeUrl}`); + } + + if (typeof grantConfig.description !== "string") { + throw new Error(`Missing description for ${typeUrl}`); + } + } + + // We've validated the structure, so we can safely return it + return data as TreasuryIndexerAllResponse; + } + + /** + * Transform grant configs from /all response to standard format + */ + private transformAllResponseGrants( + grantConfigs: Record, + ): GrantConfigByTypeUrl[] { + const result: GrantConfigByTypeUrl[] = []; + + for (const config of Object.values(grantConfigs)) { + result.push({ + authorization: config.authorization, + description: config.description, + allowance: config.allowance || { type_url: "", value: "" }, + maxDuration: config.maxDuration, + }); + } + + return result; + } +} diff --git a/packages/account-management/src/grants/strategies/treasury-direct-query-strategy.ts b/packages/account-management/src/grants/strategies/treasury-direct-query-strategy.ts new file mode 100644 index 00000000..73737c60 --- /dev/null +++ b/packages/account-management/src/grants/strategies/treasury-direct-query-strategy.ts @@ -0,0 +1,117 @@ +/** + * Direct Query Treasury Strategy + * Fetches treasury configurations directly from the smart contract via RPC + * This is the fallback approach when indexers are unavailable + * + * Based on dashboard's src/treasury-strategies/direct-query-treasury-strategy.ts + */ + +import type { TreasuryStrategy, TreasuryConfig } from "../../types/treasury"; + +// Helper to validate URLs for security +function isUrlSafe(url: string): boolean { + if (!url) return false; + + try { + const parsed = new URL(url); + // Only allow http and https protocols + return parsed.protocol === 'http:' || parsed.protocol === 'https:'; + } catch { + return false; + } +} + +/** + * Direct Query Treasury Strategy + * Queries treasury contract directly via RPC (no indexer needed) + */ +export class DirectQueryTreasuryStrategy implements TreasuryStrategy { + async fetchTreasuryConfig( + treasuryAddress: string, + client: any, // AAClient from @burnt-labs/signers + ): Promise { + try { + console.log(`[DirectQueryTreasuryStrategy] Querying treasury contract: ${treasuryAddress}`); + + // Query all grant config type URLs + const queryTreasuryContractMsg = { + grant_config_type_urls: {}, + }; + + const queryAllTypeUrlsResponse = (await client.queryContractSmart( + treasuryAddress, + queryTreasuryContractMsg, + )) as string[]; + + if (!queryAllTypeUrlsResponse || queryAllTypeUrlsResponse.length === 0) { + console.debug("[DirectQueryTreasuryStrategy] No grant configs found in treasury contract"); + return null; + } + + console.log(`[DirectQueryTreasuryStrategy] Found ${queryAllTypeUrlsResponse.length} grant config type URLs`); + + // Query each grant config by type URL + const grantConfigs = await Promise.all( + queryAllTypeUrlsResponse.map(async (typeUrl) => { + const queryByMsg = { + grant_config_by_type_url: { + msg_type_url: typeUrl, + }, + }; + + const grantConfig = await client.queryContractSmart(treasuryAddress, queryByMsg); + + if (!grantConfig || !grantConfig.description) { + throw new Error(`Invalid grant config for type URL: ${typeUrl}`); + } + + return grantConfig; + }), + ); + + // Query params + const params = await this.fetchTreasuryParams(client, treasuryAddress); + + console.log(`[DirectQueryTreasuryStrategy] Successfully fetched treasury config`); + + return { + grantConfigs, + params, + }; + } catch (error) { + console.error("[DirectQueryTreasuryStrategy] Failed to fetch treasury config:", error); + return null; + } + } + + /** + * Fetch treasury params directly from contract + */ + private async fetchTreasuryParams( + client: any, + treasuryAddress: string, + ): Promise<{ display_url: string; redirect_url: string; icon_url: string }> { + try { + const queryParams = { params: {} }; + const params = await client.queryContractSmart( + treasuryAddress, + queryParams, + ); + + // Validate URLs for security + return { + display_url: isUrlSafe(params.display_url) ? params.display_url : "", + redirect_url: isUrlSafe(params.redirect_url) ? params.redirect_url : "", + icon_url: isUrlSafe(params.icon_url) ? params.icon_url : "", + }; + } catch (error) { + console.warn("[DirectQueryTreasuryStrategy] Error querying treasury params:", error); + // Return safe defaults + return { + display_url: "", + redirect_url: "", + icon_url: "", + }; + } + } +} diff --git a/packages/account-management/src/index.ts b/packages/account-management/src/index.ts index d02c3927..a653a454 100644 --- a/packages/account-management/src/index.ts +++ b/packages/account-management/src/index.ts @@ -4,25 +4,20 @@ * Smart account management utilities for XION blockchain * * This package provides utilities for: + * - Finding existing smart accounts (accounts/) * - Managing authenticators (add, remove, validate) - * - Fee grant validation - * - Authz grant generation - * - Treasury contract interaction - * - Smart account queries + * - Building grant messages (grants/) + * - Querying treasury contracts (grants/strategies/) */ // Authenticator utilities export * from "./authenticators"; -// Grant utilities +// Grant utilities (includes treasury strategies) export * from "./grants"; -// Query utilities -// TODO: queries were moved to dashboard - remove if not needed -// export * from "./queries"; - -// Indexer strategies -export * from "./indexer"; +// Account query strategies +export * from "./accounts"; // Types export * from "./types"; diff --git a/packages/account-management/src/indexer/index.ts b/packages/account-management/src/indexer/index.ts deleted file mode 100644 index afaeba32..00000000 --- a/packages/account-management/src/indexer/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Indexer strategies for querying smart accounts - */ - -export * from "./numia-strategy"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1d5235b1..034adc90 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,23 +1,24 @@ -lockfileVersion: "9.0" +lockfileVersion: '6.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false overrides: - "@types/react": ^18.2.47 - "@types/react-dom": ^18.2.18 + '@types/react': ^18.2.47 + '@types/react-dom': ^18.2.18 importers: + .: dependencies: - "@burnt-labs/tsconfig": + '@burnt-labs/tsconfig': specifier: workspace:* version: link:packages/tsconfig - "@changesets/changelog-github": + '@changesets/changelog-github': specifier: ^0.5.0 version: 0.5.1 - "@changesets/cli": + '@changesets/cli': specifier: ^2.27.1 version: 2.29.7 eslint: @@ -35,31 +36,31 @@ importers: apps/demo-app: dependencies: - "@burnt-labs/abstraxion": + '@burnt-labs/abstraxion': specifier: workspace:* version: link:../../packages/abstraxion - "@burnt-labs/abstraxion-core": + '@burnt-labs/abstraxion-core': specifier: workspace:* version: link:../../packages/abstraxion-core - "@burnt-labs/constants": + '@burnt-labs/constants': specifier: workspace:* version: link:../../packages/constants - "@burnt-labs/ui": + '@burnt-labs/ui': specifier: workspace:* version: link:../../packages/ui - "@cosmjs/amino": + '@cosmjs/amino': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/cosmwasm-stargate": + '@cosmjs/cosmwasm-stargate': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/crypto": + '@cosmjs/crypto': specifier: ^0.36.0 version: 0.36.0 - "@heroicons/react": + '@heroicons/react': specifier: ^2.1.4 version: 2.2.0(react@18.3.1) - "@noble/hashes": + '@noble/hashes': specifier: 1.8.0 version: 1.8.0 cosmjs-types: @@ -75,19 +76,19 @@ importers: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) devDependencies: - "@burnt-labs/eslint-config-custom": + '@burnt-labs/eslint-config-custom': specifier: workspace:* version: link:../../packages/eslint-config-custom - "@burnt-labs/tailwind-config": + '@burnt-labs/tailwind-config': specifier: workspace:* version: link:../../packages/tailwind-config - "@burnt-labs/tsconfig": + '@burnt-labs/tsconfig': specifier: workspace:* version: link:../../packages/tsconfig - "@next/eslint-plugin-next": + '@next/eslint-plugin-next': specifier: ^13.4.19 version: 13.5.11 - "@opennextjs/cloudflare": + '@opennextjs/cloudflare': specifier: ^1.0.4 version: 1.8.2(wrangler@4.37.1) '@types/node': @@ -120,17 +121,13 @@ importers: packages/abstraxion: dependencies: - "@burnt-labs/abstraxion-core": + '@burnt-labs/abstraxion-core': specifier: workspace:* version: link:../abstraxion-core -<<<<<<< HEAD - "@burnt-labs/constants": -======= '@burnt-labs/account-management': specifier: workspace:* version: link:../account-management '@burnt-labs/constants': ->>>>>>> 2181b3a (Dev status - Working demo app for wallet direct mode, packages still need a ton more cleanup, demi app needs through check on, need to make more general utillities around the signing behaviour, need to add ed25119 signing method, need to fix the window.... calling for wallets, persitency for sessions works but local signer method with turnkey is still funky.) specifier: workspace:* version: link:../constants '@burnt-labs/signers': @@ -142,28 +139,28 @@ importers: '@cosmjs/amino': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/cosmwasm-stargate": + '@cosmjs/cosmwasm-stargate': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/crypto": + '@cosmjs/crypto': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/encoding": + '@cosmjs/encoding': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/proto-signing": + '@cosmjs/proto-signing': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/stargate": + '@cosmjs/stargate': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/tendermint-rpc": + '@cosmjs/tendermint-rpc': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/utils": + '@cosmjs/utils': specifier: ^0.36.0 version: 0.36.0 - "@types/react-dom": + '@types/react-dom': specifier: ^18.2.18 version: 18.3.7(@types/react@18.3.24) buffer: @@ -176,16 +173,16 @@ importers: specifier: ^5.1.3 version: 5.10.0 devDependencies: - "@burnt-labs/eslint-config-custom": + '@burnt-labs/eslint-config-custom': specifier: workspace:* version: link:../eslint-config-custom - "@burnt-labs/tailwind-config": + '@burnt-labs/tailwind-config': specifier: workspace:* version: link:../tailwind-config - "@burnt-labs/tsconfig": + '@burnt-labs/tsconfig': specifier: workspace:* version: link:../tsconfig - "@testing-library/jest-dom": + '@testing-library/jest-dom': specifier: ^6.4.2 version: 6.8.0 '@testing-library/react': @@ -194,7 +191,7 @@ importers: '@types/jest': specifier: ^29.5.12 version: 29.5.14 - "@types/node": + '@types/node': specifier: ^20 version: 20.19.16 '@types/react': @@ -236,34 +233,34 @@ importers: packages/abstraxion-core: dependencies: - "@burnt-labs/constants": + '@burnt-labs/constants': specifier: workspace:* version: link:../constants - "@cosmjs/amino": + '@cosmjs/amino': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/cosmwasm-stargate": + '@cosmjs/cosmwasm-stargate': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/crypto": + '@cosmjs/crypto': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/encoding": + '@cosmjs/encoding': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/math": + '@cosmjs/math': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/proto-signing": + '@cosmjs/proto-signing': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/stargate": + '@cosmjs/stargate': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/tendermint-rpc": + '@cosmjs/tendermint-rpc': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/utils": + '@cosmjs/utils': specifier: ^0.36.0 version: 0.36.0 base64-js: @@ -282,7 +279,7 @@ importers: specifier: ^0.7.0 version: 0.7.17(react-native@0.76.7)(react@18.3.1) devDependencies: - "@babel/core": + '@babel/core': specifier: ^7.24.5 version: 7.28.4 '@babel/preset-env': @@ -294,16 +291,16 @@ importers: '@burnt-labs/eslint-config-custom': specifier: workspace:* version: link:../eslint-config-custom - "@burnt-labs/tailwind-config": + '@burnt-labs/tailwind-config': specifier: workspace:* version: link:../tailwind-config - "@burnt-labs/tsconfig": + '@burnt-labs/tsconfig': specifier: workspace:* version: link:../tsconfig - "@types/jest": + '@types/jest': specifier: ^29.5.12 version: 29.5.14 - "@types/node": + '@types/node': specifier: ^20 version: 20.19.16 '@types/text-encoding': @@ -339,19 +336,19 @@ importers: packages/abstraxion-react-native: dependencies: - "@burnt-labs/abstraxion-core": + '@burnt-labs/abstraxion-core': specifier: workspace:* version: link:../abstraxion-core - "@burnt-labs/constants": + '@burnt-labs/constants': specifier: workspace:* version: link:../constants - "@cosmjs/cosmwasm-stargate": + '@cosmjs/cosmwasm-stargate': specifier: ^0.36.0 version: 0.36.0 - "@cosmjs/stargate": + '@cosmjs/stargate': specifier: ^0.36.0 version: 0.36.0 - "@react-native-async-storage/async-storage": + '@react-native-async-storage/async-storage': specifier: 1.23.1 version: 1.23.1(react-native@0.76.7) expo-linking: @@ -370,16 +367,16 @@ importers: specifier: ^0.7.0 version: 0.7.17(react-native@0.76.7)(react@18.3.1) devDependencies: - "@burnt-labs/eslint-config-custom": + '@burnt-labs/eslint-config-custom': specifier: workspace:* version: link:../eslint-config-custom - "@burnt-labs/tsconfig": + '@burnt-labs/tsconfig': specifier: workspace:* version: link:../tsconfig - "@types/jest": + '@types/jest': specifier: ^29.5.3 version: 29.5.14 - "@types/react": + '@types/react': specifier: ^18.2.47 version: 18.3.24 '@types/react-native': @@ -409,6 +406,9 @@ importers: packages/account-management: dependencies: + '@burnt-labs/abstraxion-core': + specifier: workspace:* + version: link:../abstraxion-core '@burnt-labs/signers': specifier: workspace:* version: link:../signers @@ -464,15 +464,6 @@ importers: '@burnt-labs/tsconfig': specifier: workspace:* version: link:../tsconfig - '@types/node': - specifier: ^20 - version: 20.19.16 - eslint: - specifier: ^8.48.0 - version: 8.57.1 - prettier: - specifier: ^3.0.3 - version: 3.6.2 rimraf: specifier: ^5.0.5 version: 5.0.10 @@ -485,7 +476,7 @@ importers: packages/eslint-config-custom: devDependencies: - "@vercel/style-guide": + '@vercel/style-guide': specifier: ^5.1.0 version: 5.2.0(eslint@8.57.1)(prettier@3.6.2)(typescript@5.9.2) eslint-config-turbo: @@ -597,7 +588,7 @@ importers: packages/ui: dependencies: - "@radix-ui/react-dialog": + '@radix-ui/react-dialog': specifier: ^1.0.5 version: 1.1.15(@types/react-dom@18.3.7)(@types/react@18.3.24)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-popover': @@ -610,16 +601,16 @@ importers: specifier: ^18.2.18 version: 18.3.7(@types/react@18.3.24) devDependencies: - "@burnt-labs/eslint-config-custom": + '@burnt-labs/eslint-config-custom': specifier: workspace:* version: link:../eslint-config-custom - "@burnt-labs/tailwind-config": + '@burnt-labs/tailwind-config': specifier: workspace:* version: link:../tailwind-config - "@burnt-labs/tsconfig": + '@burnt-labs/tsconfig': specifier: workspace:* version: link:../tsconfig - "@types/react": + '@types/react': specifier: ^18.2.47 version: 18.3.24 autoprefixer: @@ -877,44 +868,44 @@ packages: resolution: {integrity: sha512-kISKhqN1k48TaMPbLgq9jj7mO2jvbJdhirvfu4JW3jhFhENnkY0oCwTPvR4Q6Ne2as6GFAMo2XZDZq4rxC7YDw==} engines: {node: '>=14.0.0'} dependencies: - "@aws-crypto/sha256-browser": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.398.0 - "@aws-sdk/credential-provider-node": 3.398.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.398.0 - "@aws-sdk/xml-builder": 3.310.0 - "@smithy/config-resolver": 2.2.0 - "@smithy/fetch-http-handler": 2.5.0 - "@smithy/hash-node": 2.2.0 - "@smithy/invalid-dependency": 2.2.0 - "@smithy/middleware-content-length": 2.2.0 - "@smithy/middleware-endpoint": 2.5.1 - "@smithy/middleware-retry": 2.3.1 - "@smithy/middleware-serde": 2.3.0 - "@smithy/middleware-stack": 2.2.0 - "@smithy/node-config-provider": 2.3.0 - "@smithy/node-http-handler": 2.5.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/smithy-client": 2.5.1 - "@smithy/types": 2.12.0 - "@smithy/url-parser": 2.2.0 - "@smithy/util-base64": 2.3.0 - "@smithy/util-body-length-browser": 2.2.0 - "@smithy/util-body-length-node": 2.3.0 - "@smithy/util-defaults-mode-browser": 2.2.1 - "@smithy/util-defaults-mode-node": 2.3.1 - "@smithy/util-retry": 2.2.0 - "@smithy/util-stream": 2.2.0 - "@smithy/util-utf8": 2.3.0 - "@smithy/util-waiter": 2.2.0 + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.398.0 + '@aws-sdk/credential-provider-node': 3.398.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@aws-sdk/xml-builder': 3.310.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-retry': 2.3.1 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.1 + '@smithy/util-defaults-mode-node': 2.3.1 + '@smithy/util-retry': 2.2.0 + '@smithy/util-stream': 2.2.0 + '@smithy/util-utf8': 2.3.0 + '@smithy/util-waiter': 2.2.0 fast-xml-parser: 4.2.5 tslib: 2.8.1 transitivePeerDependencies: @@ -1143,38 +1134,38 @@ packages: resolution: {integrity: sha512-CygL0jhfibw4kmWXG/3sfZMFNjcXo66XUuPC4BqZBk8Rj5vFoxp1vZeMkDLzTIk97Nvo5J5Bh+QnXKhub6AckQ==} engines: {node: '>=14.0.0'} dependencies: - "@aws-crypto/sha256-browser": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.398.0 - "@smithy/config-resolver": 2.2.0 - "@smithy/fetch-http-handler": 2.5.0 - "@smithy/hash-node": 2.2.0 - "@smithy/invalid-dependency": 2.2.0 - "@smithy/middleware-content-length": 2.2.0 - "@smithy/middleware-endpoint": 2.5.1 - "@smithy/middleware-retry": 2.3.1 - "@smithy/middleware-serde": 2.3.0 - "@smithy/middleware-stack": 2.2.0 - "@smithy/node-config-provider": 2.3.0 - "@smithy/node-http-handler": 2.5.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/smithy-client": 2.5.1 - "@smithy/types": 2.12.0 - "@smithy/url-parser": 2.2.0 - "@smithy/util-base64": 2.3.0 - "@smithy/util-body-length-browser": 2.2.0 - "@smithy/util-body-length-node": 2.3.0 - "@smithy/util-defaults-mode-browser": 2.2.1 - "@smithy/util-defaults-mode-node": 2.3.1 - "@smithy/util-retry": 2.2.0 - "@smithy/util-utf8": 2.3.0 + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-retry': 2.3.1 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.1 + '@smithy/util-defaults-mode-node': 2.3.1 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -1230,41 +1221,41 @@ packages: resolution: {integrity: sha512-/3Pa9wLMvBZipKraq3AtbmTfXW6q9kyvhwOno64f1Fz7kFb8ijQFMGoATS70B2pGEZTlxkUqJFWDiisT6Q6dFg==} engines: {node: '>=14.0.0'} dependencies: - "@aws-crypto/sha256-browser": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/credential-provider-node": 3.398.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-sdk-sts": 3.398.0 - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.398.0 - "@smithy/config-resolver": 2.2.0 - "@smithy/fetch-http-handler": 2.5.0 - "@smithy/hash-node": 2.2.0 - "@smithy/invalid-dependency": 2.2.0 - "@smithy/middleware-content-length": 2.2.0 - "@smithy/middleware-endpoint": 2.5.1 - "@smithy/middleware-retry": 2.3.1 - "@smithy/middleware-serde": 2.3.0 - "@smithy/middleware-stack": 2.2.0 - "@smithy/node-config-provider": 2.3.0 - "@smithy/node-http-handler": 2.5.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/smithy-client": 2.5.1 - "@smithy/types": 2.12.0 - "@smithy/url-parser": 2.2.0 - "@smithy/util-base64": 2.3.0 - "@smithy/util-body-length-browser": 2.2.0 - "@smithy/util-body-length-node": 2.3.0 - "@smithy/util-defaults-mode-browser": 2.2.1 - "@smithy/util-defaults-mode-node": 2.3.1 - "@smithy/util-retry": 2.2.0 - "@smithy/util-utf8": 2.3.0 + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/credential-provider-node': 3.398.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-sdk-sts': 3.398.0 + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-retry': 2.3.1 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.1 + '@smithy/util-defaults-mode-node': 2.3.1 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 fast-xml-parser: 4.2.5 tslib: 2.8.1 transitivePeerDependencies: @@ -1296,9 +1287,9 @@ packages: resolution: {integrity: sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ==} engines: {node: '>=14.0.0'} dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.2.0 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -1333,15 +1324,15 @@ packages: resolution: {integrity: sha512-AsK1lStK3nB9Cn6S6ODb1ktGh7SRejsNVQVKX3t5d3tgOaX+aX1Iwy8FzM/ZEN8uCloeRifUGIY9uQFygg5mSw==} engines: {node: '>=14.0.0'} dependencies: - "@aws-sdk/credential-provider-env": 3.398.0 - "@aws-sdk/credential-provider-process": 3.398.0 - "@aws-sdk/credential-provider-sso": 3.398.0 - "@aws-sdk/credential-provider-web-identity": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@smithy/credential-provider-imds": 2.3.0 - "@smithy/property-provider": 2.2.0 - "@smithy/shared-ini-file-loader": 2.4.0 - "@smithy/types": 2.12.0 + '@aws-sdk/credential-provider-env': 3.398.0 + '@aws-sdk/credential-provider-process': 3.398.0 + '@aws-sdk/credential-provider-sso': 3.398.0 + '@aws-sdk/credential-provider-web-identity': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -1372,16 +1363,16 @@ packages: resolution: {integrity: sha512-odmI/DSKfuWUYeDnGTCEHBbC8/MwnF6yEq874zl6+owoVv0ZsYP8qBHfiJkYqrwg7wQ7Pi40sSAPC1rhesGwzg==} engines: {node: '>=14.0.0'} dependencies: - "@aws-sdk/credential-provider-env": 3.398.0 - "@aws-sdk/credential-provider-ini": 3.398.0 - "@aws-sdk/credential-provider-process": 3.398.0 - "@aws-sdk/credential-provider-sso": 3.398.0 - "@aws-sdk/credential-provider-web-identity": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@smithy/credential-provider-imds": 2.3.0 - "@smithy/property-provider": 2.2.0 - "@smithy/shared-ini-file-loader": 2.4.0 - "@smithy/types": 2.12.0 + '@aws-sdk/credential-provider-env': 3.398.0 + '@aws-sdk/credential-provider-ini': 3.398.0 + '@aws-sdk/credential-provider-process': 3.398.0 + '@aws-sdk/credential-provider-sso': 3.398.0 + '@aws-sdk/credential-provider-web-identity': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -1411,10 +1402,10 @@ packages: resolution: {integrity: sha512-WrkBL1W7TXN508PA9wRXPFtzmGpVSW98gDaHEaa8GolAPHMPa5t2QcC/z/cFpglzrcVv8SA277zu9Z8tELdZhg==} engines: {node: '>=14.0.0'} dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.2.0 - "@smithy/shared-ini-file-loader": 2.4.0 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -1434,12 +1425,12 @@ packages: resolution: {integrity: sha512-2Dl35587xbnzR/GGZqA2MnFs8+kS4wbHQO9BioU0okA+8NRueohNMdrdQmQDdSNK4BfIpFspiZmFkXFNyEAfgw==} engines: {node: '>=14.0.0'} dependencies: - "@aws-sdk/client-sso": 3.398.0 - "@aws-sdk/token-providers": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.2.0 - "@smithy/shared-ini-file-loader": 2.4.0 - "@smithy/types": 2.12.0 + '@aws-sdk/client-sso': 3.398.0 + '@aws-sdk/token-providers': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -1465,9 +1456,9 @@ packages: resolution: {integrity: sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg==} engines: {node: '>=14.0.0'} dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.2.0 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -1552,9 +1543,9 @@ packages: resolution: {integrity: sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA==} engines: {node: '>=14.0.0'} dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -1581,8 +1572,8 @@ packages: resolution: {integrity: sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg==} engines: {node: '>=14.0.0'} dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -1599,9 +1590,9 @@ packages: resolution: {integrity: sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ==} engines: {node: '>=14.0.0'} dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -1652,9 +1643,9 @@ packages: resolution: {integrity: sha512-+JH76XHEgfVihkY+GurohOQ5Z83zVN1nYcQzwCFnCDTh4dG4KwhnZKG+WPw6XJECocY0R+H0ivofeALHvVWJtQ==} engines: {node: '>=14.0.0'} dependencies: - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@smithy/types": 2.12.0 + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -1662,12 +1653,12 @@ packages: resolution: {integrity: sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w==} engines: {node: '>=14.0.0'} dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.2.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/signature-v4": 2.3.0 - "@smithy/types": 2.12.0 - "@smithy/util-middleware": 2.2.0 + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.2.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/signature-v4': 2.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-middleware': 2.2.0 tslib: 2.8.1 dev: true @@ -1684,10 +1675,10 @@ packages: resolution: {integrity: sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ==} engines: {node: '>=14.0.0'} dependencies: - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -1778,40 +1769,40 @@ packages: resolution: {integrity: sha512-nrYgjzavGCKJL/48Vt0EL+OlIc5UZLfNGpgyUW9cv3XZwl+kXV0QB+HH0rHZZLfpbBgZ2RBIJR9uD5ieu/6hpQ==} engines: {node: '>=14.0.0'} dependencies: - "@aws-crypto/sha256-browser": 3.0.0 - "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.398.0 - "@smithy/config-resolver": 2.2.0 - "@smithy/fetch-http-handler": 2.5.0 - "@smithy/hash-node": 2.2.0 - "@smithy/invalid-dependency": 2.2.0 - "@smithy/middleware-content-length": 2.2.0 - "@smithy/middleware-endpoint": 2.5.1 - "@smithy/middleware-retry": 2.3.1 - "@smithy/middleware-serde": 2.3.0 - "@smithy/middleware-stack": 2.2.0 - "@smithy/node-config-provider": 2.3.0 - "@smithy/node-http-handler": 2.5.0 - "@smithy/property-provider": 2.2.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/shared-ini-file-loader": 2.4.0 - "@smithy/smithy-client": 2.5.1 - "@smithy/types": 2.12.0 - "@smithy/url-parser": 2.2.0 - "@smithy/util-base64": 2.3.0 - "@smithy/util-body-length-browser": 2.2.0 - "@smithy/util-body-length-node": 2.3.0 - "@smithy/util-defaults-mode-browser": 2.2.1 - "@smithy/util-defaults-mode-node": 2.3.1 - "@smithy/util-retry": 2.2.0 - "@smithy/util-utf8": 2.3.0 + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-retry': 2.3.1 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/property-provider': 2.2.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.1 + '@smithy/util-defaults-mode-node': 2.3.1 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -1836,7 +1827,7 @@ packages: resolution: {integrity: sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -1859,7 +1850,7 @@ packages: resolution: {integrity: sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw==} engines: {node: '>=14.0.0'} dependencies: - "@aws-sdk/types": 3.398.0 + '@aws-sdk/types': 3.398.0 tslib: 2.8.1 dev: true @@ -1908,9 +1899,9 @@ packages: aws-crt: optional: true dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/node-config-provider": 2.3.0 - "@smithy/types": 2.12.0 + '@aws-sdk/types': 3.398.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -1966,7 +1957,7 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} dependencies: - "@babel/helper-validator-identifier": 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 js-tokens: 4.0.0 picocolors: 1.1.1 @@ -2191,7 +2182,7 @@ packages: resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==} engines: {node: '>=6.9.0'} dependencies: - "@babel/helper-validator-identifier": 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.1.1 @@ -3344,8 +3335,8 @@ packages: resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} dependencies: - "@babel/helper-string-parser": 7.27.1 - "@babel/helper-validator-identifier": 7.27.1 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -3354,12 +3345,12 @@ packages: /@changesets/apply-release-plan@7.0.13: resolution: {integrity: sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg==} dependencies: - "@changesets/config": 3.1.1 - "@changesets/get-version-range-type": 0.4.0 - "@changesets/git": 3.0.4 - "@changesets/should-skip-package": 0.1.2 - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/config': 3.1.1 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.4 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 detect-indent: 6.1.0 fs-extra: 7.0.1 lodash.startcase: 4.4.0 @@ -3372,11 +3363,11 @@ packages: /@changesets/assemble-release-plan@6.0.9: resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} dependencies: - "@changesets/errors": 0.2.0 - "@changesets/get-dependents-graph": 2.1.3 - "@changesets/should-skip-package": 0.1.2 - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 semver: 7.7.2 dev: false @@ -3389,8 +3380,8 @@ packages: /@changesets/changelog-github@0.5.1: resolution: {integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==} dependencies: - "@changesets/get-github-info": 0.6.0 - "@changesets/types": 6.1.0 + '@changesets/get-github-info': 0.6.0 + '@changesets/types': 6.1.0 dotenv: 8.6.0 transitivePeerDependencies: - encoding @@ -3435,11 +3426,11 @@ packages: /@changesets/config@3.1.1: resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} dependencies: - "@changesets/errors": 0.2.0 - "@changesets/get-dependents-graph": 2.1.3 - "@changesets/logger": 0.1.1 - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/logger': 0.1.1 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 micromatch: 4.0.8 dev: false @@ -3453,8 +3444,8 @@ packages: /@changesets/get-dependents-graph@2.1.3: resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} dependencies: - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 semver: 7.7.2 dev: false @@ -3486,8 +3477,8 @@ packages: /@changesets/git@3.0.4: resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} dependencies: - "@changesets/errors": 0.2.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/errors': 0.2.0 + '@manypkg/get-packages': 1.1.3 is-subdir: 1.2.0 micromatch: 4.0.8 spawndamnit: 3.0.1 @@ -3502,26 +3493,26 @@ packages: /@changesets/parse@0.4.1: resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} dependencies: - "@changesets/types": 6.1.0 + '@changesets/types': 6.1.0 js-yaml: 3.14.1 dev: false /@changesets/pre@2.0.2: resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} dependencies: - "@changesets/errors": 0.2.0 - "@changesets/types": 6.1.0 - "@manypkg/get-packages": 1.1.3 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 dev: false /@changesets/read@0.6.5: resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==} dependencies: - "@changesets/git": 3.0.4 - "@changesets/logger": 0.1.1 - "@changesets/parse": 0.4.1 - "@changesets/types": 6.1.0 + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/parse': 0.4.1 + '@changesets/types': 6.1.0 fs-extra: 7.0.1 p-filter: 2.1.0 picocolors: 1.1.1 @@ -3545,7 +3536,7 @@ packages: /@changesets/write@0.4.0: resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} dependencies: - "@changesets/types": 6.1.0 + '@changesets/types': 6.1.0 fs-extra: 7.0.1 human-id: 4.1.1 prettier: 2.8.8 @@ -3628,14 +3619,14 @@ packages: /@cosmjs/cosmwasm-stargate@0.36.0: resolution: {integrity: sha512-hzzT4YRMt2cRdAILzGSNSmWr1IRpN3aWxL5ceMrZaaJyVa9nD4AUeR80yPB6mzkBpHuMwbSGWz8nus0psyonRQ==} dependencies: - "@cosmjs/amino": 0.36.0 - "@cosmjs/crypto": 0.36.0 - "@cosmjs/encoding": 0.36.0 - "@cosmjs/math": 0.36.0 - "@cosmjs/proto-signing": 0.36.0 - "@cosmjs/stargate": 0.36.0 - "@cosmjs/tendermint-rpc": 0.36.0 - "@cosmjs/utils": 0.36.0 + '@cosmjs/amino': 0.36.0 + '@cosmjs/crypto': 0.36.0 + '@cosmjs/encoding': 0.36.0 + '@cosmjs/math': 0.36.0 + '@cosmjs/proto-signing': 0.36.0 + '@cosmjs/stargate': 0.36.0 + '@cosmjs/tendermint-rpc': 0.36.0 + '@cosmjs/utils': 0.36.0 cosmjs-types: 0.10.1 pako: 2.1.0 transitivePeerDependencies: @@ -3646,12 +3637,12 @@ packages: /@cosmjs/crypto@0.36.0: resolution: {integrity: sha512-IdzJETWBfMlJIpWmcAi4wiAa0sdHKZDbxKdhasrpSLvhwIItXBYMvApCFx6zr+V/Hby4KnsWduI7HomiRDFr+g==} dependencies: - "@cosmjs/encoding": 0.36.0 - "@cosmjs/math": 0.36.0 - "@cosmjs/utils": 0.36.0 - "@noble/ciphers": 1.3.0 - "@noble/curves": 1.9.7 - "@noble/hashes": 1.8.0 + '@cosmjs/encoding': 0.36.0 + '@cosmjs/math': 0.36.0 + '@cosmjs/utils': 0.36.0 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 hash-wasm: 4.12.0 dev: false @@ -3666,7 +3657,7 @@ packages: /@cosmjs/json-rpc@0.36.0: resolution: {integrity: sha512-7cGE8cBFGrtAHsadYWFOWv0bNaK0VPNzquzU/Naj+3twgnppaGbRBrTLw3iwhqrg+Cvb9KwSYPHzaUsavojUWQ==} dependencies: - "@cosmjs/stream": 0.36.0 + '@cosmjs/stream': 0.36.0 xstream: 11.14.0 dev: false @@ -3677,18 +3668,18 @@ packages: /@cosmjs/proto-signing@0.36.0: resolution: {integrity: sha512-RoZOQGG9njlzArNeAfYYQ136tdi5hNBleC/r7V8HPkROpMfSuQZF3yP6ukBvt5KkNzNge4YZKqFkwINBR/Vyew==} dependencies: - "@cosmjs/amino": 0.36.0 - "@cosmjs/crypto": 0.36.0 - "@cosmjs/encoding": 0.36.0 - "@cosmjs/math": 0.36.0 - "@cosmjs/utils": 0.36.0 + '@cosmjs/amino': 0.36.0 + '@cosmjs/crypto': 0.36.0 + '@cosmjs/encoding': 0.36.0 + '@cosmjs/math': 0.36.0 + '@cosmjs/utils': 0.36.0 cosmjs-types: 0.10.1 dev: false /@cosmjs/socket@0.36.0: resolution: {integrity: sha512-rAeGDyQjIFWsP6DPSTJKUP9RDW6ZM5Cm074xKG/0Tdghn0kkOaQCzwJru4SSPWi7MOlOkoZHyEMATQiNA/cQ6Q==} dependencies: - "@cosmjs/stream": 0.36.0 + '@cosmjs/stream': 0.36.0 isomorphic-ws: 4.0.1(ws@7.5.10) ws: 7.5.10 xstream: 11.14.0 @@ -3700,13 +3691,13 @@ packages: /@cosmjs/stargate@0.36.0: resolution: {integrity: sha512-FMRPF72WyLXGTU8qWpN2ZoxOY4gfRmg7vZoO99Ru8Gt21GS95JYO+RJFTfYlP9pT7Ni6S74rxCPNqkeHMqKp6w==} dependencies: - "@cosmjs/amino": 0.36.0 - "@cosmjs/encoding": 0.36.0 - "@cosmjs/math": 0.36.0 - "@cosmjs/proto-signing": 0.36.0 - "@cosmjs/stream": 0.36.0 - "@cosmjs/tendermint-rpc": 0.36.0 - "@cosmjs/utils": 0.36.0 + '@cosmjs/amino': 0.36.0 + '@cosmjs/encoding': 0.36.0 + '@cosmjs/math': 0.36.0 + '@cosmjs/proto-signing': 0.36.0 + '@cosmjs/stream': 0.36.0 + '@cosmjs/tendermint-rpc': 0.36.0 + '@cosmjs/utils': 0.36.0 cosmjs-types: 0.10.1 transitivePeerDependencies: - bufferutil @@ -3722,13 +3713,13 @@ packages: /@cosmjs/tendermint-rpc@0.36.0: resolution: {integrity: sha512-dTh4L1RR22JszFbZqM3i0ITPTHhrs5mUqyyeP7lEebgtLrKgzCAqsWPnqfsC6ALFhMzbeApWebG2YR9W2W68zg==} dependencies: - "@cosmjs/crypto": 0.36.0 - "@cosmjs/encoding": 0.36.0 - "@cosmjs/json-rpc": 0.36.0 - "@cosmjs/math": 0.36.0 - "@cosmjs/socket": 0.36.0 - "@cosmjs/stream": 0.36.0 - "@cosmjs/utils": 0.36.0 + '@cosmjs/crypto': 0.36.0 + '@cosmjs/encoding': 0.36.0 + '@cosmjs/json-rpc': 0.36.0 + '@cosmjs/math': 0.36.0 + '@cosmjs/socket': 0.36.0 + '@cosmjs/stream': 0.36.0 + '@cosmjs/utils': 0.36.0 readonly-date: 1.0.0 xstream: 11.14.0 transitivePeerDependencies: @@ -4587,10 +4578,10 @@ packages: /@expo/config-plugins@9.0.17: resolution: {integrity: sha512-m24F1COquwOm7PBl5wRbkT9P9DviCXe0D7S7nQsolfbhdCWuvMkfXeoWmgjtdhy7sDlOyIgBrAdnB6MfsWKqIg==} dependencies: - "@expo/config-types": 52.0.5 - "@expo/json-file": 9.0.2 - "@expo/plist": 0.2.2 - "@expo/sdk-runtime-versions": 1.0.0 + '@expo/config-types': 52.0.5 + '@expo/json-file': 9.0.2 + '@expo/plist': 0.2.2 + '@expo/sdk-runtime-versions': 1.0.0 chalk: 4.1.2 debug: 4.4.3 getenv: 1.0.0 @@ -4616,10 +4607,10 @@ packages: /@expo/config@10.0.11: resolution: {integrity: sha512-nociJ4zr/NmbVfMNe9j/+zRlt7wz/siISu7PjdWE4WE+elEGxWWxsGzltdJG0llzrM+khx8qUiFK5aiVcdMBww==} dependencies: - "@babel/code-frame": 7.10.4 - "@expo/config-plugins": 9.0.17 - "@expo/config-types": 52.0.5 - "@expo/json-file": 9.1.5 + '@babel/code-frame': 7.10.4 + '@expo/config-plugins': 9.0.17 + '@expo/config-types': 52.0.5 + '@expo/json-file': 9.1.5 deepmerge: 4.3.1 getenv: 1.0.0 glob: 10.4.5 @@ -4656,7 +4647,7 @@ packages: /@expo/devcert@1.2.0: resolution: {integrity: sha512-Uilcv3xGELD5t/b0eM4cxBFEKQRIivB3v7i+VhWLV/gL98aw810unLKKJbGAxAIhY6Ipyz8ChWibFsKFXYwstA==} dependencies: - "@expo/sudo-prompt": 9.3.2 + '@expo/sudo-prompt': 9.3.2 debug: 3.2.7 glob: 10.4.5 transitivePeerDependencies: @@ -4707,7 +4698,7 @@ packages: resolution: {integrity: sha512-U1S9DwiapCHQjHdHDDyO/oXsl/1oEHSHZRRkWDDrHgXRUDiAVIySw9Unvvcr118Ee6/x4NmKSZY1X0VagrqmFg==} hasBin: true dependencies: - "@expo/spawn-async": 1.7.2 + '@expo/spawn-async': 1.7.2 arg: 5.0.2 chalk: 4.1.2 debug: 4.4.3 @@ -4725,7 +4716,7 @@ packages: /@expo/image-utils@0.8.7: resolution: {integrity: sha512-SXOww4Wq3RVXLyOaXiCCuQFguCDh8mmaHBv54h/R29wGl4jRY8GEyQEx8SypV/iHt1FbzsU/X3Qbcd9afm2W2w==} dependencies: - "@expo/spawn-async": 1.7.2 + '@expo/spawn-async': 1.7.2 chalk: 4.1.2 getenv: 2.0.0 jimp-compact: 0.16.1 @@ -4747,7 +4738,7 @@ packages: /@expo/json-file@9.0.2: resolution: {integrity: sha512-yAznIUrybOIWp3Uax7yRflB0xsEpvIwIEqIjao9SGi2Gaa+N0OamWfe0fnXBSWF+2zzF4VvqwT4W5zwelchfgw==} dependencies: - "@babel/code-frame": 7.10.4 + '@babel/code-frame': 7.10.4 json5: 2.2.3 write-file-atomic: 2.4.3 dev: false @@ -4755,7 +4746,7 @@ packages: /@expo/json-file@9.1.5: resolution: {integrity: sha512-prWBhLUlmcQtvN6Y7BpW2k9zXGd3ySa3R6rAguMJkp1z22nunLN64KYTUWfijFlprFoxm9r2VNnGkcbndAlgKA==} dependencies: - "@babel/code-frame": 7.10.4 + '@babel/code-frame': 7.10.4 json5: 2.2.3 dev: false @@ -4836,7 +4827,7 @@ packages: resolution: {integrity: sha512-IClSOXxR0YUFxIriUJVqyYki7lLMIHrrzOaP01yxAL1G8pj2DWV5eW1y5jSzIcIfSCNhtGsshGd1tU/AYup5iQ==} engines: {node: '>=12'} dependencies: - "@expo/spawn-async": 1.7.2 + '@expo/spawn-async': 1.7.2 exec-async: 2.2.0 dev: false @@ -4854,7 +4845,7 @@ packages: /@expo/plist@0.2.2: resolution: {integrity: sha512-ZZGvTO6vEWq02UAPs3LIdja+HRO18+LRI5QuDl6Hs3Ps7KX7xU6Y6kjahWKY37Rx2YjNpX07dGpBFzzC+vKa2g==} dependencies: - "@xmldom/xmldom": 0.7.13 + '@xmldom/xmldom': 0.7.13 base64-js: 1.5.1 xmlbuilder: 14.0.0 dev: false @@ -4862,7 +4853,7 @@ packages: /@expo/plist@0.4.7: resolution: {integrity: sha512-dGxqHPvCZKeRKDU1sJZMmuyVtcASuSYh1LPFVaM1DuffqPL36n6FMEL0iUqq2Tx3xhWk8wCnWl34IKplUjJDdA==} dependencies: - "@xmldom/xmldom": 0.8.11 + '@xmldom/xmldom': 0.8.11 base64-js: 1.5.1 xmlbuilder: 15.1.1 dev: false @@ -4936,7 +4927,7 @@ packages: resolution: {integrity: sha512-ReZxZ8pdnoI3tP/dNnJdnmAk7uLT4FjsKDGW7YeDdvdOMz2XCQSmSCM9IWlrXuWtMF9zeSB6WJtEhCQ41gQOfw==} hasBin: true dependencies: - "@babel/code-frame": 7.10.4 + '@babel/code-frame': 7.10.4 chalk: 4.1.2 find-up: 5.0.0 js-yaml: 4.1.0 @@ -5303,7 +5294,7 @@ packages: resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/types": 29.6.3 + '@jest/types': 29.6.3 /@jest/environment@29.7.0: resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} @@ -5346,9 +5337,9 @@ packages: resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/environment": 29.7.0 - "@jest/expect": 29.7.0 - "@jest/types": 29.6.3 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 jest-mock: 29.7.0 transitivePeerDependencies: - supports-color @@ -5395,7 +5386,7 @@ packages: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@sinclair/typebox": 0.27.8 + '@sinclair/typebox': 0.27.8 /@jest/source-map@29.6.3: resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} @@ -5410,9 +5401,9 @@ packages: resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/console": 29.7.0 - "@jest/types": 29.6.3 - "@types/istanbul-lib-coverage": 2.0.6 + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 dev: true @@ -5420,7 +5411,7 @@ packages: resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/test-result": 29.7.0 + '@jest/test-result': 29.7.0 graceful-fs: 4.2.11 jest-haste-map: 29.7.0 slash: 3.0.0 @@ -5487,8 +5478,8 @@ packages: /@jridgewell/trace-mapping@0.3.31: resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 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 /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -5520,7 +5511,7 @@ packages: /@microsoft/tsdoc-config@0.16.2: resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} dependencies: - "@microsoft/tsdoc": 0.14.2 + '@microsoft/tsdoc': 0.14.2 ajv: 6.12.6 jju: 1.4.0 resolve: 1.19.0 @@ -5651,7 +5642,7 @@ packages: resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} engines: {node: ^14.21.3 || >=16} dependencies: - "@noble/hashes": 1.8.0 + '@noble/hashes': 1.8.0 /@noble/hashes@1.8.0: resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} @@ -5661,7 +5652,7 @@ packages: resolution: {integrity: sha512-/vxN46ieWDLU67CmgbArEvOb41zlYFOkOtr9QW9CnTrBLuTyGgkyNWC2y5+khvRw3Br58p2B5ZVSx/PxCTru6g==} engines: {node: '>=16.0.0'} dependencies: - "@node-minify/utils": 8.0.6 + '@node-minify/utils': 8.0.6 glob: 9.3.5 mkdirp: 1.0.4 dev: true @@ -5670,7 +5661,7 @@ packages: resolution: {integrity: sha512-grQ1ipham743ch2c3++C8Isk6toJnxJSyDiwUI/IWUCh4CZFD6aYVw6UAY40IpCnjrq5aXGwiv5OZJn6Pr0hvg==} engines: {node: '>=16.0.0'} dependencies: - "@node-minify/utils": 8.0.6 + '@node-minify/utils': 8.0.6 terser: 5.16.9 dev: true @@ -5685,7 +5676,7 @@ packages: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: - "@nodelib/fs.stat": 2.0.5 + '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 /@nodelib/fs.stat@2.0.5: @@ -5696,7 +5687,7 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: - "@nodelib/fs.scandir": 2.1.5 + '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 /@nolyfill/is-core-module@1.0.39: @@ -5736,8 +5727,8 @@ packages: peerDependencies: wrangler: ^4.24.4 dependencies: - "@dotenvx/dotenvx": 1.31.0 - "@opennextjs/aws": 3.7.6 + '@dotenvx/dotenvx': 1.31.0 + '@opennextjs/aws': 3.7.6 cloudflare: 4.5.0 enquirer: 2.4.1 glob: 11.0.3 @@ -6261,7 +6252,7 @@ packages: dependencies: '@react-native/codegen': 0.76.7(@babel/preset-env@7.28.3) transitivePeerDependencies: - - "@babel/preset-env" + - '@babel/preset-env' - supports-color /@react-native/babel-plugin-codegen@0.81.4(@babel/core@7.28.4): @@ -6271,7 +6262,7 @@ packages: '@babel/traverse': 7.28.4 '@react-native/codegen': 0.81.4(@babel/core@7.28.4) transitivePeerDependencies: - - "@babel/core" + - '@babel/core' - supports-color dev: false @@ -6327,7 +6318,7 @@ packages: babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.4) react-refresh: 0.14.2 transitivePeerDependencies: - - "@babel/preset-env" + - '@babel/preset-env' - supports-color /@react-native/babel-preset@0.81.4(@babel/core@7.28.4): @@ -6439,8 +6430,8 @@ packages: readline: 1.3.0 semver: 7.7.2 transitivePeerDependencies: - - "@babel/core" - - "@babel/preset-env" + - '@babel/core' + - '@babel/preset-env' - bufferutil - encoding - supports-color @@ -6459,8 +6450,8 @@ packages: resolution: {integrity: sha512-Jsw8g9DyLPnR9yHEGuT09yHZ7M88/GL9CtU9WmyChlBwdXSeE3AmRqLegsV3XcgULQ1fqdemokaOZ/MwLYkjdA==} engines: {node: '>=18'} dependencies: - "@isaacs/ttlcache": 1.4.1 - "@react-native/debugger-frontend": 0.76.7 + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.76.7 chrome-launcher: 0.15.2 chromium-edge-launcher: 0.2.0 connect: 3.7.0 @@ -6516,7 +6507,7 @@ packages: hermes-parser: 0.23.1 nullthrows: 1.1.1 transitivePeerDependencies: - - "@babel/preset-env" + - '@babel/preset-env' - supports-color /@react-native/normalize-colors@0.76.7: @@ -6770,13 +6761,13 @@ packages: /@sinonjs/fake-timers@10.3.0: resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} dependencies: - "@sinonjs/commons": 3.0.1 + '@sinonjs/commons': 3.0.1 /@smithy/abort-controller@2.2.0: resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -6807,10 +6798,10 @@ packages: resolution: {integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/node-config-provider": 2.3.0 - "@smithy/types": 2.12.0 - "@smithy/util-config-provider": 2.3.0 - "@smithy/util-middleware": 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-config-provider': 2.3.0 + '@smithy/util-middleware': 2.2.0 tslib: 2.8.1 dev: true @@ -6846,10 +6837,10 @@ packages: resolution: {integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/node-config-provider": 2.3.0 - "@smithy/property-provider": 2.2.0 - "@smithy/types": 2.12.0 - "@smithy/url-parser": 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 tslib: 2.8.1 dev: true @@ -6912,10 +6903,10 @@ packages: /@smithy/fetch-http-handler@2.5.0: resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==} dependencies: - "@smithy/protocol-http": 3.3.0 - "@smithy/querystring-builder": 2.2.0 - "@smithy/types": 2.12.0 - "@smithy/util-base64": 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/querystring-builder': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-base64': 2.3.0 tslib: 2.8.1 dev: true @@ -6944,9 +6935,9 @@ packages: resolution: {integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/types": 2.12.0 - "@smithy/util-buffer-from": 2.2.0 - "@smithy/util-utf8": 2.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 dev: true @@ -6972,7 +6963,7 @@ packages: /@smithy/invalid-dependency@2.2.0: resolution: {integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==} dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7011,8 +7002,8 @@ packages: resolution: {integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/protocol-http": 3.3.0 - "@smithy/types": 2.12.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7029,12 +7020,12 @@ packages: resolution: {integrity: sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/middleware-serde": 2.3.0 - "@smithy/node-config-provider": 2.3.0 - "@smithy/shared-ini-file-loader": 2.4.0 - "@smithy/types": 2.12.0 - "@smithy/url-parser": 2.2.0 - "@smithy/util-middleware": 2.2.0 + '@smithy/middleware-serde': 2.3.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-middleware': 2.2.0 tslib: 2.8.1 dev: true @@ -7056,13 +7047,13 @@ packages: resolution: {integrity: sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/node-config-provider": 2.3.0 - "@smithy/protocol-http": 3.3.0 - "@smithy/service-error-classification": 2.1.5 - "@smithy/smithy-client": 2.5.1 - "@smithy/types": 2.12.0 - "@smithy/util-middleware": 2.2.0 - "@smithy/util-retry": 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/service-error-classification': 2.1.5 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-retry': 2.2.0 tslib: 2.8.1 uuid: 9.0.1 dev: true @@ -7087,7 +7078,7 @@ packages: resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7104,7 +7095,7 @@ packages: resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7120,9 +7111,9 @@ packages: resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/property-provider": 2.2.0 - "@smithy/shared-ini-file-loader": 2.4.0 - "@smithy/types": 2.12.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7140,10 +7131,10 @@ packages: resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/abort-controller": 2.2.0 - "@smithy/protocol-http": 3.3.0 - "@smithy/querystring-builder": 2.2.0 - "@smithy/types": 2.12.0 + '@smithy/abort-controller': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/querystring-builder': 2.2.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7162,7 +7153,7 @@ packages: resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7178,7 +7169,7 @@ packages: resolution: {integrity: sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7186,7 +7177,7 @@ packages: resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7202,8 +7193,8 @@ packages: resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/types": 2.12.0 - "@smithy/util-uri-escape": 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-uri-escape': 2.2.0 tslib: 2.8.1 dev: true @@ -7220,7 +7211,7 @@ packages: resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7250,7 +7241,7 @@ packages: resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7266,12 +7257,12 @@ packages: resolution: {integrity: sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/is-array-buffer": 2.2.0 - "@smithy/types": 2.12.0 - "@smithy/util-hex-encoding": 2.2.0 - "@smithy/util-middleware": 2.2.0 - "@smithy/util-uri-escape": 2.2.0 - "@smithy/util-utf8": 2.3.0 + '@smithy/is-array-buffer': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-hex-encoding': 2.2.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-uri-escape': 2.2.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 dev: true @@ -7293,11 +7284,11 @@ packages: resolution: {integrity: sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/middleware-endpoint": 2.5.1 - "@smithy/middleware-stack": 2.2.0 - "@smithy/protocol-http": 3.3.0 - "@smithy/types": 2.12.0 - "@smithy/util-stream": 2.2.0 + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-stack': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-stream': 2.2.0 tslib: 2.8.1 dev: true @@ -7331,8 +7322,8 @@ packages: /@smithy/url-parser@2.2.0: resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==} dependencies: - "@smithy/querystring-parser": 2.2.0 - "@smithy/types": 2.12.0 + '@smithy/querystring-parser': 2.2.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7349,8 +7340,8 @@ packages: resolution: {integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/util-buffer-from": 2.2.0 - "@smithy/util-utf8": 2.3.0 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 dev: true @@ -7394,7 +7385,7 @@ packages: resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/is-array-buffer": 2.2.0 + '@smithy/is-array-buffer': 2.2.0 tslib: 2.8.1 dev: true @@ -7446,12 +7437,12 @@ packages: resolution: {integrity: sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==} engines: {node: '>= 10.0.0'} dependencies: - "@smithy/config-resolver": 2.2.0 - "@smithy/credential-provider-imds": 2.3.0 - "@smithy/node-config-provider": 2.3.0 - "@smithy/property-provider": 2.2.0 - "@smithy/smithy-client": 2.5.1 - "@smithy/types": 2.12.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7495,7 +7486,7 @@ packages: resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/types": 2.12.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7511,8 +7502,8 @@ packages: resolution: {integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==} engines: {node: '>= 14.0.0'} dependencies: - "@smithy/service-error-classification": 2.1.5 - "@smithy/types": 2.12.0 + '@smithy/service-error-classification': 2.1.5 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7529,13 +7520,13 @@ packages: resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/fetch-http-handler": 2.5.0 - "@smithy/node-http-handler": 2.5.0 - "@smithy/types": 2.12.0 - "@smithy/util-base64": 2.3.0 - "@smithy/util-buffer-from": 2.2.0 - "@smithy/util-hex-encoding": 2.2.0 - "@smithy/util-utf8": 2.3.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-hex-encoding': 2.2.0 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 dev: true @@ -7571,7 +7562,7 @@ packages: resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/util-buffer-from": 2.2.0 + '@smithy/util-buffer-from': 2.2.0 tslib: 2.8.1 dev: true @@ -7587,8 +7578,8 @@ packages: resolution: {integrity: sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==} engines: {node: '>=14.0.0'} dependencies: - "@smithy/abort-controller": 2.2.0 - "@smithy/types": 2.12.0 + '@smithy/abort-controller': 2.2.0 + '@smithy/types': 2.12.0 tslib: 2.8.1 dev: true @@ -7612,7 +7603,7 @@ packages: /@swc/helpers@0.5.5: resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} dependencies: - "@swc/counter": 0.1.3 + '@swc/counter': 0.1.3 tslib: 2.8.1 dev: false @@ -7634,7 +7625,7 @@ packages: resolution: {integrity: sha512-WgXcWzVM6idy5JaftTVC8Vs83NKRmGJz4Hqs4oyOuO2J4r/y79vvKZsb+CaGyCSEbUPI6OsewfPd0G1A0/TUZQ==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} dependencies: - "@adobe/css-tools": 4.4.4 + '@adobe/css-tools': 4.4.4 aria-query: 5.3.2 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 @@ -7748,12 +7739,12 @@ packages: /@types/istanbul-lib-report@3.0.3: resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} dependencies: - "@types/istanbul-lib-coverage": 2.0.6 + '@types/istanbul-lib-coverage': 2.0.6 /@types/istanbul-reports@3.0.4: resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} dependencies: - "@types/istanbul-lib-report": 3.0.3 + '@types/istanbul-lib-report': 3.0.3 /@types/jest@29.5.14: resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} @@ -7838,7 +7829,7 @@ packages: /@types/react@18.3.24: resolution: {integrity: sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==} dependencies: - "@types/prop-types": 15.7.15 + '@types/prop-types': 15.7.15 csstype: 3.1.3 /@types/semver@7.7.1: @@ -7866,7 +7857,7 @@ packages: /@types/yargs@17.0.33: resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} dependencies: - "@types/yargs-parser": 21.0.3 + '@types/yargs-parser': 21.0.3 /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.1)(typescript@5.9.2): resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} @@ -8050,7 +8041,7 @@ packages: resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - "@typescript-eslint/types": 5.62.0 + '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 dev: true @@ -8058,7 +8049,7 @@ packages: resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - "@typescript-eslint/types": 6.21.0 + '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 dev: true @@ -8704,9 +8695,9 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - "@babel/helper-plugin-utils": 7.27.1 - "@istanbuljs/load-nyc-config": 1.1.0 - "@istanbuljs/schema": 0.1.3 + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 test-exclude: 6.0.0 transitivePeerDependencies: @@ -8785,7 +8776,7 @@ packages: dependencies: '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.4) transitivePeerDependencies: - - "@babel/core" + - '@babel/core' /babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.4): resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} @@ -8847,7 +8838,7 @@ packages: react-refresh: 0.14.2 resolve-from: 5.0.0 transitivePeerDependencies: - - "@babel/core" + - '@babel/core' - supports-color dev: false @@ -9460,7 +9451,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true dependencies: - "@jest/types": 29.6.3 + '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 @@ -9468,7 +9459,7 @@ packages: jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: - - "@types/node" + - '@types/node' - babel-plugin-macros - supports-color - ts-node @@ -10169,9 +10160,9 @@ packages: typescript: optional: true dependencies: - "@next/eslint-plugin-next": 14.0.4 - "@rushstack/eslint-patch": 1.12.0 - "@typescript-eslint/parser": 6.21.0(eslint@8.57.1)(typescript@5.9.2) + '@next/eslint-plugin-next': 14.0.4 + '@rushstack/eslint-patch': 1.12.0 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1) @@ -10436,7 +10427,7 @@ packages: peerDependencies: eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 dependencies: - "@typescript-eslint/utils": 5.62.0(eslint@8.57.1)(typescript@5.9.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 transitivePeerDependencies: - supports-color @@ -10658,7 +10649,7 @@ packages: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/expect-utils": 29.7.0 + '@jest/expect-utils': 29.7.0 jest-get-type: 29.6.3 jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 @@ -10761,7 +10752,7 @@ packages: resolution: {integrity: sha512-Sz1ptcSZ4mvWJ7Rf1aB6Pe1fuEeIkACPILg2tmXDo3wwLTxPqugitMOePjbBZyvacBDirtDZlMb2A6LQDPVFOg==} hasBin: true dependencies: - "@expo/spawn-async": 1.7.2 + '@expo/spawn-async': 1.7.2 chalk: 4.1.2 commander: 7.2.0 glob: 10.4.5 @@ -10902,8 +10893,8 @@ packages: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} dependencies: - "@nodelib/fs.stat": 2.0.5 - "@nodelib/fs.walk": 1.2.8 + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.8 @@ -11327,7 +11318,7 @@ packages: resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} engines: {node: '>=8'} dependencies: - "@types/glob": 7.2.0 + '@types/glob': 7.2.0 array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.3 @@ -11486,7 +11477,7 @@ packages: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: - "@tootallnate/once": 2.0.0 + '@tootallnate/once': 2.0.0 agent-base: 6.0.2 debug: 4.4.3 transitivePeerDependencies: @@ -12007,9 +11998,9 @@ packages: /jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} dependencies: - "@isaacs/cliui": 8.0.2 + '@isaacs/cliui': 8.0.2 optionalDependencies: - "@pkgjs/parseargs": 0.11.0 + '@pkgjs/parseargs': 0.11.0 /jackspeak@4.1.1: resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} @@ -12078,7 +12069,7 @@ packages: jest-validate: 29.7.0 yargs: 17.7.2 transitivePeerDependencies: - - "@types/node" + - '@types/node' - babel-plugin-macros - supports-color - ts-node @@ -12146,7 +12137,7 @@ packages: resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/types": 29.6.3 + '@jest/types': 29.6.3 chalk: 4.1.2 jest-get-type: 29.6.3 jest-util: 29.7.0 @@ -12231,9 +12222,9 @@ packages: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@babel/code-frame": 7.27.1 - "@jest/types": 29.6.3 - "@types/stack-utils": 2.0.3 + '@babel/code-frame': 7.27.1 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 micromatch: 4.0.8 @@ -12392,7 +12383,7 @@ packages: resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.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 @@ -12437,7 +12428,7 @@ packages: import-local: 3.2.0 jest-cli: 29.7.0(@types/node@20.19.16)(ts-node@10.9.2) transitivePeerDependencies: - - "@types/node" + - '@types/node' - babel-plugin-macros - supports-color - ts-node @@ -13448,7 +13439,7 @@ packages: engines: {node: '>=18.0.0'} hasBin: true dependencies: - "@cspotcode/source-map-support": 0.8.1 + '@cspotcode/source-map-support': 0.8.1 acorn: 8.14.0 acorn-walk: 8.3.2 exit-hook: 2.2.1 @@ -13643,7 +13634,7 @@ packages: '@next/swc-win32-ia32-msvc': 14.2.32 '@next/swc-win32-x64-msvc': 14.2.32 transitivePeerDependencies: - - "@babel/core" + - '@babel/core' - babel-plugin-macros dev: false @@ -14375,7 +14366,7 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - "@jest/schemas": 29.6.3 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.3.1 @@ -14639,7 +14630,6 @@ packages: - encoding - supports-color - utf-8-validate - dev: false /react-native@0.76.7(@babel/core@7.28.4)(@babel/preset-env@7.28.3)(react@18.3.1): resolution: {integrity: sha512-GPJcQeO3qUi1MvuhsC2DC6tH8gJQ4uc4JWPORrdeuCGFWE3QLsN8/hiChTEvJREHLfQSV61YPI8gIOtAQ8c37g==} @@ -14781,7 +14771,7 @@ packages: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: - "@types/normalize-package-data": 2.4.4 + '@types/normalize-package-data': 2.4.4 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 @@ -15037,7 +15027,7 @@ packages: resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} engines: {node: '>=8.3'} dependencies: - "@types/fs-extra": 8.1.5 + '@types/fs-extra': 8.1.5 colorette: 1.4.0 fs-extra: 8.1.0 globby: 10.0.1 @@ -15840,7 +15830,7 @@ packages: engines: {node: '>=14.0.0'} hasBin: true dependencies: - "@alloc/quick-lru": 5.2.0 + '@alloc/quick-lru': 5.2.0 arg: 5.0.2 chokidar: 3.6.0 didyoumean: 1.2.2 @@ -15870,7 +15860,7 @@ packages: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} dependencies: - "@isaacs/fs-minipass": 4.0.1 + '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 minipass: 7.1.2 minizlib: 3.0.2 @@ -15907,7 +15897,7 @@ packages: engines: {node: '>=10'} hasBin: true dependencies: - "@jridgewell/source-map": 0.3.11 + '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -15918,7 +15908,7 @@ packages: engines: {node: '>=10'} hasBin: true dependencies: - "@jridgewell/source-map": 0.3.11 + '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -15927,7 +15917,7 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: - "@istanbuljs/schema": 0.1.3 + '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 @@ -16111,7 +16101,7 @@ packages: /tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: - "@types/json5": 0.0.29 + '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 @@ -16879,8 +16869,8 @@ packages: '@cloudflare/workers-types': optional: true dependencies: - "@cloudflare/kv-asset-handler": 0.4.0 - "@cloudflare/unenv-preset": 2.7.3(unenv@2.0.0-rc.21)(workerd@1.20250913.0) + '@cloudflare/kv-asset-handler': 0.4.0 + '@cloudflare/unenv-preset': 2.7.3(unenv@2.0.0-rc.21)(workerd@1.20250913.0) blake3-wasm: 2.1.5 esbuild: 0.25.4 miniflare: 4.20250913.0 @@ -17106,16 +17096,16 @@ packages: /youch-core@0.3.3: resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} dependencies: - "@poppinss/exception": 1.2.2 + '@poppinss/exception': 1.2.2 error-stack-parser-es: 1.0.5 dev: true /youch@4.1.0-beta.10: resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==} dependencies: - "@poppinss/colors": 4.1.5 - "@poppinss/dumper": 0.6.4 - "@speed-highlight/core": 1.2.7 + '@poppinss/colors': 4.1.5 + '@poppinss/dumper': 0.6.4 + '@speed-highlight/core': 1.2.7 cookie: 1.0.2 youch-core: 0.3.3 dev: true From fba7dfe5283c78282d6a7b3171fafcdb227ce350 Mon Sep 17 00:00:00 2001 From: ertemann Date: Sun, 26 Oct 2025 21:28:01 +0100 Subject: [PATCH 07/27] add auto-connect modal flow into abstraxion --- apps/demo-app/src/app/direct-mode/layout.tsx | 75 +++---------- apps/demo-app/src/components/WalletModal.tsx | 45 +++----- .../src/components/Abstraxion/index.tsx | 56 ++++++---- .../components/AbstraxionContext/index.tsx | 100 +++++++++++++----- .../abstraxion/src/hooks/useGrantsFlow.ts | 15 +++ packages/abstraxion/src/index.ts | 2 +- 6 files changed, 152 insertions(+), 141 deletions(-) diff --git a/apps/demo-app/src/app/direct-mode/layout.tsx b/apps/demo-app/src/app/direct-mode/layout.tsx index a267faeb..52e9af74 100644 --- a/apps/demo-app/src/app/direct-mode/layout.tsx +++ b/apps/demo-app/src/app/direct-mode/layout.tsx @@ -1,10 +1,8 @@ "use client"; -import { useState, useEffect, useMemo } from "react"; +import { useMemo } from "react"; import { AbstraxionProvider, type AbstraxionConfig, - type WalletConnectionMethods, - useAbstraxionAccount, } from "@burnt-labs/abstraxion"; import { WalletModal } from "../../components/WalletModal"; @@ -13,9 +11,6 @@ export default function DirectModeLayout({ }: { children: React.ReactNode; }): JSX.Element { - const [showWalletModal, setShowWalletModal] = useState(false); - const [walletMethods, setWalletMethods] = useState(null); - // Direct mode configuration with treasury contract const directModeConfig: AbstraxionConfig = useMemo(() => ({ // REQUIRED: Chain ID @@ -44,7 +39,8 @@ export default function DirectModeLayout({ aaApiUrl: process.env.NEXT_PUBLIC_AA_API_URL, // Indexer configuration for account lookup (optional but recommended) - ...(process.env.NEXT_PUBLIC_INDEXER_URL && { + // Only include if BOTH url and authToken are provided + ...(process.env.NEXT_PUBLIC_INDEXER_URL && process.env.NEXT_PUBLIC_INDEXER_TOKEN && { indexer: { url: process.env.NEXT_PUBLIC_INDEXER_URL, authToken: process.env.NEXT_PUBLIC_INDEXER_TOKEN, @@ -61,10 +57,7 @@ export default function DirectModeLayout({ }, }), - // Use custom strategy to show our custom wallet modal - walletSelectionStrategy: "custom" as const, - - // Define wallets to support in the custom modal + // Define wallets to support // You can add any Ethereum or Cosmos wallet by specifying its window key! wallets: [ { name: "MetaMask", windowKey: "ethereum", signingMethod: "ethereum" }, @@ -78,59 +71,23 @@ export default function DirectModeLayout({ // { name: "Compass", windowKey: "compass", signingMethod: "cosmos" }, ], - // Custom wallet selection callback - shows our modal - onWalletSelectionRequired: (methods) => { - setWalletMethods(methods); - setShowWalletModal(true); - }, + // Custom wallet selection UI - all state management and auto-close is handled internally! + renderWalletSelection: ({ isOpen, onClose, wallets, connect, isConnecting, error }) => ( + + ), }, }), []); return ( - - {children} - - - ); -} - -// Component inside provider that can access context to close modal on connection -function ModalHandler({ - children, - showWalletModal, - setShowWalletModal, - walletMethods, -}: { - children: React.ReactNode; - showWalletModal: boolean; - setShowWalletModal: (show: boolean) => void; - walletMethods: WalletConnectionMethods | null; -}) { - const { isConnected } = useAbstraxionAccount(); - - // Close modal when connection succeeds - useEffect(() => { - if (isConnected && showWalletModal) { - setShowWalletModal(false); - } - }, [isConnected, showWalletModal, setShowWalletModal]); - - return ( - <> {children} - - {/* Custom Wallet Selection Modal */} - setShowWalletModal(false)} - connectionMethods={walletMethods} - chainId="xion-testnet-1" - /> - + ); } diff --git a/apps/demo-app/src/components/WalletModal.tsx b/apps/demo-app/src/components/WalletModal.tsx index ca73144a..f86ce5fc 100644 --- a/apps/demo-app/src/components/WalletModal.tsx +++ b/apps/demo-app/src/components/WalletModal.tsx @@ -1,7 +1,7 @@ "use client"; import { useEffect } from "react"; -import type { WalletConnectionMethods, GenericWalletConfig } from "@burnt-labs/abstraxion"; +import type { GenericWalletConfig } from "@burnt-labs/abstraxion"; import { KeplrLogo } from "./icons/KeplrLogo"; import { OKXLogo } from "./icons/OKXLogo"; import { MetamaskLogo } from "./icons/MetamaskLogo"; @@ -9,34 +9,19 @@ import { MetamaskLogo } from "./icons/MetamaskLogo"; interface WalletModalProps { isOpen: boolean; onClose: () => void; - connectionMethods: WalletConnectionMethods | null; - chainId: string; + wallets: GenericWalletConfig[]; + onConnect: (walletName: string) => Promise; + loading: boolean; + error: string | null; } -// Define wallet configurations using the generic interface -const WALLET_CONFIGS: GenericWalletConfig[] = [ - { - name: "MetaMask", - windowKey: "ethereum", - signingMethod: "ethereum", - }, - { - name: "Keplr", - windowKey: "keplr", - signingMethod: "cosmos", - }, - { - name: "OKX", - windowKey: "okxwallet.keplr", - signingMethod: "cosmos", - }, -]; - export function WalletModal({ isOpen, onClose, - connectionMethods, - chainId, + wallets, + onConnect, + loading, + error, }: WalletModalProps) { // Close on Escape key useEffect(() => { @@ -50,9 +35,7 @@ export function WalletModal({ } }, [isOpen, onClose]); - if (!isOpen || !connectionMethods) return null; - - const { connectWallet, isConnecting, error } = connectionMethods; + if (!isOpen) return null; // Map wallet configs to logos const getWalletLogo = (walletName: string) => { @@ -122,15 +105,15 @@ export function WalletModal({
)} - {/* Wallet Buttons - Now using generic connectWallet */} + {/* Wallet Buttons */}
- {WALLET_CONFIGS.map((wallet) => ( + {wallets.map((wallet) => ( connectWallet(wallet, chainId)} - disabled={isConnecting} + onClick={() => onConnect(wallet.name)} + disabled={loading} /> ))}
diff --git a/packages/abstraxion/src/components/Abstraxion/index.tsx b/packages/abstraxion/src/components/Abstraxion/index.tsx index 0550e0aa..20e7f448 100644 --- a/packages/abstraxion/src/components/Abstraxion/index.tsx +++ b/packages/abstraxion/src/components/Abstraxion/index.tsx @@ -120,13 +120,26 @@ export interface GenericWalletConfig { } /** - * Wallet connection methods passed to custom UI + * Props passed to custom wallet selection UI render function + * This provides everything needed to render a custom wallet modal with zero boilerplate */ -export interface WalletConnectionMethods { - /** Connect to any wallet using generic config */ - connectWallet: (walletConfig: GenericWalletConfig, chainId?: string) => Promise; +export interface WalletSelectionRenderProps { + /** Whether the wallet selection modal should be shown */ + isOpen: boolean; + /** Function to close the modal */ + onClose: () => void; + + /** List of available wallets from config */ + wallets: GenericWalletConfig[]; + + /** Connect to a wallet by name - handles all connection logic internally */ + connect: (walletName: string) => Promise; + + /** Whether a wallet connection is in progress */ isConnecting: boolean; + + /** Error message if connection failed, null otherwise */ error: string | null; } @@ -159,20 +172,9 @@ export interface WalletAuthConfig { }; /** - * Wallet selection strategy: - * - 'auto' (default): Automatically try wallets in the order specified by wallets array - * - 'custom': Call onWalletSelectionRequired callback to let user provide custom UI - */ - walletSelectionStrategy?: 'auto' | 'custom'; - - /** - * List of wallets to use (for auto mode) or display (for custom mode) + * List of wallets to support * - * Default for auto mode: - * - MetaMask (ethereum) - * - Keplr (cosmos) - * - * Example custom wallets: + * Example: * [ * { name: "Keplr", windowKey: "keplr", signingMethod: "cosmos" }, * { name: "Leap", windowKey: "leap", signingMethod: "cosmos" }, @@ -183,11 +185,23 @@ export interface WalletAuthConfig { wallets?: GenericWalletConfig[]; /** - * Custom wallet selection UI callback - * Called when user needs to select a wallet - * Receives connection methods to call when user selects a wallet + * Custom wallet selection UI render function + * If provided, this will be called when the user needs to select a wallet + * All state management and auto-close logic is handled internally + * + * Example: + * renderWalletSelection: ({ isOpen, onClose, wallets, connect, isConnecting, error }) => ( + * + * ) */ - onWalletSelectionRequired?: (methods: WalletConnectionMethods) => void; + renderWalletSelection?: (props: WalletSelectionRenderProps) => React.ReactNode; } export interface AbstraxionConfig { diff --git a/packages/abstraxion/src/components/AbstraxionContext/index.tsx b/packages/abstraxion/src/components/AbstraxionContext/index.tsx index 563139c6..501741b5 100644 --- a/packages/abstraxion/src/components/AbstraxionContext/index.tsx +++ b/packages/abstraxion/src/components/AbstraxionContext/index.tsx @@ -100,6 +100,10 @@ export function AbstraxionContextProvider({ const [granterAddress, setGranterAddress] = useState(""); const [dashboardUrl, setDashboardUrl] = useState(""); + // Wallet selection modal state (for renderWalletSelection) + const [showWalletSelectionModal, setShowWalletSelectionModal] = useState(false); + const [walletSelectionError, setWalletSelectionError] = useState(null); + // Determine wallet auth mode const walletAuthMode = walletAuth?.mode || 'redirect'; @@ -179,6 +183,37 @@ export function AbstraxionContextProvider({ }, }); + // Auto-close wallet selection modal when connected + useEffect(() => { + if (isConnected && showWalletSelectionModal) { + setShowWalletSelectionModal(false); + setWalletSelectionError(null); + } + }, [isConnected, showWalletSelectionModal]); + + // Handle wallet connection from custom UI + const handleWalletConnect = useCallback(async (walletName: string) => { + if (!walletAuth?.wallets) { + setWalletSelectionError('No wallets configured'); + return; + } + + const walletConfig = walletAuth.wallets.find(w => w.name === walletName); + if (!walletConfig) { + setWalletSelectionError(`Wallet ${walletName} not found in configuration`); + return; + } + + try { + setWalletSelectionError(null); + await walletAuthState.connectWallet(walletConfig, chainId); + } catch (error) { + const errorMessage = error instanceof Error ? error.message : 'Failed to connect wallet'; + setWalletSelectionError(errorMessage); + console.error('[AbstraxionContext] Wallet connection error:', error); + } + }, [walletAuth?.wallets, walletAuthState, chainId]); + const configureInstance = useCallback(() => { // Only configure abstraxionAuth for redirect mode if (walletAuthMode === 'redirect') { @@ -389,12 +424,16 @@ export function AbstraxionContextProvider({ // 3. Trigger onSuccess callback await walletAuthState.connectWithCustomSigner(); + setIsConnecting(false); + } else if (walletAuth?.renderWalletSelection) { + // Direct or local mode with custom wallet selection UI + // Show the wallet selection modal + console.log('[AbstraxionContext] Showing wallet selection modal'); + setShowWalletSelectionModal(true); setIsConnecting(false); } else { - // Direct or local mode without custom signer - handle wallet selection based on strategy - const strategy = walletAuth?.walletSelectionStrategy || 'auto'; - - // Default wallets for auto mode (MetaMask + Keplr) + // Direct or local mode without custom UI - auto-connect to first available wallet + console.log('[AbstraxionContext] Auto-connecting to first available wallet'); const defaultWallets: import('../Abstraxion').GenericWalletConfig[] = [ { name: 'MetaMask', windowKey: 'ethereum', signingMethod: 'ethereum' }, { name: 'Keplr', windowKey: 'keplr', signingMethod: 'cosmos' }, @@ -402,33 +441,18 @@ export function AbstraxionContextProvider({ const wallets = walletAuth?.wallets || defaultWallets; - if (strategy === 'auto') { - // Auto mode: try wallets in order until one connects - setIsConnecting(true); - for (const walletConfig of wallets) { - try { - await walletAuthState.connectWallet(walletConfig, chainId); - // If we get here, connection succeeded - break; - } catch (error) { - // Try next wallet - continue; - } + setIsConnecting(true); + for (const walletConfig of wallets) { + try { + await walletAuthState.connectWallet(walletConfig, chainId); + // If we get here, connection succeeded + break; + } catch (error) { + // Try next wallet + continue; } - setIsConnecting(false); - } else if (strategy === 'custom' && walletAuth?.onWalletSelectionRequired) { - // Custom mode: call user's callback with connection methods - walletAuth.onWalletSelectionRequired({ - connectWallet: (walletConfig, chainId) => walletAuthState.connectWallet(walletConfig, chainId), - isConnecting: walletAuthState.isConnecting, - error: walletAuthState.error, - }); - setIsConnecting(false); - } else { - // No valid strategy - this should not happen - setAbstraxionError('No wallet selection strategy configured'); - setIsConnecting(false); } + setIsConnecting(false); } } catch (error) { console.error('Login error:', error); @@ -521,6 +545,24 @@ export function AbstraxionContextProvider({ }} > {children} + + {/* Render custom wallet selection UI if provided */} + {walletAuth?.renderWalletSelection && ( + <> + {console.log('[AbstraxionContext] Rendering wallet selection UI, isOpen:', showWalletSelectionModal)} + {walletAuth.renderWalletSelection({ + isOpen: showWalletSelectionModal, + onClose: () => { + setShowWalletSelectionModal(false); + setWalletSelectionError(null); + }, + wallets: walletAuth.wallets || [], + connect: handleWalletConnect, + isConnecting: walletAuthState.isConnecting, + error: walletSelectionError || walletAuthState.error, + })} + + )} ); } diff --git a/packages/abstraxion/src/hooks/useGrantsFlow.ts b/packages/abstraxion/src/hooks/useGrantsFlow.ts index 65759b4e..2d90ea71 100644 --- a/packages/abstraxion/src/hooks/useGrantsFlow.ts +++ b/packages/abstraxion/src/hooks/useGrantsFlow.ts @@ -11,6 +11,7 @@ import { CompositeTreasuryStrategy, DaoDaoTreasuryStrategy, generateTreasuryGrants as generateTreasuryGrantMessages, + isContractGrantConfigValid, } from "@burnt-labs/account-management"; import { AADirectSigner, AAEthSigner, AAClient } from "@burnt-labs/signers"; import { abstraxionAuth } from "../components/Abstraxion"; @@ -129,6 +130,20 @@ export function useGrantsFlow({ setIsCreatingGrants(true); setGrantsError(null); + // Validate contract grant configurations before proceeding + if (contracts && contracts.length > 0) { + const isValid = isContractGrantConfigValid( + contracts, + { id: smartAccountAddress } as any + ); + + if (!isValid) { + throw new Error( + 'Invalid contract grant configuration: Contract address cannot be the same as the granter account' + ); + } + } + // 1. Generate temp keypair and get grantee address const tempKeypair = await abstraxionAuth.generateAndStoreTempAccount(); const granteeAddress = await abstraxionAuth.getKeypairAddress(); diff --git a/packages/abstraxion/src/index.ts b/packages/abstraxion/src/index.ts index 9d333411..010b7083 100644 --- a/packages/abstraxion/src/index.ts +++ b/packages/abstraxion/src/index.ts @@ -9,7 +9,7 @@ export type { AbstraxionConfig, CustomSigner, WalletAuthConfig, - WalletConnectionMethods, + WalletSelectionRenderProps, GenericWalletConfig, SigningMethod, } from "./components/Abstraxion"; From 2ceb06dad3c8be72045de806c2b81a66a71a0113 Mon Sep 17 00:00:00 2001 From: ertemann Date: Tue, 28 Oct 2025 00:12:07 +0100 Subject: [PATCH 08/27] externalise walletmodal with proper hook, basically finish browser/redirect mode barring grant warnings and removing logs. finalize demo app and split abstraxion providers, REMOVE direct signer as implementation eas bad --- apps/demo-app/src/app/direct-mode/layout.tsx | 81 +++--- apps/demo-app/src/app/direct-mode/page.tsx | 98 ++++++- apps/demo-app/src/app/layout.tsx | 15 +- .../src/app/loading-states/layout.tsx | 26 ++ apps/demo-app/src/components/WalletModal.tsx | 142 +++++----- .../abstraxion/src/authentication/types.ts | 86 ++++++ .../abstraxion/src/authentication/utils.ts | 101 +++++++ .../abstraxion/src/authentication/wallets.ts | 49 ++++ .../src/components/Abstraxion/index.tsx | 147 ++-------- .../components/AbstraxionContext/index.tsx | 254 +++++++++++------- packages/abstraxion/src/hooks/index.ts | 2 + .../abstraxion/src/hooks/useBrowserWallet.ts | 75 ++++++ .../abstraxion/src/hooks/useGrantsFlow.ts | 40 ++- .../abstraxion/src/hooks/useWalletAuth.ts | 133 +++------ packages/abstraxion/src/index.ts | 33 ++- packages/abstraxion/tsconfig.json | 1 + 16 files changed, 809 insertions(+), 474 deletions(-) create mode 100644 apps/demo-app/src/app/loading-states/layout.tsx create mode 100644 packages/abstraxion/src/authentication/types.ts create mode 100644 packages/abstraxion/src/authentication/utils.ts create mode 100644 packages/abstraxion/src/authentication/wallets.ts create mode 100644 packages/abstraxion/src/hooks/useBrowserWallet.ts diff --git a/apps/demo-app/src/app/direct-mode/layout.tsx b/apps/demo-app/src/app/direct-mode/layout.tsx index 52e9af74..bb4b8358 100644 --- a/apps/demo-app/src/app/direct-mode/layout.tsx +++ b/apps/demo-app/src/app/direct-mode/layout.tsx @@ -3,6 +3,8 @@ import { useMemo } from "react"; import { AbstraxionProvider, type AbstraxionConfig, + type BrowserWalletAuthentication, + BUILT_IN_WALLETS, } from "@burnt-labs/abstraxion"; import { WalletModal } from "../../components/WalletModal"; @@ -11,7 +13,7 @@ export default function DirectModeLayout({ }: { children: React.ReactNode; }): JSX.Element { - // Direct mode configuration with treasury contract + // Browser wallet authentication configuration const directModeConfig: AbstraxionConfig = useMemo(() => ({ // REQUIRED: Chain ID chainId: "xion-testnet-2", @@ -31,63 +33,48 @@ export default function DirectModeLayout({ // Fee granter address (optional - pays transaction fees for grant creation) feeGranter: process.env.NEXT_PUBLIC_FEE_GRANTER_ADDRESS, - // Enable direct mode for in-app wallet connections - walletAuth: { - mode: "direct" as const, + // Indexer configuration for account lookup (optional but recommended) + // Only include if BOTH url and authToken are provided + ...(process.env.NEXT_PUBLIC_INDEXER_URL && process.env.NEXT_PUBLIC_INDEXER_TOKEN && { + indexer: { + url: process.env.NEXT_PUBLIC_INDEXER_URL, + authToken: process.env.NEXT_PUBLIC_INDEXER_TOKEN, + }, + }), - // Point to local AA API for development - aaApiUrl: process.env.NEXT_PUBLIC_AA_API_URL, - - // Indexer configuration for account lookup (optional but recommended) - // Only include if BOTH url and authToken are provided - ...(process.env.NEXT_PUBLIC_INDEXER_URL && process.env.NEXT_PUBLIC_INDEXER_TOKEN && { - indexer: { - url: process.env.NEXT_PUBLIC_INDEXER_URL, - authToken: process.env.NEXT_PUBLIC_INDEXER_TOKEN, - }, - }), + // Local configuration for RPC fallback (required for direct chain queries) + ...(process.env.NEXT_PUBLIC_CHECKSUM && process.env.NEXT_PUBLIC_FEE_GRANTER_ADDRESS && { + localConfig: { + codeId: Number(process.env.NEXT_PUBLIC_CODE_ID) || 1, + checksum: process.env.NEXT_PUBLIC_CHECKSUM, + feeGranter: process.env.NEXT_PUBLIC_FEE_GRANTER_ADDRESS, + addressPrefix: process.env.NEXT_PUBLIC_ADDRESS_PREFIX || "xion", + }, + }), - // Local configuration for RPC fallback (required for direct chain queries) - ...(process.env.NEXT_PUBLIC_CHECKSUM && process.env.NEXT_PUBLIC_FEE_GRANTER_ADDRESS && { - localConfig: { - codeId: Number(process.env.NEXT_PUBLIC_CODE_ID) || 1, - checksum: process.env.NEXT_PUBLIC_CHECKSUM, - feeGranter: process.env.NEXT_PUBLIC_FEE_GRANTER_ADDRESS, - addressPrefix: process.env.NEXT_PUBLIC_ADDRESS_PREFIX || "xion", - }, - }), + authentication: { + type: "browser", + aaApiUrl: process.env.NEXT_PUBLIC_AA_API_URL, + autoConnect: false, // Show wallet selection UI - // Define wallets to support - // You can add any Ethereum or Cosmos wallet by specifying its window key! + // Use built-in wallet definitions wallets: [ - { name: "MetaMask", windowKey: "ethereum", signingMethod: "ethereum" }, - { name: "Keplr", windowKey: "keplr", signingMethod: "cosmos" }, - { name: "OKX", windowKey: "okxwallet.keplr", signingMethod: "cosmos" }, - // Example: Add Leap wallet (Cosmos) - // { name: "Leap", windowKey: "leap", signingMethod: "cosmos" }, - // Example: Add Rainbow wallet (Ethereum) - // { name: "Rainbow", windowKey: "ethereum", signingMethod: "ethereum" }, - // Example: Add Compass wallet (Cosmos) - // { name: "Compass", windowKey: "compass", signingMethod: "cosmos" }, + BUILT_IN_WALLETS.metamask, + BUILT_IN_WALLETS.keplr, + BUILT_IN_WALLETS.okx, ], - - // Custom wallet selection UI - all state management and auto-close is handled internally! - renderWalletSelection: ({ isOpen, onClose, wallets, connect, isConnecting, error }) => ( - - ), }, }), []); return ( {children} + {/* Wallet modal - renders when login() is called */} + ( + + ) ); } diff --git a/apps/demo-app/src/app/direct-mode/page.tsx b/apps/demo-app/src/app/direct-mode/page.tsx index 60d156d6..6f9ae31b 100644 --- a/apps/demo-app/src/app/direct-mode/page.tsx +++ b/apps/demo-app/src/app/direct-mode/page.tsx @@ -1,5 +1,5 @@ "use client"; -import { useState } from "react"; +import { useState, useEffect } from "react"; import { useAbstraxionAccount, useAbstraxionSigningClient, @@ -20,6 +20,10 @@ export default function DirectModePage(): JSX.Element { } = useAbstraxionAccount(); const { client, logout } = useAbstraxionSigningClient(); + // Balance state + const [balance, setBalance] = useState(null); + const [isLoadingBalance, setIsLoadingBalance] = useState(false); + // Send transaction state const [recipient, setRecipient] = useState(""); const [amount, setAmount] = useState(""); @@ -27,12 +31,49 @@ export default function DirectModePage(): JSX.Element { const [txHash, setTxHash] = useState(null); const [txError, setTxError] = useState(null); + // Query balance when connected + useEffect(() => { + async function fetchBalance() { + if (!client || !account.bech32Address) { + setBalance(null); + return; + } + + try { + setIsLoadingBalance(true); + const balances = await client.getAllBalances(account.bech32Address); + const xionBalance = balances.find((b) => b.denom === "uxion"); + + if (xionBalance) { + // Convert uxion to XION (divide by 1,000,000) + const xionAmount = (parseInt(xionBalance.amount) / 1_000_000).toFixed(6); + setBalance(xionAmount); + } else { + setBalance("0"); + } + } catch (error) { + console.error("Failed to fetch balance:", error); + setBalance("Error"); + } finally { + setIsLoadingBalance(false); + } + } + + fetchBalance(); + }, [client, account.bech32Address, txHash]); // Refetch after successful transaction + const handleSendTokens = async () => { if (!client || !account.bech32Address || !recipient || !amount) { setTxError("Please fill in all fields"); return; } + // Check if user has sufficient balance + if (balance !== null && parseFloat(amount) > parseFloat(balance)) { + setTxError(`Insufficient balance. You have ${balance} XION`); + return; + } + try { setIsSending(true); setTxError(null); @@ -64,13 +105,13 @@ export default function DirectModePage(): JSX.Element { {/* Initialization Loading Overlay */} {isInitializing && (
-
+
-
-
+
+
-

Initializing

+

Initializing

Checking for existing session...

@@ -127,7 +168,7 @@ export default function DirectModePage(): JSX.Element { {account.bech32Address && ( <> -
+

Account Info

Address: {account.bech32Address} @@ -135,6 +176,21 @@ export default function DirectModePage(): JSX.Element {

Client: {client ? "Connected" : "Not connected"}

+
+

+ Balance:{" "} + {isLoadingBalance ? ( + + + Loading... + + ) : balance !== null ? ( + {balance} XION + ) : ( + "—" + )} +

+
@@ -143,6 +199,15 @@ export default function DirectModePage(): JSX.Element {

+ {/* Low Balance Warning */} + {balance !== null && parseFloat(balance) === 0 && ( +
+

+ ⚠ Your account has no XION tokens. You'll need to fund this address to send transactions. +

+
+ )} + {/* Send XION Section */}

Send XION

@@ -161,9 +226,24 @@ export default function DirectModePage(): JSX.Element {
- +
+ + {balance !== null && parseFloat(balance) > 0 && ( + + )} +
- - {children} - + {children} ); diff --git a/apps/demo-app/src/app/loading-states/layout.tsx b/apps/demo-app/src/app/loading-states/layout.tsx new file mode 100644 index 00000000..d8bde56f --- /dev/null +++ b/apps/demo-app/src/app/loading-states/layout.tsx @@ -0,0 +1,26 @@ +"use client"; +import { AbstraxionProvider } from "@burnt-labs/abstraxion"; + +// Redirect mode configuration (OAuth dashboard flow) +const redirectModeConfig = { + chainId: "xion-testnet-2", + treasury: process.env.NEXT_PUBLIC_TREASURY_ADDRESS, + rpcUrl: process.env.NEXT_PUBLIC_RPC_URL || "https://rpc.xion-testnet-2.burnt.com:443", + restUrl: process.env.NEXT_PUBLIC_REST_URL || "https://api.xion-testnet-2.burnt.com", + gasPrice: process.env.NEXT_PUBLIC_GAS_PRICE || "0.001uxion", + + // Authentication defaults to redirect mode if not specified + // This demonstrates the traditional OAuth flow through the dashboard +}; + +export default function LoadingStatesLayout({ + children, +}: { + children: React.ReactNode; +}): JSX.Element { + return ( + + {children} + + ); +} diff --git a/apps/demo-app/src/components/WalletModal.tsx b/apps/demo-app/src/components/WalletModal.tsx index f86ce5fc..4647bfbb 100644 --- a/apps/demo-app/src/components/WalletModal.tsx +++ b/apps/demo-app/src/components/WalletModal.tsx @@ -1,50 +1,53 @@ "use client"; -import { useEffect } from "react"; -import type { GenericWalletConfig } from "@burnt-labs/abstraxion"; +import { + useBrowserWallet, + type BrowserWalletAuthentication, +} from "@burnt-labs/abstraxion"; import { KeplrLogo } from "./icons/KeplrLogo"; import { OKXLogo } from "./icons/OKXLogo"; import { MetamaskLogo } from "./icons/MetamaskLogo"; interface WalletModalProps { - isOpen: boolean; - onClose: () => void; - wallets: GenericWalletConfig[]; - onConnect: (walletName: string) => Promise; - loading: boolean; - error: string | null; + authentication: BrowserWalletAuthentication; } -export function WalletModal({ - isOpen, - onClose, - wallets, - onConnect, - loading, - error, -}: WalletModalProps) { - // Close on Escape key - useEffect(() => { - const handleEscape = (e: KeyboardEvent) => { - if (e.key === "Escape") onClose(); - }; +/** + * Combined wallet selection modal component. + * Uses the abstraxion hook to get state and renders the wallet selection UI. + */ +export function WalletModal({ authentication }: WalletModalProps) { + const { + showWalletSelectionModal, + setShowWalletSelectionModal, + walletSelectionError, + handleWalletConnect, + isConnecting, + } = useBrowserWallet(); - if (isOpen) { - document.addEventListener("keydown", handleEscape); - return () => document.removeEventListener("keydown", handleEscape); - } - }, [isOpen, onClose]); + console.log('[WalletModal] Render state:', { + showWalletSelectionModal, + isConnecting, + shouldRender: showWalletSelectionModal || isConnecting + }); - if (!isOpen) return null; + // Don't render if modal shouldn't be shown AND we're not in the middle of connecting + // Keep modal open during connection even if showWalletSelectionModal becomes false + if (!showWalletSelectionModal && !isConnecting) { + console.log('[WalletModal] ❌ Not rendering - both flags are false'); + return null; + } - // Map wallet configs to logos - const getWalletLogo = (walletName: string) => { - switch (walletName) { - case "MetaMask": + const wallets = authentication.wallets || []; + const error = walletSelectionError; + // Map wallet IDs to logos + const getWalletLogo = (walletId: string) => { + switch (walletId) { + case "metamask": return ; - case "Keplr": + case "keplr": return ; - case "OKX": + case "okx": return ; default: return null; @@ -52,47 +55,38 @@ export function WalletModal({ }; return ( - <> - {/* Overlay */} +
+ {/* Backdrop - click to close (disabled when connecting) */}