From 3a5ea04ecabbe226deb70c35526ba1a0de9d74d6 Mon Sep 17 00:00:00 2001 From: jxom Date: Tue, 4 Jun 2024 11:27:26 +1000 Subject: [PATCH 01/30] feat: prool (#2360) * feat: prool * wip * chore: format * wip * wip * test * format * test * test * test * test * chore: lint --------- Co-authored-by: jxom --- .../actions/install-dependencies/action.yml | 2 +- .github/actions/setup-wagmi/action.yml | 2 +- bun.lockb | Bin 564972 -> 568836 bytes package.json | 4 +-- src/actions/ens/getEnsAvatar.test.ts | 7 ----- src/actions/public/getContractEvents.test.ts | 10 ------- src/actions/public/getFilterChanges.test.ts | 10 ------- src/actions/public/getFilterLogs.test.ts | 10 ------- src/actions/public/getLogs.test.ts | 10 ------- src/actions/public/watchContractEvent.test.ts | 22 ++++---------- src/actions/public/watchEvent.test.ts | 22 ++++---------- src/actions/wallet/sendTransaction.test.ts | 2 +- src/clients/transports/ipc.test.ts | 8 ++--- .../eip5792/actions/writeContracts.test.ts | 6 +++- src/op-stack/actions/getPortalVersion.test.ts | 9 ++++-- .../actions/getTimeToFinalize.test.ts | 4 +-- src/utils/rpc/ipc.test.ts | 8 ++--- test/globalSetup.ts | 28 ++++-------------- test/setup.ts | 19 +++++------- test/src/anvil.ts | 21 +++++++------ test/src/constants.ts | 4 ++- 21 files changed, 66 insertions(+), 142 deletions(-) diff --git a/.github/actions/install-dependencies/action.yml b/.github/actions/install-dependencies/action.yml index 50d3ff34d5..ed7aaba80a 100644 --- a/.github/actions/install-dependencies/action.yml +++ b/.github/actions/install-dependencies/action.yml @@ -10,7 +10,7 @@ runs: - name: Set up node uses: actions/setup-node@v4 with: - node-version: 21 + node-version: 22 - name: Set up bun uses: wevm/actions/.github/actions/bun@main diff --git a/.github/actions/setup-wagmi/action.yml b/.github/actions/setup-wagmi/action.yml index 29d620fb55..5bff30dd79 100644 --- a/.github/actions/setup-wagmi/action.yml +++ b/.github/actions/setup-wagmi/action.yml @@ -18,7 +18,7 @@ runs: with: cache: pnpm cache-dependency-path: ./wagmi/pnpm-lock.yaml - node-version: 21 + node-version: 22 - name: Build viem shell: bash diff --git a/bun.lockb b/bun.lockb index 45d2448f544145c0b842a06b2c9a3757a003d619..37096abed1784495386905cc3f7ae4b1bdf73041 100755 GIT binary patch delta 114141 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¬&RP1E=-X`Go>e93UaGI3) zbP89;6k(pMT{AxJ>hWKnh5yOd=l=RE&972-v#dccrB`)4l;6j#o8=Lcl7W+ zLn6JS`VNgAIUpwHEBrp%S5f_9qWVP*j~YpbUP-cp{(cmOEOJMUUQ1QTZKl?g>N#ku zlC_W4qhcW%g*<`MyDmL{ul2ANzreTWY^o>uy||D$O!?cM`vChhfBj z-byth>rTmj<~DTK&)kJ3`I*6>1H?rPUsd}pUwbH#e3Y42TXqL+|a|`3r V(VO_=7(D(a!K?~(U2eYce*h2p3RD09 delta 111975 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 { blockNumber: 19_258_213n, jsonRpcUrl: anvilMainnet.forkUrl, }) - - return async () => { - await stopImpersonatingAccount(client, { - address: address.vitalik, - }) - } }) test.each([ diff --git a/src/actions/public/getContractEvents.test.ts b/src/actions/public/getContractEvents.test.ts index ae2aab278b..7620c2405f 100644 --- a/src/actions/public/getContractEvents.test.ts +++ b/src/actions/public/getContractEvents.test.ts @@ -8,7 +8,6 @@ import { import { accounts, address } from '~test/src/constants.js' import { impersonateAccount } from '../test/impersonateAccount.js' import { mine } from '../test/mine.js' -import { stopImpersonatingAccount } from '../test/stopImpersonatingAccount.js' import { anvilMainnet } from '../../../test/src/anvil.js' import { getAddress } from '../../index.js' @@ -32,15 +31,6 @@ beforeAll(async () => { address: address.daiHolder, value: 10000000000000000000000n, }) - - return async () => { - await stopImpersonatingAccount(client, { - address: address.usdcHolder, - }) - await stopImpersonatingAccount(client, { - address: address.daiHolder, - }) - } }) test('default', async () => { diff --git a/src/actions/public/getFilterChanges.test.ts b/src/actions/public/getFilterChanges.test.ts index ce39f48a42..b44a68a827 100644 --- a/src/actions/public/getFilterChanges.test.ts +++ b/src/actions/public/getFilterChanges.test.ts @@ -19,7 +19,6 @@ import { parseEther } from '../../utils/unit/parseEther.js' import { impersonateAccount } from '../test/impersonateAccount.js' import { mine } from '../test/mine.js' import { setBalance } from '../test/setBalance.js' -import { stopImpersonatingAccount } from '../test/stopImpersonatingAccount.js' import { sendTransaction } from '../wallet/sendTransaction.js' import { writeContract } from '../wallet/writeContract.js' @@ -128,15 +127,6 @@ beforeAll(async () => { address: address.usdcHolder, value: 10000000000000000000000n, }) - - return async () => { - await stopImpersonatingAccount(client, { - address: address.vitalik, - }) - await stopImpersonatingAccount(client, { - address: address.usdcHolder, - }) - } }) test('default', async () => { diff --git a/src/actions/public/getFilterLogs.test.ts b/src/actions/public/getFilterLogs.test.ts index 099fa7efe1..210cc2cffc 100644 --- a/src/actions/public/getFilterLogs.test.ts +++ b/src/actions/public/getFilterLogs.test.ts @@ -17,7 +17,6 @@ import { getAddress } from '../../utils/address/getAddress.js' import { impersonateAccount } from '../test/impersonateAccount.js' import { mine } from '../test/mine.js' import { setBalance } from '../test/setBalance.js' -import { stopImpersonatingAccount } from '../test/stopImpersonatingAccount.js' import { writeContract } from '../wallet/writeContract.js' import { anvilMainnet } from '../../../test/src/anvil.js' @@ -123,15 +122,6 @@ beforeAll(async () => { address: address.usdcHolder, value: 10000000000000000000000n, }) - - return async () => { - await stopImpersonatingAccount(client, { - address: address.vitalik, - }) - await stopImpersonatingAccount(client, { - address: address.usdcHolder, - }) - } }) test('default', async () => { diff --git a/src/actions/public/getLogs.test.ts b/src/actions/public/getLogs.test.ts index 547662ea6c..151cd8caa1 100644 --- a/src/actions/public/getLogs.test.ts +++ b/src/actions/public/getLogs.test.ts @@ -16,7 +16,6 @@ import { getAddress } from '../../utils/address/getAddress.js' import { impersonateAccount } from '../test/impersonateAccount.js' import { mine } from '../test/mine.js' import { setBalance } from '../test/setBalance.js' -import { stopImpersonatingAccount } from '../test/stopImpersonatingAccount.js' import { writeContract } from '../wallet/writeContract.js' import { anvilMainnet } from '../../../test/src/anvil.js' @@ -121,15 +120,6 @@ beforeAll(async () => { address: address.usdcHolder, value: 10000000000000000000000n, }) - - return async () => { - await stopImpersonatingAccount(client, { - address: address.vitalik, - }) - await impersonateAccount(client, { - address: address.usdcHolder, - }) - } }) test('default', async () => { diff --git a/src/actions/public/watchContractEvent.test.ts b/src/actions/public/watchContractEvent.test.ts index 4f5f174cf7..30fb2d5ba8 100644 --- a/src/actions/public/watchContractEvent.test.ts +++ b/src/actions/public/watchContractEvent.test.ts @@ -9,7 +9,6 @@ import { wait } from '../../utils/wait.js' import { impersonateAccount } from '../test/impersonateAccount.js' import { mine } from '../test/mine.js' import { setBalance } from '../test/setBalance.js' -import { stopImpersonatingAccount } from '../test/stopImpersonatingAccount.js' import { writeContract } from '../wallet/writeContract.js' import { anvilMainnet } from '../../../test/src/anvil.js' @@ -52,15 +51,6 @@ beforeAll(async () => { address: address.usdcHolder, value: 10000000000000000000000n, }) - - return async () => { - await stopImpersonatingAccount(client, { - address: address.vitalik, - }) - await stopImpersonatingAccount(client, { - address: address.usdcHolder, - }) - } }) describe('poll', () => { @@ -791,7 +781,7 @@ describe('poll', () => { chain: anvilMainnet.chain, transport: fallback([http(), webSocket()]), pollingInterval: 200, - }) + }).extend(() => ({ mode: 'anvil' })) const unwatch = watchContractEvent(client_2, { abi: usdcContractConfig.abi, @@ -810,27 +800,27 @@ describe('poll', () => { }, }) - await writeContract(client, { + await writeContract(client_2, { ...usdcContractConfig, account: address.vitalik, functionName: 'transfer', args: [address.vitalik, 1n], }) - await writeContract(client, { + await writeContract(client_2, { ...usdcContractConfig, account: address.vitalik, functionName: 'transfer', args: [address.vitalik, 1n], }) - await mine(client, { blocks: 1 }) + await mine(client_2, { blocks: 1 }) await wait(200) - await writeContract(client, { + await writeContract(client_2, { ...usdcContractConfig, account: address.vitalik, functionName: 'approve', args: [address.vitalik, 1n], }) - await mine(client, { blocks: 1 }) + await mine(client_2, { blocks: 1 }) await wait(200) unwatch() diff --git a/src/actions/public/watchEvent.test.ts b/src/actions/public/watchEvent.test.ts index 5ea99ec048..2883652d56 100644 --- a/src/actions/public/watchEvent.test.ts +++ b/src/actions/public/watchEvent.test.ts @@ -20,7 +20,6 @@ import { wait } from '../../utils/wait.js' import { impersonateAccount } from '../test/impersonateAccount.js' import { mine } from '../test/mine.js' import { setBalance } from '../test/setBalance.js' -import { stopImpersonatingAccount } from '../test/stopImpersonatingAccount.js' import { writeContract } from '../wallet/writeContract.js' import * as createEventFilter from './createEventFilter.js' import * as getBlockNumber from './getBlockNumber.js' @@ -116,15 +115,6 @@ beforeAll(async () => { value: 10000000000000000000000n, }) await mine(client, { blocks: 1 }) - - return async () => { - await stopImpersonatingAccount(client, { - address: address.vitalik, - }) - await stopImpersonatingAccount(client, { - address: address.usdcHolder, - }) - } }) describe('poll', () => { @@ -464,34 +454,34 @@ describe('poll', () => { chain: anvilMainnet.chain, transport: fallback([http(), webSocket()]), pollingInterval: 200, - }) + }).extend(() => ({ mode: 'anvil' })) const unwatch = watchEvent(client_2, { onLogs: (logs_) => logs.push(logs_), }) await wait(200) - await writeContract(client, { + await writeContract(client_2, { ...usdcContractConfig, functionName: 'transfer', args: [accounts[0].address, 1n], account: address.vitalik, }) - await writeContract(client, { + await writeContract(client_2, { ...usdcContractConfig, functionName: 'transfer', args: [accounts[0].address, 1n], account: address.vitalik, }) - await mine(client, { blocks: 1 }) + await mine(client_2, { blocks: 1 }) await wait(200) - await writeContract(client, { + await writeContract(client_2, { ...usdcContractConfig, functionName: 'transfer', args: [accounts[1].address, 1n], account: address.vitalik, }) - await mine(client, { blocks: 1 }) + await mine(client_2, { blocks: 1 }) await wait(200) unwatch() diff --git a/src/actions/wallet/sendTransaction.test.ts b/src/actions/wallet/sendTransaction.test.ts index 00eb8c5c5f..2c367ed36d 100644 --- a/src/actions/wallet/sendTransaction.test.ts +++ b/src/actions/wallet/sendTransaction.test.ts @@ -178,7 +178,7 @@ test('sends transaction (w/ serializer)', async () => { ).rejects.toThrowError() expect(serializer).toReturnWith( - '0x08f30182028f843b9aca008501a786b06a825208809470997970c51812dc3a010c7d01b50e0d17dc79c8880de0b6b3a764000080c0', + '0x08ef0182028f8085016bebe66a825208809470997970c51812dc3a010c7d01b50e0d17dc79c8880de0b6b3a764000080c0', ) }) diff --git a/src/clients/transports/ipc.test.ts b/src/clients/transports/ipc.test.ts index e6ea22d87d..6a3da3e464 100644 --- a/src/clients/transports/ipc.test.ts +++ b/src/clients/transports/ipc.test.ts @@ -1,4 +1,4 @@ -import { createAnvil } from '@viem/anvil' +import { anvil } from 'prool/instances' import { afterAll, assertType, beforeAll, describe, expect, test } from 'vitest' import { anvilMainnet } from '../../../test/src/anvil.js' @@ -15,7 +15,7 @@ const client = createClient({ transport: http('http://127.0.0.1:6967'), }).extend(() => ({ mode: 'anvil' })) -const anvil = createAnvil({ +const instance = anvil({ port: 6967, ipc: anvilMainnet.rpcUrl.ipc, forkBlockNumber: anvilMainnet.forkBlockNumber, @@ -23,11 +23,11 @@ const anvil = createAnvil({ }) beforeAll(async () => { - await anvil.start() + await instance.start() }) afterAll(async () => { - await anvil.stop() + await instance.stop() }) test('default', () => { diff --git a/src/experimental/eip5792/actions/writeContracts.test.ts b/src/experimental/eip5792/actions/writeContracts.test.ts index df5321ec94..ec609bd005 100644 --- a/src/experimental/eip5792/actions/writeContracts.test.ts +++ b/src/experimental/eip5792/actions/writeContracts.test.ts @@ -1,4 +1,4 @@ -import { expect, test } from 'vitest' +import { beforeAll, expect, test } from 'vitest' import { wagmiContractConfig } from '~test/src/abis.js' import { anvilMainnet } from '../../../../test/src/anvil.js' import { accounts } from '../../../../test/src/constants.js' @@ -99,6 +99,10 @@ const getClient = ({ }), }) +beforeAll(async () => { + await anvilMainnet.restart() +}) + test('default', async () => { const requests: unknown[] = [] diff --git a/src/op-stack/actions/getPortalVersion.test.ts b/src/op-stack/actions/getPortalVersion.test.ts index 6a22ceab98..8e9cac4c63 100644 --- a/src/op-stack/actions/getPortalVersion.test.ts +++ b/src/op-stack/actions/getPortalVersion.test.ts @@ -1,11 +1,16 @@ -import { expect, test } from 'vitest' -import { anvilSepolia } from '../../../test/src/anvil.js' +import { beforeAll, expect, test } from 'vitest' +import { anvilOptimismSepolia, anvilSepolia } from '../../../test/src/anvil.js' import { mainnetClient } from '../../../test/src/utils.js' import { base, optimismSepolia } from '../../op-stack/chains.js' import { getPortalVersion } from './getPortalVersion.js' const sepoliaClient = anvilSepolia.getClient() +beforeAll(async () => { + await anvilSepolia.restart() + await anvilOptimismSepolia.restart() +}) + test('default', async () => { const version = await getPortalVersion(mainnetClient, { targetChain: base, diff --git a/src/op-stack/actions/getTimeToFinalize.test.ts b/src/op-stack/actions/getTimeToFinalize.test.ts index efce1267b7..bbdb1e17cb 100644 --- a/src/op-stack/actions/getTimeToFinalize.test.ts +++ b/src/op-stack/actions/getTimeToFinalize.test.ts @@ -16,7 +16,7 @@ const optimismClient = anvilOptimism.getClient() const optimismSepoliaClient = anvilOptimismSepolia.getClient() // TODO(fault-proofs): use `client` when fault proofs deployed to mainnet. -test('default', async () => { +test.skip('default', async () => { const receipt = await getTransactionReceipt(optimismSepoliaClient, { hash: '0xc0e6125c9e075128ad55d3b3bcee17ce3568ab4c9280698b0e98409c3166a237', }) @@ -42,7 +42,7 @@ test('default', async () => { }) // TODO(fault-proofs): use `client` when fault proofs deployed to mainnet. -test('ready to finalize', async () => { +test.skip('ready to finalize', async () => { const receipt = await getTransactionReceipt(optimismSepoliaClient, { hash: '0xc0e6125c9e075128ad55d3b3bcee17ce3568ab4c9280698b0e98409c3166a237', }) diff --git a/src/utils/rpc/ipc.test.ts b/src/utils/rpc/ipc.test.ts index 15e33493fc..24c18bbb60 100644 --- a/src/utils/rpc/ipc.test.ts +++ b/src/utils/rpc/ipc.test.ts @@ -1,4 +1,4 @@ -import { createAnvil } from '@viem/anvil' +import { anvil } from 'prool/instances' import { afterAll, beforeAll, describe, expect, test } from 'vitest' import { anvilMainnet } from '../../../test/src/anvil.js' @@ -14,7 +14,7 @@ const client = createClient({ transport: http('http://127.0.0.1:6968'), }).extend(() => ({ mode: 'anvil' })) -const anvil = createAnvil({ +const instance = anvil({ port: 6968, ipc: anvilMainnet.rpcUrl.ipc, forkBlockNumber: anvilMainnet.forkBlockNumber, @@ -22,11 +22,11 @@ const anvil = createAnvil({ }) beforeAll(async () => { - await anvil.start() + await instance.start() }) afterAll(async () => { - await anvil.stop() + await instance.stop() }) describe('getIpcRpcClient', () => { diff --git a/test/globalSetup.ts b/test/globalSetup.ts index 9c87f80c1a..22f7bf5191 100644 --- a/test/globalSetup.ts +++ b/test/globalSetup.ts @@ -1,10 +1,4 @@ -import { - anvilMainnet, - anvilOptimism, - anvilOptimismSepolia, - anvilSepolia, - anvilZkSync, -} from './src/anvil.js' +import * as instances from './src/anvil.js' export default async function () { if (process.env.SKIP_GLOBAL_SETUP) return @@ -27,20 +21,8 @@ export default async function () { // We still need to remember to reset the anvil instance between test files. This is generally // handled in `setup.ts` but may require additional resetting (e.g. via `afterAll`), in case of // any custom per-test adjustments that persist beyond `anvil_reset`. - const shutdownMainnet = await anvilMainnet.start() - const shutdownOptimism = await anvilOptimism.start() - const shutdownZkSync = await anvilZkSync.start() - - // TODO(fault-proofs): remove when fault proofs deployed to mainnet. - const shutdownSepolia = await anvilSepolia.start() - // TODO(fault-proofs): remove when fault proofs deployed to mainnet. - const shutdownOptimismSepolia = await anvilOptimismSepolia.start() - - return () => { - shutdownMainnet() - shutdownOptimism() - shutdownZkSync() - shutdownSepolia() - shutdownOptimismSepolia() - } + const shutdown = await Promise.all( + Object.values(instances).map((instance) => instance.start()), + ) + return () => Promise.all(shutdown.map((fn) => fn())) } diff --git a/test/setup.ts b/test/setup.ts index 0f98e41dfa..4ea93fdcba 100644 --- a/test/setup.ts +++ b/test/setup.ts @@ -1,17 +1,13 @@ -import { fetchLogs } from '@viem/anvil' - -import { afterAll, afterEach, beforeAll, beforeEach, vi } from 'vitest' +import { afterAll, beforeAll, beforeEach, vi } from 'vitest' import { setIntervalMining } from '~viem/actions/test/setIntervalMining.js' import { cleanupCache, listenersCache } from '~viem/utils/observe.js' import { promiseCache, responseCache } from '~viem/utils/promise/withCache.js' import { socketClientCache } from '~viem/utils/rpc/socket.js' -import { reset } from '../src/actions/test/reset.js' -import { anvilMainnet } from './src/anvil.js' -import { poolId } from './src/constants.js' +import * as instances from './src/anvil.js' -const client = anvilMainnet.getClient() +const client = instances.anvilMainnet.getClient() beforeAll(() => { vi.mock('../src/errors/utils.ts', () => ({ @@ -38,9 +34,8 @@ afterAll(async () => { vi.restoreAllMocks() if (process.env.SKIP_GLOBAL_SETUP) return - // Reset the anvil instance to the same state it was in before the tests started. - await reset(client, { - blockNumber: anvilMainnet.forkBlockNumber, - jsonRpcUrl: anvilMainnet.forkUrl, - }) + // Reset the anvil instances to the same state it was in before the tests started. + await Promise.all( + Object.values(instances).map((instance) => instance.restart()), + ) }) diff --git a/test/src/anvil.ts b/test/src/anvil.ts index 9ae8698ad4..e753091157 100644 --- a/test/src/anvil.ts +++ b/test/src/anvil.ts @@ -1,4 +1,5 @@ -import { type CreateAnvilOptions, startProxy } from '@viem/anvil' +import { createServer } from 'prool' +import { type AnvilParameters, anvil } from 'prool/instances' import { mainnet, optimism, @@ -82,7 +83,7 @@ function getEnv(key: string, fallback: string): string { } type DefineAnvilParameters = Omit< - CreateAnvilOptions, + AnvilParameters, 'forkBlockNumber' | 'forkUrl' > & { chain: chain @@ -123,6 +124,7 @@ type DefineAnvilReturnType = { ipc: string ws: string } + restart(): Promise start(): Promise<() => Promise> } @@ -233,17 +235,18 @@ function defineAnvil({ ).extend(() => ({ mode: 'anvil' })) as never }, rpcUrl, + async restart() { + await fetch(`${rpcUrl.http}/restart`) + }, async start() { - return await startProxy({ - port, - options: { - timeout: 60_000, + return await createServer({ + instance: anvil({ forkUrl, forkBlockNumber, - startTimeout: 20_000, ...options, - }, - }) + }), + port, + }).start() }, } as const } diff --git a/test/src/constants.ts b/test/src/constants.ts index 6db8fbf027..5f0955ea32 100644 --- a/test/src/constants.ts +++ b/test/src/constants.ts @@ -53,7 +53,9 @@ export const address = { notDeployed: '0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef', } as const -export const poolId = Number(process.env.VITEST_POOL_ID ?? 1) +export const poolId = + Number(process.env.VITEST_POOL_ID ?? 1) + + (process.env.VITE_NETWORK_TRANSPORT_MODE === 'webSocket' ? 100 : 0) export const typedData = { basic: { From 7aad10e2ed7d3ecf5a6c38cd326aa9ff8dead239 Mon Sep 17 00:00:00 2001 From: jxom Date: Tue, 4 Jun 2024 14:35:07 +1000 Subject: [PATCH 02/30] fix: `withTimeout` error handling --- .changeset/nasty-buses-behave.md | 5 +++++ bun.lockb | Bin 568836 -> 568836 bytes src/utils/promise/withTimeout.ts | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/nasty-buses-behave.md diff --git a/.changeset/nasty-buses-behave.md b/.changeset/nasty-buses-behave.md new file mode 100644 index 0000000000..11a59d90b8 --- /dev/null +++ b/.changeset/nasty-buses-behave.md @@ -0,0 +1,5 @@ +--- +"viem": patch +--- + +Added optional chaining to error handling in `withTimeout`. diff --git a/bun.lockb b/bun.lockb index 37096abed1784495386905cc3f7ae4b1bdf73041..bf24bfe97b288e59aa8ba5286fa965bc3f8bc7cb 100755 GIT binary patch delta 9844 zcmZA5cO3KteaCSgkbsH-R}e>pM+vy1I3lhnsBvKgN5DZ4k>Cu@xFaY8XGD=aE`l@S z3ZfF6aYu0k6+IUQ2R&QcrnR+cYumJs-%t4i|G0a{}^jFoJVy#T+)^-bS&22|Qb|ge~~DRjgo!;9$iX76=bfY+!|Gr(z4n?X+U( zz`VU;0zFuVDyA@i?I>n2f^(Q+4jXU}S1e!x?+%J3Y{9>yVg)kd2kSV+6b7&#tC+zE&f^qw z*nsC@^JVCL66{069wqQI-D~1ltCo3k#S*sQzeKTu8G@H8*04bMGQ|c~ zh+eMPg7FHi7&l9NMz<#}A1|v9cP|RTi?i&>gn816JVhLOD z->g`{3_+<_!vf)36dPC}I#;m;gTbYQ+sF@YYe^AuAUz<#@81|vAL9hes=CeVXbE2c1jeW79oBRKC> z%wYrW`xFb9z}Y{CDWVg)kVD^d$^k98iF@*u_uPA0Pg7a0y95O|gIpyss;kum%4ciWSTdd{eQ81;RnG zffb@}DYjsITPubR%*z!M=)wAqVhRJ;-&M?D1m}B-Ic&iFzG49rc%xzoTkx+?tYC)V z2Z}W;5dKiHffb@3DYjr-sTD&9=8qK<=)wAlVhRJ;8^sJpaDJ+o!v@@+DHbq+_jAP( zw&4Flv4R)!)9hm>7m_QHK zqL{(}_P;A;FoN?RiaBh+{ZGXLCh-2OSi%DUSvy1u1K4{iW-x-YmtqbZaIdFWzy#jjiY08pHxw(FA=pQ; zh6TcX6&qL~y1rry#tpP$=)k<8Vgfx_`zfX{fPEvy3`TJD;q1y`1MdEMWdRd-2Pl@X z1^>p170eLaM6rei!ka2KutIb*#TJa4YsJukX(=YqgLR-{3Io`;P|RQi=OD!#HsIb; zv49D@TPc>X1^?EH70eLaMzMwkLR+zc6{6cJwqP8r6+;K+A&Lp~VC_^)VF3GfiW!XH z++Hz<4Y-FY7BGS5D3-7V|1iZ0W(W>ftYLxh4vGz|5ZzI+1>;UyF?3+wSuuegth*?t zFo5kUW-x+tSH*lc`|a3cj~#og`>(q_ao17KUdQbICcAgjy?_b4BNR*6f`50#3T6oI zp;*HL;XM@_SRuNXVhe_+6+;K+y%iJa!8%egg#qmQC}uE%b6>?AHsIb*v49D@`zw~P z1^)qx70eL$iZv_{K2WiN6`}_zwqP8k6+;K+(TWN5U_Dqdg#qk`C}uE%^H9YcHsA(| z1x(;QOtFM5_zzdCV20okiZv_{K2ouP6{1HewqP8i6+;K+qZJeA!3q^q7{GpvVg@5P z$13Kq0rxn?0w(Ytt60Jo{KqL)FhlTo#Tpg}pP<;l3Q?rkf^oc73>}y!C??Q@^+d%K z2C$!`n866nlNEE=fcq510w(ZIR4ic&eymu*48ci?H7pQ5Rk48;qLUR{FrKCrLkH$5 ziV5^!JzX({0qj#1GZ?{16m!^sdzxYa6L`;1EMW`&GZibCA$XQz4GVwOW1<{YQ+j> z2+mNfVS(^W#RgW0UZdE8@mj4IIxx>tOrQtrY{e7?unWZuMsUti%wYrW>l6!^zcMsVJyn8OC# z^Aro1z*J1pa-i_ zOkn`~!-^S<;9R7b!v@@sC>Ah*_ff?Xw%~tEv4RAh*cd23tTkt!@3T6l{Q>M zE0`hpzG4jvgri~uD@0c)wqX1~D~1ltA1Wr$gY_fD6b7)bRLo!m=f{dUY{31AVgVC) z8^sc~;Qv&yf*FFJDb}z+_;bYuR)~I~*n;s(tr$8muTo5)2kTdgDGXpwiW!XHT&@;BFg$0^qy{NG;paO$;(`L7PAU3;j1x7YEz j&NyN31J675`0Jf>z%_gAe*DF~cR!5F4!CBYKVANR`vj#4 delta 9843 zcmZA5R~YOBordv)ND##UmSBy58haE=MARsjSip#=ITi>a5^O|8h&_rzun`d?M^s{u z1&xXltg%P2#6F5*u&|@svdzuvmgw<&mkYd@`90tJpShXmnTwe-uRP?;D-Su>J?N5C z_B!_T!}dSs>WlX|V$VPQ{?9uvI`!~B9uS;&;lcT7haGvvIcJ1tg?n5YUgvjv@3CW- zcfITE+)W8v@b^)yV20rOiZv_{-axT|6{39=TQF{@6+;K6shB_y)_#g93}ElCn866n z0g5?nz`c=T0TXyPRxDu){!J7sm?5~SVhsy~mSO`dL58G?fpYgiyWSh0Z>qC*s0Fm9_ALkH&V z6cgydy1ilw1K5sY1|v9kP|RTi?j02in83S}VhLOD@2ptC48dI#Ygiz>t6~EyM0Znc z!Em)==)k0Q*qI3`TJ7shGnC+maql?!HN~k z5FDXc!vf($6dPC}dZ=Ox#>2E?=)ioqVgfx_fno{+*pE=mU|+!&7{PhGVh$T{ zpP*R41l|)BOW1-RDONB;uv4*y1;QsOHn2kUWW^SYr)b5{f%#O$1bVQJRZL+3`#8l6 zMsQ-q95&z{uUNnY-qRFI*n)q8Vg)kO)_48etpH7pRmO|gL$qPHuyV7x;sh7Qb&6cgydsufchz<#G<1|vA{Qp{lk z?zX=`48i*pYgizBzhVO`M2%t##s{=w=)nA-Vgfx_A5u(V0Qa<0FoE|`#S*sQw~7_a5PVFrh6TcpD>kq~^a;flj7zj)=)nA>Vgfx_ zpHfU=0Q*wK3`TG|#T+)^UZz;U1m33=OW1<{8N~`_2tKP=!vf*w6dPC}`n+Nb#uv0= z=)mk16X?PEqGAdI*k4l2U1m_QHKKPsj$fc;O38I0ik zvtkY#aA(B=Ch-16v4k!7|EgHQ48gxC*04bM?}`nq5dDW@3&tO`V(7s9PsId!uolG> z2C)B2F@q7DKPu+10ryXe1x(=mw_*uf@c&1#f*FGURjgrw@c$GWSRq;!TQL5t6+yNW2+r*k zbJ&1;d&L4K@EpYww&34Ev4R3EKo8d46jK<$ zb`>)i!MVF)zMFk_?AWo#j&;9vj~zRX+jWGq=TW=A$?iRLFJJ=iP{k6q;NMfRf*FE) zDb}z+cyGl9R*3GS*n;6{#n6FyU&RD^untp9VF3GniW!XH9Ilwd2Hg8A7BGSL0L2ov z;6G5Yf*Ar|v4#c02PrnNLiAw87K|gbV(7qph++agSPxZ9VF3GKiW!XHJX|q{4Y+|~ z0TXzSP%L2!{v#DDm?3zSVhsy~k5+78h3H7d7L22`V(7qpjA8;kSfOGH1K5vM%wPoP zXvG{h;66^VfC;=~6ie8G|9Hg;W(c03Si=J06BQd+A&L}RFm`Ii(1H0R#RPh=o~)R{ z0QOT9GZ?{ns$vcsaF10iU;^(r#S*sQ$BGrq5FD>q!vf*c6dPC}Izh1oiWSTd zyh^c#1;R5F8(1NFwPFj#YqVnMz&ukifgY^06jK<$E)+8u!8uzohYh%|RV-iv?{$hL zY{7rMVg)k6>C@^e2-!SD@5;AY{7V+Rtz1O?^jHq2dhy` zVF3FBiW!XHd{8lm4Y(gtEMNlf!-^$r!M|9sf*FF3DAuq*_)*0MR)|`~7L1Q+#n6HI zam56Bus)%f!T|OqiW!XHd{Qxo4Y;3DEMNlfQpFOs;CG4@%n)3rSi=J0rxhDmA^MDB z3&v-)V(7s9oMHk!Sf5u+VF3FJiW!XH^olub!2P0P0TXy%QY>K${+AUim?8LzVhsy~ zUsY^ih3IRFEf`l=zG3}Am#F@q7D%N29jfcq`Q0w(ajtysbq{O>4M zFhlTN#Tpg}N5uwKh`y)Tg7JN=7&#e{=1_N!J|azd4+I&7uD7o;%M! hXy<|FAHDOsXYYUYp1U7^b+6qI( } resolve(await fn({ signal: controller?.signal || null })) } catch (err) { - if ((err as Error).name === 'AbortError') reject(errorInstance) + if ((err as Error)?.name === 'AbortError') reject(errorInstance) reject(err) } finally { clearTimeout(timeoutId) From 0c1c436945a7695a3b88f9afdad1e110e832160d Mon Sep 17 00:00:00 2001 From: jxom Date: Tue, 4 Jun 2024 04:36:00 +0000 Subject: [PATCH 03/30] chore: format --- bun.lockb | Bin 568836 -> 568836 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bun.lockb b/bun.lockb index bf24bfe97b288e59aa8ba5286fa965bc3f8bc7cb..37096abed1784495386905cc3f7ae4b1bdf73041 100755 GIT binary patch delta 9843 zcmZA5R~YOBordv)ND##UmSBy58haE=MARsjSip#=ITi>a5^O|8h&_rzun`d?M^s{u z1&xXltg%P2#6F5*u&|@svdzuvmgw<&mkYd@`90tJpShXmnTwe-uRP?;D-Su>J?N5C z_B!_T!}dSs>WlX|V$VPQ{?9uvI`!~B9uS;&;lcT7haGvvIcJ1tg?n5YUgvjv@3CW- zcfITE+)W8v@b^)yV20rOiZv_{-axT|6{39=TQF{@6+;K6shB_y)_#g93}ElCn866n z0g5?nz`c=T0TXyPRxDu){!J7sm?5~SVhsy~mSO`dL58G?fpYgiyWSh0Z>qC*s0Fm9_ALkH&V z6cgydy1ilw1K5sY1|v9kP|RTi?j02in83S}VhLOD@2ptC48dI#Ygiz>t6~EyM0Znc z!Em)==)k0Q*qI3`TJ7shGnC+maql?!HN~k z5FDXc!vf($6dPC}dZ=Ox#>2E?=)ioqVgfx_fno{+*pE=mU|+!&7{PhGVh$T{ zpP*R41l|)BOW1-RDONB;uv4*y1;QsOHn2kUWW^SYr)b5{f%#O$1bVQJRZL+3`#8l6 zMsQ-q95&z{uUNnY-qRFI*n)q8Vg)kO)_48etpH7pRmO|gL$qPHuyV7x;sh7Qb&6cgydsufchz<#G<1|vA{Qp{lk z?zX=`48i*pYgizBzhVO`M2%t##s{=w=)nA-Vgfx_A5u(V0Qa<0FoE|`#S*sQw~7_a5PVFrh6TcpD>kq~^a;flj7zj)=)nA>Vgfx_ zpHfU=0Q*wK3`TG|#T+)^UZz;U1m33=OW1<{8N~`_2tKP=!vf*w6dPC}`n+Nb#uv0= z=)mk16X?PEqGAdI*k4l2U1m_QHKKPsj$fc;O38I0ik zvtkY#aA(B=Ch-16v4k!7|EgHQ48gxC*04bM?}`nq5dDW@3&tO`V(7s9PsId!uolG> z2C)B2F@q7DKPu+10ryXe1x(=mw_*uf@c&1#f*FGURjgrw@c$GWSRq;!TQL5t6+yNW2+r*k zbJ&1;d&L4K@EpYww&34Ev4R3EKo8d46jK<$ zb`>)i!MVF)zMFk_?AWo#j&;9vj~zRX+jWGq=TW=A$?iRLFJJ=iP{k6q;NMfRf*FE) zDb}z+cyGl9R*3GS*n;6{#n6FyU&RD^untp9VF3GniW!XH9Ilwd2Hg8A7BGSL0L2ov z;6G5Yf*Ar|v4#c02PrnNLiAw87K|gbV(7qph++agSPxZ9VF3GKiW!XHJX|q{4Y+|~ z0TXzSP%L2!{v#DDm?3zSVhsy~k5+78h3H7d7L22`V(7qpjA8;kSfOGH1K5vM%wPoP zXvG{h;66^VfC;=~6ie8G|9Hg;W(c03Si=J06BQd+A&L}RFm`Ii(1H0R#RPh=o~)R{ z0QOT9GZ?{ns$vcsaF10iU;^(r#S*sQ$BGrq5FD>q!vf*c6dPC}Izh1oiWSTd zyh^c#1;R5F8(1NFwPFj#YqVnMz&ukifgY^06jK<$E)+8u!8uzohYh%|RV-iv?{$hL zY{7rMVg)k6>C@^e2-!SD@5;AY{7V+Rtz1O?^jHq2dhy` zVF3FBiW!XHd{8lm4Y(gtEMNlf!-^$r!M|9sf*FF3DAuq*_)*0MR)|`~7L1Q+#n6HI zam56Bus)%f!T|OqiW!XHd{Qxo4Y;3DEMNlfQpFOs;CG4@%n)3rSi=J0rxhDmA^MDB z3&v-)V(7s9oMHk!Sf5u+VF3FJiW!XH^olub!2P0P0TXy%QY>K${+AUim?8LzVhsy~ zUsY^ih3IRFEf`l=zG3}Am#F@q7D%N29jfcq`Q0w(ajtysbq{O>4M zFhlTN#Tpg}N5uwKh`y)Tg7JN=7&#e{=1_N!J|azd4+I&7uD7o;%M! hXy<|FAHDOsXYYUYp1U7^b+6qIpM+vy1I3lhnsBvKgN5DZ4k>Cu@xFaY8XGD=aE`l@S z3ZfF6aYu0k6+IUQ2R&QcrnR+cYumJs-%t4i|G0a{}^jFoJVy#T+)^-bS&22|Qb|ge~~DRjgo!;9$iX76=bfY+!|Gr(z4n?X+U( zz`VU;0zFuVDyA@i?I>n2f^(Q+4jXU}S1e!x?+%J3Y{9>yVg)kd2kSV+6b7&#tC+zE&f^qw z*nsC@^JVCL66{069wqQI-D~1ltCo3k#S*sQzeKTu8G@H8*04bMGQ|c~ zh+eMPg7FHi7&l9NMz<#}A1|v9cP|RTi?i&>gn816JVhLOD z->g`{3_+<_!vf)36dPC}I#;m;gTbYQ+sF@YYe^AuAUz<#@81|vAL9hes=CeVXbE2c1jeW79oBRKC> z%wYrW`xFb9z}Y{CDWVg)kVD^d$^k98iF@*u_uPA0Pg7a0y95O|gIpyss;kum%4ciWSTdd{eQ81;RnG zffb@}DYjsITPubR%*z!M=)wAqVhRJ;-&M?D1m}B-Ic&iFzG49rc%xzoTkx+?tYC)V z2Z}W;5dKiHffb@3DYjr-sTD&9=8qK<=)wAlVhRJ;8^sJpaDJ+o!v@@+DHbq+_jAP( zw&4Flv4R)!)9hm>7m_QHK zqL{(}_P;A;FoN?RiaBh+{ZGXLCh-2OSi%DUSvy1u1K4{iW-x-YmtqbZaIdFWzy#jjiY08pHxw(FA=pQ; zh6TcX6&qL~y1rry#tpP$=)k<8Vgfx_`zfX{fPEvy3`TJD;q1y`1MdEMWdRd-2Pl@X z1^>p170eLaM6rei!ka2KutIb*#TJa4YsJukX(=YqgLR-{3Io`;P|RQi=OD!#HsIb; zv49D@TPc>X1^?EH70eLaMzMwkLR+zc6{6cJwqP8r6+;K+A&Lp~VC_^)VF3GfiW!XH z++Hz<4Y-FY7BGS5D3-7V|1iZ0W(W>ftYLxh4vGz|5ZzI+1>;UyF?3+wSuuegth*?t zFo5kUW-x+tSH*lc`|a3cj~#og`>(q_ao17KUdQbICcAgjy?_b4BNR*6f`50#3T6oI zp;*HL;XM@_SRuNXVhe_+6+;K+y%iJa!8%egg#qmQC}uE%b6>?AHsIb*v49D@`zw~P z1^)qx70eL$iZv_{K2WiN6`}_zwqP8k6+;K+(TWN5U_Dqdg#qk`C}uE%^H9YcHsA(| z1x(;QOtFM5_zzdCV20okiZv_{K2ouP6{1HewqP8i6+;K+qZJeA!3q^q7{GpvVg@5P z$13Kq0rxn?0w(Ytt60Jo{KqL)FhlTo#Tpg}pP<;l3Q?rkf^oc73>}y!C??Q@^+d%K z2C$!`n866nlNEE=fcq510w(ZIR4ic&eymu*48ci?H7pQ5Rk48;qLUR{FrKCrLkH$5 ziV5^!JzX({0qj#1GZ?{16m!^sdzxYa6L`;1EMW`&GZibCA$XQz4GVwOW1<{YQ+j> z2+mNfVS(^W#RgW0UZdE8@mj4IIxx>tOrQtrY{e7?unWZuMsUti%wYrW>l6!^zcMsVJyn8OC# z^Aro1z*J1pa-i_ zOkn`~!-^S<;9R7b!v@@sC>Ah*_ff?Xw%~tEv4RAh*cd23tTkt!@3T6l{Q>M zE0`hpzG4jvgri~uD@0c)wqX1~D~1ltA1Wr$gY_fD6b7)bRLo!m=f{dUY{31AVgVC) z8^sc~;Qv&yf*FFJDb}z+_;bYuR)~I~*n;s(tr$8muTo5)2kTdgDGXpwiW!XHT&@;BFg$0^qy{NG;paO$;(`L7PAU3;j1x7YEz j&NyN31J675`0Jf>z%_gAe*DF~cR!5F4!CBYKVANR`vj#4 From 05c166e5cb2f5745ac48ba482fac14f4890f5c83 Mon Sep 17 00:00:00 2001 From: tirogen Date: Tue, 4 Jun 2024 11:38:11 +0700 Subject: [PATCH 04/30] feat: add bitkub chain (#2361) * feat: add bitkub chain * Update bitkub.ts * Update bitkubTestnet.ts * Update index.ts * Update index.ts --------- Co-authored-by: np Co-authored-by: jxom --- .changeset/long-readers-begin.md | 5 +++++ src/chains/definitions/bitkub.ts | 19 +++++++++++++++++++ src/chains/definitions/bitkubTestnet.ts | 21 +++++++++++++++++++++ src/chains/index.ts | 2 ++ 4 files changed, 47 insertions(+) create mode 100644 .changeset/long-readers-begin.md create mode 100644 src/chains/definitions/bitkub.ts create mode 100644 src/chains/definitions/bitkubTestnet.ts diff --git a/.changeset/long-readers-begin.md b/.changeset/long-readers-begin.md new file mode 100644 index 0000000000..d2dd22b4da --- /dev/null +++ b/.changeset/long-readers-begin.md @@ -0,0 +1,5 @@ +--- +"viem": patch +--- + +Added Bitkub chain. diff --git a/src/chains/definitions/bitkub.ts b/src/chains/definitions/bitkub.ts new file mode 100644 index 0000000000..b8ffdd0deb --- /dev/null +++ b/src/chains/definitions/bitkub.ts @@ -0,0 +1,19 @@ +import { defineChain } from '../../utils/chain/defineChain.js' + +export const bitkub = /*#__PURE__*/ defineChain({ + id: 96, + name: 'Bitkub', + nativeCurrency: { name: 'Bitkub', symbol: 'KUB', decimals: 18 }, + rpcUrls: { + default: { + http: ['https://rpc.bitkubchain.io'], + }, + }, + blockExplorers: { + default: { + name: 'Bitkub Chain Mainnet Explorer', + url: 'https://www.bkcscan.com', + apiUrl: 'https://www.bkcscan.com/api', + }, + }, +}) diff --git a/src/chains/definitions/bitkubTestnet.ts b/src/chains/definitions/bitkubTestnet.ts new file mode 100644 index 0000000000..86cc21b613 --- /dev/null +++ b/src/chains/definitions/bitkubTestnet.ts @@ -0,0 +1,21 @@ +import { defineChain } from '../../utils/chain/defineChain.js' + +export const bitkubTestnet = /*#__PURE__*/ defineChain({ + id: 25925, + name: 'Bitkub Testnet', + network: 'Bitkub Testnet', + nativeCurrency: { name: 'Bitkub Test', symbol: 'tKUB', decimals: 18 }, + rpcUrls: { + default: { + http: ['https://rpc-testnet.bitkubchain.io'], + }, + }, + blockExplorers: { + default: { + name: 'Bitkub Chain Testnet Explorer', + url: 'https://testnet.bkcscan.com', + apiUrl: 'https://testnet.bkcscan.com/api', + }, + }, + testnet: true, +}) diff --git a/src/chains/index.ts b/src/chains/index.ts index abb0d1324b..becf3f409b 100644 --- a/src/chains/index.ts +++ b/src/chains/index.ts @@ -30,6 +30,8 @@ export { bearNetworkChainMainnet } from './definitions/bearNetworkChainMainnet.j export { bearNetworkChainTestnet } from './definitions/bearNetworkChainTestnet.js' export { berachainTestnet } from './definitions/berachainTestnet.js' export { bevmMainnet } from './definitions/bevmMainnet.js' +export { bitkub } from './definitions/bitkub.js' +export { bitkubTestnet } from './definitions/bitkubTestnet.js' export { bitTorrent } from './definitions/bitTorrent.js' export { bitTorrentTestnet } from './definitions/bitTorrentTestnet.js' export { blast } from './definitions/blast.js' From b55036d31a1d35857ee6184c2fd87aba2cb3d7d7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Jun 2024 14:50:07 +1000 Subject: [PATCH 05/30] chore: version package (#2359) Co-authored-by: github-actions[bot] --- .changeset/happy-berries-sparkle.md | 5 --- .changeset/long-readers-begin.md | 5 --- .changeset/nasty-buses-behave.md | 5 --- src/CHANGELOG.md | 10 +++++ src/errors/version.ts | 2 +- src/jsr.json | 11 +++-- src/package.json | 67 ++++++++++++++++++++++------- 7 files changed, 70 insertions(+), 35 deletions(-) delete mode 100644 .changeset/happy-berries-sparkle.md delete mode 100644 .changeset/long-readers-begin.md delete mode 100644 .changeset/nasty-buses-behave.md diff --git a/.changeset/happy-berries-sparkle.md b/.changeset/happy-berries-sparkle.md deleted file mode 100644 index 619c8bf364..0000000000 --- a/.changeset/happy-berries-sparkle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"viem": patch ---- - -Added SatoshiVM chain diff --git a/.changeset/long-readers-begin.md b/.changeset/long-readers-begin.md deleted file mode 100644 index d2dd22b4da..0000000000 --- a/.changeset/long-readers-begin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"viem": patch ---- - -Added Bitkub chain. diff --git a/.changeset/nasty-buses-behave.md b/.changeset/nasty-buses-behave.md deleted file mode 100644 index 11a59d90b8..0000000000 --- a/.changeset/nasty-buses-behave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"viem": patch ---- - -Added optional chaining to error handling in `withTimeout`. diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index 796854d98f..147df0330f 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -1,5 +1,15 @@ # viem +## 2.13.5 + +### Patch Changes + +- [#2356](https://github.com/wevm/viem/pull/2356) [`e6678622b8be1d7b72abe2e1331d455fb4a9c11f`](https://github.com/wevm/viem/commit/e6678622b8be1d7b72abe2e1331d455fb4a9c11f) Thanks [@blascokoa](https://github.com/blascokoa)! - Added SatoshiVM chain + +- [#2361](https://github.com/wevm/viem/pull/2361) [`05c166e5cb2f5745ac48ba482fac14f4890f5c83`](https://github.com/wevm/viem/commit/05c166e5cb2f5745ac48ba482fac14f4890f5c83) Thanks [@tirogen](https://github.com/tirogen)! - Added Bitkub chain. + +- [`7aad10e2ed7d3ecf5a6c38cd326aa9ff8dead239`](https://github.com/wevm/viem/commit/7aad10e2ed7d3ecf5a6c38cd326aa9ff8dead239) Thanks [@jxom](https://github.com/jxom)! - Added optional chaining to error handling in `withTimeout`. + ## 2.13.4 ### Patch Changes diff --git a/src/errors/version.ts b/src/errors/version.ts index c592dd7163..7282060b3b 100644 --- a/src/errors/version.ts +++ b/src/errors/version.ts @@ -1 +1 @@ -export const version = '2.13.4' +export const version = '2.13.5' diff --git a/src/jsr.json b/src/jsr.json index 62ef636268..0e3810cded 100644 --- a/src/jsr.json +++ b/src/jsr.json @@ -1,6 +1,6 @@ { "name": "@wevm/viem", - "version": "2.13.4", + "version": "2.13.5", "exports": { ".": "./index.ts", "./accounts": "./accounts/index.ts", @@ -16,7 +16,12 @@ "./zksync": "./zksync/index.ts" }, "publish": { - "include": ["LICENSE", "README.md", "CHANGELOG.md", "**/*.ts"], + "include": [ + "LICENSE", + "README.md", + "CHANGELOG.md", + "**/*.ts" + ], "exclude": [ "**/*.bench.ts", "**/*.bench-d.ts", @@ -24,4 +29,4 @@ "**/*.test-d.ts" ] } -} +} \ No newline at end of file diff --git a/src/package.json b/src/package.json index 506c898b72..9631223428 100644 --- a/src/package.json +++ b/src/package.json @@ -1,7 +1,7 @@ { "name": "viem", "description": "TypeScript Interface for Ethereum", - "version": "2.13.4", + "version": "2.13.5", "type": "module", "main": "./_cjs/index.js", "module": "./_esm/index.js", @@ -94,19 +94,45 @@ }, "typesVersions": { "*": { - "accounts": ["./_types/accounts/index.d.ts"], - "actions": ["./_types/actions/index.d.ts"], - "celo": ["./_types/celo/index.d.ts"], - "chains": ["./_types/chains/index.d.ts"], - "chains/utils": ["./_types/chains/utils.d.ts"], - "ens": ["./_types/ens/index.d.ts"], - "experimental": ["./_types/experimental/index.d.ts"], - "node": ["./_types/node/index.d.ts"], - "op-stack": ["./_types/op-stack/index.d.ts"], - "siwe": ["./_types/siwe/index.d.ts"], - "utils": ["./_types/utils/index.d.ts"], - "window": ["./_types/window/index.d.ts"], - "zksync": ["./_types/zksync/index.d.ts"] + "accounts": [ + "./_types/accounts/index.d.ts" + ], + "actions": [ + "./_types/actions/index.d.ts" + ], + "celo": [ + "./_types/celo/index.d.ts" + ], + "chains": [ + "./_types/chains/index.d.ts" + ], + "chains/utils": [ + "./_types/chains/utils.d.ts" + ], + "ens": [ + "./_types/ens/index.d.ts" + ], + "experimental": [ + "./_types/experimental/index.d.ts" + ], + "node": [ + "./_types/node/index.d.ts" + ], + "op-stack": [ + "./_types/op-stack/index.d.ts" + ], + "siwe": [ + "./_types/siwe/index.d.ts" + ], + "utils": [ + "./_types/utils/index.d.ts" + ], + "window": [ + "./_types/window/index.d.ts" + ], + "zksync": [ + "./_types/zksync/index.d.ts" + ] } }, "peerDependencies": { @@ -130,12 +156,21 @@ "license": "MIT", "homepage": "https://viem.sh", "repository": "wevm/viem", - "authors": ["awkweb.eth", "jxom.eth"], + "authors": [ + "awkweb.eth", + "jxom.eth" + ], "funding": [ { "type": "github", "url": "https://github.com/sponsors/wevm" } ], - "keywords": ["eth", "ethereum", "dapps", "wallet", "web3"] + "keywords": [ + "eth", + "ethereum", + "dapps", + "wallet", + "web3" + ] } From d832619d1884cbdcab9db3435adb36c515a9c749 Mon Sep 17 00:00:00 2001 From: jxom Date: Tue, 4 Jun 2024 04:51:02 +0000 Subject: [PATCH 06/30] chore: format --- src/jsr.json | 9 ++----- src/package.json | 65 +++++++++++------------------------------------- 2 files changed, 17 insertions(+), 57 deletions(-) diff --git a/src/jsr.json b/src/jsr.json index 0e3810cded..ebc2c600f1 100644 --- a/src/jsr.json +++ b/src/jsr.json @@ -16,12 +16,7 @@ "./zksync": "./zksync/index.ts" }, "publish": { - "include": [ - "LICENSE", - "README.md", - "CHANGELOG.md", - "**/*.ts" - ], + "include": ["LICENSE", "README.md", "CHANGELOG.md", "**/*.ts"], "exclude": [ "**/*.bench.ts", "**/*.bench-d.ts", @@ -29,4 +24,4 @@ "**/*.test-d.ts" ] } -} \ No newline at end of file +} diff --git a/src/package.json b/src/package.json index 9631223428..3fb2e06f4e 100644 --- a/src/package.json +++ b/src/package.json @@ -94,45 +94,19 @@ }, "typesVersions": { "*": { - "accounts": [ - "./_types/accounts/index.d.ts" - ], - "actions": [ - "./_types/actions/index.d.ts" - ], - "celo": [ - "./_types/celo/index.d.ts" - ], - "chains": [ - "./_types/chains/index.d.ts" - ], - "chains/utils": [ - "./_types/chains/utils.d.ts" - ], - "ens": [ - "./_types/ens/index.d.ts" - ], - "experimental": [ - "./_types/experimental/index.d.ts" - ], - "node": [ - "./_types/node/index.d.ts" - ], - "op-stack": [ - "./_types/op-stack/index.d.ts" - ], - "siwe": [ - "./_types/siwe/index.d.ts" - ], - "utils": [ - "./_types/utils/index.d.ts" - ], - "window": [ - "./_types/window/index.d.ts" - ], - "zksync": [ - "./_types/zksync/index.d.ts" - ] + "accounts": ["./_types/accounts/index.d.ts"], + "actions": ["./_types/actions/index.d.ts"], + "celo": ["./_types/celo/index.d.ts"], + "chains": ["./_types/chains/index.d.ts"], + "chains/utils": ["./_types/chains/utils.d.ts"], + "ens": ["./_types/ens/index.d.ts"], + "experimental": ["./_types/experimental/index.d.ts"], + "node": ["./_types/node/index.d.ts"], + "op-stack": ["./_types/op-stack/index.d.ts"], + "siwe": ["./_types/siwe/index.d.ts"], + "utils": ["./_types/utils/index.d.ts"], + "window": ["./_types/window/index.d.ts"], + "zksync": ["./_types/zksync/index.d.ts"] } }, "peerDependencies": { @@ -156,21 +130,12 @@ "license": "MIT", "homepage": "https://viem.sh", "repository": "wevm/viem", - "authors": [ - "awkweb.eth", - "jxom.eth" - ], + "authors": ["awkweb.eth", "jxom.eth"], "funding": [ { "type": "github", "url": "https://github.com/sponsors/wevm" } ], - "keywords": [ - "eth", - "ethereum", - "dapps", - "wallet", - "web3" - ] + "keywords": ["eth", "ethereum", "dapps", "wallet", "web3"] } From da04b8760fceb100166ea1f4ac3b68dd3dbfb373 Mon Sep 17 00:00:00 2001 From: awkweb Date: Tue, 4 Jun 2024 11:46:10 -0400 Subject: [PATCH 07/30] chore: bun => pnpm (#2357) * chore: bun to pnpm * chore: add @types/node * chore: format * chore: tweaks * chore: remove svelte-kit * docs: up --------- Co-authored-by: tmm --- .env.example | 5 - .github/CONTRIBUTING.md | 18 +- .../actions/install-dependencies/action.yml | 7 +- .github/actions/setup-wagmi/action.yml | 2 +- .github/workflows/changesets.yml | 14 +- .github/workflows/pull-request.yml | 2 +- .github/workflows/snapshot.yml | 8 +- .github/workflows/test-chains.yml | 8 +- .github/workflows/test-rpc-providers.yml | 19 +- .github/workflows/verify.yml | 56 +- bun.lockb | Bin 568836 -> 0 bytes environments/next/playwright.config.ts | 2 +- environments/sveltekit/.gitignore | 12 - environments/sveltekit/.npmrc | 1 - environments/sveltekit/package.json | 24 - environments/sveltekit/playwright.config.ts | 35 - environments/sveltekit/src/app.d.ts | 12 - environments/sveltekit/src/app.html | 12 - .../sveltekit/src/routes/+page.svelte | 28 - environments/sveltekit/src/routes/+page.ts | 17 - .../sveltekit/src/routes/edge/+page.svelte | 5 - .../sveltekit/src/routes/edge/+page.ts | 21 - .../sveltekit/src/routes/node16/+page.svelte | 5 - .../sveltekit/src/routes/node16/+page.ts | 21 - .../sveltekit/src/routes/node18/+page.svelte | 5 - .../sveltekit/src/routes/node18/+page.ts | 21 - environments/sveltekit/static/favicon.png | Bin 1571 -> 0 bytes environments/sveltekit/svelte.config.js | 20 - environments/sveltekit/tests/default.spec.ts | 7 - environments/sveltekit/tsconfig.json | 17 - environments/sveltekit/vite.config.ts | 6 - environments/vite/playwright.config.ts | 2 +- package.json | 48 +- pnpm-lock.yaml | 12558 ++++++++++++++++ pnpm-workspace.yaml | 7 + site/package.json | 1 + site/pages/docs/installation.mdx | 8 +- src/op-stack/index.ts | 1 + 38 files changed, 12662 insertions(+), 373 deletions(-) delete mode 100644 .env.example delete mode 100755 bun.lockb delete mode 100644 environments/sveltekit/.gitignore delete mode 100644 environments/sveltekit/.npmrc delete mode 100644 environments/sveltekit/package.json delete mode 100644 environments/sveltekit/playwright.config.ts delete mode 100644 environments/sveltekit/src/app.d.ts delete mode 100644 environments/sveltekit/src/app.html delete mode 100644 environments/sveltekit/src/routes/+page.svelte delete mode 100644 environments/sveltekit/src/routes/+page.ts delete mode 100644 environments/sveltekit/src/routes/edge/+page.svelte delete mode 100644 environments/sveltekit/src/routes/edge/+page.ts delete mode 100644 environments/sveltekit/src/routes/node16/+page.svelte delete mode 100644 environments/sveltekit/src/routes/node16/+page.ts delete mode 100644 environments/sveltekit/src/routes/node18/+page.svelte delete mode 100644 environments/sveltekit/src/routes/node18/+page.ts delete mode 100644 environments/sveltekit/static/favicon.png delete mode 100644 environments/sveltekit/svelte.config.js delete mode 100644 environments/sveltekit/tests/default.spec.ts delete mode 100644 environments/sveltekit/tsconfig.json delete mode 100644 environments/sveltekit/vite.config.ts create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml diff --git a/.env.example b/.env.example deleted file mode 100644 index 6a1f157ee1..0000000000 --- a/.env.example +++ /dev/null @@ -1,5 +0,0 @@ -VITE_ACCOUNT_PRIVATE_KEY= -VITE_ANVIL_FORK_URL= -VITE_ANVIL_FORK_URL_OPTIMISM= -VITE_BATCH_JSON_RPC=false -VITE_BATCH_MULTICALL=false \ No newline at end of file diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index f4ca6d265c..c624c4efb9 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -108,16 +108,18 @@ After the install completes, Bun links packages across the project for developme First, add the following to your environment (recommended to use [`direnv`](https://github.com/direnv/direnv)): ```bash -VITE_ANVIL_FORK_URL=https://rpc -VITE_ANVIL_BLOCK_TIME=1 -VITE_ANVIL_BLOCK_NUMBER=16280770 +VITE_ANVIL_FORK_URL= +VITE_ANVIL_FORK_URL_OPTIMISM= +VITE_ANVIL_FORK_URL_OPTIMISM_SEPOLIA= +VITE_ANVIL_FORK_URL_SEPOLIA= +VITE_ANVIL_FORK_URL_ZKSYNC= +VITE_BATCH_MULTICALL=false VITE_NETWORK_TRANSPORT_MODE=http -VITE_ANVIL_PORT=8545 ``` `VITE_ANVIL_FORK_URL` can be for any RPC service provider (e.g. Alchemy or Infura) for the mainnet. Now you are ready to run the tests! -- `bun run test` — runs tests in watch mode +- `pnpm test` — runs tests in watch mode Sometimes there may be some tests which fail unexpectedly – you can press `f` to rerun them and they should pass. @@ -134,7 +136,7 @@ When adding new features or fixing bugs, it's important to add test cases to cov Documentation is crucial to helping developers of all experience levels use viem. viem uses [Vocs](https://vocs.dev) and Markdown for the documentation site (located at [`site`](../site)). To start the site in dev mode, run: ```bash -bun run docs:dev +pnpm docs:dev ``` Try to keep documentation brief and use plain language so folks of all experience levels can understand. If you think something is unclear or could be explained better, you are welcome to open a pull request. @@ -170,7 +172,7 @@ When adding new features or fixing bugs, we'll need to bump the package versions Each changeset defines which package(s) should be published and whether the change should be a major/minor/patch release, as well as providing release notes that will be added to the changelog upon release. -To create a new changeset, run `bun run changeset`. This will run the Changesets CLI, prompting you for details about the change. You’ll be able to edit the file after it’s created — don’t worry about getting everything perfect up front. +To create a new changeset, run `pnpm changeset`. This will run the Changesets CLI, prompting you for details about the change. You’ll be able to edit the file after it’s created — don’t worry about getting everything perfect up front. Even though you can technically use any markdown formatting you like, headings should be avoided since each changeset will ultimately be nested within a bullet list. Instead, bold text should be used as section headings. @@ -308,7 +310,7 @@ export { zora } from './definitions/zora.js' Add a `patch` changeset with the description `"Added chain."`. ```diff -> bun run changeset +> pnpm changeset What kind of change is this for viem? + patch diff --git a/.github/actions/install-dependencies/action.yml b/.github/actions/install-dependencies/action.yml index ed7aaba80a..5808ceb539 100644 --- a/.github/actions/install-dependencies/action.yml +++ b/.github/actions/install-dependencies/action.yml @@ -7,11 +7,8 @@ runs: - name: Set up foundry uses: foundry-rs/foundry-toolchain@v1 - - name: Set up node - uses: actions/setup-node@v4 + - name: Set up pnpm + uses: wevm/actions/.github/actions/pnpm@main with: node-version: 22 - - name: Set up bun - uses: wevm/actions/.github/actions/bun@main - diff --git a/.github/actions/setup-wagmi/action.yml b/.github/actions/setup-wagmi/action.yml index 5bff30dd79..9ad4f110d9 100644 --- a/.github/actions/setup-wagmi/action.yml +++ b/.github/actions/setup-wagmi/action.yml @@ -22,7 +22,7 @@ runs: - name: Build viem shell: bash - run: bun run build + run: pnpm build - name: Install dependencies shell: bash diff --git a/.github/workflows/changesets.yml b/.github/workflows/changesets.yml index 8fb568f2fd..2fe27af317 100644 --- a/.github/workflows/changesets.yml +++ b/.github/workflows/changesets.yml @@ -35,7 +35,7 @@ jobs: with: commit: 'chore: version package' title: 'chore: version package' - version: bun run changeset:version + version: pnpm changeset:version env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -62,7 +62,7 @@ jobs: uses: changesets/action@v1 with: createGithubReleases: ${{ github.ref == 'refs/heads/main' }} - publish: bun run changeset:publish + publish: pnpm changeset:publish env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} @@ -80,10 +80,10 @@ jobs: run: | npm config set "//registry.npmjs.org/:_authToken" "$NPM_TOKEN" git reset --hard origin/main - bun run clean - bun run changeset version --no-git-tag --snapshot canary - bun run changeset:prepublish - bun run changeset publish --no-git-tag --snapshot canary --tag canary + pnpm clean + pnpm changeset version --no-git-tag --snapshot canary + pnpm changeset:prepublish + pnpm changeset publish --no-git-tag --snapshot canary --tag canary jsr: name: JSR @@ -102,4 +102,4 @@ jobs: uses: ./.github/actions/install-dependencies - name: Publish to JSR - run: bun ./scripts/updateVersion.ts && cd src && bunx jsr publish --allow-slow-types --allow-dirty + run: pnpm version:update && cd src && pnpx jsr publish --allow-slow-types --allow-dirty diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index b403f39904..a941e11e35 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -30,4 +30,4 @@ jobs: uses: andresz1/size-limit-action@master with: github_token: ${{ secrets.GITHUB_TOKEN }} - package_manager: bun + package_manager: pnpm diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index c2437788eb..380f7995af 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -30,8 +30,8 @@ jobs: run: | snapshot=$(git branch --show-current | tr -cs '[:alnum:]-' '-' | tr '[:upper:]' '[:lower:]' | sed 's/-$//') npm config set "//registry.npmjs.org/:_authToken" "$NPM_TOKEN" - bun run clean - bun run changeset version --no-git-tag --snapshot $snapshot - bun run changeset:prepublish - bun run changeset publish --no-git-tag --snapshot $snapshot --tag $snapshot + pnpm clean + pnpm changeset version --no-git-tag --snapshot $snapshot + pnpm changeset:prepublish + pnpm changeset publish --no-git-tag --snapshot $snapshot --tag $snapshot diff --git a/.github/workflows/test-chains.yml b/.github/workflows/test-chains.yml index 0b10c09912..416ccb6098 100644 --- a/.github/workflows/test-chains.yml +++ b/.github/workflows/test-chains.yml @@ -22,8 +22,10 @@ jobs: - name: Set up foundry uses: foundry-rs/foundry-toolchain@v1 - - name: Install dependencies - uses: wevm/actions/.github/actions/bun@main + - name: Set up pnpm + uses: wevm/actions/.github/actions/pnpm@main + with: + node-version: 22 - name: Run tests - run: bun run test:chains + run: pnpm test:chains diff --git a/.github/workflows/test-rpc-providers.yml b/.github/workflows/test-rpc-providers.yml index 8a552f4e96..d7ec1b25e0 100644 --- a/.github/workflows/test-rpc-providers.yml +++ b/.github/workflows/test-rpc-providers.yml @@ -24,14 +24,14 @@ jobs: - name: Build contracts shell: bash - run: bun run contracts:build + run: pnpm contracts:build - name: Run tests uses: nick-fields/retry@v3 with: timeout_minutes: 10 max_attempts: 3 - command: bun run test:ci --shard=${{ matrix.shard }}/${{ matrix.total-shards }} + command: pnpm test:ci --shard=${{ matrix.shard }}/${{ matrix.total-shards }} env: VITE_ANVIL_BLOCK_NUMBER: ${{ vars.VITE_ANVIL_BLOCK_NUMBER }} VITE_ANVIL_BLOCK_TIME: ${{ vars.VITE_ANVIL_BLOCK_TIME }} @@ -45,7 +45,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - type: ['bun', 'node-18', 'node-20', 'node-latest', 'next', 'sveltekit', 'tsc', 'vite'] + type: ['bun', 'node-18', 'node-20', 'node-latest', 'next', 'tsc', 'vite'] include: - type: bun runtime: bun @@ -60,9 +60,6 @@ jobs: runtime: node - type: next runtime: next - - type: sveltekit - node-version: 18 - runtime: sveltekit - type: tsc node-version: 20 runtime: tsc @@ -88,17 +85,17 @@ jobs: node-version: ${{ matrix.node-version }} - name: Install Playwright Browsers - if: ${{ matrix.runtime == 'next' || matrix.runtime == 'sveltekit' || matrix.runtime == 'vite' }} - run: npx playwright@1.40.1 install --with-deps + if: ${{ matrix.runtime == 'next' || matrix.runtime == 'vite' }} + run: pnpx playwright@1.40.1 install --with-deps - name: Install dependencies uses: ./.github/actions/install-dependencies - name: Build - run: bun run build + run: pnpm build - name: Link - run: bun install + run: pnpm install - name: Run tests - run: bun run test:env:${{ matrix.runtime }} + run: pnpm test:env:${{ matrix.runtime }} diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 405bba4662..2b4a1caef1 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -19,7 +19,7 @@ jobs: uses: ./.github/actions/install-dependencies - name: Lint code - run: bun run lint + run: pnpm lint - uses: stefanzweifel/git-auto-commit-action@v5 env: @@ -45,7 +45,7 @@ jobs: uses: ./.github/actions/install-dependencies - name: Build - run: bun run build + run: pnpm build types: name: Types @@ -65,24 +65,22 @@ jobs: - name: Install dependencies uses: ./.github/actions/install-dependencies - - run: bun i -d typescript@${{ matrix.version }} + - run: pnpm i -d -w typescript@${{ matrix.version }} - name: Build contracts shell: bash - run: bun run contracts:build + run: pnpm contracts:build - name: Check types - run: bun run typecheck + run: pnpm typecheck - name: Bench types - run: bun run typebench + run: pnpm typebench # Redundant with `pnpm typecheck` # If Vitest adds special features in the future, e.g. type coverage, can add this back! # - name: Test types - # run: bun run test:typecheck - # env: - # VITE_ANVIL_BLOCK_NUMBER: ${{ vars.VITE_ANVIL_BLOCK_NUMBER }} + # run: pnpm test:typecheck test: name: Test @@ -91,6 +89,7 @@ jobs: strategy: max-parallel: 3 matrix: + multicall: ['true', 'false'] transport-mode: ['http', 'webSocket'] shard: [1, 2, 3] total-shards: [3] @@ -105,23 +104,20 @@ jobs: - name: Build contracts shell: bash - run: bun run contracts:build + run: pnpm contracts:build - name: Run tests uses: nick-fields/retry@v3 with: timeout_minutes: 10 max_attempts: 3 - command: bun run test:ci --shard=${{ matrix.shard }}/${{ matrix.total-shards }} + command: pnpm test:ci --shard=${{ matrix.shard }}/${{ matrix.total-shards }} env: - VITE_ANVIL_BLOCK_NUMBER: ${{ vars.VITE_ANVIL_BLOCK_NUMBER }} - VITE_ANVIL_BLOCK_NUMBER_SEPOLIA: ${{ vars.VITE_ANVIL_BLOCK_NUMBER_SEPOLIA }} - VITE_ANVIL_BLOCK_NUMBER_OPTIMISM_SEPOLIA: ${{ vars.VITE_ANVIL_BLOCK_NUMBER_OPTIMISM_SEPOLIA }} - VITE_ANVIL_BLOCK_TIME: ${{ vars.VITE_ANVIL_BLOCK_TIME }} VITE_ANVIL_FORK_URL: ${{ secrets.VITE_ANVIL_FORK_URL }} VITE_ANVIL_FORK_URL_OPTIMISM: ${{ secrets.VITE_ANVIL_FORK_URL_OPTIMISM }} - VITE_ANVIL_FORK_URL_SEPOLIA: ${{ secrets.VITE_ANVIL_FORK_URL_SEPOLIA }} VITE_ANVIL_FORK_URL_OPTIMISM_SEPOLIA: ${{ secrets.VITE_ANVIL_FORK_URL_OPTIMISM_SEPOLIA }} + VITE_ANVIL_FORK_URL_SEPOLIA: ${{ secrets.VITE_ANVIL_FORK_URL_SEPOLIA }} + VITE_ANVIL_FORK_URL_ZKSYNC: ${{ secrets.VITE_ANVIL_FORK_URL_ZKSYNC }} VITE_BATCH_MULTICALL: ${{ matrix.multicall }} VITE_NETWORK_TRANSPORT_MODE: ${{ matrix.transport-mode }} @@ -135,7 +131,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - type: ['bun', 'node-18', 'node-20', 'node-latest', 'next', 'sveltekit', 'tsc', 'vite'] + type: ['bun', 'node-18', 'node-20', 'node-latest', 'next', 'tsc', 'vite'] include: - type: bun runtime: bun @@ -150,9 +146,6 @@ jobs: runtime: node - type: next runtime: next - - type: sveltekit - node-version: 18 - runtime: sveltekit - type: tsc node-version: 20 runtime: tsc @@ -165,6 +158,14 @@ jobs: with: submodules: 'recursive' + - name: Set up foundry + uses: foundry-rs/foundry-toolchain@v1 + + - name: Set up pnpm + uses: wevm/actions/.github/actions/pnpm@main + with: + node-version: 22 + - name: Set up Bun if: ${{ matrix.runtime == 'bun' }} uses: oven-sh/setup-bun@v1 @@ -178,20 +179,17 @@ jobs: node-version: ${{ matrix.node-version }} - name: Install Playwright Browsers - if: ${{ matrix.runtime == 'next' || matrix.runtime == 'sveltekit' || matrix.runtime == 'vite' }} - run: npx playwright@1.40.1 install --with-deps - - - name: Install dependencies - uses: ./.github/actions/install-dependencies + if: ${{ matrix.runtime == 'next' || matrix.runtime == 'vite' }} + run: pnpx playwright@1.40.1 install --with-deps - name: Build - run: bun run build + run: pnpm build - name: Link - run: bun install + run: pnpm install - name: Run tests - run: bun run test:env:${{ matrix.runtime }} + run: pnpm test:env:${{ matrix.runtime }} vectors: name: Vectors @@ -207,7 +205,7 @@ jobs: - name: Run test vectors shell: bash - run: bun run vectors + run: pnpm vectors wagmi: name: Wagmi diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index 37096abed1784495386905cc3f7ae4b1bdf73041..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 568836 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�lJL_GFi_OEvPeIy>|FWh&wn^p|mu6(k@ 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�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 N{+~8P|3CWk{{rLNndbli diff --git a/environments/next/playwright.config.ts b/environments/next/playwright.config.ts index 48352001c3..51d04b7599 100644 --- a/environments/next/playwright.config.ts +++ b/environments/next/playwright.config.ts @@ -29,6 +29,6 @@ export default defineConfig({ }, ], webServer: { - command: 'bun run dev', + command: 'pnpm dev', }, }) diff --git a/environments/sveltekit/.gitignore b/environments/sveltekit/.gitignore deleted file mode 100644 index 6fa1a251fe..0000000000 --- a/environments/sveltekit/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -.DS_Store -node_modules -/build -/.svelte-kit -/package -.env -.env.* -!.env.example -vite.config.js.timestamp-* -vite.config.ts.timestamp-* - -.vercel diff --git a/environments/sveltekit/.npmrc b/environments/sveltekit/.npmrc deleted file mode 100644 index b6f27f1359..0000000000 --- a/environments/sveltekit/.npmrc +++ /dev/null @@ -1 +0,0 @@ -engine-strict=true diff --git a/environments/sveltekit/package.json b/environments/sveltekit/package.json deleted file mode 100644 index ddd683c255..0000000000 --- a/environments/sveltekit/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "test-sveltekit", - "private": true, - "type": "module", - "scripts": { - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview", - "test": "playwright test" - }, - "dependencies": { - "viem": "file:../../src/" - }, - "devDependencies": { - "@playwright/test": "1.40.1", - "@sveltejs/adapter-vercel": "^3.0.3", - "@sveltejs/kit": "^1.20.4", - "svelte": "^4.0.5", - "svelte-check": "^3.4.3", - "tslib": "^2.4.1", - "typescript": "^5.0.0", - "vite": "^4.4.2" - } -} diff --git a/environments/sveltekit/playwright.config.ts b/environments/sveltekit/playwright.config.ts deleted file mode 100644 index 2245f89ad2..0000000000 --- a/environments/sveltekit/playwright.config.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { defineConfig, devices } from '@playwright/test' - -/** - * Read environment variables from file. - * https://github.com/motdotla/dotenv - */ -// require('dotenv').config(); - -/** - * See https://playwright.dev/docs/test-configuration. - */ -export default defineConfig({ - testDir: './tests', - retries: 3, - projects: [ - { - name: 'chromium', - use: { ...devices['Desktop Chrome'] }, - }, - - { - name: 'firefox', - use: { ...devices['Desktop Firefox'] }, - }, - - { - name: 'webkit', - use: { ...devices['Desktop Safari'] }, - }, - ], - webServer: { - command: 'bun run build && bun run preview', - port: 4173, - }, -}) diff --git a/environments/sveltekit/src/app.d.ts b/environments/sveltekit/src/app.d.ts deleted file mode 100644 index 6d62d59dec..0000000000 --- a/environments/sveltekit/src/app.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -// See https://kit.svelte.dev/docs/types#app -// for information about these interfaces -declare global { - namespace App { - // interface Error {} - // interface Locals {} - // interface PageData {} - // interface Platform {} - } -} - -export type {} diff --git a/environments/sveltekit/src/app.html b/environments/sveltekit/src/app.html deleted file mode 100644 index effe0d0d26..0000000000 --- a/environments/sveltekit/src/app.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - %sveltekit.head% - - -

%sveltekit.body%
- - diff --git a/environments/sveltekit/src/routes/+page.svelte b/environments/sveltekit/src/routes/+page.svelte deleted file mode 100644 index a606ff734e..0000000000 --- a/environments/sveltekit/src/routes/+page.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - -
server: success
-

- {#await promise} - Loading... - {:then blockNumber} - client: success - {:catch error} - Error: {error.message}. - {/await} -

\ No newline at end of file diff --git a/environments/sveltekit/src/routes/+page.ts b/environments/sveltekit/src/routes/+page.ts deleted file mode 100644 index d4a22b1779..0000000000 --- a/environments/sveltekit/src/routes/+page.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { createPublicClient, webSocket } from 'viem' -import { mainnet } from 'viem/chains' - -export async function load() { - const client = createPublicClient({ - chain: mainnet, - transport: webSocket( - 'wss://eth-mainnet.g.alchemy.com/v2/4iIl6mDHqX3GFrpzmfj2Soirf3MPoAcH', - ), - }) - - await client.getBlockNumber() - - return { - success: true, - } -} diff --git a/environments/sveltekit/src/routes/edge/+page.svelte b/environments/sveltekit/src/routes/edge/+page.svelte deleted file mode 100644 index 8f730232a4..0000000000 --- a/environments/sveltekit/src/routes/edge/+page.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - -
server: success {data.success}
\ No newline at end of file diff --git a/environments/sveltekit/src/routes/edge/+page.ts b/environments/sveltekit/src/routes/edge/+page.ts deleted file mode 100644 index c80efb1455..0000000000 --- a/environments/sveltekit/src/routes/edge/+page.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { createPublicClient, webSocket } from 'viem' -import { mainnet } from 'viem/chains' - -export const config = { - runtime: 'edge', -} - -export async function load() { - const client = createPublicClient({ - chain: mainnet, - transport: webSocket( - 'wss://eth-mainnet.g.alchemy.com/v2/4iIl6mDHqX3GFrpzmfj2Soirf3MPoAcH', - ), - }) - - await client.getBlockNumber() - - return { - success: true, - } -} diff --git a/environments/sveltekit/src/routes/node16/+page.svelte b/environments/sveltekit/src/routes/node16/+page.svelte deleted file mode 100644 index 8f730232a4..0000000000 --- a/environments/sveltekit/src/routes/node16/+page.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - -
server: success {data.success}
\ No newline at end of file diff --git a/environments/sveltekit/src/routes/node16/+page.ts b/environments/sveltekit/src/routes/node16/+page.ts deleted file mode 100644 index 0ff4ca6d0d..0000000000 --- a/environments/sveltekit/src/routes/node16/+page.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { createPublicClient, webSocket } from 'viem' -import { mainnet } from 'viem/chains' - -export const config = { - runtime: 'nodejs16.x', -} - -export async function load() { - const client = createPublicClient({ - chain: mainnet, - transport: webSocket( - 'wss://eth-mainnet.g.alchemy.com/v2/4iIl6mDHqX3GFrpzmfj2Soirf3MPoAcH', - ), - }) - - await client.getBlockNumber() - - return { - success: true, - } -} diff --git a/environments/sveltekit/src/routes/node18/+page.svelte b/environments/sveltekit/src/routes/node18/+page.svelte deleted file mode 100644 index 8f730232a4..0000000000 --- a/environments/sveltekit/src/routes/node18/+page.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - -
server: success {data.success}
\ No newline at end of file diff --git a/environments/sveltekit/src/routes/node18/+page.ts b/environments/sveltekit/src/routes/node18/+page.ts deleted file mode 100644 index 03c6e7473b..0000000000 --- a/environments/sveltekit/src/routes/node18/+page.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { createPublicClient, webSocket } from 'viem' -import { mainnet } from 'viem/chains' - -export const config = { - runtime: 'nodejs18.x', -} - -export async function load() { - const client = createPublicClient({ - chain: mainnet, - transport: webSocket( - 'wss://eth-mainnet.g.alchemy.com/v2/4iIl6mDHqX3GFrpzmfj2Soirf3MPoAcH', - ), - }) - - await client.getBlockNumber() - - return { - success: true, - } -} diff --git a/environments/sveltekit/static/favicon.png b/environments/sveltekit/static/favicon.png deleted file mode 100644 index 825b9e65af7c104cfb07089bb28659393b4f2097..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH { - await page.goto('http://localhost:4173/') - await expect(page.getByText('server: success')).toBeVisible() - await expect(page.getByText('client: success')).toBeVisible() -}) diff --git a/environments/sveltekit/tsconfig.json b/environments/sveltekit/tsconfig.json deleted file mode 100644 index 794b95b642..0000000000 --- a/environments/sveltekit/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true - } - // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias - // - // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes - // from the referenced tsconfig.json - TypeScript does not merge them in -} diff --git a/environments/sveltekit/vite.config.ts b/environments/sveltekit/vite.config.ts deleted file mode 100644 index dd1b8b7fa1..0000000000 --- a/environments/sveltekit/vite.config.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { sveltekit } from '@sveltejs/kit/vite' -import { defineConfig } from 'vite' - -export default defineConfig({ - plugins: [sveltekit()], -}) diff --git a/environments/vite/playwright.config.ts b/environments/vite/playwright.config.ts index 48352001c3..51d04b7599 100644 --- a/environments/vite/playwright.config.ts +++ b/environments/vite/playwright.config.ts @@ -29,6 +29,6 @@ export default defineConfig({ }, ], webServer: { - command: 'bun run dev', + command: 'pnpm dev', }, }) diff --git a/package.json b/package.json index 053eac815b..d7c8e02820 100644 --- a/package.json +++ b/package.json @@ -1,41 +1,37 @@ { - "workspaces": ["examples/*", "environments/*", "site", "src", "test"], "private": true, "type": "module", "scripts": { "bench": "vitest bench", - "bench:ci": "CI=true vitest bench", - "build": "bun run clean && bun run build:cjs && bun run build:esm && bun run build:types", - "build:cjs": "bun run build:trustedSetups:start && tsc --project ./tsconfig.build.json --module commonjs --outDir ./src/_cjs --removeComments --verbatimModuleSyntax false && printf '{\"type\":\"commonjs\"}' > ./src/_cjs/package.json && bun run build:trustedSetups:end", - "build:esm": "tsc --project ./tsconfig.build.json --module es2015 --outDir ./src/_esm && printf '{\"type\": \"module\",\"sideEffects\":false}' > ./src/_esm/package.json", + "build": "pnpm clean && pnpm build:cjs && pnpm build:esm && pnpm build:types", + "build:cjs": "pnpm build:trustedSetups:start && tsc --project ./tsconfig.build.json --module commonjs --outDir ./src/_cjs --removeComments --verbatimModuleSyntax false && printf '{\"type\":\"commonjs\"}' > ./src/_cjs/package.json && pnpm build:trustedSetups:end", + "build:esm": "tsc --project ./tsconfig.build.json --module es2020 --outDir ./src/_esm && printf '{\"type\": \"module\",\"sideEffects\":false}' > ./src/_esm/package.json", "build:trustedSetups:start": "mv src/node/trustedSetups.ts src/node/trustedSetups_esm.ts && mv src/node/trustedSetups_cjs.ts src/node/trustedSetups.ts", "build:trustedSetups:end": "mv src/node/trustedSetups.ts src/node/trustedSetups_cjs.ts && mv src/node/trustedSetups_esm.ts src/node/trustedSetups.ts", "build:types": "tsc --project ./tsconfig.build.json --module esnext --declarationDir ./src/_types --emitDeclarationOnly --declaration --declarationMap", - "changeset": "changeset", - "changeset:prepublish": "bun run version:update && bun scripts/prepublishOnly.ts && bun run build", - "changeset:publish": "bun run changeset:prepublish && changeset publish", - "changeset:version": "changeset version && bun install --lockfile-only && bun version:update", - "clean": "rimraf src/_esm src/_cjs src/_types", + "changeset:prepublish": "pnpm version:update && bun scripts/prepublishOnly.ts && pnpm build", + "changeset:publish": "pnpm changeset:prepublish && changeset publish", + "changeset:version": "changeset version && pnpm install --lockfile-only && pnpm version:update", + "clean": "rimraf **/*.tsbuildinfo src/_esm src/_cjs src/_types", "contracts:build": "forge build --config-path ./test/foundry.toml && bun ./scripts/generateTypedArtifacts.ts", - "docs:dev": "cd site && bun run dev", - "docs:build": "cd site && bun run build", - "docs:preview": "cd site && bun run preview", + "docs:dev": "pnpm --filter site dev", + "docs:build": "pnpm --filter site build", + "docs:preview": "pnpm --filter site preview", "lint": "biome check . --apply", - "postinstall": "git submodule update --init --recursive && bun run contracts:build", - "prepare": "bun x simple-git-hooks", + "postinstall": "git submodule update --init --recursive && pnpm contracts:build", + "prepare": "pnpm simple-git-hooks", "prepublishOnly": "bun scripts/prepublishOnly.ts", "size": "size-limit", "test": "vitest -c ./test/vitest.config.ts dev", "test:chains": "vitest test/chains.test.ts", "test:ci": "CI=true vitest -c ./test/vitest.config.ts --coverage --retry=3 --bail=1", "test:cov": "vitest dev -c ./test/vitest.config.ts --coverage", - "test:env": "bun run test:env:bun && bun run test:env:next && bun run test:env:node && bun run test:env:vite && bun run test:env:sveltekit", - "test:env:bun": "cd environments/bun && bun run test", - "test:env:next": "cd environments/next && bun run test", - "test:env:node": "cd environments/node && bun run test", - "test:env:sveltekit": "cd environments/sveltekit && bun run test", - "test:env:tsc": "cd environments/tsc && bun run test", - "test:env:vite": "cd environments/vite && bun run test", + "test:env": "pnpm test:env:bun && pnpm test:env:next && pnpm test:env:node && pnpm test:env:tsc && pnpm test:env:vite", + "test:env:bun": "pnpm --filter test-bun test", + "test:env:next": "pnpm --filter test-next test", + "test:env:node": "pnpm --filter test-node test", + "test:env:tsc": "pnpm --filter test-tsc test", + "test:env:vite": "pnpm --filter test-vite test", "test:typecheck": "SKIP_GLOBAL_SETUP=true vitest --typecheck.only -c ./test/vitest.config.ts", "test:ui": "vitest dev -c ./test/vitest.config.ts --ui", "typebench": "tsx test/typebench.ts --benchPercentThreshold 10 --benchErrorOnThresholdExceeded", @@ -53,8 +49,11 @@ "@size-limit/preset-big-lib": "^11.1.2", "@types/bun": "^1.1.3", "@types/fs-extra": "^9.0.13", + "@types/node": "^20.14.0", "@vitest/coverage-v8": "^1.0.4", "@vitest/ui": "^1.0.4", + "abitype": "1.0.0", + "bun": "^1.1.12", "c-kzg": "^2.1.2", "ethers": "^6.0.2", "fs-extra": "^10.1.0", @@ -64,12 +63,13 @@ "simple-git-hooks": "^2.8.1", "size-limit": "^11.1.2", "tsx": "^4.11.0", - "typescript": "5.4.2", + "typescript": "5.4.5", "vite": "^5.0.7", "vitest": "^1.0.4" }, "trustedDependencies": ["c-kzg"], + "packageManager": "pnpm@9.1.0", "simple-git-hooks": { - "pre-commit": "bun run lint" + "pre-commit": "pnpm lint" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000000..3cbaa5e0ef --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,12558 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@arktype/attest': + specifier: 0.7.5 + version: 0.7.5(typescript@5.4.5) + '@biomejs/biome': + specifier: ^1.7.3 + version: 1.7.3 + '@changesets/changelog-github': + specifier: ^0.4.5 + version: 0.4.5 + '@changesets/cli': + specifier: ^2.23.2 + version: 2.23.2 + '@ethereumjs/rlp': + specifier: ^5.0.0 + version: 5.0.0 + '@size-limit/preset-big-lib': + specifier: ^11.1.2 + version: 11.1.2(size-limit@11.1.2) + '@types/bun': + specifier: ^1.1.3 + version: 1.1.3 + '@types/fs-extra': + specifier: ^9.0.13 + version: 9.0.13 + '@types/node': + specifier: ^20.14.0 + version: 20.14.0 + '@vitest/coverage-v8': + specifier: ^1.0.4 + version: 1.0.4(vitest@1.0.4(@types/node@20.14.0)(@vitest/ui@1.0.4)(terser@5.31.0)) + '@vitest/ui': + specifier: ^1.0.4 + version: 1.0.4(vitest@1.0.4) + abitype: + specifier: 1.0.0 + version: 1.0.0(typescript@5.4.5)(zod@3.22.4) + bun: + specifier: ^1.1.12 + version: 1.1.12 + c-kzg: + specifier: ^2.1.2 + version: 2.1.2 + ethers: + specifier: ^6.0.2 + version: 6.0.2 + fs-extra: + specifier: ^10.1.0 + version: 10.1.0 + globby: + specifier: ^13.2.2 + version: 13.2.2 + prool: + specifier: ^0.0.4 + version: 0.0.4 + rimraf: + specifier: ^4.4.1 + version: 4.4.1 + simple-git-hooks: + specifier: ^2.8.1 + version: 2.8.1 + size-limit: + specifier: ^11.1.2 + version: 11.1.2 + tsx: + specifier: ^4.11.0 + version: 4.11.0 + typescript: + specifier: 5.4.5 + version: 5.4.5 + vite: + specifier: ^5.0.7 + version: 5.0.7(@types/node@20.14.0)(terser@5.31.0) + vitest: + specifier: ^1.0.4 + version: 1.0.4(@types/node@20.14.0)(@vitest/ui@1.0.4)(terser@5.31.0) + + environments/bun: + dependencies: + viem: + specifier: file:../../src/ + version: file:src(typescript@5.4.5)(zod@3.22.4) + + environments/next: + dependencies: + next: + specifier: 13.5.4 + version: 13.5.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: + specifier: ^18 + version: 18.2.0 + react-dom: + specifier: ^18 + version: 18.2.0(react@18.2.0) + viem: + specifier: file:../../src/ + version: link:../../src + devDependencies: + '@playwright/test': + specifier: 1.40.1 + version: 1.40.1 + '@types/node': + specifier: ^20 + version: 20.8.3 + '@types/react': + specifier: ^18 + version: 18.0.27 + '@types/react-dom': + specifier: ^18 + version: 18.0.10 + typescript: + specifier: ^5 + version: 5.4.2 + + environments/node: + dependencies: + viem: + specifier: file:../../src/ + version: file:src(typescript@5.4.5)(zod@3.22.4) + + environments/tsc: + dependencies: + typescript: + specifier: latest + version: 5.4.5 + viem: + specifier: file:../../src/ + version: file:src(typescript@5.4.5)(zod@3.22.4) + + environments/vite: + dependencies: + viem: + specifier: file:../../src/ + version: link:../../src + devDependencies: + '@playwright/test': + specifier: 1.40.1 + version: 1.40.1 + '@types/node': + specifier: ^20.8.3 + version: 20.8.3 + typescript: + specifier: ^5.0.2 + version: 5.4.2 + vite: + specifier: ^4.4.5 + version: 4.4.5(@types/node@20.8.3)(terser@5.31.0) + + examples/_template: + dependencies: + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/blocks_fetching-blocks: + dependencies: + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/blocks_watching-blocks: + dependencies: + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/clients_public-client: + dependencies: + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/clients_wallet-client: + dependencies: + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + '@types/react': + specifier: ^18.0.27 + version: 18.0.27 + '@types/react-dom': + specifier: ^18.0.10 + version: 18.0.10 + '@vitejs/plugin-react': + specifier: ^3.1.0 + version: 3.1.0(vite@4.4.5(@types/node@20.14.0)(terser@5.31.0)) + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/contracts_deploying-contracts: + dependencies: + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + '@types/react': + specifier: ^18.0.27 + version: 18.0.27 + '@types/react-dom': + specifier: ^18.0.10 + version: 18.0.10 + '@vitejs/plugin-react': + specifier: ^3.1.0 + version: 3.1.0(vite@4.4.5(@types/node@20.14.0)(terser@5.31.0)) + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/contracts_multicall: + dependencies: + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/contracts_reading-contracts: + dependencies: + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/contracts_writing-to-contracts: + dependencies: + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + '@types/react': + specifier: ^18.0.27 + version: 18.0.27 + '@types/react-dom': + specifier: ^18.0.10 + version: 18.0.10 + '@vitejs/plugin-react': + specifier: ^3.1.0 + version: 3.1.0(vite@4.4.5(@types/node@20.14.0)(terser@5.31.0)) + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/ens: + dependencies: + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/logs_block-event-logs: + dependencies: + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/logs_event-logs: + dependencies: + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/logs_pending-transactions-logs: + dependencies: + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/op-stack_deposit: + dependencies: + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + viem: + specifier: workspace:* + version: link:../../src + devDependencies: + '@types/react': + specifier: ^18.0.27 + version: 18.0.27 + '@types/react-dom': + specifier: ^18.0.10 + version: 18.0.10 + '@vitejs/plugin-react': + specifier: ^3.1.0 + version: 3.1.0(vite@4.4.5(@types/node@20.14.0)(terser@5.31.0)) + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/signing_typed-data: + dependencies: + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + '@types/react': + specifier: ^18.0.27 + version: 18.0.27 + '@types/react-dom': + specifier: ^18.0.10 + version: 18.0.10 + '@vitejs/plugin-react': + specifier: ^3.1.0 + version: 3.1.0(vite@4.4.5(@types/node@20.14.0)(terser@5.31.0)) + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/transactions_fetching-transactions: + dependencies: + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/transactions_sending-transactions: + dependencies: + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + '@types/react': + specifier: ^18.0.27 + version: 18.0.27 + '@types/react-dom': + specifier: ^18.0.10 + version: 18.0.10 + '@vitejs/plugin-react': + specifier: ^3.1.0 + version: 3.1.0(vite@4.4.5(@types/node@20.14.0)(terser@5.31.0)) + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + examples/walletconnect: + dependencies: + '@walletconnect/ethereum-provider': + specifier: ^2.10.0 + version: 2.10.0(@walletconnect/modal@2.6.1(react@18.2.0)) + '@walletconnect/modal': + specifier: ^2.6.1 + version: 2.6.1(react@18.2.0) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + viem: + specifier: latest + version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + devDependencies: + '@types/react': + specifier: ^18.0.27 + version: 18.0.27 + '@types/react-dom': + specifier: ^18.0.10 + version: 18.0.10 + '@vitejs/plugin-react': + specifier: ^3.1.0 + version: 3.1.0(vite@4.4.5(@types/node@20.14.0)(terser@5.31.0)) + typescript: + specifier: ^5.0.3 + version: 5.4.2 + vite: + specifier: ^4.4.2 + version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + + site: + devDependencies: + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + viem: + specifier: workspace:* + version: link:../src + vocs: + specifier: 1.0.0-alpha.52 + version: 1.0.0-alpha.52(@types/node@20.14.0)(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.18.0)(terser@5.31.0)(typescript@5.4.5) + + src: + dependencies: + '@adraffy/ens-normalize': + specifier: 1.10.0 + version: 1.10.0 + '@noble/curves': + specifier: 1.2.0 + version: 1.2.0 + '@noble/hashes': + specifier: 1.3.2 + version: 1.3.2 + '@scure/bip32': + specifier: 1.3.2 + version: 1.3.2 + '@scure/bip39': + specifier: 1.2.1 + version: 1.2.1 + abitype: + specifier: 1.0.0 + version: 1.0.0(typescript@5.4.2)(zod@3.22.4) + isows: + specifier: 1.0.4 + version: 1.0.4(ws@8.13.0) + typescript: + specifier: '>=5.0.4' + version: 5.4.2 + ws: + specifier: 8.13.0 + version: 8.13.0 + + test: {} + +packages: + + '@adraffy/ens-normalize@1.10.0': + resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + + '@adraffy/ens-normalize@1.8.9': + resolution: {integrity: sha512-93OmGCV0vO8+JQ3FHG+gZk/MPHzzMPDRiCiFcCQNTCnHaaxsacO3ScTPGlu2wX2dOtgfalbchPcw1cOYYjHCYQ==} + + '@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'} + + '@arktype/attest@0.7.5': + resolution: {integrity: sha512-ZOF9uqLbvoVO6RHhlByJEBBj5qhWLpaCK/wWa5guD1OQR1/a7JZ9jCrDAcaASt6tYBA3dGhDerXhc7FcDWlRQw==} + hasBin: true + peerDependencies: + typescript: '*' + + '@arktype/fs@0.0.19': + resolution: {integrity: sha512-ZEiSc6DgJANSgMTee9lueumCH/3gIikJWT8wlN8CyVk/IDFKFbJb3/BHj906Aw+APvCc8oyvu+2Hanshkgh4Bg==} + + '@arktype/schema@0.1.2': + resolution: {integrity: sha512-ggvxs5P0toqd/4/XK76URQrtyOYpbYcLhirEZeTso6FxkloPa0lT+whPg7DNQj5qi2OQXLUHBYKMx9DOb13ViQ==} + + '@arktype/util@0.0.38': + resolution: {integrity: sha512-IvYMGnkUASJllRk3mdBVgckomKx2LNsDTrWCxz04EBK1OuU+4fJ/smSjxgZVWfopNXZds9sHNxZgTJOIw7GvJw==} + + '@arktype/util@0.0.41': + resolution: {integrity: sha512-0YURzJ42v+lhlP1t5Dj90YezETRTCdFU0oM4xMVpYsmPx/DHJzr9n7AX1QPAlYWH4wY7hYY3gwai3O+8VntPgw==} + + '@babel/code-frame@7.24.6': + resolution: {integrity: sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.24.6': + resolution: {integrity: sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.24.6': + resolution: {integrity: sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.24.6': + resolution: {integrity: sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.24.6': + resolution: {integrity: sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-environment-visitor@7.24.6': + resolution: {integrity: sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.24.6': + resolution: {integrity: sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.24.6': + resolution: {integrity: sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.6': + resolution: {integrity: sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.24.6': + resolution: {integrity: sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.24.6': + resolution: {integrity: sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-simple-access@7.24.6': + resolution: {integrity: sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.24.6': + resolution: {integrity: sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.6': + resolution: {integrity: sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.6': + resolution: {integrity: sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.6': + resolution: {integrity: sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.24.6': + resolution: {integrity: sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.6': + resolution: {integrity: sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.24.6': + resolution: {integrity: sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-typescript@7.24.6': + resolution: {integrity: sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.24.6': + resolution: {integrity: sha512-FfZfHXtQ5jYPQsCRyLpOv2GeLIIJhs8aydpNh39vRDjhD411XcfWDni5i7OjP/Rs8GAtTn7sWFFELJSHqkIxYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.24.6': + resolution: {integrity: sha512-BQTBCXmFRreU3oTUXcGKuPOfXAGb1liNY4AvvFKsOBAJ89RKcTsIrSsnMYkj59fNa66OFKnSa4AJZfy5Y4B9WA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.24.6': + resolution: {integrity: sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.24.6': + resolution: {integrity: sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.24.6': + resolution: {integrity: sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.24.6': + resolution: {integrity: sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@biomejs/biome@1.7.3': + resolution: {integrity: sha512-ogFQI+fpXftr+tiahA6bIXwZ7CSikygASdqMtH07J2cUzrpjyTMVc9Y97v23c7/tL1xCZhM+W9k4hYIBm7Q6cQ==} + engines: {node: '>=14.21.3'} + hasBin: true + + '@biomejs/cli-darwin-arm64@1.7.3': + resolution: {integrity: sha512-eDvLQWmGRqrPIRY7AIrkPHkQ3visEItJKkPYSHCscSDdGvKzYjmBJwG1Gu8+QC5ed6R7eiU63LEC0APFBobmfQ==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + + '@biomejs/cli-darwin-x64@1.7.3': + resolution: {integrity: sha512-JXCaIseKRER7dIURsVlAJacnm8SG5I0RpxZ4ya3dudASYUc68WGl4+FEN03ABY3KMIq7hcK1tzsJiWlmXyosZg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + + '@biomejs/cli-linux-arm64-musl@1.7.3': + resolution: {integrity: sha512-c8AlO45PNFZ1BYcwaKzdt46kYbuP6xPGuGQ6h4j3XiEDpyseRRUy/h+6gxj07XovmyxKnSX9GSZ6nVbZvcVUAw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-arm64@1.7.3': + resolution: {integrity: sha512-phNTBpo7joDFastnmZsFjYcDYobLTx4qR4oPvc9tJ486Bd1SfEVPHEvJdNJrMwUQK56T+TRClOQd/8X1nnjA9w==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-x64-musl@1.7.3': + resolution: {integrity: sha512-UdEHKtYGWEX3eDmVWvQeT+z05T9/Sdt2+F/7zmMOFQ7boANeX8pcO6EkJPK3wxMudrApsNEKT26rzqK6sZRTRA==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-linux-x64@1.7.3': + resolution: {integrity: sha512-vnedYcd5p4keT3iD48oSKjOIRPYcjSNNbd8MO1bKo9ajg3GwQXZLAH+0Cvlr+eMsO67/HddWmscSQwTFrC/uPA==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-win32-arm64@1.7.3': + resolution: {integrity: sha512-unNCDqUKjujYkkSxs7gFIfdasttbDC4+z0kYmcqzRk6yWVoQBL4dNLcCbdnJS+qvVDNdI9rHp2NwpQ0WAdla4Q==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + + '@biomejs/cli-win32-x64@1.7.3': + resolution: {integrity: sha512-ZmByhbrnmz/UUFYB622CECwhKIPjJLLPr5zr3edhu04LzbfcOrz16VYeNq5dpO1ADG70FORhAJkaIGdaVBG00w==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + + '@changesets/apply-release-plan@6.1.4': + resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} + + '@changesets/assemble-release-plan@5.2.4': + resolution: {integrity: sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==} + + '@changesets/changelog-git@0.1.14': + resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} + + '@changesets/changelog-github@0.4.5': + resolution: {integrity: sha512-J36QJml3mXYm88PLY2qGepmb7j6LA3NM/wuUy6XBwh14qzVTRek+3Xww5oqeZhpK5lK8ELxGahdhSdYQzMv0kA==} + + '@changesets/cli@2.23.2': + resolution: {integrity: sha512-o7CWC+mcwOmA3yK5axqHOSYPYEjX/x+nq/s9aX78AyzH1SQZa6L5HX4P9uUXibyjcKynklkmusxv8vN8+hJggA==} + hasBin: true + + '@changesets/config@2.3.1': + resolution: {integrity: sha512-PQXaJl82CfIXddUOppj4zWu+987GCw2M+eQcOepxN5s+kvnsZOwjEJO3DH9eVy+OP6Pg/KFEWdsECFEYTtbg6w==} + + '@changesets/errors@0.1.4': + resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} + + '@changesets/get-dependents-graph@1.3.6': + resolution: {integrity: sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==} + + '@changesets/get-github-info@0.5.2': + resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==} + + '@changesets/get-release-plan@3.0.17': + resolution: {integrity: sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==} + + '@changesets/get-version-range-type@0.3.2': + resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} + + '@changesets/git@1.5.0': + resolution: {integrity: sha512-Xo8AT2G7rQJSwV87c8PwMm6BAc98BnufRMsML7m7Iw8Or18WFvFmxqG5aOL5PBvhgq9KrKvaeIBNIymracSuHg==} + + '@changesets/git@2.0.0': + resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} + + '@changesets/logger@0.0.5': + resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} + + '@changesets/parse@0.3.16': + resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} + + '@changesets/pre@1.0.14': + resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} + + '@changesets/read@0.5.9': + resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} + + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + + '@changesets/types@5.2.1': + resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} + + '@changesets/write@0.1.9': + resolution: {integrity: sha512-E90ZrsrfJVOOQaP3Mm5Xd7uDwBAqq3z5paVEavTHKA8wxi7NAL8CmjgbGxSFuiP7ubnJA2BuHlrdE4z86voGOg==} + + '@clack/core@0.3.4': + resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==} + + '@clack/prompts@0.7.0': + resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==} + bundledDependencies: + - is-unicode-supported + + '@emotion/hash@0.9.1': + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + + '@esbuild/aix-ppc64@0.19.12': + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.18.20': + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.19.12': + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.18.20': + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.19.12': + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.18.20': + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.19.12': + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.18.20': + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.19.12': + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.18.20': + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.19.12': + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.18.20': + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.19.12': + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.18.20': + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.19.12': + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.18.20': + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.19.12': + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.18.20': + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.19.12': + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.18.20': + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.19.12': + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.18.20': + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.19.12': + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.18.20': + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.19.12': + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.18.20': + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.19.12': + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.18.20': + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.19.12': + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.18.20': + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.19.12': + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.18.20': + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.19.12': + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.18.20': + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.19.12': + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.18.20': + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.19.12': + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.18.20': + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.19.12': + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.18.20': + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.19.12': + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.18.20': + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.19.12': + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.18.20': + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.19.12': + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@ethereumjs/rlp@5.0.0': + resolution: {integrity: sha512-WuS1l7GJmB0n0HsXLozCoEFc9IwYgf3l0gCkKVYgR67puVF1O4OpEaN0hWmm1c+iHUHFCKt1hJrvy5toLg+6ag==} + engines: {node: '>=18'} + hasBin: true + + '@floating-ui/core@1.6.2': + resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==} + + '@floating-ui/dom@1.6.5': + resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==} + + '@floating-ui/react-dom@2.1.0': + resolution: {integrity: sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.26.16': + resolution: {integrity: sha512-HEf43zxZNAI/E781QIVpYSF3K2VH4TTYZpqecjdsFkjsaU1EbaWcM++kw0HXFffj7gDUcBFevX8s0rQGQpxkow==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.2': + resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==} + + '@hono/node-server@1.11.2': + resolution: {integrity: sha512-JhX0nUC66GeDxpIdMKWDRMEwtQBa64CY907iAF1sYqb4m2p2PdSU7zkbnNhAZLg/6IjSlTuj6CF307JlBXVvpg==} + engines: {node: '>=18.14.1'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@lit-labs/ssr-dom-shim@1.2.0': + resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} + + '@lit/reactive-element@1.6.3': + resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} + + '@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==} + + '@mdx-js/mdx@3.0.1': + resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} + + '@mdx-js/react@3.0.1': + resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + + '@mdx-js/rollup@3.0.1': + resolution: {integrity: sha512-j0II91OCm4ld+l5QVgXXMQGxVVcAWIQJakYWi1dv5pefDHASJyCYER2TsdH7Alf958GoFSM7ugukWyvDq/UY4A==} + peerDependencies: + rollup: '>=2' + + '@motionone/animation@10.18.0': + resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} + + '@motionone/dom@10.18.0': + resolution: {integrity: sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==} + + '@motionone/easing@10.18.0': + resolution: {integrity: sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==} + + '@motionone/generators@10.18.0': + resolution: {integrity: sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==} + + '@motionone/svelte@10.16.4': + resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} + + '@motionone/types@10.17.1': + resolution: {integrity: sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==} + + '@motionone/utils@10.18.0': + resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} + + '@motionone/vue@10.16.4': + resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} + deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion + + '@next/env@13.5.4': + resolution: {integrity: sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ==} + + '@next/swc-darwin-arm64@13.5.4': + resolution: {integrity: sha512-Df8SHuXgF1p+aonBMcDPEsaahNo2TCwuie7VXED4FVyECvdXfRT9unapm54NssV9tF3OQFKBFOdlje4T43VO0w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@13.5.4': + resolution: {integrity: sha512-siPuUwO45PnNRMeZnSa8n/Lye5ZX93IJom9wQRB5DEOdFrw0JjOMu1GINB8jAEdwa7Vdyn1oJ2xGNaQpdQQ9Pw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@13.5.4': + resolution: {integrity: sha512-l/k/fvRP/zmB2jkFMfefmFkyZbDkYW0mRM/LB+tH5u9pB98WsHXC0WvDHlGCYp3CH/jlkJPL7gN8nkTQVrQ/2w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@13.5.4': + resolution: {integrity: sha512-YYGb7SlLkI+XqfQa8VPErljb7k9nUnhhRrVaOdfJNCaQnHBcvbT7cx/UjDQLdleJcfyg1Hkn5YSSIeVfjgmkTg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@13.5.4': + resolution: {integrity: sha512-uE61vyUSClnCH18YHjA8tE1prr/PBFlBFhxBZis4XBRJoR+txAky5d7gGNUIbQ8sZZ7LVkSVgm/5Fc7mwXmRAg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@13.5.4': + resolution: {integrity: sha512-qVEKFYML/GvJSy9CfYqAdUexA6M5AklYcQCW+8JECmkQHGoPxCf04iMh7CPR7wkHyWWK+XLt4Ja7hhsPJtSnhg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@13.5.4': + resolution: {integrity: sha512-mDSQfqxAlfpeZOLPxLymZkX0hYF3juN57W6vFHTvwKlnHfmh12Pt7hPIRLYIShk8uYRsKPtMTth/EzpwRI+u8w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-ia32-msvc@13.5.4': + resolution: {integrity: sha512-aoqAT2XIekIWoriwzOmGFAvTtVY5O7JjV21giozBTP5c6uZhpvTWRbmHXbmsjZqY4HnEZQRXWkSAppsIBweKqw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@next/swc-win32-x64-msvc@13.5.4': + resolution: {integrity: sha512-cyRvlAxwlddlqeB9xtPSfNSCRy8BOa4wtMo0IuI9P7Y0XT2qpDrpFKRyZ7kUngZis59mPVla5k8X1oOJ8RxDYg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@noble/curves@1.2.0': + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + + '@noble/hashes@1.1.2': + resolution: {integrity: sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==} + + '@noble/hashes@1.3.2': + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + + '@noble/secp256k1@1.7.1': + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + + '@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'} + + '@oven/bun-darwin-aarch64@1.1.12': + resolution: {integrity: sha512-g8nmDXIYDmbEnP6moX3ZTS5BsikX8dz/XB0PAfL+LEBJEGECyor2Hv1yvhGQfeR1/lvfSXsWnk0Hhk9Mrj6uoQ==} + cpu: [arm64] + os: [darwin] + + '@oven/bun-darwin-x64-baseline@1.1.12': + resolution: {integrity: sha512-KXBwaeD9y4GuxSqC1uDNIktTC/jY2DtagiURuUOF1rniYxkkLRNgXotTvVA5NvP2PBCoWyrxZ67WJSBm0AIyjQ==} + cpu: [x64] + os: [darwin] + + '@oven/bun-darwin-x64@1.1.12': + resolution: {integrity: sha512-XWL6atcLxyh4KgOlqqyHUOh4Ylm46CExipJmAdKs30gyYqbw3E+HTFhADsyFEtugOe0qPUNlo0aMo+ZMc1yIQA==} + cpu: [x64] + os: [darwin] + + '@oven/bun-linux-aarch64@1.1.12': + resolution: {integrity: sha512-6Jen4+b5BzInF7bbRjMIWoy3xIuK/kQQn9xehvrAYnr3J9p3vCD5VhzDP20hW9yQcmZtO2kE6pIYCbaaxPNKtg==} + cpu: [arm64] + os: [linux] + + '@oven/bun-linux-x64-baseline@1.1.12': + resolution: {integrity: sha512-luwWf/QGMJ23+yIRBMDnhjYuxh9zXy+Vw4lAzwvLB7phYXCs7IPEhIhZxhcZQ3XMafWtHlWAVo5P6NZZdFRMUQ==} + cpu: [x64] + os: [linux] + + '@oven/bun-linux-x64@1.1.12': + resolution: {integrity: sha512-X4dqnIOv4M9HAL4tAj9bb14WjsfKby5xWNV/otUxtfSDsDrV2ukYUekivEmHqchxHFUHOHyc/cv+/jtfvedDZg==} + cpu: [x64] + os: [linux] + + '@oven/bun-windows-x64-baseline@1.1.12': + resolution: {integrity: sha512-MRn+zcJO1hcVqwJmFxpUSdb6ZvrYC8Xp2N1fPOzdw3YSskz9iHkJuUKzx7s9iCC7jTpo6XI/H51EFr/M2U7Ipg==} + cpu: [x64] + os: [win32] + + '@oven/bun-windows-x64@1.1.12': + resolution: {integrity: sha512-ufvTeXXI9tJSJUhvdPnFUmGqCNBKBazEwjvQ5c8vhtZ8hdBHV54LoURVDIBYCgzfdv5NQT3sr8qRLFqy4mlMLg==} + cpu: [x64] + os: [win32] + + '@parcel/watcher-android-arm64@2.4.1': + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.4.1': + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.4.1': + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.4.1': + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.4.1': + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.4.1': + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.4.1': + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.4.1': + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-wasm@2.4.1': + resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} + engines: {node: '>= 10.0.0'} + bundledDependencies: + - napi-wasm + + '@parcel/watcher-win32-arm64@2.4.1': + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.4.1': + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.4.1': + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.4.1': + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + engines: {node: '>= 10.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@playwright/test@1.40.1': + resolution: {integrity: sha512-EaaawMTOeEItCRvfmkI9v6rBkF1svM8wjl/YPRrg2N2Wmp+4qJYkWtJsbew1szfKKDm6fPLy4YAanBhIlf9dWw==} + engines: {node: '>=16'} + hasBin: true + + '@polka/url@1.0.0-next.25': + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + + '@puppeteer/browsers@2.2.2': + resolution: {integrity: sha512-hZ/JhxPIceWaGSEzUZp83/8M49CoxlkuThfTR7t4AoCu5+ZvJ3vktLm60Otww2TXeROB5igiZ8D9oPQh6ckBVg==} + engines: {node: '>=18'} + hasBin: true + + '@puppeteer/browsers@2.2.3': + resolution: {integrity: sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ==} + engines: {node: '>=18'} + hasBin: true + + '@radix-ui/colors@3.0.0': + resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} + + '@radix-ui/primitive@1.0.1': + resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + + '@radix-ui/react-accordion@1.1.2': + resolution: {integrity: sha512-fDG7jcoNKVjSK6yfmuAs0EnPDro0WMXIhMtXdTBWqEioVW206ku+4Lw07e+13lUkFkpoEQ2PdeMIAGpdqEAmDg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-arrow@1.0.3': + resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collapsible@1.0.3': + resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.0.3': + resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.0.1': + resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.0.1': + resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.0.5': + resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.0.1': + resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.0.5': + resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.0.1': + resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.0.4': + resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-icons@1.3.0': + resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==} + peerDependencies: + react: ^16.x || ^17.x || ^18.x + + '@radix-ui/react-id@1.0.1': + resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-label@2.0.2': + resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-navigation-menu@1.1.4': + resolution: {integrity: sha512-Cc+seCS3PmWmjI51ufGG7zp1cAAIRqHVw7C9LOA2TZ+R4hG6rDvHcTqIsEEFLmZO3zNVH72jOOE7kKNy8W+RtA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popover@1.0.7': + resolution: {integrity: sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.1.3': + resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.0.4': + resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.0.1': + resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@1.0.3': + resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.0.4': + resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.0.2': + resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-tabs@1.0.4': + resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.0.1': + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.0.1': + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.0.3': + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.0.1': + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.0.1': + resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.0.1': + resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.0.1': + resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.0.3': + resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.0.1': + resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + + '@remix-run/router@1.16.1': + resolution: {integrity: sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==} + engines: {node: '>=14.0.0'} + + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.18.0': + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.18.0': + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.18.0': + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.18.0': + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.18.0': + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.18.0': + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.18.0': + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.18.0': + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.18.0': + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.18.0': + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.18.0': + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.18.0': + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.18.0': + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.18.0': + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} + cpu: [x64] + os: [win32] + + '@scure/base@1.1.6': + resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} + + '@scure/bip32@1.3.2': + resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} + + '@scure/bip39@1.2.1': + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@shikijs/core@1.6.2': + resolution: {integrity: sha512-guW5JeDzZ7uwOjTfCOFZ2VtVXk5tmkMzBYbKGfXsmAH1qYOej49L5jQDcGmwd6/OgvpmWhzO2GNJkQIFnbwLPQ==} + + '@shikijs/rehype@1.6.2': + resolution: {integrity: sha512-zXRiQn1lS4kRG5lb0fZeUOAuLvmpZp5Lv5Tqed38XTkRZeGHNRI75djkrsnWMEY6FRbsNGNP4Y+jPx9Qp8/Jkg==} + + '@shikijs/transformers@1.6.2': + resolution: {integrity: sha512-ndqTWyHnxmsLkowhKWTam26opw8hg5a34y6FAUG/Xf6E49n3MM//nenKxXiWpPYkNPl1KZnYXB1k+Ia46wjOZg==} + + '@shikijs/twoslash@1.6.2': + resolution: {integrity: sha512-s2dtnY0WY9RagnS3z2tkS4hNhz2mW2DXlfo3XmfT2yExkFQ4kg3W/gquB07hl4ebIuwI87u2sppVYBUZQQ53RA==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@sitespeed.io/tracium@0.3.3': + resolution: {integrity: sha512-dNZafjM93Y+F+sfwTO5gTpsGXlnc/0Q+c2+62ViqP3gkMWvHEMSKkaEHgVJLcLg3i/g19GSIPziiKpgyne07Bw==} + engines: {node: '>=8'} + + '@size-limit/file@11.1.2': + resolution: {integrity: sha512-zktWwhO7MxVwQXbrZzy0VKfM5mZK3Aza1G3XbWRP8q+/3+irPKCz2fmyYJqJAJVwC9U1jAs6xEPlTJzxKgEAmw==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + size-limit: 11.1.2 + + '@size-limit/preset-big-lib@11.1.2': + resolution: {integrity: sha512-9ySJQDHE9ClVQEC3ADnkjV9CxO6+l1U4eNmshoQb2UHpee8O5QryeDHVBHSpa3dyz0YAdt+A2jKN6TTenrpedg==} + peerDependencies: + size-limit: 11.1.2 + + '@size-limit/time@11.1.2': + resolution: {integrity: sha512-PiMW36HavOd7j40/pwGj67xS/1AJurr9+CwE0Br0jNnbXD83zwEt4wwG1pY+iHl/+00dzIwG4z/1QJfKiLV0Gw==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + size-limit: 11.1.2 + + '@size-limit/webpack@11.1.2': + resolution: {integrity: sha512-i2hhcIB/o4wCvhHZ8Q6hkkeEaumeWayEHYERsqGCKWxtuMOEvUY99rj38Wc+Lt2+tmXlckAX1cpdQbgFz/19SA==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + size-limit: 11.1.2 + + '@stablelib/aead@1.0.1': + resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} + + '@stablelib/binary@1.0.1': + resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + + '@stablelib/bytes@1.0.1': + resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + + '@stablelib/chacha20poly1305@1.0.1': + resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + + '@stablelib/chacha@1.0.1': + resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} + + '@stablelib/constant-time@1.0.1': + resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} + + '@stablelib/ed25519@1.0.3': + resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} + + '@stablelib/hash@1.0.1': + resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} + + '@stablelib/hkdf@1.0.1': + resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} + + '@stablelib/hmac@1.0.1': + resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} + + '@stablelib/int@1.0.1': + resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} + + '@stablelib/keyagreement@1.0.1': + resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + + '@stablelib/poly1305@1.0.1': + resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} + + '@stablelib/random@1.0.2': + resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} + + '@stablelib/sha256@1.0.1': + resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} + + '@stablelib/sha512@1.0.1': + resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} + + '@stablelib/wipe@1.0.1': + resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} + + '@stablelib/x25519@1.0.3': + resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + + '@swc/helpers@0.5.2': + resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + + '@types/acorn@4.0.6': + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/bun@1.1.3': + resolution: {integrity: sha512-i+mVz8C/lx+RprDR6Mr402iE1kmajgJPnmSfJ/NvU85sGGXSylYZ/6yc+XhVLr2E/t8o6HmjwV0evtnUOR0CFA==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@8.56.10': + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/fs-extra@9.0.13': + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/is-ci@3.0.4': + resolution: {integrity: sha512-AkCYCmwlXeuH89DagDCzvCAyltI2v9lh3U3DqSg/GrBYoReAaWwxfXCqMx9UV5MajLZ4ZFwZzV4cABGIxk2XRw==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + + '@types/minimist@1.2.5': + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@20.12.14': + resolution: {integrity: sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg==} + + '@types/node@20.13.0': + resolution: {integrity: sha512-FM6AOb3khNkNIXPnHFDYaHerSv8uN22C91z098AnGccVu+Pcdhi+pNUFDi0iLmPIsVE0JBD0KVS7mzUYt4nRzQ==} + + '@types/node@20.14.0': + resolution: {integrity: sha512-5cHBxFGJx6L4s56Bubp4fglrEpmyJypsqI6RgzMfBHWUJQGWAAi8cWcgetEbZXHYXo9C2Fa4EEds/uSyS4cxmA==} + + '@types/node@20.8.3': + resolution: {integrity: sha512-jxiZQFpb+NlH5kjW49vXxvxTjeeqlbsnTAdBTKpzEdPs9itay7MscYXz3Fo9VYFEsfQ6LJFitHad3faerLAjCw==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/prop-types@15.7.12': + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + + '@types/react-dom@18.0.10': + resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==} + + '@types/react@18.0.27': + resolution: {integrity: sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==} + + '@types/react@18.3.3': + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + + '@types/scheduler@0.23.0': + resolution: {integrity: sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==} + + '@types/semver@6.2.7': + resolution: {integrity: sha512-blctEWbzUFzQx799RZjzzIdBJOXmE37YYEyDtKkx5Dg+V7o/zyyAxLPiI98A2jdTtDgxZleMdfV+7p8WbRJ1OQ==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/unist@2.0.10': + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + + '@types/unist@3.0.2': + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + + '@types/ws@8.5.10': + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + + '@typescript/analyze-trace@0.10.1': + resolution: {integrity: sha512-RnlSOPh14QbopGCApgkSx5UBgGda5MX1cHqp2fsqfiDyCwGL/m1jaeB9fzu7didVS81LQqGZZuxFBcg8YU8EVw==} + hasBin: true + + '@typescript/vfs@1.5.0': + resolution: {integrity: sha512-AJS307bPgbsZZ9ggCT3wwpg3VbTKMFNHfaY/uF0ahSkYYrPF2dSSKDNIDIQAHm9qJqbLvCsSJH7yN4Vs/CsMMg==} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vanilla-extract/babel-plugin-debug-ids@1.0.6': + resolution: {integrity: sha512-C188vUEYmw41yxg3QooTs8r1IdbDQQ2mH7L5RkORBnHx74QlmsNfqVmKwAVTgrlYt8JoRaWMtPfGm/Ql0BNQrA==} + + '@vanilla-extract/css@1.15.2': + resolution: {integrity: sha512-Bi61iCAtojCuqvV+FYaF5i69vBjuMQJpHPdpgKYyQvx+e2Hp79V0ELglyYOdcyg9Wh0k0MFwgCDipVd7EloTXQ==} + + '@vanilla-extract/dynamic@2.1.1': + resolution: {integrity: sha512-iqf736036ujEIKsIq28UsBEMaLC2vR2DhwKyrG3NDb/fRy9qL9FKl1TqTtBV4daU30Uh3saeik4vRzN8bzQMbw==} + + '@vanilla-extract/integration@6.5.0': + resolution: {integrity: sha512-E2YcfO8vA+vs+ua+gpvy1HRqvgWbI+MTlUpxA8FvatOvybuNcWAY0CKwQ/Gpj7rswYKtC6C7+xw33emM6/ImdQ==} + + '@vanilla-extract/private@1.0.5': + resolution: {integrity: sha512-6YXeOEKYTA3UV+RC8DeAjFk+/okoNz/h88R+McnzA2zpaVqTR/Ep+vszkWYlGBcMNO7vEkqbq5nT/JMMvhi+tw==} + + '@vanilla-extract/vite-plugin@3.9.5': + resolution: {integrity: sha512-CWI/CtrVW6i3HKccI6T7uGQkTJ8bd8Xl2UMBg3Pkr7dwWMmavXTeucV0I9KSbmXaYXSbEj+Q8c9y0xAZwtmTig==} + peerDependencies: + vite: ^2.2.3 || ^3.0.0 || ^4.0.3 || ^5.0.0 + + '@vitejs/plugin-react@3.1.0': + resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.1.0-beta.0 + + '@vitejs/plugin-react@4.2.0': + resolution: {integrity: sha512-+MHTH/e6H12kRp5HUkzOGqPMksezRMmW+TNzlh/QXfI8rRf6l2Z2yH/v12no1UvTwhZgEDMuQ7g7rrfMseU6FQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + + '@vitest/coverage-v8@1.0.4': + resolution: {integrity: sha512-xD6Yuql6RW0Ir/JJIs6rVrmnG2/KOWJF+IRX1oJQk5wGKGxbtdrYPbl+WTUn/4ICCQ2G20zbE1e8/nPNyAG5Vg==} + peerDependencies: + vitest: ^1.0.0 + + '@vitest/expect@1.0.4': + resolution: {integrity: sha512-/NRN9N88qjg3dkhmFcCBwhn/Ie4h064pY3iv7WLRsDJW7dXnEgeoa8W9zy7gIPluhz6CkgqiB3HmpIXgmEY5dQ==} + + '@vitest/runner@1.0.4': + resolution: {integrity: sha512-rhOQ9FZTEkV41JWXozFM8YgOqaG9zA7QXbhg5gy6mFOVqh4PcupirIJ+wN7QjeJt8S8nJRYuZH1OjJjsbxAXTQ==} + + '@vitest/snapshot@1.0.4': + resolution: {integrity: sha512-vkfXUrNyNRA/Gzsp2lpyJxh94vU2OHT1amoD6WuvUAA12n32xeVZQ0KjjQIf8F6u7bcq2A2k969fMVxEsxeKYA==} + + '@vitest/spy@1.0.4': + resolution: {integrity: sha512-9ojTFRL1AJVh0hvfzAQpm0QS6xIS+1HFIw94kl/1ucTfGCaj1LV/iuJU4Y6cdR03EzPDygxTHwE1JOm+5RCcvA==} + + '@vitest/ui@1.0.4': + resolution: {integrity: sha512-gd4p6e7pjukSe4joWS5wpnm/JcEfzCZUYkYWQOORqJK1mDJ0MOaXa/9BbPOEVO5TcvdnKvFJUdJpFHnqoyYwZA==} + peerDependencies: + vitest: ^1.0.0 + + '@vitest/utils@1.0.4': + resolution: {integrity: sha512-gsswWDXxtt0QvtK/y/LWukN7sGMYmnCcv1qv05CsY6cU/Y1zpGX1QuvLs+GO1inczpE6Owixeel3ShkjhYtGfA==} + + '@walletconnect/core@2.10.0': + resolution: {integrity: sha512-Z8pdorfIMueuiBXLdnf7yloiO9JIiobuxN3j0OTal+MYc4q5/2O7d+jdD1DAXbLi1taJx3x60UXT/FPVkjIqIQ==} + + '@walletconnect/environment@1.0.1': + resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} + + '@walletconnect/ethereum-provider@2.10.0': + resolution: {integrity: sha512-NyTm7RcrtAiSaYQPh6G4sOtr1kg/pL5Z3EDE6rBTV3Se5pMsYvtuwMiSol7MidsQpf4ux9HFhthTO3imcoWImw==} + peerDependencies: + '@walletconnect/modal': '>=2' + peerDependenciesMeta: + '@walletconnect/modal': + optional: true + + '@walletconnect/events@1.0.1': + resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} + + '@walletconnect/heartbeat@1.2.1': + resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} + + '@walletconnect/jsonrpc-http-connection@1.0.8': + resolution: {integrity: sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==} + + '@walletconnect/jsonrpc-provider@1.0.13': + resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} + + '@walletconnect/jsonrpc-provider@1.0.14': + resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==} + + '@walletconnect/jsonrpc-types@1.0.3': + resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} + + '@walletconnect/jsonrpc-types@1.0.4': + resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==} + + '@walletconnect/jsonrpc-utils@1.0.8': + resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} + + '@walletconnect/jsonrpc-ws-connection@1.0.13': + resolution: {integrity: sha512-mfOM7uFH4lGtQxG+XklYuFBj6dwVvseTt5/ahOkkmpcAEgz2umuzu7fTR+h5EmjQBdrmYyEBOWADbeaFNxdySg==} + + '@walletconnect/keyvaluestorage@1.1.1': + resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==} + peerDependencies: + '@react-native-async-storage/async-storage': 1.x + peerDependenciesMeta: + '@react-native-async-storage/async-storage': + optional: true + + '@walletconnect/logger@2.1.2': + resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} + + '@walletconnect/modal-core@2.6.1': + resolution: {integrity: sha512-f2hYlJ5pwzGvjyaZ6BoGR5uiMgXzWXt6w6ktt1N8lmY6PiYp8whZgqx2hTxVWwVlsGnaIfh6UHp1hGnANx0eTQ==} + + '@walletconnect/modal-ui@2.6.1': + resolution: {integrity: sha512-RFUOwDAMijSK8B7W3+KoLKaa1l+KEUG0LCrtHqaB0H0cLnhEGdLR+kdTdygw+W8+yYZbkM5tXBm7MlFbcuyitA==} + + '@walletconnect/modal@2.6.1': + resolution: {integrity: sha512-G84tSzdPKAFk1zimgV7JzIUFT5olZUVtI3GcOk77OeLYjlMfnDT23RVRHm5EyCrjkptnvpD0wQScXePOFd2Xcw==} + + '@walletconnect/relay-api@1.0.10': + resolution: {integrity: sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==} + + '@walletconnect/relay-auth@1.0.4': + resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} + + '@walletconnect/safe-json@1.0.2': + resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} + + '@walletconnect/sign-client@2.10.0': + resolution: {integrity: sha512-hbDljDS53kR/It3oXD91UkcOsT6diNnW5+Zzksm0YEfwww5dop/YfNlcdnc8+jKUhWOL/YDPNQCjzsCSNlVzbw==} + + '@walletconnect/time@1.0.2': + resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} + + '@walletconnect/types@2.10.0': + resolution: {integrity: sha512-kSTA/WZnbKdEbvbXSW16Ty6dOSzOZCHnGg6JH7q1MuraalD2HuNg00lVVu7QAZ/Rj1Gn9DAkrgP5Wd5a8Xq//Q==} + + '@walletconnect/universal-provider@2.10.0': + resolution: {integrity: sha512-jtVWf+AeTCqBcB3lCmWkv3bvSmdRCkQdo67GNoT5y6/pvVHMxfjgrJNBOUsWQMxpREpWDpZ993X0JRjsYVsMcA==} + + '@walletconnect/utils@2.10.0': + resolution: {integrity: sha512-9GRyEz/7CJW+G04RvrjPET5k7hOEsB9b3fF9cWDk/iDCxSWpbkU/hv/urRB36C+gvQMAZgIZYX3dHfzJWkY/2g==} + + '@walletconnect/window-getters@1.0.1': + resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} + + '@walletconnect/window-metadata@1.0.1': + resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + + '@webassemblyjs/ast@1.12.1': + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + + '@webassemblyjs/floating-point-hex-parser@1.11.6': + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + '@webassemblyjs/helper-api-error@1.11.6': + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + '@webassemblyjs/helper-buffer@1.12.1': + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + + '@webassemblyjs/helper-numbers@1.11.6': + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + '@webassemblyjs/helper-wasm-section@1.12.1': + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + + '@webassemblyjs/ieee754@1.11.6': + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + + '@webassemblyjs/leb128@1.11.6': + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + + '@webassemblyjs/utf8@1.11.6': + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + '@webassemblyjs/wasm-edit@1.12.1': + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + + '@webassemblyjs/wasm-gen@1.12.1': + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + + '@webassemblyjs/wasm-opt@1.12.1': + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + + '@webassemblyjs/wasm-parser@1.12.1': + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + + '@webassemblyjs/wast-printer@1.12.1': + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + abitype@1.0.0: + resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-import-assertions@1.9.0: + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + + 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@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + + aes-js@4.0.0-beta.3: + resolution: {integrity: sha512-/xJX0/VTPcbc5xQE2VUP91y1xN8q/rDfhEzLm+vLc3hYvb5+qHCnpJRuFcrKn63zumK/sCwYYzhG8HP78JYSTA==} + + agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + engines: {node: '>= 14'} + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + 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@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + arktype@2.0.0-dev.11: + resolution: {integrity: sha512-k+WVQoHsHsTyTiVQkO201mxLQxyXHmy3buJW8TXLOkr4X2yOUCp0K1SBscuG9OEJoc8MjpvoIharjPHEkFI7kg==} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + + astring@1.8.6: + resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + hasBin: true + + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + autoprefixer@10.4.19: + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + 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'} + + b4a@1.6.6: + resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + bare-events@2.3.1: + resolution: {integrity: sha512-sJnSOTVESURZ61XgEleqmP255T6zTYwHPwE4r6SssIh0U9/uDvfpdoJYpVUerJJZH2fueO+CdT8ZT+OC/7aZDA==} + + bare-fs@2.3.0: + resolution: {integrity: sha512-TNFqa1B4N99pds2a5NYHR15o0ZpdNKbAeKTE/+G6ED/UeOavv8RY3dr/Fu99HW3zU3pXpo2kDNO8Sjsm2esfOw==} + + bare-os@2.3.0: + resolution: {integrity: sha512-oPb8oMM1xZbhRQBngTgpcQ5gXw6kjOaRsSWsIeNyRxGed2w/ARyP7ScBYpWR1qfX2E5rS3gBw6OWcSQo+s+kUg==} + + bare-path@2.1.3: + resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} + + bare-stream@1.0.0: + resolution: {integrity: sha512-KhNUoDL40iP4gFaLSsoGE479t0jHijfYdIcxRn/XtezA2BaUD0NRf/JGRpsMq6dMNM+SrCrB0YSSo/5wBY4rOQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} + + bcp-47-match@2.0.3: + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} + + better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bl@5.1.0: + resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + breakword@1.0.6: + resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} + + browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + 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==} + + bun-types@1.1.9: + resolution: {integrity: sha512-3YuLiH4Ne/ghk7K6mHiaqCqKOMrtB0Z5p1WAskHSVgi0iMZgsARV4yGkbfi565YsStvUq6GXTWB3ga7M8cznkA==} + + bun@1.1.12: + resolution: {integrity: sha512-NZzeZuZk7VwCs8VAXnXUHCPOlTS/IyHCscChtT1M1FLSwhBcVMsGVStYlXaaoqsinBKgp0CGJdhnJw2gR3NkDw==} + cpu: [arm64, x64] + os: [darwin, linux, win32] + hasBin: true + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + bytes-iec@3.1.1: + resolution: {integrity: sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==} + engines: {node: '>= 0.8'} + + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + + c-kzg@2.1.2: + resolution: {integrity: sha512-QmP4vTp5H2hN4mkKXF9VXtZ7k7oH1kmBxLiFT/7LcyE78RgX32zvPGfwtRAsrq/b3T6RZFIsHZvQEN7JdzoNOg==} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001626: + resolution: {integrity: sha512-JRW7kAH8PFJzoPCJhLSHgDgKg5348hsQ68aqb+slnzuB5QFERv846oA/mRChmlLAOdEDeOkRn3ynb1gSFnjt3w==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + + 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.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chroma-js@2.4.2: + resolution: {integrity: sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + chromium-bidi@0.5.17: + resolution: {integrity: sha512-BqOuIWUgTPj8ayuBFJUYCCuwIcwjBsb3/614P7tt1bEPJ4i1M0kCdIl0Wi9xhtswBXnfO2bTpTMkHD71H8rJMg==} + peerDependencies: + devtools-protocol: '*' + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + clipboardy@4.0.0: + resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} + engines: {node: '>=18'} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + + 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==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + 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'} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + + consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-es@1.1.0: + resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} + + create-vocs@1.0.0-alpha.5: + resolution: {integrity: sha512-/Nr9taHX1SxL5t72DLFPYujqD8d5PDk0T8bJ9Fb/m7ck1lP20PBxHzF5IYnHI0BeTpIuGk/MQoLfT6JKpY6xnw==} + hasBin: true + + cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + + cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + crossws@0.2.4: + resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} + peerDependencies: + uWebSockets.js: '*' + peerDependenciesMeta: + uWebSockets.js: + optional: true + + css-selector-parser@3.0.5: + resolution: {integrity: sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + csv-generate@3.4.3: + resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} + + csv-parse@4.16.3: + resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} + + csv-stringify@5.6.5: + resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} + + csv@5.5.3: + resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} + engines: {node: '>= 0.1.90'} + + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + 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@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + + deep-object-diff@1.1.9: + resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} + + 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-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-browser@5.3.0: + resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + detect-package-manager@3.0.2: + resolution: {integrity: sha512-8JFjJHutStYrfWwzfretQoyNGoZVW1Fsrp4JO9spa7h/fBfwgTMEIy4/LBzRDGsxwVPHU0q+T9YvwLDJoOApLQ==} + engines: {node: '>=12'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + devtools-protocol@0.0.1262051: + resolution: {integrity: sha512-YJe4CT5SA8on3Spa+UDtNhEqtuV6Epwz3OZ4HQVLhlRccpZ9/PAYk0/cy/oKxFKRrZPBUPyxympQci4yWNWZ9g==} + + 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} + + dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + direction@2.0.1: + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} + hasBin: true + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + dotenv@8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + + duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.4.788: + resolution: {integrity: sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==} + + emoji-regex@10.3.0: + resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encode-utf8@1.0.3: + resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.16.1: + resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==} + engines: {node: '>=10.13.0'} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.5.3: + resolution: {integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + 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@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estimo@3.0.3: + resolution: {integrity: sha512-qSibrDHo82yvmgeOW7onGgeOzS/nnqa8r2exQ8LyTSH8rAma10VBJE+hPSdukV1nQrqFvEz7BVe5puUK2LZJXg==} + engines: {node: '>=18'} + hasBin: true + + 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'} + + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + + estree-util-value-to-estree@3.1.1: + resolution: {integrity: sha512-5mvUrF2suuv5f5cGDnDphIy4/gW86z82kl5qG6mM9z04SEQI4FB5Apmaw/TGEf3l55nLtMs5s51dmhUzvAHQCA==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + 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'} + + ethers@6.0.2: + resolution: {integrity: sha512-YOHvShFjKordVEN7kVcKRp6xhpjq4ggZPcsAVuadXravZ7Z4qOflOEGfIaMnKp2ZQJqyR07iYVD6YVty4dI3Fw==} + engines: {node: '>=14.0.0'} + + eval@0.1.8: + resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} + engines: {node: '>= 0.8'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + execa@9.1.0: + resolution: {integrity: sha512-lSgHc4Elo2m6bUDhc3Hl/VxvUDJdQWI40RZ4KMY9bKRc+hgMOT7II/JjbNDhI8VnMtrCb7U/fhpJIkLORZozWw==} + engines: {node: '>=18'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + + find-chrome-bin@2.0.2: + resolution: {integrity: sha512-KlggCilbbvgETk/WEq9NG894U8yu4erIW0SjMm1sMPm2xihCHeNoybpzGoxEzHRthwF3XrKOgHYtfqgJzpCH2w==} + engines: {node: '>=18.0.0'} + + 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'} + + find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + + format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + + 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.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + 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.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + 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-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-port-please@3.1.2: + resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + + get-port@7.1.0: + resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} + engines: {node: '>=16'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + 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'} + + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} + + get-uri@6.0.3: + resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} + engines: {node: '>= 14'} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + 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.1: + resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==} + engines: {node: '>=16 || 14 >=14.18'} + hasBin: true + + 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@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + globby@14.0.1: + resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} + engines: {node: '>=18'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + + h3@1.11.1: + resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} + + hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + 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.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-classnames@3.0.0: + resolution: {integrity: sha512-tI3JjoGDEBVorMAWK4jNRsfLMYmih1BUOG3VV36pH36njs1IEl7xkNrVTD2mD2yYHmQCa5R/fj61a8IAF4bRaQ==} + + hast-util-has-property@3.0.0: + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + + hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-select@6.0.2: + resolution: {integrity: sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==} + + hast-util-to-estree@3.1.0: + resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} + + hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + + hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + + hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + + hono@3.12.12: + resolution: {integrity: sha512-5IAMJOXfpA5nT+K0MNjClchzz0IhBHs2Szl7WFAhrFOsbtQsYmNynFyJRg/a3IPsmCfxcrf8txUGiNShXpK5Rg==} + engines: {node: '>=16.0.0'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + 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@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + http-shutdown@1.2.2: + resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + https-proxy-agent@7.0.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + engines: {node: '>= 14'} + + human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + human-signals@7.0.0: + resolution: {integrity: sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==} + engines: {node: '>=18.18.0'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + idb-keyval@6.2.1: + resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + + 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==} + + inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + + inline-style-parser@0.2.3: + resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.0.0: + resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} + engines: {node: '>=18'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + is64bit@2.0.0: + resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} + engines: {node: '>=18'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isows@1.0.4: + resolution: {integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==} + peerDependencies: + ws: '*' + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + 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.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jackspeak@3.1.2: + resolution: {integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==} + engines: {node: '>=14'} + + javascript-stringify@2.1.0: + resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + 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==} + + 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==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + jsonstream-next@3.0.0: + resolution: {integrity: sha512-aAi6oPhdt7BKyQn1SrIIGZBt0ukKuOUE1qV6kJ3GgioSOYzsRc8z9Hfr1BVmacA/jLe9nARfmgMGgn68BqIAgg==} + engines: {node: '>=10'} + hasBin: true + + keyvaluestorage-interface@1.0.0: + resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.1: + resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + listhen@1.7.2: + resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} + hasBin: true + + lit-element@3.3.3: + resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + + lit-html@2.8.0: + resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + + lit@2.7.6: + resolution: {integrity: sha512-1amFHA7t4VaaDe+vdQejSVBklwtH9svGoG6/dZi9JhxtJBBlqY5D1RV7iLUYY0trCqQc4NfhYYZilZiVHt7Hxg==} + + load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + + 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.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@5.1.0: + resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} + engines: {node: '>=12'} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} + engines: {node: 14 || >=16.14} + + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + + magicast@0.3.4: + resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + + markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + + mdast-util-directive@3.0.0: + resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} + + mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + + mdast-util-from-markdown@2.0.1: + resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} + + mdast-util-frontmatter@2.0.1: + resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} + + mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + + mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + + mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + + mdast-util-mdx-jsx@3.1.2: + resolution: {integrity: sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==} + + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.1.0: + resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} + + mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + media-query-parser@2.0.2: + resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + + meow@6.1.1: + resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} + engines: {node: '>=8'} + + 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'} + + micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} + + micromark-extension-directive@3.0.0: + resolution: {integrity: sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==} + + micromark-extension-frontmatter@2.0.0: + resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} + + micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + + micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + + micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + + micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-extension-mdx-expression@3.0.0: + resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} + + micromark-extension-mdx-jsx@3.0.0: + resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + + micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + + micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + + micromark-factory-mdx-expression@2.0.1: + resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + + micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + + micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + + micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + + micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + + micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + + micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + + micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + + micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + + micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-events-to-acorn@2.0.2: + resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} + + micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + + micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + + micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + + micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + 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@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'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + 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.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + + 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'} + + minisearch@6.3.0: + resolution: {integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mixme@0.5.10: + resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==} + engines: {node: '>= 8.0.0'} + + mlly@1.7.0: + resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} + + modern-ahocorasick@1.0.1: + resolution: {integrity: sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==} + + motion@10.16.2: + resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + + 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==} + + multiformats@9.9.0: + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@5.0.7: + resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} + engines: {node: ^18 || >=20} + hasBin: true + + nanospinner@1.1.0: + resolution: {integrity: sha512-yFvNYMig4AthKYfHFl1sLj7B2nkHL4lzdig4osvl9/LdGbXwrdFRoqBS98gsEsOakr0yH+r5NZ/1Y9gdVB8trA==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + + next@13.5.4: + resolution: {integrity: sha512-+93un5S779gho8y9ASQhb/bTkQF17FNQOtXLKAj3lsNgltEcF0C5PMLLncDmH+8X1EnJH1kbqAERa29nRXqhjA==} + engines: {node: '>=16.14.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + sass: + optional: true + + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + + node-addon-api@7.1.0: + resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} + engines: {node: ^16 || ^18 || >= 20} + + node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + + 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-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + 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'} + + not@0.1.0: + resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + 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.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + ofetch@1.3.4: + resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} + + ohash@1.1.3: + resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + + on-exit-leak-free@0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + ora@7.0.1: + resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==} + engines: {node: '>=16'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + + outdent@0.8.0: + resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} + + 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-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + + 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'} + + pac-proxy-agent@7.0.1: + resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==} + engines: {node: '>= 14'} + + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + + parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + 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-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + 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-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + 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'} + + pino-abstract-transport@0.5.0: + resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + + pino-std-serializers@4.0.0: + resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + + pino@7.11.0: + resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} + hasBin: true + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@1.1.1: + resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} + + playwright-core@1.40.1: + resolution: {integrity: sha512-+hkOycxPiV534c4HhpfX6yrlawqVUzITRKwHAmYfmsVreltEl6fAZJ3DPfLMOODw0H3s1Itd6MDCWmP1fl/QvQ==} + engines: {node: '>=16'} + hasBin: true + + playwright@1.40.1: + resolution: {integrity: sha512-2eHI7IioIpQ0bS1Ovg/HszsN/XKNwEG1kbzSDDmADpclKc7CyqkHw7Mg2JCz/bbCxg25QUPcjksoMW7JcIFQmw==} + engines: {node: '>=16'} + hasBin: true + + pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + 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@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.0.1: + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.0: + resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} + 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.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + + preferred-pm@3.1.3: + resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} + engines: {node: '>=10'} + + prettier@1.19.1: + resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} + engines: {node: '>=4'} + hasBin: true + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + pretty-ms@9.0.0: + resolution: {integrity: sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==} + engines: {node: '>=18'} + + process-warning@1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + prool@0.0.4: + resolution: {integrity: sha512-9jRsEPMn1Y+MLOrIws1gcGoCB3yo6LlBkmIt9ENCYp+wf0j678khnm6UzJeTPg1vqipsHXUx9eFpng7UaZawcQ==} + engines: {node: '>=22'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + + proxy-agent@6.4.0: + resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} + engines: {node: '>= 14'} + + proxy-compare@2.5.1: + resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + puppeteer-core@22.6.5: + resolution: {integrity: sha512-s0/5XkAWe0/dWISiljdrybjwDCHhgN31Nu/wznOZPKeikgcJtZtbvPKBz0t802XWqfSQnQDt3L6xiAE5JLlfuw==} + engines: {node: '>=18'} + + qrcode@1.5.3: + resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} + engines: {node: '>=10.13.0'} + hasBin: true + + query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + react-dom@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + + react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + react-helmet@6.1.0: + resolution: {integrity: sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==} + peerDependencies: + react: '>=16.3.0' + + react-intersection-observer@9.10.2: + resolution: {integrity: sha512-j2hGADK2hCbAlfaq6L3tVLb4iqngoN7B1fT16MwJ4J16YW/vWLcmAIinLsw0lgpZeMi4UDUWtHC9QDde0/P1yQ==} + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + react-dom: + optional: true + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react-remove-scroll-bar@2.3.6: + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.5: + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-router-dom@6.23.1: + resolution: {integrity: sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + react-router@6.23.1: + resolution: {integrity: sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + + react-side-effect@2.1.2: + resolution: {integrity: sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==} + peerDependencies: + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + 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@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + real-require@0.1.0: + resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} + engines: {node: '>= 12.13.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + rehype-autolink-headings@7.1.0: + resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} + + rehype-class-names@1.0.14: + resolution: {integrity: sha512-eFBt6Qxb7K77y6P82tUtN9rKpU7guWlaK4XA4RrrSFHkUTCvr2D3cgb9OR5d4t1AaGOvR59FH9nRwUnbpn9AEg==} + + rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + + remark-directive@3.0.0: + resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} + + remark-frontmatter@5.0.0: + resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} + + remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + + remark-mdx-frontmatter@4.0.0: + resolution: {integrity: sha512-PZzAiDGOEfv1Ua7exQ8S5kKxkD8CDaSb4nM+1Mprs6u8dyvQifakh+kCj6NovfGXW+bTvrhjaR3srzjS2qJHKg==} + + remark-mdx@3.0.1: + resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.0: + resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-like@0.1.2: + resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + 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@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@4.4.1: + resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} + engines: {node: '>=14'} + hasBin: true + + rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + + rollup@4.18.0: + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + 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.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + 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'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@1.6.2: + resolution: {integrity: sha512-X3hSm5GzzBd/BmPmGfkueOUADLyBoZo1ojYQXhd+NU2VJn458yt4duaS0rVzC+WtqftSV7mTVvDw+OB9AHi3Eg==} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + 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-git-hooks@2.8.1: + resolution: {integrity: sha512-DYpcVR1AGtSfFUNzlBdHrQGPsOhuuEJ/FkmPOOlFysP60AHd3nsEpkGq/QEOdtUyT1Qhk7w9oLmFoMG+75BDog==} + hasBin: true + + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + size-limit@11.1.2: + resolution: {integrity: sha512-W9V/QR98fiLgGg+S77DNy7usExpz7HCdDAqm2t2Q77GWCV//wWUC6hyZA9QXKk1x6bxMMTzq1vmncw5Cve/43w==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + smartwrap@2.0.2: + resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} + engines: {node: '>=6'} + hasBin: true + + socks-proxy-agent@8.0.3: + resolution: {integrity: sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==} + engines: {node: '>= 14'} + + socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + sonic-boom@2.8.0: + resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + spawndamnit@2.0.0: + resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + + 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.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} + + split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + + split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + + stdin-discarder@0.1.0: + resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + stream-transform@2.1.3: + resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + streamx@2.18.0: + resolution: {integrity: sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==} + + strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + + 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@6.1.0: + resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} + engines: {node: '>=16'} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + 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==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + 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-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + + style-to-object@0.4.4: + resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} + + style-to-object@1.0.6: + resolution: {integrity: sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==} + + 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 + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + 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-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + system-architecture@0.1.0: + resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} + engines: {node: '>=18'} + + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + + tailwindcss@3.4.3: + resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} + engines: {node: '>=14.0.0'} + hasBin: true + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar-fs@3.0.5: + resolution: {integrity: sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + + terser-webpack-plugin@5.3.10: + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.31.0: + resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-decoder@1.1.0: + resolution: {integrity: sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==} + + 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==} + + thread-stream@0.15.2: + resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + 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'} + + toml@3.0.0: + resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + tsx@4.11.0: + resolution: {integrity: sha512-vzGGELOgAupsNVssAmZjbUDfdm/pWP4R+Kg8TVdsonxbXk0bEpE1qh0yV6/QxUVXaVlNemgcPajGdJJ82n3stg==} + engines: {node: '>=18.0.0'} + hasBin: true + + tty-table@4.2.3: + resolution: {integrity: sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==} + engines: {node: '>=8.0.0'} + hasBin: true + + twoslash-protocol@0.2.6: + resolution: {integrity: sha512-8NbJlYeRdBcCTQ7ui7pdRPC1NL16aOnoYNz06oBW+W0qWNuiQXHgE8UeNvbA038aDd6ZPuuD5WedsBIESocB4g==} + + twoslash@0.2.6: + resolution: {integrity: sha512-DcAKIyXMB6xNs+SOw/oF8GvUr/cfJSqznngVXYbAUIVfTW3M8vWSEoCaz/RgSD+M6vwtK8DJ4/FmYBF5MN8BGw==} + peerDependencies: + typescript: '*' + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + + ua-parser-js@1.0.38: + resolution: {integrity: sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==} + + ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + + uint8arrays@3.1.1: + resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + unenv@1.9.0: + resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + unified@10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + + unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unstorage@1.10.2: + resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} + peerDependencies: + '@azure/app-configuration': ^1.5.0 + '@azure/cosmos': ^4.0.0 + '@azure/data-tables': ^13.2.2 + '@azure/identity': ^4.0.1 + '@azure/keyvault-secrets': ^4.8.0 + '@azure/storage-blob': ^12.17.0 + '@capacitor/preferences': ^5.0.7 + '@netlify/blobs': ^6.5.0 || ^7.0.0 + '@planetscale/database': ^1.16.0 + '@upstash/redis': ^1.28.4 + '@vercel/kv': ^1.0.1 + idb-keyval: ^6.2.1 + ioredis: ^5.3.2 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/kv': + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + + untun@0.1.3: + resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} + hasBin: true + + update-browserslist-db@1.0.16: + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uqr@0.1.2: + resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + urlpattern-polyfill@10.0.0: + resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} + + use-callback-ref@1.3.2: + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + valtio@1.11.0: + resolution: {integrity: sha512-65Yd0yU5qs86b5lN1eu/nzcTgQ9/6YnD6iO+DDaDbQLn1Zv2w12Gwk43WkPlUBxk5wL/6cD5YMFf7kj6HZ1Kpg==} + engines: {node: '>=12.20.0'} + peerDependencies: + react: '>=16.8' + peerDependenciesMeta: + react: + optional: true + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + + vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + + viem@2.13.3: + resolution: {integrity: sha512-3tlwDRKHSelupFjbFMdUxF41f79ktyH2F9PAQ9Dltbs1DpdDlR1x+Ksa0th6qkyjjAbpDZP3F5nMTJv/1GVPdQ==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + viem@file:src: + resolution: {directory: src, type: directory} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + vite-node@1.0.4: + resolution: {integrity: sha512-9xQQtHdsz5Qn8hqbV7UKqkm8YkJhzT/zr41Dmt5N7AlD8hJXw/Z7y0QiD5I8lnTthV9Rvcvi0QW7PI0Fq83ZPg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite@4.4.5: + resolution: {integrity: sha512-4m5kEtAWHYr0O1Fu7rZp64CfO1PsRGZlD3TAB32UmQlpd7qg15VF7ROqGN5CyqN7HFuwr7ICNM2+fDWRqFEKaA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vite@5.0.7: + resolution: {integrity: sha512-B4T4rJCDPihrQo2B+h1MbeGL/k/GMAHzhQ8S0LjQ142s6/+l3hHTT095ORvsshj4QCkoWu3Xtmob5mazvakaOw==} + 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: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vite@5.2.12: + resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==} + 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: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@1.0.4: + resolution: {integrity: sha512-s1GQHp/UOeWEo4+aXDOeFBJwFzL6mjycbQwwKWX2QcYfh/7tIerS59hWQ20mxzupTJluA2SdwiBuWwQHH67ckg==} + 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.0.0 + '@vitest/ui': ^1.0.0 + 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 + + vocs@1.0.0-alpha.52: + resolution: {integrity: sha512-+AVO5lFQ91jq2H6AdRR2HtqSfjiXesykH27XN1fo3pNHxCqxqajIUCapcEGTu1VTmHL899dyWvJgLiikxly/8w==} + hasBin: true + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 + + watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + + watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} + engines: {node: '>=10.13.0'} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack@5.91.0: + resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + 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.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + 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.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + 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.5.0: + resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} + 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 + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@2.4.3: + resolution: {integrity: sha512-sntgmxj8o7DE7g/Qi60cqpLBA3HG3STcDA0kO+WfB05jEKhZMbY7umNm2rBpQvsmZ16/lPXCJGW2672dgOUkrg==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + + yoctocolors@2.0.2: + resolution: {integrity: sha512-Ct97huExsu7cWeEjmrXlofevF8CvzUglJ4iGUet5B8xn1oumtAZBpHU4GzYuoE6PVqcZ5hghtBrSlhwHuR1Jmw==} + engines: {node: '>=18'} + + zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@adraffy/ens-normalize@1.10.0': {} + + '@adraffy/ens-normalize@1.8.9': {} + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@arktype/attest@0.7.5(typescript@5.4.5)': + dependencies: + '@arktype/fs': 0.0.19 + '@arktype/util': 0.0.41 + '@typescript/analyze-trace': 0.10.1 + '@typescript/vfs': 1.5.0 + arktype: 2.0.0-dev.11 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@arktype/fs@0.0.19': {} + + '@arktype/schema@0.1.2': + dependencies: + '@arktype/util': 0.0.38 + + '@arktype/util@0.0.38': {} + + '@arktype/util@0.0.41': {} + + '@babel/code-frame@7.24.6': + dependencies: + '@babel/highlight': 7.24.6 + picocolors: 1.0.1 + + '@babel/compat-data@7.24.6': {} + + '@babel/core@7.24.6': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.6 + '@babel/generator': 7.24.6 + '@babel/helper-compilation-targets': 7.24.6 + '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) + '@babel/helpers': 7.24.6 + '@babel/parser': 7.24.6 + '@babel/template': 7.24.6 + '@babel/traverse': 7.24.6 + '@babel/types': 7.24.6 + convert-source-map: 2.0.0 + debug: 4.3.5 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.24.6': + dependencies: + '@babel/types': 7.24.6 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-compilation-targets@7.24.6': + dependencies: + '@babel/compat-data': 7.24.6 + '@babel/helper-validator-option': 7.24.6 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-environment-visitor@7.24.6': {} + + '@babel/helper-function-name@7.24.6': + dependencies: + '@babel/template': 7.24.6 + '@babel/types': 7.24.6 + + '@babel/helper-hoist-variables@7.24.6': + dependencies: + '@babel/types': 7.24.6 + + '@babel/helper-module-imports@7.24.6': + dependencies: + '@babel/types': 7.24.6 + + '@babel/helper-module-transforms@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-module-imports': 7.24.6 + '@babel/helper-simple-access': 7.24.6 + '@babel/helper-split-export-declaration': 7.24.6 + '@babel/helper-validator-identifier': 7.24.6 + + '@babel/helper-plugin-utils@7.24.6': {} + + '@babel/helper-simple-access@7.24.6': + dependencies: + '@babel/types': 7.24.6 + + '@babel/helper-split-export-declaration@7.24.6': + dependencies: + '@babel/types': 7.24.6 + + '@babel/helper-string-parser@7.24.6': {} + + '@babel/helper-validator-identifier@7.24.6': {} + + '@babel/helper-validator-option@7.24.6': {} + + '@babel/helpers@7.24.6': + dependencies: + '@babel/template': 7.24.6 + '@babel/types': 7.24.6 + + '@babel/highlight@7.24.6': + dependencies: + '@babel/helper-validator-identifier': 7.24.6 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + + '@babel/parser@7.24.6': + dependencies: + '@babel/types': 7.24.6 + + '@babel/plugin-syntax-typescript@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + + '@babel/plugin-transform-react-jsx-self@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + + '@babel/plugin-transform-react-jsx-source@7.24.6(@babel/core@7.24.6)': + dependencies: + '@babel/core': 7.24.6 + '@babel/helper-plugin-utils': 7.24.6 + + '@babel/runtime@7.24.6': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.24.6': + dependencies: + '@babel/code-frame': 7.24.6 + '@babel/parser': 7.24.6 + '@babel/types': 7.24.6 + + '@babel/traverse@7.24.6': + dependencies: + '@babel/code-frame': 7.24.6 + '@babel/generator': 7.24.6 + '@babel/helper-environment-visitor': 7.24.6 + '@babel/helper-function-name': 7.24.6 + '@babel/helper-hoist-variables': 7.24.6 + '@babel/helper-split-export-declaration': 7.24.6 + '@babel/parser': 7.24.6 + '@babel/types': 7.24.6 + debug: 4.3.5 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.24.6': + dependencies: + '@babel/helper-string-parser': 7.24.6 + '@babel/helper-validator-identifier': 7.24.6 + to-fast-properties: 2.0.0 + + '@bcoe/v8-coverage@0.2.3': {} + + '@biomejs/biome@1.7.3': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 1.7.3 + '@biomejs/cli-darwin-x64': 1.7.3 + '@biomejs/cli-linux-arm64': 1.7.3 + '@biomejs/cli-linux-arm64-musl': 1.7.3 + '@biomejs/cli-linux-x64': 1.7.3 + '@biomejs/cli-linux-x64-musl': 1.7.3 + '@biomejs/cli-win32-arm64': 1.7.3 + '@biomejs/cli-win32-x64': 1.7.3 + + '@biomejs/cli-darwin-arm64@1.7.3': + optional: true + + '@biomejs/cli-darwin-x64@1.7.3': + optional: true + + '@biomejs/cli-linux-arm64-musl@1.7.3': + optional: true + + '@biomejs/cli-linux-arm64@1.7.3': + optional: true + + '@biomejs/cli-linux-x64-musl@1.7.3': + optional: true + + '@biomejs/cli-linux-x64@1.7.3': + optional: true + + '@biomejs/cli-win32-arm64@1.7.3': + optional: true + + '@biomejs/cli-win32-x64@1.7.3': + optional: true + + '@changesets/apply-release-plan@6.1.4': + dependencies: + '@babel/runtime': 7.24.6 + '@changesets/config': 2.3.1 + '@changesets/get-version-range-type': 0.3.2 + '@changesets/git': 2.0.0 + '@changesets/types': 5.2.1 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.6.2 + + '@changesets/assemble-release-plan@5.2.4': + dependencies: + '@babel/runtime': 7.24.6 + '@changesets/errors': 0.1.4 + '@changesets/get-dependents-graph': 1.3.6 + '@changesets/types': 5.2.1 + '@manypkg/get-packages': 1.1.3 + semver: 7.6.2 + + '@changesets/changelog-git@0.1.14': + dependencies: + '@changesets/types': 5.2.1 + + '@changesets/changelog-github@0.4.5': + dependencies: + '@changesets/get-github-info': 0.5.2 + '@changesets/types': 5.2.1 + dotenv: 8.6.0 + transitivePeerDependencies: + - encoding + + '@changesets/cli@2.23.2': + dependencies: + '@babel/runtime': 7.24.6 + '@changesets/apply-release-plan': 6.1.4 + '@changesets/assemble-release-plan': 5.2.4 + '@changesets/changelog-git': 0.1.14 + '@changesets/config': 2.3.1 + '@changesets/errors': 0.1.4 + '@changesets/get-dependents-graph': 1.3.6 + '@changesets/get-release-plan': 3.0.17 + '@changesets/git': 1.5.0 + '@changesets/logger': 0.0.5 + '@changesets/pre': 1.0.14 + '@changesets/read': 0.5.9 + '@changesets/types': 5.2.1 + '@changesets/write': 0.1.9 + '@manypkg/get-packages': 1.1.3 + '@types/is-ci': 3.0.4 + '@types/semver': 6.2.7 + ansi-colors: 4.1.3 + chalk: 2.4.2 + enquirer: 2.4.1 + external-editor: 3.1.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + is-ci: 3.0.1 + meow: 6.1.1 + outdent: 0.5.0 + p-limit: 2.3.0 + preferred-pm: 3.1.3 + resolve-from: 5.0.0 + semver: 5.7.2 + spawndamnit: 2.0.0 + term-size: 2.2.1 + tty-table: 4.2.3 + + '@changesets/config@2.3.1': + dependencies: + '@changesets/errors': 0.1.4 + '@changesets/get-dependents-graph': 1.3.6 + '@changesets/logger': 0.0.5 + '@changesets/types': 5.2.1 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.7 + + '@changesets/errors@0.1.4': + dependencies: + extendable-error: 0.1.7 + + '@changesets/get-dependents-graph@1.3.6': + dependencies: + '@changesets/types': 5.2.1 + '@manypkg/get-packages': 1.1.3 + chalk: 2.4.2 + fs-extra: 7.0.1 + semver: 7.6.2 + + '@changesets/get-github-info@0.5.2': + dependencies: + dataloader: 1.4.0 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + '@changesets/get-release-plan@3.0.17': + dependencies: + '@babel/runtime': 7.24.6 + '@changesets/assemble-release-plan': 5.2.4 + '@changesets/config': 2.3.1 + '@changesets/pre': 1.0.14 + '@changesets/read': 0.5.9 + '@changesets/types': 5.2.1 + '@manypkg/get-packages': 1.1.3 + + '@changesets/get-version-range-type@0.3.2': {} + + '@changesets/git@1.5.0': + dependencies: + '@babel/runtime': 7.24.6 + '@changesets/errors': 0.1.4 + '@changesets/types': 5.2.1 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + spawndamnit: 2.0.0 + + '@changesets/git@2.0.0': + dependencies: + '@babel/runtime': 7.24.6 + '@changesets/errors': 0.1.4 + '@changesets/types': 5.2.1 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.7 + spawndamnit: 2.0.0 + + '@changesets/logger@0.0.5': + dependencies: + chalk: 2.4.2 + + '@changesets/parse@0.3.16': + dependencies: + '@changesets/types': 5.2.1 + js-yaml: 3.14.1 + + '@changesets/pre@1.0.14': + dependencies: + '@babel/runtime': 7.24.6 + '@changesets/errors': 0.1.4 + '@changesets/types': 5.2.1 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + + '@changesets/read@0.5.9': + dependencies: + '@babel/runtime': 7.24.6 + '@changesets/git': 2.0.0 + '@changesets/logger': 0.0.5 + '@changesets/parse': 0.3.16 + '@changesets/types': 5.2.1 + chalk: 2.4.2 + fs-extra: 7.0.1 + p-filter: 2.1.0 + + '@changesets/types@4.1.0': {} + + '@changesets/types@5.2.1': {} + + '@changesets/write@0.1.9': + dependencies: + '@babel/runtime': 7.24.6 + '@changesets/types': 5.2.1 + fs-extra: 7.0.1 + human-id: 1.0.2 + prettier: 1.19.1 + + '@clack/core@0.3.4': + dependencies: + picocolors: 1.0.1 + sisteransi: 1.0.5 + + '@clack/prompts@0.7.0': + dependencies: + '@clack/core': 0.3.4 + picocolors: 1.0.1 + sisteransi: 1.0.5 + + '@emotion/hash@0.9.1': {} + + '@esbuild/aix-ppc64@0.19.12': + optional: true + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/android-arm64@0.18.20': + optional: true + + '@esbuild/android-arm64@0.19.12': + optional: true + + '@esbuild/android-arm64@0.20.2': + optional: true + + '@esbuild/android-arm@0.18.20': + optional: true + + '@esbuild/android-arm@0.19.12': + optional: true + + '@esbuild/android-arm@0.20.2': + optional: true + + '@esbuild/android-x64@0.18.20': + optional: true + + '@esbuild/android-x64@0.19.12': + optional: true + + '@esbuild/android-x64@0.20.2': + optional: true + + '@esbuild/darwin-arm64@0.18.20': + optional: true + + '@esbuild/darwin-arm64@0.19.12': + optional: true + + '@esbuild/darwin-arm64@0.20.2': + optional: true + + '@esbuild/darwin-x64@0.18.20': + optional: true + + '@esbuild/darwin-x64@0.19.12': + optional: true + + '@esbuild/darwin-x64@0.20.2': + optional: true + + '@esbuild/freebsd-arm64@0.18.20': + optional: true + + '@esbuild/freebsd-arm64@0.19.12': + optional: true + + '@esbuild/freebsd-arm64@0.20.2': + optional: true + + '@esbuild/freebsd-x64@0.18.20': + optional: true + + '@esbuild/freebsd-x64@0.19.12': + optional: true + + '@esbuild/freebsd-x64@0.20.2': + optional: true + + '@esbuild/linux-arm64@0.18.20': + optional: true + + '@esbuild/linux-arm64@0.19.12': + optional: true + + '@esbuild/linux-arm64@0.20.2': + optional: true + + '@esbuild/linux-arm@0.18.20': + optional: true + + '@esbuild/linux-arm@0.19.12': + optional: true + + '@esbuild/linux-arm@0.20.2': + optional: true + + '@esbuild/linux-ia32@0.18.20': + optional: true + + '@esbuild/linux-ia32@0.19.12': + optional: true + + '@esbuild/linux-ia32@0.20.2': + optional: true + + '@esbuild/linux-loong64@0.18.20': + optional: true + + '@esbuild/linux-loong64@0.19.12': + optional: true + + '@esbuild/linux-loong64@0.20.2': + optional: true + + '@esbuild/linux-mips64el@0.18.20': + optional: true + + '@esbuild/linux-mips64el@0.19.12': + optional: true + + '@esbuild/linux-mips64el@0.20.2': + optional: true + + '@esbuild/linux-ppc64@0.18.20': + optional: true + + '@esbuild/linux-ppc64@0.19.12': + optional: true + + '@esbuild/linux-ppc64@0.20.2': + optional: true + + '@esbuild/linux-riscv64@0.18.20': + optional: true + + '@esbuild/linux-riscv64@0.19.12': + optional: true + + '@esbuild/linux-riscv64@0.20.2': + optional: true + + '@esbuild/linux-s390x@0.18.20': + optional: true + + '@esbuild/linux-s390x@0.19.12': + optional: true + + '@esbuild/linux-s390x@0.20.2': + optional: true + + '@esbuild/linux-x64@0.18.20': + optional: true + + '@esbuild/linux-x64@0.19.12': + optional: true + + '@esbuild/linux-x64@0.20.2': + optional: true + + '@esbuild/netbsd-x64@0.18.20': + optional: true + + '@esbuild/netbsd-x64@0.19.12': + optional: true + + '@esbuild/netbsd-x64@0.20.2': + optional: true + + '@esbuild/openbsd-x64@0.18.20': + optional: true + + '@esbuild/openbsd-x64@0.19.12': + optional: true + + '@esbuild/openbsd-x64@0.20.2': + optional: true + + '@esbuild/sunos-x64@0.18.20': + optional: true + + '@esbuild/sunos-x64@0.19.12': + optional: true + + '@esbuild/sunos-x64@0.20.2': + optional: true + + '@esbuild/win32-arm64@0.18.20': + optional: true + + '@esbuild/win32-arm64@0.19.12': + optional: true + + '@esbuild/win32-arm64@0.20.2': + optional: true + + '@esbuild/win32-ia32@0.18.20': + optional: true + + '@esbuild/win32-ia32@0.19.12': + optional: true + + '@esbuild/win32-ia32@0.20.2': + optional: true + + '@esbuild/win32-x64@0.18.20': + optional: true + + '@esbuild/win32-x64@0.19.12': + optional: true + + '@esbuild/win32-x64@0.20.2': + optional: true + + '@ethereumjs/rlp@5.0.0': {} + + '@floating-ui/core@1.6.2': + dependencies: + '@floating-ui/utils': 0.2.2 + + '@floating-ui/dom@1.6.5': + dependencies: + '@floating-ui/core': 1.6.2 + '@floating-ui/utils': 0.2.2 + + '@floating-ui/react-dom@2.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@floating-ui/dom': 1.6.5 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@floating-ui/react@0.26.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@floating-ui/react-dom': 2.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@floating-ui/utils': 0.2.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tabbable: 6.2.0 + + '@floating-ui/utils@0.2.2': {} + + '@hono/node-server@1.11.2': {} + + '@isaacs/cliui@8.0.2': + 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 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@lit-labs/ssr-dom-shim@1.2.0': {} + + '@lit/reactive-element@1.6.3': + dependencies: + '@lit-labs/ssr-dom-shim': 1.2.0 + + '@manypkg/find-root@1.1.0': + dependencies: + '@babel/runtime': 7.24.6 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + + '@manypkg/get-packages@1.1.3': + dependencies: + '@babel/runtime': 7.24.6 + '@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 + + '@mdx-js/mdx@3.0.1': + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-build-jsx: 3.0.1 + estree-util-is-identifier-name: 3.0.0 + estree-util-to-js: 2.0.0 + estree-walker: 3.0.3 + hast-util-to-estree: 3.1.0 + hast-util-to-jsx-runtime: 2.3.0 + markdown-extensions: 2.0.0 + periscopic: 3.1.0 + remark-mdx: 3.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.0 + source-map: 0.7.4 + unified: 11.0.4 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + + '@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.2.0)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 18.3.3 + react: 18.2.0 + + '@mdx-js/rollup@3.0.1(rollup@4.18.0)': + dependencies: + '@mdx-js/mdx': 3.0.1 + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + rollup: 4.18.0 + source-map: 0.7.4 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + + '@motionone/animation@10.18.0': + dependencies: + '@motionone/easing': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.6.2 + + '@motionone/dom@10.18.0': + dependencies: + '@motionone/animation': 10.18.0 + '@motionone/generators': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + hey-listen: 1.0.8 + tslib: 2.6.2 + + '@motionone/easing@10.18.0': + dependencies: + '@motionone/utils': 10.18.0 + tslib: 2.6.2 + + '@motionone/generators@10.18.0': + dependencies: + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.6.2 + + '@motionone/svelte@10.16.4': + dependencies: + '@motionone/dom': 10.18.0 + tslib: 2.6.2 + + '@motionone/types@10.17.1': {} + + '@motionone/utils@10.18.0': + dependencies: + '@motionone/types': 10.17.1 + hey-listen: 1.0.8 + tslib: 2.6.2 + + '@motionone/vue@10.16.4': + dependencies: + '@motionone/dom': 10.18.0 + tslib: 2.6.2 + + '@next/env@13.5.4': {} + + '@next/swc-darwin-arm64@13.5.4': + optional: true + + '@next/swc-darwin-x64@13.5.4': + optional: true + + '@next/swc-linux-arm64-gnu@13.5.4': + optional: true + + '@next/swc-linux-arm64-musl@13.5.4': + optional: true + + '@next/swc-linux-x64-gnu@13.5.4': + optional: true + + '@next/swc-linux-x64-musl@13.5.4': + optional: true + + '@next/swc-win32-arm64-msvc@13.5.4': + optional: true + + '@next/swc-win32-ia32-msvc@13.5.4': + optional: true + + '@next/swc-win32-x64-msvc@13.5.4': + optional: true + + '@noble/curves@1.2.0': + dependencies: + '@noble/hashes': 1.3.2 + + '@noble/hashes@1.1.2': {} + + '@noble/hashes@1.3.2': {} + + '@noble/secp256k1@1.7.1': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@oven/bun-darwin-aarch64@1.1.12': + optional: true + + '@oven/bun-darwin-x64-baseline@1.1.12': + optional: true + + '@oven/bun-darwin-x64@1.1.12': + optional: true + + '@oven/bun-linux-aarch64@1.1.12': + optional: true + + '@oven/bun-linux-x64-baseline@1.1.12': + optional: true + + '@oven/bun-linux-x64@1.1.12': + optional: true + + '@oven/bun-windows-x64-baseline@1.1.12': + optional: true + + '@oven/bun-windows-x64@1.1.12': + optional: true + + '@parcel/watcher-android-arm64@2.4.1': + optional: true + + '@parcel/watcher-darwin-arm64@2.4.1': + optional: true + + '@parcel/watcher-darwin-x64@2.4.1': + optional: true + + '@parcel/watcher-freebsd-x64@2.4.1': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.4.1': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-x64-musl@2.4.1': + optional: true + + '@parcel/watcher-wasm@2.4.1': + dependencies: + is-glob: 4.0.3 + micromatch: 4.0.7 + + '@parcel/watcher-win32-arm64@2.4.1': + optional: true + + '@parcel/watcher-win32-ia32@2.4.1': + optional: true + + '@parcel/watcher-win32-x64@2.4.1': + optional: true + + '@parcel/watcher@2.4.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.7 + node-addon-api: 7.1.0 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.4.1 + '@parcel/watcher-darwin-arm64': 2.4.1 + '@parcel/watcher-darwin-x64': 2.4.1 + '@parcel/watcher-freebsd-x64': 2.4.1 + '@parcel/watcher-linux-arm-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-musl': 2.4.1 + '@parcel/watcher-linux-x64-glibc': 2.4.1 + '@parcel/watcher-linux-x64-musl': 2.4.1 + '@parcel/watcher-win32-arm64': 2.4.1 + '@parcel/watcher-win32-ia32': 2.4.1 + '@parcel/watcher-win32-x64': 2.4.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@playwright/test@1.40.1': + dependencies: + playwright: 1.40.1 + + '@polka/url@1.0.0-next.25': {} + + '@puppeteer/browsers@2.2.2': + dependencies: + debug: 4.3.4 + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.4.0 + semver: 7.6.0 + tar-fs: 3.0.5 + unbzip2-stream: 1.4.3 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + + '@puppeteer/browsers@2.2.3': + dependencies: + debug: 4.3.4 + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.4.0 + semver: 7.6.0 + tar-fs: 3.0.5 + unbzip2-stream: 1.4.3 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + + '@radix-ui/colors@3.0.0': {} + + '@radix-ui/primitive@1.0.1': + dependencies: + '@babel/runtime': 7.24.6 + + '@radix-ui/react-accordion@1.1.2(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-collection@1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.3)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-context@1.0.1(@types/react@18.3.3)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.2.0) + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.3.3)(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-direction@1.0.1(@types/react@18.3.3)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.3)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.3)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-icons@1.3.0(react@18.2.0)': + dependencies: + react: 18.2.0 + + '@radix-ui/react-id@1.0.1(@types/react@18.3.3)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-label@2.0.2(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-navigation-menu@1.1.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-popover@1.0.7(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.2.0) + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.3.3)(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-popper@1.1.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@floating-ui/react-dom': 2.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/rect': 1.0.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-portal@1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-presence@1.0.1(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-slot@1.0.2(@types/react@18.3.3)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-tabs@1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.3)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.3)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.3)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.3)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-use-previous@1.0.1(@types/react@18.3.3)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-use-rect@1.0.1(@types/react@18.3.3)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/rect': 1.0.1 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-use-size@1.0.1(@types/react@18.3.3)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.3.3 + + '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.6 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + '@types/react-dom': 18.0.10 + + '@radix-ui/rect@1.0.1': + dependencies: + '@babel/runtime': 7.24.6 + + '@remix-run/router@1.16.1': {} + + '@rollup/pluginutils@5.1.0(rollup@4.18.0)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.18.0 + + '@rollup/rollup-android-arm-eabi@4.18.0': + optional: true + + '@rollup/rollup-android-arm64@4.18.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.18.0': + optional: true + + '@rollup/rollup-darwin-x64@4.18.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.18.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.18.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.18.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.18.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.18.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.18.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.18.0': + optional: true + + '@scure/base@1.1.6': {} + + '@scure/bip32@1.3.2': + dependencies: + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.6 + + '@scure/bip39@1.2.1': + dependencies: + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.6 + + '@sec-ant/readable-stream@0.4.1': {} + + '@shikijs/core@1.6.2': {} + + '@shikijs/rehype@1.6.2': + dependencies: + '@shikijs/transformers': 1.6.2 + '@types/hast': 3.0.4 + hast-util-to-string: 3.0.0 + shiki: 1.6.2 + unified: 11.0.4 + unist-util-visit: 5.0.0 + + '@shikijs/transformers@1.6.2': + dependencies: + shiki: 1.6.2 + + '@shikijs/twoslash@1.6.2(typescript@5.4.5)': + dependencies: + '@shikijs/core': 1.6.2 + twoslash: 0.2.6(typescript@5.4.5) + transitivePeerDependencies: + - supports-color + - typescript + + '@sinclair/typebox@0.27.8': {} + + '@sindresorhus/merge-streams@2.3.0': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@sitespeed.io/tracium@0.3.3': + dependencies: + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + + '@size-limit/file@11.1.2(size-limit@11.1.2)': + dependencies: + size-limit: 11.1.2 + + '@size-limit/preset-big-lib@11.1.2(size-limit@11.1.2)': + dependencies: + '@size-limit/file': 11.1.2(size-limit@11.1.2) + '@size-limit/time': 11.1.2(size-limit@11.1.2) + '@size-limit/webpack': 11.1.2(size-limit@11.1.2) + size-limit: 11.1.2 + transitivePeerDependencies: + - '@swc/core' + - bufferutil + - esbuild + - supports-color + - uglify-js + - utf-8-validate + - webpack-cli + + '@size-limit/time@11.1.2(size-limit@11.1.2)': + dependencies: + estimo: 3.0.3 + size-limit: 11.1.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@size-limit/webpack@11.1.2(size-limit@11.1.2)': + dependencies: + nanoid: 5.0.7 + size-limit: 11.1.2 + webpack: 5.91.0 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + + '@stablelib/aead@1.0.1': {} + + '@stablelib/binary@1.0.1': + dependencies: + '@stablelib/int': 1.0.1 + + '@stablelib/bytes@1.0.1': {} + + '@stablelib/chacha20poly1305@1.0.1': + dependencies: + '@stablelib/aead': 1.0.1 + '@stablelib/binary': 1.0.1 + '@stablelib/chacha': 1.0.1 + '@stablelib/constant-time': 1.0.1 + '@stablelib/poly1305': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/chacha@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/constant-time@1.0.1': {} + + '@stablelib/ed25519@1.0.3': + dependencies: + '@stablelib/random': 1.0.2 + '@stablelib/sha512': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/hash@1.0.1': {} + + '@stablelib/hkdf@1.0.1': + dependencies: + '@stablelib/hash': 1.0.1 + '@stablelib/hmac': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/hmac@1.0.1': + dependencies: + '@stablelib/constant-time': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/int@1.0.1': {} + + '@stablelib/keyagreement@1.0.1': + dependencies: + '@stablelib/bytes': 1.0.1 + + '@stablelib/poly1305@1.0.1': + dependencies: + '@stablelib/constant-time': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/random@1.0.2': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/sha256@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/sha512@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/wipe@1.0.1': {} + + '@stablelib/x25519@1.0.3': + dependencies: + '@stablelib/keyagreement': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/wipe': 1.0.1 + + '@swc/helpers@0.5.2': + dependencies: + tslib: 2.6.2 + + '@tootallnate/quickjs-emscripten@0.23.0': {} + + '@types/acorn@4.0.6': + dependencies: + '@types/estree': 1.0.5 + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.24.6 + '@babel/types': 7.24.6 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.24.6 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.24.6 + '@babel/types': 7.24.6 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.24.6 + + '@types/bun@1.1.3': + dependencies: + bun-types: 1.1.9 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 0.7.34 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 8.56.10 + '@types/estree': 1.0.5 + + '@types/eslint@8.56.10': + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.5 + + '@types/estree@1.0.5': {} + + '@types/fs-extra@9.0.13': + dependencies: + '@types/node': 20.14.0 + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.2 + + '@types/is-ci@3.0.4': + dependencies: + ci-info: 3.9.0 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/json-schema@7.0.15': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.2 + + '@types/mdx@2.0.13': {} + + '@types/minimist@1.2.5': {} + + '@types/ms@0.7.34': {} + + '@types/node@12.20.55': {} + + '@types/node@20.12.14': + dependencies: + undici-types: 5.26.5 + + '@types/node@20.13.0': + dependencies: + undici-types: 5.26.5 + + '@types/node@20.14.0': + dependencies: + undici-types: 5.26.5 + + '@types/node@20.8.3': {} + + '@types/normalize-package-data@2.4.4': {} + + '@types/prop-types@15.7.12': {} + + '@types/react-dom@18.0.10': + dependencies: + '@types/react': 18.0.27 + + '@types/react@18.0.27': + dependencies: + '@types/prop-types': 15.7.12 + '@types/scheduler': 0.23.0 + csstype: 3.1.3 + + '@types/react@18.3.3': + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + + '@types/scheduler@0.23.0': {} + + '@types/semver@6.2.7': {} + + '@types/trusted-types@2.0.7': {} + + '@types/unist@2.0.10': {} + + '@types/unist@3.0.2': {} + + '@types/ws@8.5.10': + dependencies: + '@types/node': 20.14.0 + + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 20.14.0 + optional: true + + '@typescript/analyze-trace@0.10.1': + dependencies: + chalk: 4.1.2 + exit: 0.1.2 + jsonparse: 1.3.1 + jsonstream-next: 3.0.0 + p-limit: 3.1.0 + split2: 3.2.2 + treeify: 1.1.0 + yargs: 16.2.0 + + '@typescript/vfs@1.5.0': + dependencies: + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + + '@ungap/structured-clone@1.2.0': {} + + '@vanilla-extract/babel-plugin-debug-ids@1.0.6': + dependencies: + '@babel/core': 7.24.6 + transitivePeerDependencies: + - supports-color + + '@vanilla-extract/css@1.15.2': + dependencies: + '@emotion/hash': 0.9.1 + '@vanilla-extract/private': 1.0.5 + css-what: 6.1.0 + cssesc: 3.0.0 + csstype: 3.1.3 + dedent: 1.5.3 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + media-query-parser: 2.0.2 + modern-ahocorasick: 1.0.1 + picocolors: 1.0.1 + transitivePeerDependencies: + - babel-plugin-macros + + '@vanilla-extract/dynamic@2.1.1': + dependencies: + '@vanilla-extract/private': 1.0.5 + + '@vanilla-extract/integration@6.5.0(@types/node@20.14.0)(terser@5.31.0)': + dependencies: + '@babel/core': 7.24.6 + '@babel/plugin-syntax-typescript': 7.24.6(@babel/core@7.24.6) + '@vanilla-extract/babel-plugin-debug-ids': 1.0.6 + '@vanilla-extract/css': 1.15.2 + esbuild: 0.19.12 + eval: 0.1.8 + find-up: 5.0.0 + javascript-stringify: 2.1.0 + lodash: 4.17.21 + mlly: 1.7.0 + outdent: 0.8.0 + vite: 5.2.12(@types/node@20.14.0)(terser@5.31.0) + vite-node: 1.6.0(@types/node@20.14.0)(terser@5.31.0) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + '@vanilla-extract/private@1.0.5': {} + + '@vanilla-extract/vite-plugin@3.9.5(@types/node@20.14.0)(terser@5.31.0)(vite@5.2.12(@types/node@20.14.0)(terser@5.31.0))': + dependencies: + '@vanilla-extract/integration': 6.5.0(@types/node@20.14.0)(terser@5.31.0) + outdent: 0.8.0 + postcss: 8.4.38 + postcss-load-config: 4.0.2(postcss@8.4.38) + vite: 5.2.12(@types/node@20.14.0)(terser@5.31.0) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - ts-node + + '@vitejs/plugin-react@3.1.0(vite@4.4.5(@types/node@20.14.0)(terser@5.31.0))': + dependencies: + '@babel/core': 7.24.6 + '@babel/plugin-transform-react-jsx-self': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-react-jsx-source': 7.24.6(@babel/core@7.24.6) + magic-string: 0.27.0 + react-refresh: 0.14.2 + vite: 4.4.5(@types/node@20.14.0)(terser@5.31.0) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-react@4.2.0(vite@5.2.12(@types/node@20.14.0)(terser@5.31.0))': + dependencies: + '@babel/core': 7.24.6 + '@babel/plugin-transform-react-jsx-self': 7.24.6(@babel/core@7.24.6) + '@babel/plugin-transform-react-jsx-source': 7.24.6(@babel/core@7.24.6) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.2.12(@types/node@20.14.0)(terser@5.31.0) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@1.0.4(vitest@1.0.4(@types/node@20.14.0)(@vitest/ui@1.0.4)(terser@5.31.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.3.5 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + magic-string: 0.30.10 + magicast: 0.3.4 + picocolors: 1.0.1 + std-env: 3.7.0 + test-exclude: 6.0.0 + v8-to-istanbul: 9.2.0 + vitest: 1.0.4(@types/node@20.14.0)(@vitest/ui@1.0.4)(terser@5.31.0) + transitivePeerDependencies: + - supports-color + + '@vitest/expect@1.0.4': + dependencies: + '@vitest/spy': 1.0.4 + '@vitest/utils': 1.0.4 + chai: 4.4.1 + + '@vitest/runner@1.0.4': + dependencies: + '@vitest/utils': 1.0.4 + p-limit: 5.0.0 + pathe: 1.1.2 + + '@vitest/snapshot@1.0.4': + dependencies: + magic-string: 0.30.10 + pathe: 1.1.2 + pretty-format: 29.7.0 + + '@vitest/spy@1.0.4': + dependencies: + tinyspy: 2.2.1 + + '@vitest/ui@1.0.4(vitest@1.0.4)': + dependencies: + '@vitest/utils': 1.0.4 + fast-glob: 3.3.2 + fflate: 0.8.2 + flatted: 3.3.1 + pathe: 1.1.2 + picocolors: 1.0.1 + sirv: 2.0.4 + vitest: 1.0.4(@types/node@20.14.0)(@vitest/ui@1.0.4)(terser@5.31.0) + + '@vitest/utils@1.0.4': + dependencies: + diff-sequences: 29.6.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + + '@walletconnect/core@2.10.0': + dependencies: + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.13 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.10 + '@walletconnect/relay-auth': 1.0.4 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.10.0 + '@walletconnect/utils': 2.10.0 + events: 3.3.0 + lodash.isequal: 4.5.0 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - ioredis + - uWebSockets.js + - utf-8-validate + + '@walletconnect/environment@1.0.1': + dependencies: + tslib: 1.14.1 + + '@walletconnect/ethereum-provider@2.10.0(@walletconnect/modal@2.6.1(react@18.2.0))': + dependencies: + '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/sign-client': 2.10.0 + '@walletconnect/types': 2.10.0 + '@walletconnect/universal-provider': 2.10.0 + '@walletconnect/utils': 2.10.0 + events: 3.3.0 + optionalDependencies: + '@walletconnect/modal': 2.6.1(react@18.2.0) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - ioredis + - uWebSockets.js + - utf-8-validate + + '@walletconnect/events@1.0.1': + dependencies: + keyvaluestorage-interface: 1.0.0 + tslib: 1.14.1 + + '@walletconnect/heartbeat@1.2.1': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/time': 1.0.2 + tslib: 1.14.1 + + '@walletconnect/jsonrpc-http-connection@1.0.8': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + cross-fetch: 3.1.8 + events: 3.3.0 + transitivePeerDependencies: + - encoding + + '@walletconnect/jsonrpc-provider@1.0.13': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + tslib: 1.14.1 + + '@walletconnect/jsonrpc-provider@1.0.14': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + events: 3.3.0 + + '@walletconnect/jsonrpc-types@1.0.3': + dependencies: + keyvaluestorage-interface: 1.0.0 + tslib: 1.14.1 + + '@walletconnect/jsonrpc-types@1.0.4': + dependencies: + events: 3.3.0 + keyvaluestorage-interface: 1.0.0 + + '@walletconnect/jsonrpc-utils@1.0.8': + dependencies: + '@walletconnect/environment': 1.0.1 + '@walletconnect/jsonrpc-types': 1.0.4 + tslib: 1.14.1 + + '@walletconnect/jsonrpc-ws-connection@1.0.13': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + events: 3.3.0 + tslib: 1.14.1 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@walletconnect/keyvaluestorage@1.1.1': + dependencies: + '@walletconnect/safe-json': 1.0.2 + idb-keyval: 6.2.1 + unstorage: 1.10.2(idb-keyval@6.2.1) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' + - ioredis + - uWebSockets.js + + '@walletconnect/logger@2.1.2': + dependencies: + '@walletconnect/safe-json': 1.0.2 + pino: 7.11.0 + + '@walletconnect/modal-core@2.6.1(react@18.2.0)': + dependencies: + valtio: 1.11.0(react@18.2.0) + transitivePeerDependencies: + - react + + '@walletconnect/modal-ui@2.6.1(react@18.2.0)': + dependencies: + '@walletconnect/modal-core': 2.6.1(react@18.2.0) + lit: 2.7.6 + motion: 10.16.2 + qrcode: 1.5.3 + transitivePeerDependencies: + - react + + '@walletconnect/modal@2.6.1(react@18.2.0)': + dependencies: + '@walletconnect/modal-core': 2.6.1(react@18.2.0) + '@walletconnect/modal-ui': 2.6.1(react@18.2.0) + transitivePeerDependencies: + - react + + '@walletconnect/relay-api@1.0.10': + dependencies: + '@walletconnect/jsonrpc-types': 1.0.4 + + '@walletconnect/relay-auth@1.0.4': + dependencies: + '@stablelib/ed25519': 1.0.3 + '@stablelib/random': 1.0.2 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + tslib: 1.14.1 + uint8arrays: 3.1.1 + + '@walletconnect/safe-json@1.0.2': + dependencies: + tslib: 1.14.1 + + '@walletconnect/sign-client@2.10.0': + dependencies: + '@walletconnect/core': 2.10.0 + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.10.0 + '@walletconnect/utils': 2.10.0 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - ioredis + - uWebSockets.js + - utf-8-validate + + '@walletconnect/time@1.0.2': + dependencies: + tslib: 1.14.1 + + '@walletconnect/types@2.10.0': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.1.2 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - ioredis + - uWebSockets.js + + '@walletconnect/universal-provider@2.10.0': + dependencies: + '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.10.0 + '@walletconnect/types': 2.10.0 + '@walletconnect/utils': 2.10.0 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - ioredis + - uWebSockets.js + - utf-8-validate + + '@walletconnect/utils@2.10.0': + dependencies: + '@stablelib/chacha20poly1305': 1.0.1 + '@stablelib/hkdf': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/sha256': 1.0.1 + '@stablelib/x25519': 1.0.3 + '@walletconnect/relay-api': 1.0.10 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.10.0 + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - ioredis + - uWebSockets.js + + '@walletconnect/window-getters@1.0.1': + dependencies: + tslib: 1.14.1 + + '@walletconnect/window-metadata@1.0.1': + dependencies: + '@walletconnect/window-getters': 1.0.1 + tslib: 1.14.1 + + '@webassemblyjs/ast@1.12.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + + '@webassemblyjs/floating-point-hex-parser@1.11.6': {} + + '@webassemblyjs/helper-api-error@1.11.6': {} + + '@webassemblyjs/helper-buffer@1.12.1': {} + + '@webassemblyjs/helper-numbers@1.11.6': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} + + '@webassemblyjs/helper-wasm-section@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 + + '@webassemblyjs/ieee754@1.11.6': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.11.6': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.11.6': {} + + '@webassemblyjs/wasm-edit@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 + + '@webassemblyjs/wasm-gen@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + '@webassemblyjs/wasm-opt@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + + '@webassemblyjs/wasm-parser@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + '@webassemblyjs/wast-printer@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + abitype@1.0.0(typescript@5.4.2)(zod@3.22.4): + optionalDependencies: + typescript: 5.4.2 + zod: 3.22.4 + + abitype@1.0.0(typescript@5.4.5)(zod@3.22.4): + optionalDependencies: + typescript: 5.4.5 + zod: 3.22.4 + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-import-assertions@1.9.0(acorn@8.11.3): + dependencies: + acorn: 8.11.3 + + acorn-jsx@5.3.2(acorn@8.11.3): + dependencies: + acorn: 8.11.3 + + acorn-walk@8.3.2: {} + + acorn@8.11.3: {} + + aes-js@4.0.0-beta.3: {} + + agent-base@7.1.1: + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv@6.12.6: + 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 + + ansi-colors@4.1.3: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@5.0.2: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + aria-hidden@1.2.4: + dependencies: + tslib: 2.6.2 + + arktype@2.0.0-dev.11: + dependencies: + '@arktype/schema': 0.1.2 + '@arktype/util': 0.0.38 + + array-buffer-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + + array-union@2.1.0: {} + + array.prototype.flat@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + + arraybuffer.prototype.slice@1.0.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + + arrify@1.0.1: {} + + assertion-error@1.1.0: {} + + ast-types@0.13.4: + dependencies: + tslib: 2.6.2 + + astring@1.8.6: {} + + atomic-sleep@1.0.0: {} + + autoprefixer@10.4.19(postcss@8.4.38): + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001626 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.1 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + b4a@1.6.6: {} + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + bare-events@2.3.1: + optional: true + + bare-fs@2.3.0: + dependencies: + bare-events: 2.3.1 + bare-path: 2.1.3 + bare-stream: 1.0.0 + optional: true + + bare-os@2.3.0: + optional: true + + bare-path@2.1.3: + dependencies: + bare-os: 2.3.0 + optional: true + + bare-stream@1.0.0: + dependencies: + streamx: 2.18.0 + optional: true + + base64-js@1.5.1: {} + + basic-ftp@5.0.5: {} + + bcp-47-match@2.0.3: {} + + better-path-resolve@1.0.0: + dependencies: + is-windows: 1.0.2 + + binary-extensions@2.3.0: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + bl@5.1.0: + dependencies: + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 3.6.2 + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + breakword@1.0.6: + dependencies: + wcwidth: 1.0.1 + + browserslist@4.23.0: + dependencies: + caniuse-lite: 1.0.30001626 + electron-to-chromium: 1.4.788 + node-releases: 2.0.14 + update-browserslist-db: 1.0.16(browserslist@4.23.0) + + buffer-crc32@0.2.13: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bun-types@1.1.9: + dependencies: + '@types/node': 20.12.14 + '@types/ws': 8.5.10 + + bun@1.1.12: + optionalDependencies: + '@oven/bun-darwin-aarch64': 1.1.12 + '@oven/bun-darwin-x64': 1.1.12 + '@oven/bun-darwin-x64-baseline': 1.1.12 + '@oven/bun-linux-aarch64': 1.1.12 + '@oven/bun-linux-x64': 1.1.12 + '@oven/bun-linux-x64-baseline': 1.1.12 + '@oven/bun-windows-x64': 1.1.12 + '@oven/bun-windows-x64-baseline': 1.1.12 + + busboy@1.6.0: + dependencies: + streamsearch: 1.1.0 + + bytes-iec@3.1.1: {} + + bytes@3.0.0: {} + + c-kzg@2.1.2: + dependencies: + bindings: 1.5.0 + node-addon-api: 5.1.0 + + cac@6.7.14: {} + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + camelcase-css@2.0.1: {} + + camelcase-keys@6.2.2: + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + + camelcase@5.3.1: {} + + caniuse-lite@1.0.30001626: {} + + ccount@2.0.1: {} + + chai@4.4.1: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + chardet@0.7.0: {} + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chroma-js@2.4.2: {} + + chrome-trace-event@1.0.4: {} + + chromium-bidi@0.5.17(devtools-protocol@0.0.1262051): + dependencies: + devtools-protocol: 0.0.1262051 + mitt: 3.0.1 + urlpattern-polyfill: 10.0.0 + zod: 3.22.4 + + ci-info@3.9.0: {} + + citty@0.1.6: + dependencies: + consola: 3.2.3 + + cli-cursor@4.0.0: + dependencies: + restore-cursor: 4.0.0 + + cli-spinners@2.9.2: {} + + client-only@0.0.1: {} + + clipboardy@4.0.0: + dependencies: + execa: 8.0.1 + is-wsl: 3.1.0 + is64bit: 2.0.0 + + cliui@6.0.0: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone@1.0.4: {} + + clsx@2.1.1: {} + + collapse-white-space@2.1.0: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + comma-separated-tokens@2.0.3: {} + + commander@12.1.0: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.52.0 + + compression@1.7.4: + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + concat-map@0.0.1: {} + + confbox@0.1.7: {} + + consola@3.2.3: {} + + convert-source-map@2.0.0: {} + + cookie-es@1.1.0: {} + + create-vocs@1.0.0-alpha.5: + dependencies: + '@clack/prompts': 0.7.0 + cac: 6.7.14 + detect-package-manager: 3.0.2 + fs-extra: 11.2.0 + picocolors: 1.0.1 + + cross-fetch@3.1.8: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-spawn@5.1.0: + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crossws@0.2.4: {} + + css-selector-parser@3.0.5: {} + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + csv-generate@3.4.3: {} + + csv-parse@4.16.3: {} + + csv-stringify@5.6.5: {} + + csv@5.5.3: + dependencies: + csv-generate: 3.4.3 + csv-parse: 4.16.3 + csv-stringify: 5.6.5 + stream-transform: 2.1.3 + + data-uri-to-buffer@6.0.2: {} + + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + dataloader@1.4.0: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + debug@4.3.5: + dependencies: + ms: 2.1.2 + + decamelize-keys@1.1.1: + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + decamelize@1.2.0: {} + + decode-named-character-reference@1.0.2: + dependencies: + character-entities: 2.0.2 + + decode-uri-component@0.2.2: {} + + dedent@1.5.3: {} + + deep-eql@4.1.3: + dependencies: + type-detect: 4.0.8 + + deep-object-diff@1.1.9: {} + + deepmerge@4.3.1: {} + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + defu@6.1.4: {} + + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + + depd@2.0.0: {} + + dequal@2.0.3: {} + + destr@2.0.3: {} + + destroy@1.2.0: {} + + detect-browser@5.3.0: {} + + detect-indent@6.1.0: {} + + detect-libc@1.0.3: {} + + detect-node-es@1.1.0: {} + + detect-package-manager@3.0.2: + dependencies: + execa: 5.1.1 + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + devtools-protocol@0.0.1262051: {} + + didyoumean@1.2.2: {} + + diff-sequences@29.6.3: {} + + dijkstrajs@1.0.3: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + direction@2.0.1: {} + + dlv@1.1.3: {} + + dotenv@8.6.0: {} + + duplexify@4.1.3: + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 3.6.2 + stream-shift: 1.0.3 + + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.4.788: {} + + emoji-regex@10.3.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encode-utf8@1.0.3: {} + + encodeurl@1.0.2: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.16.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.23.3: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-module-lexer@1.5.3: {} + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.0.2: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.2.1: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + esbuild@0.18.20: + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + + esbuild@0.19.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + + esbuild@0.20.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + + escalade@3.1.2: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@5.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + esprima@4.0.1: {} + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estimo@3.0.3: + dependencies: + '@sitespeed.io/tracium': 0.3.3 + commander: 12.1.0 + find-chrome-bin: 2.0.2 + nanoid: 5.0.7 + puppeteer-core: 22.6.5 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-util-attach-comments@3.0.0: + dependencies: + '@types/estree': 1.0.5 + + estree-util-build-jsx@3.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + + estree-util-is-identifier-name@3.0.0: {} + + estree-util-to-js@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.8.6 + source-map: 0.7.4 + + estree-util-value-to-estree@3.1.1: + dependencies: + '@types/estree': 1.0.5 + is-plain-obj: 4.1.0 + + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.2 + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.5 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + ethers@6.0.2: + dependencies: + '@adraffy/ens-normalize': 1.8.9 + '@noble/hashes': 1.1.2 + '@noble/secp256k1': 1.7.1 + aes-js: 4.0.0-beta.3 + tslib: 2.4.0 + ws: 8.5.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + eval@0.1.8: + dependencies: + '@types/node': 20.13.0 + require-like: 0.1.2 + + eventemitter3@4.0.7: {} + + eventemitter3@5.0.1: {} + + events@3.3.0: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.3 + 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 + + execa@9.1.0: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.3 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 7.0.0 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 5.3.0 + pretty-ms: 9.0.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.0.2 + + exit@0.1.2: {} + + extend@3.0.2: {} + + extendable-error@0.1.7: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + extract-zip@2.0.1: + dependencies: + debug: 4.3.4 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + fast-deep-equal@3.1.3: {} + + fast-fifo@1.3.2: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.7 + + fast-json-stable-stringify@2.1.0: {} + + fast-redact@3.5.0: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + fault@2.0.1: + dependencies: + format: 0.2.2 + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + fflate@0.8.2: {} + + figures@6.1.0: + dependencies: + is-unicode-supported: 2.0.0 + + file-uri-to-path@1.0.0: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + filter-obj@1.1.0: {} + + find-chrome-bin@2.0.2: + dependencies: + '@puppeteer/browsers': 2.2.3 + transitivePeerDependencies: + - supports-color + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-yarn-workspace-root2@1.2.16: + dependencies: + micromatch: 4.0.7 + pkg-dir: 4.2.0 + + flatted@3.3.1: {} + + follow-redirects@1.15.6: {} + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.1.1: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + format@0.2.2: {} + + fraction.js@4.3.7: {} + + fresh@0.5.2: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs.realpath@1.0.0: {} + + fsevents@2.3.2: + optional: true + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + + functions-have-names@1.2.3: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-func-name@2.0.2: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-nonce@1.0.1: {} + + get-port-please@3.1.2: {} + + get-port@7.1.0: {} + + get-stream@5.2.0: + dependencies: + pump: 3.0.0 + + get-stream@6.0.1: {} + + get-stream@8.0.1: {} + + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + + get-symbol-description@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + + get-tsconfig@4.7.5: + dependencies: + resolve-pkg-maps: 1.0.0 + + get-uri@6.0.3: + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.3.4 + fs-extra: 11.2.0 + transitivePeerDependencies: + - supports-color + + github-slugger@2.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@10.4.1: + dependencies: + foreground-child: 3.1.1 + jackspeak: 3.1.2 + minimatch: 9.0.4 + minipass: 7.1.2 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@9.3.5: + dependencies: + fs.realpath: 1.0.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.11.1 + + globals@11.12.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + + globby@13.2.2: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 4.0.0 + + globby@14.0.1: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.2 + ignore: 5.3.1 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + graceful-fs@4.2.11: {} + + grapheme-splitter@1.0.4: {} + + h3@1.11.1: + dependencies: + cookie-es: 1.1.0 + crossws: 0.2.4 + defu: 6.1.4 + destr: 2.0.3 + iron-webcrypto: 1.2.1 + ohash: 1.1.3 + radix3: 1.1.2 + ufo: 1.5.3 + uncrypto: 0.1.3 + unenv: 1.9.0 + transitivePeerDependencies: + - uWebSockets.js + + hard-rejection@2.1.0: {} + + has-bigints@1.0.2: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-classnames@3.0.0: + dependencies: + '@types/hast': 3.0.4 + space-separated-tokens: 2.0.2 + + hast-util-has-property@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-heading-rank@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-select@6.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + bcp-47-match: 2.0.3 + comma-separated-tokens: 2.0.3 + css-selector-parser: 3.0.5 + devlop: 1.1.0 + direction: 2.0.1 + hast-util-has-property: 3.0.0 + hast-util-to-string: 3.0.0 + hast-util-whitespace: 3.0.0 + not: 0.1.0 + nth-check: 2.1.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + hast-util-to-estree@3.1.0: + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.2 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + + hast-util-to-jsx-runtime@2.3.0: + dependencies: + '@types/estree': 1.0.5 + '@types/hast': 3.0.4 + '@types/unist': 3.0.2 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.2 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + style-to-object: 1.0.6 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + hast-util-to-string@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hastscript@8.0.0: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + + hey-listen@1.0.8: {} + + hono@3.12.12: {} + + hosted-git-info@2.8.9: {} + + html-escaper@2.0.2: {} + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.1 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.6 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + http-shutdown@1.2.2: {} + + https-proxy-agent@7.0.4: + dependencies: + agent-base: 7.1.1 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + human-id@1.0.2: {} + + human-signals@2.1.0: {} + + human-signals@5.0.0: {} + + human-signals@7.0.0: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + idb-keyval@6.2.1: {} + + ieee754@1.2.1: {} + + ignore@5.3.1: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + inline-style-parser@0.1.1: {} + + inline-style-parser@0.2.3: {} + + internal-slot@1.0.7: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + + iron-webcrypto@1.2.1: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-array-buffer@3.0.4: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + + is-arrayish@0.2.1: {} + + is-bigint@1.0.4: + dependencies: + has-bigints: 1.0.2 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.1.2: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-buffer@2.0.5: {} + + is-callable@1.2.7: {} + + is-ci@3.0.1: + dependencies: + ci-info: 3.9.0 + + is-core-module@2.13.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + + is-date-object@1.0.5: + dependencies: + has-tostringtag: 1.0.2 + + is-decimal@2.0.1: {} + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hexadecimal@2.0.1: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-interactive@2.0.0: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-plain-obj@1.1.0: {} + + is-plain-obj@4.1.0: {} + + is-reference@3.0.2: + dependencies: + '@types/estree': 1.0.5 + + is-regex@1.1.4: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-shared-array-buffer@1.0.3: + dependencies: + call-bind: 1.0.7 + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-stream@4.0.1: {} + + is-string@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-subdir@1.2.0: + dependencies: + better-path-resolve: 1.0.0 + + is-symbol@1.0.4: + dependencies: + has-symbols: 1.0.3 + + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.15 + + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.0.0: {} + + is-weakref@1.0.2: + dependencies: + call-bind: 1.0.7 + + is-windows@1.0.2: {} + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + is64bit@2.0.0: + dependencies: + system-architecture: 0.1.0 + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + isows@1.0.4(ws@8.13.0): + dependencies: + ws: 8.13.0 + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.3.5 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jackspeak@3.1.2: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + javascript-stringify@2.1.0: {} + + jest-worker@27.5.1: + dependencies: + '@types/node': 20.14.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jiti@1.21.0: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + jsbn@1.1.0: {} + + jsesc@2.5.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json5@2.2.3: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + jsonstream-next@3.0.0: + dependencies: + jsonparse: 1.3.1 + through2: 4.0.2 + + keyvaluestorage-interface@1.0.0: {} + + kind-of@6.0.3: {} + + kleur@4.1.5: {} + + lilconfig@2.1.0: {} + + lilconfig@3.1.1: {} + + lines-and-columns@1.2.4: {} + + listhen@1.7.2: + dependencies: + '@parcel/watcher': 2.4.1 + '@parcel/watcher-wasm': 2.4.1 + citty: 0.1.6 + clipboardy: 4.0.0 + consola: 3.2.3 + crossws: 0.2.4 + defu: 6.1.4 + get-port-please: 3.1.2 + h3: 1.11.1 + http-shutdown: 1.2.2 + jiti: 1.21.0 + mlly: 1.7.0 + node-forge: 1.3.1 + pathe: 1.1.2 + std-env: 3.7.0 + ufo: 1.5.3 + untun: 0.1.3 + uqr: 0.1.2 + transitivePeerDependencies: + - uWebSockets.js + + lit-element@3.3.3: + dependencies: + '@lit-labs/ssr-dom-shim': 1.2.0 + '@lit/reactive-element': 1.6.3 + lit-html: 2.8.0 + + lit-html@2.8.0: + dependencies: + '@types/trusted-types': 2.0.7 + + lit@2.7.6: + dependencies: + '@lit/reactive-element': 1.6.3 + lit-element: 3.3.3 + lit-html: 2.8.0 + + load-yaml-file@0.2.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + loader-runner@4.3.0: {} + + local-pkg@0.5.0: + dependencies: + mlly: 1.7.0 + pkg-types: 1.1.1 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.isequal@4.5.0: {} + + lodash.startcase@4.4.0: {} + + lodash@4.17.21: {} + + log-symbols@5.1.0: + dependencies: + chalk: 5.3.0 + is-unicode-supported: 1.3.0 + + longest-streak@3.1.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + lru-cache@10.2.2: {} + + lru-cache@4.1.5: + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + lru-cache@7.18.3: {} + + magic-string@0.27.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + magic-string@0.30.10: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + magicast@0.3.4: + dependencies: + '@babel/parser': 7.24.6 + '@babel/types': 7.24.6 + source-map-js: 1.2.0 + + make-dir@4.0.0: + dependencies: + semver: 7.6.2 + + map-obj@1.0.1: {} + + map-obj@4.3.0: {} + + mark.js@8.11.1: {} + + markdown-extensions@2.0.0: {} + + markdown-table@3.0.3: {} + + mdast-util-directive@3.0.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.2 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.4 + unist-util-visit-parents: 6.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-find-and-replace@3.0.1: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.2 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-frontmatter@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + escape-string-regexp: 5.0.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + micromark-extension-frontmatter: 2.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.1.0 + + mdast-util-gfm-footnote@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.3 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.1 + mdast-util-gfm-autolink-literal: 2.0.0 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.1.2: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.2 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.4 + unist-util-remove-position: 5.0.0 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.1 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.1.2 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-hast@13.1.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + + mdast-util-to-markdown@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.2 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + media-query-parser@2.0.2: + dependencies: + '@babel/runtime': 7.24.6 + + meow@6.1.1: + dependencies: + '@types/minimist': 1.2.5 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 2.5.0 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.13.1 + yargs-parser: 18.1.3 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromark-core-commonmark@2.0.1: + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-directive@3.0.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + parse-entities: 4.0.1 + + micromark-extension-frontmatter@2.0.0: + dependencies: + fault: 2.0.1 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-autolink-literal@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-footnote@2.0.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-strikethrough@2.0.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-table@2.0.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-extension-gfm-task-list-item@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.0.0 + micromark-extension-gfm-footnote: 2.0.0 + micromark-extension-gfm-strikethrough: 2.0.0 + micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.0.1 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-mdx-expression@3.0.0: + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-mdx-jsx@3.0.0: + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + micromark-extension-mdx-expression: 3.0.0 + micromark-extension-mdx-jsx: 3.0.0 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-destination@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-label@2.0.0: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-mdx-expression@2.0.1: + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + + micromark-factory-space@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-types: 2.0.0 + + micromark-factory-title@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-whitespace@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-character@2.1.0: + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-chunked@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-classify-character@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-combine-extensions@2.0.0: + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-decode-numeric-character-reference@2.0.1: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-decode-string@2.0.0: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + + micromark-util-encode@2.0.0: {} + + micromark-util-events-to-acorn@2.0.2: + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + '@types/unist': 3.0.2 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + + micromark-util-html-tag-name@2.0.0: {} + + micromark-util-normalize-identifier@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-resolve-all@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-util-sanitize-uri@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + + micromark-util-subtokenize@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-symbol@2.0.0: {} + + micromark-util-types@2.0.0: {} + + micromark@4.0.0: + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.5 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.7: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@3.0.0: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + min-indent@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@8.0.4: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.4: + dependencies: + brace-expansion: 2.0.1 + + minimist-options@4.1.0: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + + minipass@4.2.8: {} + + minipass@7.1.2: {} + + minisearch@6.3.0: {} + + mitt@3.0.1: {} + + mixme@0.5.10: {} + + mlly@1.7.0: + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.1.1 + ufo: 1.5.3 + + modern-ahocorasick@1.0.1: {} + + motion@10.16.2: + dependencies: + '@motionone/animation': 10.18.0 + '@motionone/dom': 10.18.0 + '@motionone/svelte': 10.16.4 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + '@motionone/vue': 10.16.4 + + mri@1.2.0: {} + + mrmime@2.0.0: {} + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + multiformats@9.9.0: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.7: {} + + nanoid@5.0.7: {} + + nanospinner@1.1.0: + dependencies: + picocolors: 1.0.1 + + negotiator@0.6.3: {} + + neo-async@2.6.2: {} + + netmask@2.0.2: {} + + next@13.5.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@next/env': 13.5.4 + '@swc/helpers': 0.5.2 + busboy: 1.6.0 + caniuse-lite: 1.0.30001626 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(react@18.2.0) + watchpack: 2.4.0 + optionalDependencies: + '@next/swc-darwin-arm64': 13.5.4 + '@next/swc-darwin-x64': 13.5.4 + '@next/swc-linux-arm64-gnu': 13.5.4 + '@next/swc-linux-arm64-musl': 13.5.4 + '@next/swc-linux-x64-gnu': 13.5.4 + '@next/swc-linux-x64-musl': 13.5.4 + '@next/swc-win32-arm64-msvc': 13.5.4 + '@next/swc-win32-ia32-msvc': 13.5.4 + '@next/swc-win32-x64-msvc': 13.5.4 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + node-addon-api@5.1.0: {} + + node-addon-api@7.1.0: {} + + node-fetch-native@1.6.4: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-forge@1.3.1: {} + + node-releases@2.0.14: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + not@0.1.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + object-inspect@1.13.1: {} + + object-keys@1.1.1: {} + + object.assign@4.1.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + ofetch@1.3.4: + dependencies: + destr: 2.0.3 + node-fetch-native: 1.6.4 + ufo: 1.5.3 + + ohash@1.1.3: {} + + on-exit-leak-free@0.2.0: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + ora@7.0.1: + dependencies: + chalk: 5.3.0 + cli-cursor: 4.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 1.3.0 + log-symbols: 5.1.0 + stdin-discarder: 0.1.0 + string-width: 6.1.0 + strip-ansi: 7.1.0 + + os-tmpdir@1.0.2: {} + + outdent@0.5.0: {} + + outdent@0.8.0: {} + + p-filter@2.1.0: + dependencies: + p-map: 2.1.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@5.0.0: + dependencies: + yocto-queue: 1.0.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@2.1.0: {} + + p-try@2.2.0: {} + + pac-proxy-agent@7.0.1: + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.1 + debug: 4.3.4 + get-uri: 6.0.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.3 + transitivePeerDependencies: + - supports-color + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + + parse-entities@4.0.1: + dependencies: + '@types/unist': 2.0.10 + character-entities: 2.0.2 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.0.2 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.24.6 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-ms@4.0.0: {} + + parseurl@1.3.3: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.2.2 + minipass: 7.1.2 + + path-type@4.0.0: {} + + path-type@5.0.0: {} + + pathe@1.1.2: {} + + pathval@1.1.1: {} + + pend@1.2.0: {} + + periscopic@3.1.0: + dependencies: + '@types/estree': 1.0.5 + estree-walker: 3.0.3 + is-reference: 3.0.2 + + picocolors@1.0.1: {} + + picomatch@2.3.1: {} + + pify@2.3.0: {} + + pify@4.0.1: {} + + pino-abstract-transport@0.5.0: + dependencies: + duplexify: 4.1.3 + split2: 4.2.0 + + pino-std-serializers@4.0.0: {} + + pino@7.11.0: + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 0.2.0 + pino-abstract-transport: 0.5.0 + pino-std-serializers: 4.0.0 + process-warning: 1.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.1.0 + safe-stable-stringify: 2.4.3 + sonic-boom: 2.8.0 + thread-stream: 0.15.2 + + pirates@4.0.6: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-types@1.1.1: + dependencies: + confbox: 0.1.7 + mlly: 1.7.0 + pathe: 1.1.2 + + playwright-core@1.40.1: {} + + playwright@1.40.1: + dependencies: + playwright-core: 1.40.1 + optionalDependencies: + fsevents: 2.3.2 + + pngjs@5.0.0: {} + + possible-typed-array-names@1.0.0: {} + + postcss-import@15.1.0(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-js@4.0.1(postcss@8.4.38): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.38 + + postcss-load-config@4.0.2(postcss@8.4.38): + dependencies: + lilconfig: 3.1.1 + yaml: 2.4.3 + optionalDependencies: + postcss: 8.4.38 + + postcss-nested@6.0.1(postcss@8.4.38): + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.1.0 + + postcss-selector-parser@6.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.31: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + postcss@8.4.38: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + preferred-pm@3.1.3: + dependencies: + find-up: 5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: 4.0.0 + which-pm: 2.0.0 + + prettier@1.19.1: {} + + prettier@2.8.8: {} + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + pretty-ms@9.0.0: + dependencies: + parse-ms: 4.0.0 + + process-warning@1.0.0: {} + + progress@2.0.3: {} + + prool@0.0.4: + dependencies: + eventemitter3: 5.0.1 + execa: 9.1.0 + get-port: 7.1.0 + http-proxy: 1.18.1 + transitivePeerDependencies: + - debug + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + property-information@6.5.0: {} + + proxy-agent@6.4.0: + dependencies: + agent-base: 7.1.1 + debug: 4.3.4 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 + lru-cache: 7.18.3 + pac-proxy-agent: 7.0.1 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.3 + transitivePeerDependencies: + - supports-color + + proxy-compare@2.5.1: {} + + proxy-from-env@1.1.0: {} + + pseudomap@1.0.2: {} + + pump@3.0.0: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode@2.3.1: {} + + puppeteer-core@22.6.5: + dependencies: + '@puppeteer/browsers': 2.2.2 + chromium-bidi: 0.5.17(devtools-protocol@0.0.1262051) + debug: 4.3.4 + devtools-protocol: 0.0.1262051 + ws: 8.16.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + qrcode@1.5.3: + dependencies: + dijkstrajs: 1.0.3 + encode-utf8: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + + query-string@7.1.3: + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + + queue-microtask@1.2.3: {} + + queue-tick@1.0.1: {} + + quick-format-unescaped@4.0.4: {} + + quick-lru@4.0.1: {} + + radix3@1.1.2: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + react-dom@18.2.0(react@18.2.0): + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.2 + + react-fast-compare@3.2.2: {} + + react-helmet@6.1.0(react@18.2.0): + dependencies: + object-assign: 4.1.1 + prop-types: 15.8.1 + react: 18.2.0 + react-fast-compare: 3.2.2 + react-side-effect: 2.1.2(react@18.2.0) + + react-intersection-observer@9.10.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + react: 18.2.0 + optionalDependencies: + react-dom: 18.2.0(react@18.2.0) + + react-is@16.13.1: {} + + react-is@18.3.1: {} + + react-refresh@0.14.2: {} + + react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.2.0): + dependencies: + react: 18.2.0 + react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.2.0) + tslib: 2.6.2 + optionalDependencies: + '@types/react': 18.3.3 + + react-remove-scroll@2.5.5(@types/react@18.3.3)(react@18.2.0): + dependencies: + react: 18.2.0 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.2.0) + tslib: 2.6.2 + use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.2.0) + optionalDependencies: + '@types/react': 18.3.3 + + react-router-dom@6.23.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@remix-run/router': 1.16.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router: 6.23.1(react@18.2.0) + + react-router@6.23.1(react@18.2.0): + dependencies: + '@remix-run/router': 1.16.1 + react: 18.2.0 + + react-side-effect@2.1.2(react@18.2.0): + dependencies: + react: 18.2.0 + + react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.2.0): + dependencies: + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.2.0 + tslib: 2.6.2 + optionalDependencies: + '@types/react': 18.3.3 + + react@18.2.0: + dependencies: + loose-envify: 1.4.0 + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + read-yaml-file@1.1.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + real-require@0.1.0: {} + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + regenerator-runtime@0.14.1: {} + + regexp.prototype.flags@1.5.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + + rehype-autolink-headings@7.1.0: + dependencies: + '@types/hast': 3.0.4 + '@ungap/structured-clone': 1.2.0 + hast-util-heading-rank: 3.0.0 + hast-util-is-element: 3.0.0 + unified: 11.0.4 + unist-util-visit: 5.0.0 + + rehype-class-names@1.0.14: + dependencies: + '@types/hast': 3.0.4 + hast-util-classnames: 3.0.0 + hast-util-select: 6.0.2 + unified: 10.1.2 + + rehype-slug@6.0.0: + dependencies: + '@types/hast': 3.0.4 + github-slugger: 2.0.0 + hast-util-heading-rank: 3.0.0 + hast-util-to-string: 3.0.0 + unist-util-visit: 5.0.0 + + remark-directive@3.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-directive: 3.0.0 + micromark-extension-directive: 3.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + + remark-frontmatter@5.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-frontmatter: 2.0.1 + micromark-extension-frontmatter: 2.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + + remark-gfm@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + + remark-mdx-frontmatter@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + estree-util-is-identifier-name: 3.0.0 + estree-util-value-to-estree: 3.1.1 + toml: 3.0.0 + unified: 11.0.4 + yaml: 2.4.3 + + remark-mdx@3.0.1: + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.1 + micromark-util-types: 2.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.1.0 + unified: 11.0.4 + vfile: 6.0.1 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.4 + + require-directory@2.1.1: {} + + require-like@0.1.2: {} + + require-main-filename@2.0.0: {} + + requires-port@1.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@4.0.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + reusify@1.0.4: {} + + rimraf@4.4.1: + dependencies: + glob: 9.3.5 + + rollup@3.29.4: + optionalDependencies: + fsevents: 2.3.3 + + rollup@4.18.0: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.18.0 + '@rollup/rollup-android-arm64': 4.18.0 + '@rollup/rollup-darwin-arm64': 4.18.0 + '@rollup/rollup-darwin-x64': 4.18.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 + '@rollup/rollup-linux-arm-musleabihf': 4.18.0 + '@rollup/rollup-linux-arm64-gnu': 4.18.0 + '@rollup/rollup-linux-arm64-musl': 4.18.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 + '@rollup/rollup-linux-riscv64-gnu': 4.18.0 + '@rollup/rollup-linux-s390x-gnu': 4.18.0 + '@rollup/rollup-linux-x64-gnu': 4.18.0 + '@rollup/rollup-linux-x64-musl': 4.18.0 + '@rollup/rollup-win32-arm64-msvc': 4.18.0 + '@rollup/rollup-win32-ia32-msvc': 4.18.0 + '@rollup/rollup-win32-x64-msvc': 4.18.0 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.1.2: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-regex-test@1.0.3: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + + safe-stable-stringify@2.4.3: {} + + safer-buffer@2.1.2: {} + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.6.0: + dependencies: + lru-cache: 6.0.0 + + semver@7.6.2: {} + + send@0.18.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + set-blocking@2.0.0: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + setprototypeof@1.2.0: {} + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@1.0.0: {} + + shebang-regex@3.0.0: {} + + shiki@1.6.2: + dependencies: + '@shikijs/core': 1.6.2 + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + + siginfo@2.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-git-hooks@2.8.1: {} + + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.25 + mrmime: 2.0.0 + totalist: 3.0.1 + + sisteransi@1.0.5: {} + + size-limit@11.1.2: + dependencies: + bytes-iec: 3.1.1 + chokidar: 3.6.0 + globby: 14.0.1 + jiti: 1.21.0 + lilconfig: 3.1.1 + nanospinner: 1.1.0 + picocolors: 1.0.1 + + slash@3.0.0: {} + + slash@4.0.0: {} + + slash@5.1.0: {} + + smart-buffer@4.2.0: {} + + smartwrap@2.0.2: + dependencies: + array.prototype.flat: 1.3.2 + breakword: 1.0.6 + grapheme-splitter: 1.0.4 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + yargs: 15.4.1 + + socks-proxy-agent@8.0.3: + dependencies: + agent-base: 7.1.1 + debug: 4.3.4 + socks: 2.8.3 + transitivePeerDependencies: + - supports-color + + socks@2.8.3: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + + sonic-boom@2.8.0: + dependencies: + atomic-sleep: 1.0.0 + + source-map-js@1.2.0: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + space-separated-tokens@2.0.2: {} + + spawndamnit@2.0.0: + dependencies: + cross-spawn: 5.1.0 + signal-exit: 3.0.7 + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.18 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.18 + + spdx-license-ids@3.0.18: {} + + split-on-first@1.1.0: {} + + split2@3.2.2: + dependencies: + readable-stream: 3.6.2 + + split2@4.2.0: {} + + sprintf-js@1.0.3: {} + + sprintf-js@1.1.3: {} + + stackback@0.0.2: {} + + statuses@2.0.1: {} + + std-env@3.7.0: {} + + stdin-discarder@0.1.0: + dependencies: + bl: 5.1.0 + + stream-shift@1.0.3: {} + + stream-transform@2.1.3: + dependencies: + mixme: 0.5.10 + + streamsearch@1.1.0: {} + + streamx@2.18.0: + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + text-decoder: 1.1.0 + optionalDependencies: + bare-events: 2.3.1 + + strict-uri-encode@2.0.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@6.1.0: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 10.3.0 + strip-ansi: 7.1.0 + + string.prototype.trim@1.2.9: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + string.prototype.trimend@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.0.1 + + strip-bom@3.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-final-newline@4.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-literal@1.3.0: + dependencies: + acorn: 8.11.3 + + style-to-object@0.4.4: + dependencies: + inline-style-parser: 0.1.1 + + style-to-object@1.0.6: + dependencies: + inline-style-parser: 0.2.3 + + styled-jsx@5.1.1(react@18.2.0): + dependencies: + client-only: 0.0.1 + react: 18.2.0 + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.1 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + system-architecture@0.1.0: {} + + tabbable@6.2.0: {} + + tailwindcss@3.4.3: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.7 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.1 + postcss: 8.4.38 + postcss-import: 15.1.0(postcss@8.4.38) + postcss-js: 4.0.1(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38) + postcss-nested: 6.0.1(postcss@8.4.38) + postcss-selector-parser: 6.1.0 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tapable@2.2.1: {} + + tar-fs@3.0.5: + dependencies: + pump: 3.0.0 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 2.3.0 + bare-path: 2.1.3 + + tar-stream@3.1.7: + dependencies: + b4a: 1.6.6 + fast-fifo: 1.3.2 + streamx: 2.18.0 + + term-size@2.2.1: {} + + terser-webpack-plugin@5.3.10(webpack@5.91.0): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.31.0 + webpack: 5.91.0 + + terser@5.31.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + text-decoder@1.1.0: + dependencies: + b4a: 1.6.6 + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + thread-stream@0.15.2: + dependencies: + real-require: 0.1.0 + + through2@4.0.2: + dependencies: + readable-stream: 3.6.2 + + through@2.3.8: {} + + tinybench@2.8.0: {} + + tinypool@0.8.4: {} + + tinyspy@2.2.1: {} + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + toml@3.0.0: {} + + totalist@3.0.1: {} + + tr46@0.0.3: {} + + treeify@1.1.0: {} + + trim-lines@3.0.1: {} + + trim-newlines@3.0.1: {} + + trough@2.2.0: {} + + ts-interface-checker@0.1.13: {} + + tslib@1.14.1: {} + + tslib@2.4.0: {} + + tslib@2.6.2: {} + + tsx@4.11.0: + dependencies: + esbuild: 0.20.2 + get-tsconfig: 4.7.5 + optionalDependencies: + fsevents: 2.3.3 + + tty-table@4.2.3: + dependencies: + chalk: 4.1.2 + csv: 5.5.3 + kleur: 4.1.5 + smartwrap: 2.0.2 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + yargs: 17.7.2 + + twoslash-protocol@0.2.6: {} + + twoslash@0.2.6(typescript@5.4.5): + dependencies: + '@typescript/vfs': 1.5.0 + twoslash-protocol: 0.2.6 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + type-detect@4.0.8: {} + + type-fest@0.13.1: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + typed-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + + typed-array-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-byte-offset@1.0.2: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-length@1.0.6: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + + typescript@5.4.2: {} + + typescript@5.4.5: {} + + ua-parser-js@1.0.38: {} + + ufo@1.5.3: {} + + uint8arrays@3.1.1: + dependencies: + multiformats: 9.9.0 + + unbox-primitive@1.0.2: + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + + uncrypto@0.1.3: {} + + undici-types@5.26.5: {} + + unenv@1.9.0: + dependencies: + consola: 3.2.3 + defu: 6.1.4 + mime: 3.0.0 + node-fetch-native: 1.6.4 + pathe: 1.1.2 + + unicorn-magic@0.1.0: {} + + unified@10.1.2: + dependencies: + '@types/unist': 2.0.10 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 5.3.7 + + unified@11.0.4: + dependencies: + '@types/unist': 3.0.2 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.1 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.2 + unist-util-visit: 5.0.0 + + unist-util-stringify-position@3.0.3: + dependencies: + '@types/unist': 2.0.10 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.2 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + universalify@0.1.2: {} + + universalify@2.0.1: {} + + unstorage@1.10.2(idb-keyval@6.2.1): + dependencies: + anymatch: 3.1.3 + chokidar: 3.6.0 + destr: 2.0.3 + h3: 1.11.1 + listhen: 1.7.2 + lru-cache: 10.2.2 + mri: 1.2.0 + node-fetch-native: 1.6.4 + ofetch: 1.3.4 + ufo: 1.5.3 + optionalDependencies: + idb-keyval: 6.2.1 + transitivePeerDependencies: + - uWebSockets.js + + untun@0.1.3: + dependencies: + citty: 0.1.6 + consola: 3.2.3 + pathe: 1.1.2 + + update-browserslist-db@1.0.16(browserslist@4.23.0): + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.1 + + uqr@0.1.2: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + urlpattern-polyfill@10.0.0: {} + + use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.2.0): + dependencies: + react: 18.2.0 + tslib: 2.6.2 + optionalDependencies: + '@types/react': 18.3.3 + + use-sidecar@1.1.2(@types/react@18.3.3)(react@18.2.0): + dependencies: + detect-node-es: 1.1.0 + react: 18.2.0 + tslib: 2.6.2 + optionalDependencies: + '@types/react': 18.3.3 + + use-sync-external-store@1.2.0(react@18.2.0): + dependencies: + react: 18.2.0 + + util-deprecate@1.0.2: {} + + v8-to-istanbul@9.2.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + valtio@1.11.0(react@18.2.0): + dependencies: + proxy-compare: 2.5.1 + use-sync-external-store: 1.2.0(react@18.2.0) + optionalDependencies: + react: 18.2.0 + + vary@1.1.2: {} + + vfile-message@3.1.4: + dependencies: + '@types/unist': 2.0.10 + unist-util-stringify-position: 3.0.3 + + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + + vfile@5.3.7: + dependencies: + '@types/unist': 2.0.10 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + + vfile@6.0.1: + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + + viem@2.13.3(typescript@5.4.2)(zod@3.22.4): + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 1.0.0(typescript@5.4.2)(zod@3.22.4) + isows: 1.0.4(ws@8.13.0) + ws: 8.13.0 + optionalDependencies: + typescript: 5.4.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@file:src(typescript@5.4.5)(zod@3.22.4): + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 1.0.0(typescript@5.4.5)(zod@3.22.4) + isows: 1.0.4(ws@8.13.0) + ws: 8.13.0 + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + vite-node@1.0.4(@types/node@20.14.0)(terser@5.31.0): + dependencies: + cac: 6.7.14 + debug: 4.3.5 + pathe: 1.1.2 + picocolors: 1.0.1 + vite: 5.0.7(@types/node@20.14.0)(terser@5.31.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + vite-node@1.6.0(@types/node@20.14.0)(terser@5.31.0): + dependencies: + cac: 6.7.14 + debug: 4.3.5 + pathe: 1.1.2 + picocolors: 1.0.1 + vite: 5.2.12(@types/node@20.14.0)(terser@5.31.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + vite@4.4.5(@types/node@20.14.0)(terser@5.31.0): + dependencies: + esbuild: 0.18.20 + postcss: 8.4.38 + rollup: 3.29.4 + optionalDependencies: + '@types/node': 20.14.0 + fsevents: 2.3.3 + terser: 5.31.0 + + vite@4.4.5(@types/node@20.8.3)(terser@5.31.0): + dependencies: + esbuild: 0.18.20 + postcss: 8.4.38 + rollup: 3.29.4 + optionalDependencies: + '@types/node': 20.8.3 + fsevents: 2.3.3 + terser: 5.31.0 + + vite@5.0.7(@types/node@20.14.0)(terser@5.31.0): + dependencies: + esbuild: 0.19.12 + postcss: 8.4.38 + rollup: 4.18.0 + optionalDependencies: + '@types/node': 20.14.0 + fsevents: 2.3.3 + terser: 5.31.0 + + vite@5.2.12(@types/node@20.14.0)(terser@5.31.0): + dependencies: + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.18.0 + optionalDependencies: + '@types/node': 20.14.0 + fsevents: 2.3.3 + terser: 5.31.0 + + vitest@1.0.4(@types/node@20.14.0)(@vitest/ui@1.0.4)(terser@5.31.0): + dependencies: + '@vitest/expect': 1.0.4 + '@vitest/runner': 1.0.4 + '@vitest/snapshot': 1.0.4 + '@vitest/spy': 1.0.4 + '@vitest/utils': 1.0.4 + acorn-walk: 8.3.2 + cac: 6.7.14 + chai: 4.4.1 + debug: 4.3.5 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.10 + pathe: 1.1.2 + picocolors: 1.0.1 + std-env: 3.7.0 + strip-literal: 1.3.0 + tinybench: 2.8.0 + tinypool: 0.8.4 + vite: 5.0.7(@types/node@20.14.0)(terser@5.31.0) + vite-node: 1.0.4(@types/node@20.14.0)(terser@5.31.0) + why-is-node-running: 2.2.2 + optionalDependencies: + '@types/node': 20.14.0 + '@vitest/ui': 1.0.4(vitest@1.0.4) + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + vocs@1.0.0-alpha.52(@types/node@20.14.0)(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.18.0)(terser@5.31.0)(typescript@5.4.5): + dependencies: + '@floating-ui/react': 0.26.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@hono/node-server': 1.11.2 + '@mdx-js/react': 3.0.1(@types/react@18.3.3)(react@18.2.0) + '@mdx-js/rollup': 3.0.1(rollup@4.18.0) + '@noble/hashes': 1.3.2 + '@radix-ui/colors': 3.0.0 + '@radix-ui/react-accordion': 1.1.2(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-icons': 1.3.0(react@18.2.0) + '@radix-ui/react-label': 2.0.2(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-navigation-menu': 1.1.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-popover': 1.0.7(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-tabs': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@shikijs/rehype': 1.6.2 + '@shikijs/transformers': 1.6.2 + '@shikijs/twoslash': 1.6.2(typescript@5.4.5) + '@vanilla-extract/css': 1.15.2 + '@vanilla-extract/dynamic': 2.1.1 + '@vanilla-extract/vite-plugin': 3.9.5(@types/node@20.14.0)(terser@5.31.0)(vite@5.2.12(@types/node@20.14.0)(terser@5.31.0)) + '@vitejs/plugin-react': 4.2.0(vite@5.2.12(@types/node@20.14.0)(terser@5.31.0)) + autoprefixer: 10.4.19(postcss@8.4.38) + cac: 6.7.14 + chroma-js: 2.4.2 + clsx: 2.1.1 + compression: 1.7.4 + create-vocs: 1.0.0-alpha.5 + cross-spawn: 7.0.3 + fs-extra: 11.2.0 + globby: 13.2.2 + hastscript: 8.0.0 + hono: 3.12.12 + mark.js: 8.11.1 + mdast-util-directive: 3.0.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-gfm: 3.0.0 + mdast-util-to-hast: 13.1.0 + minimatch: 9.0.4 + minisearch: 6.3.0 + ora: 7.0.1 + p-limit: 5.0.0 + postcss: 8.4.38 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-helmet: 6.1.0(react@18.2.0) + react-intersection-observer: 9.10.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-router-dom: 6.23.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + rehype-autolink-headings: 7.1.0 + rehype-class-names: 1.0.14 + rehype-slug: 6.0.0 + remark-directive: 3.0.0 + remark-frontmatter: 5.0.0 + remark-gfm: 4.0.0 + remark-mdx-frontmatter: 4.0.0 + remark-parse: 11.0.0 + serve-static: 1.15.0 + shiki: 1.6.2 + tailwindcss: 3.4.3 + toml: 3.0.0 + twoslash: 0.2.6(typescript@5.4.5) + ua-parser-js: 1.0.38 + unified: 11.0.4 + unist-util-visit: 5.0.0 + vite: 5.2.12(@types/node@20.14.0)(terser@5.31.0) + transitivePeerDependencies: + - '@types/node' + - '@types/react' + - '@types/react-dom' + - babel-plugin-macros + - less + - lightningcss + - rollup + - sass + - stylus + - sugarss + - supports-color + - terser + - ts-node + - typescript + + watchpack@2.4.0: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + watchpack@2.4.1: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + webidl-conversions@3.0.1: {} + + webpack-sources@3.2.3: {} + + webpack@5.91.0: + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.23.0 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.16.1 + es-module-lexer: 1.5.3 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.91.0) + watchpack: 2.4.1 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-boxed-primitive@1.0.2: + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + + which-module@2.0.1: {} + + which-pm@2.0.0: + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.2.2: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + ws@7.5.9: {} + + ws@8.13.0: {} + + ws@8.16.0: {} + + ws@8.5.0: {} + + y18n@4.0.3: {} + + y18n@5.0.8: {} + + yallist@2.1.2: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@2.4.3: {} + + yargs-parser@18.1.3: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@15.4.1: + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yocto-queue@0.1.0: {} + + yocto-queue@1.0.0: {} + + yoctocolors@2.0.2: {} + + zod@3.22.4: {} + + zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000000..066c3d945a --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,7 @@ +packages: + - 'examples/*' + - 'environments/*' + - 'site' + - 'src' + - 'test' + diff --git a/site/package.json b/site/package.json index f65e2ec024..cbd87f2cb4 100644 --- a/site/package.json +++ b/site/package.json @@ -10,6 +10,7 @@ "devDependencies": { "react": "^18.2.0", "react-dom": "^18.2.0", + "viem": "workspace:*", "vocs": "1.0.0-alpha.52" } } diff --git a/site/pages/docs/installation.mdx b/site/pages/docs/installation.mdx index 8770e4c08a..f766cdebad 100644 --- a/site/pages/docs/installation.mdx +++ b/site/pages/docs/installation.mdx @@ -61,12 +61,12 @@ Or clone the [Viem repo](https://github.com/wevm/viem) to your local machine, bu ```bash gh repo clone wevm/viem cd viem -bun install -bun run build -bun link --global +pnpm install +pnpm build +pnpm link --global ``` -Then go to the project where you are using Viem and run `bun link --global viem` (or the package manager that you used to link Viem globally). +Then go to the project where you are using Viem and run `pnpm link --global viem` (or the package manager that you used to link Viem globally). ## Security diff --git a/src/op-stack/index.ts b/src/op-stack/index.ts index a2698c8fc2..392cf37a0d 100644 --- a/src/op-stack/index.ts +++ b/src/op-stack/index.ts @@ -176,6 +176,7 @@ export { export { chainConfig } from './chainConfig.js' +// @ts-ignore TS2354: This syntax requires an imported helper but module 'tslib' cannot be found. // biome-ignore lint/performance/noReExportAll: intentionally re-exporting export * from './chains.js' From 19df49c72661fadf7d27cf278e9bf0cc5282c098 Mon Sep 17 00:00:00 2001 From: Tom Meagher Date: Tue, 4 Jun 2024 11:59:29 -0400 Subject: [PATCH 08/30] chore: tweaks --- .npmrc | 2 +- .size-limit.json | 85 --------------------------------------- package.json | 92 ++++++++++++++++++++++++++++++++++++++++++- scripts/tsconfig.json | 2 +- 4 files changed, 92 insertions(+), 89 deletions(-) delete mode 100644 .size-limit.json diff --git a/.npmrc b/.npmrc index d6bf63fbff..30630492cd 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,2 @@ enable-pre-post-scripts=true -strict-peer-dependencies=false \ No newline at end of file +strict-peer-dependencies=false diff --git a/.size-limit.json b/.size-limit.json deleted file mode 100644 index 9fd21d0510..0000000000 --- a/.size-limit.json +++ /dev/null @@ -1,85 +0,0 @@ -[ - { - "name": "viem (esm)", - "path": "./src/_esm/index.js", - "limit": "59.1 kB", - "import": "*" - }, - { - "name": "viem (cjs)", - "path": "./src/_cjs/index.js", - "limit": "78 kB" - }, - { - "name": "viem (minimal surface - tree-shaking)", - "path": "./src/_esm/index.js", - "limit": "4.1 kB", - "import": "{ createClient, http }" - }, - { - "name": "viem/accounts", - "path": "./src/_esm/accounts/index.js", - "limit": "92 kB", - "import": "*" - }, - { - "name": "viem/accounts (tree-shaking)", - "path": "./src/_esm/accounts/index.js", - "limit": "20 kB", - "import": "{ privateKeyToAccount }" - }, - { - "name": "viem/actions", - "path": "./src/_esm/ens/index.js", - "limit": "45 kB", - "import": "*" - }, - { - "name": "viem/actions (tree-shaking)", - "path": "./src/_esm/actions/index.js", - "limit": "1 kB", - "import": "{ getBlockNumber }" - }, - { - "name": "viem/chains", - "path": "./src/_esm/chains/index.js", - "limit": "28 kB", - "import": "*" - }, - { - "name": "viem/chains (tree-shaking)", - "path": "./src/_esm/chains/index.js", - "limit": "500 B", - "import": "{ mainnet }" - }, - { - "name": "viem/chains/utils", - "path": "./src/_esm/chains/utils.js", - "limit": "8 kB", - "import": "*" - }, - { - "name": "viem/ens", - "path": "./src/_esm/ens/index.js", - "limit": "45 kB", - "import": "*" - }, - { - "name": "viem/ens (tree-shaking)", - "path": "./src/_esm/ens/index.js", - "limit": "19 kB", - "import": "{ getEnsAvatar }" - }, - { - "name": "viem/siwe", - "path": "./src/_esm/siwe/index.js", - "limit": "28 kB", - "import": "*" - }, - { - "name": "viem/siwe (tree-shaking)", - "path": "./src/_esm/siwe/index.js", - "limit": "27 kB", - "import": "{ verifySiweMessage }" - } -] diff --git a/package.json b/package.json index d7c8e02820..70cb90447f 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "changeset:prepublish": "pnpm version:update && bun scripts/prepublishOnly.ts && pnpm build", "changeset:publish": "pnpm changeset:prepublish && changeset publish", "changeset:version": "changeset version && pnpm install --lockfile-only && pnpm version:update", - "clean": "rimraf **/*.tsbuildinfo src/_esm src/_cjs src/_types", + "clean": "rimraf *.tsbuildinfo src/*.tsbuildinfo src/_esm src/_cjs src/_types", "contracts:build": "forge build --config-path ./test/foundry.toml && bun ./scripts/generateTypedArtifacts.ts", "docs:dev": "pnpm --filter site dev", "docs:build": "pnpm --filter site build", @@ -69,7 +69,95 @@ }, "trustedDependencies": ["c-kzg"], "packageManager": "pnpm@9.1.0", + "engines": { + "node": "22.x" + }, "simple-git-hooks": { "pre-commit": "pnpm lint" - } + }, + "size-limit": [ + { + "name": "viem (esm)", + "path": "./src/_esm/index.js", + "limit": "59.1 kB", + "import": "*" + }, + { + "name": "viem (cjs)", + "path": "./src/_cjs/index.js", + "limit": "78 kB" + }, + { + "name": "viem (minimal surface - tree-shaking)", + "path": "./src/_esm/index.js", + "limit": "4.1 kB", + "import": "{ createClient, http }" + }, + { + "name": "viem/accounts", + "path": "./src/_esm/accounts/index.js", + "limit": "92 kB", + "import": "*" + }, + { + "name": "viem/accounts (tree-shaking)", + "path": "./src/_esm/accounts/index.js", + "limit": "20 kB", + "import": "{ privateKeyToAccount }" + }, + { + "name": "viem/actions", + "path": "./src/_esm/ens/index.js", + "limit": "45 kB", + "import": "*" + }, + { + "name": "viem/actions (tree-shaking)", + "path": "./src/_esm/actions/index.js", + "limit": "1 kB", + "import": "{ getBlockNumber }" + }, + { + "name": "viem/chains", + "path": "./src/_esm/chains/index.js", + "limit": "28 kB", + "import": "*" + }, + { + "name": "viem/chains (tree-shaking)", + "path": "./src/_esm/chains/index.js", + "limit": "500 B", + "import": "{ mainnet }" + }, + { + "name": "viem/chains/utils", + "path": "./src/_esm/chains/utils.js", + "limit": "8 kB", + "import": "*" + }, + { + "name": "viem/ens", + "path": "./src/_esm/ens/index.js", + "limit": "45 kB", + "import": "*" + }, + { + "name": "viem/ens (tree-shaking)", + "path": "./src/_esm/ens/index.js", + "limit": "19 kB", + "import": "{ getEnsAvatar }" + }, + { + "name": "viem/siwe", + "path": "./src/_esm/siwe/index.js", + "limit": "28 kB", + "import": "*" + }, + { + "name": "viem/siwe (tree-shaking)", + "path": "./src/_esm/siwe/index.js", + "limit": "27 kB", + "import": "{ verifySiweMessage }" + } + ] } diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json index d0bf11a772..e7f0170d0f 100644 --- a/scripts/tsconfig.json +++ b/scripts/tsconfig.json @@ -2,6 +2,6 @@ "compilerOptions": { "composite": true, "module": "nodenext", - "types": ["bun-types"] + "types": ["@types/bun"] } } From e7545343551c5f89ee46eb6c69f024c31f57fc04 Mon Sep 17 00:00:00 2001 From: Tom Meagher Date: Tue, 4 Jun 2024 12:03:08 -0400 Subject: [PATCH 09/30] ci: node 22 --- .github/actions/install-dependencies/action.yml | 2 -- .github/workflows/test-chains.yml | 2 -- .github/workflows/verify.yml | 2 -- 3 files changed, 6 deletions(-) diff --git a/.github/actions/install-dependencies/action.yml b/.github/actions/install-dependencies/action.yml index 5808ceb539..cd46d15200 100644 --- a/.github/actions/install-dependencies/action.yml +++ b/.github/actions/install-dependencies/action.yml @@ -9,6 +9,4 @@ runs: - name: Set up pnpm uses: wevm/actions/.github/actions/pnpm@main - with: - node-version: 22 diff --git a/.github/workflows/test-chains.yml b/.github/workflows/test-chains.yml index 416ccb6098..c59076f15c 100644 --- a/.github/workflows/test-chains.yml +++ b/.github/workflows/test-chains.yml @@ -24,8 +24,6 @@ jobs: - name: Set up pnpm uses: wevm/actions/.github/actions/pnpm@main - with: - node-version: 22 - name: Run tests run: pnpm test:chains diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 2b4a1caef1..bd0e0a476f 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -163,8 +163,6 @@ jobs: - name: Set up pnpm uses: wevm/actions/.github/actions/pnpm@main - with: - node-version: 22 - name: Set up Bun if: ${{ matrix.runtime == 'bun' }} From 8984eee7f23d430070e42ac1f2645ced0e82faf8 Mon Sep 17 00:00:00 2001 From: jaeilwiki <34488287+jaeil-wiki@users.noreply.github.com> Date: Wed, 5 Jun 2024 01:25:57 +0900 Subject: [PATCH 10/30] Fix wrong ABNF Message construction (#2337) * fix: wrong ABNF Message construction * added: changeset * Update .changeset/clever-shoes-hope.md * chore: snaps --------- Co-authored-by: awkweb --- .changeset/clever-shoes-hope.md | 5 +++++ src/utils/siwe/createSiweMessage.test.ts | 7 +++++++ src/utils/siwe/createSiweMessage.ts | 4 ++-- 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 .changeset/clever-shoes-hope.md diff --git a/.changeset/clever-shoes-hope.md b/.changeset/clever-shoes-hope.md new file mode 100644 index 0000000000..8e58031428 --- /dev/null +++ b/.changeset/clever-shoes-hope.md @@ -0,0 +1,5 @@ +--- +"viem": patch +--- + +Updated `createSiweMessage` `statement` construction to match ABNF Message Format. diff --git a/src/utils/siwe/createSiweMessage.test.ts b/src/utils/siwe/createSiweMessage.test.ts index 285da436b9..0da4dde547 100644 --- a/src/utils/siwe/createSiweMessage.test.ts +++ b/src/utils/siwe/createSiweMessage.test.ts @@ -21,6 +21,7 @@ test('default', () => { "example.com wants you to sign in with your Ethereum account: 0xA0Cf798816D4b9b9866b5330EEa46a18382f251e + URI: https://example.com/path Version: 1 Chain ID: 1 @@ -44,6 +45,7 @@ test('parameters: scheme', () => { "https://example.com wants you to sign in with your Ethereum account: 0xA0Cf798816D4b9b9866b5330EEa46a18382f251e + URI: https://example.com/path Version: 1 Chain ID: 1 @@ -86,6 +88,7 @@ test('parameters: issuedAt', () => { "example.com wants you to sign in with your Ethereum account: 0xA0Cf798816D4b9b9866b5330EEa46a18382f251e + URI: https://example.com/path Version: 1 Chain ID: 1 @@ -107,6 +110,7 @@ test('parameters: expirationTime', () => { "example.com wants you to sign in with your Ethereum account: 0xA0Cf798816D4b9b9866b5330EEa46a18382f251e + URI: https://example.com/path Version: 1 Chain ID: 1 @@ -131,6 +135,7 @@ test('parameters: notBefore', () => { "example.com wants you to sign in with your Ethereum account: 0xA0Cf798816D4b9b9866b5330EEa46a18382f251e + URI: https://example.com/path Version: 1 Chain ID: 1 @@ -155,6 +160,7 @@ test('parameters: requestId', () => { "example.com wants you to sign in with your Ethereum account: 0xA0Cf798816D4b9b9866b5330EEa46a18382f251e + URI: https://example.com/path Version: 1 Chain ID: 1 @@ -183,6 +189,7 @@ test('parameters: resources', () => { "example.com wants you to sign in with your Ethereum account: 0xA0Cf798816D4b9b9866b5330EEa46a18382f251e + URI: https://example.com/path Version: 1 Chain ID: 1 diff --git a/src/utils/siwe/createSiweMessage.ts b/src/utils/siwe/createSiweMessage.ts index 103d71c295..f1b6a20319 100644 --- a/src/utils/siwe/createSiweMessage.ts +++ b/src/utils/siwe/createSiweMessage.ts @@ -138,9 +138,9 @@ export function createSiweMessage( })() const statement = (() => { if (!parameters.statement) return '' - return `\n${parameters.statement}\n` + return `${parameters.statement}\n` })() - const prefix = `${origin} wants you to sign in with your Ethereum account:\n${address}\n${statement}` + const prefix = `${origin} wants you to sign in with your Ethereum account:\n${address}\n\n${statement}` let suffix = `URI: ${uri}\nVersion: ${version}\nChain ID: ${chainId}\nNonce: ${nonce}\nIssued At: ${issuedAt.toISOString()}` From 48e6d50cae738e55869758cb25c52b2244069f09 Mon Sep 17 00:00:00 2001 From: agsola Date: Tue, 4 Jun 2024 18:30:05 +0200 Subject: [PATCH 11/30] fix: properly manage `RFC 3986 authority domain` check (#2351) * fix: properly manage `RFC 3986 authority domain` check ## PR overview Using the current regex expression only second level domains are accepted. However, that is not the way it is specified on RFC 3986. With the current implementation for instance all country code second-level domains (ccSLD) like domain.co.uk are not accepted. The fix allows multi-level domains. ### Detailed summary Changed `domainRegex` regex to allow multiple level domains. * Create rfc3986-authority-domain.md * Fix: Replace instead of adding * Update .changeset/rfc3986-authority-domain.md Co-authored-by: awkweb * test(siwe): sub/multi-level domains --------- Co-authored-by: awkweb --- .changeset/rfc3986-authority-domain.md | 5 +++ src/utils/siwe/createSiweMessage.test.ts | 41 ++++++++++++++++++++++++ src/utils/siwe/createSiweMessage.ts | 2 +- 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 .changeset/rfc3986-authority-domain.md diff --git a/.changeset/rfc3986-authority-domain.md b/.changeset/rfc3986-authority-domain.md new file mode 100644 index 0000000000..a2387965c1 --- /dev/null +++ b/.changeset/rfc3986-authority-domain.md @@ -0,0 +1,5 @@ +--- +"viem": patch +--- + +Fixed `createSiweMessage` domain check to be RFC 3986 compliant. diff --git a/src/utils/siwe/createSiweMessage.test.ts b/src/utils/siwe/createSiweMessage.test.ts index 0da4dde547..eb5f7517c8 100644 --- a/src/utils/siwe/createSiweMessage.test.ts +++ b/src/utils/siwe/createSiweMessage.test.ts @@ -32,6 +32,47 @@ test('default', () => { vi.useRealTimers() }) +test('parameters: domain', () => { + vi.useFakeTimers() + vi.setSystemTime(new Date(Date.UTC(2023, 1, 1))) + + expect( + createSiweMessage({ + ...message, + domain: 'foo.example.com', + }), + ).toMatchInlineSnapshot(` + "foo.example.com wants you to sign in with your Ethereum account: + 0xA0Cf798816D4b9b9866b5330EEa46a18382f251e + + + URI: https://example.com/path + Version: 1 + Chain ID: 1 + Nonce: foobarbaz + Issued At: 2023-02-01T00:00:00.000Z" + `) + + expect( + createSiweMessage({ + ...message, + domain: 'example.co.uk', + }), + ).toMatchInlineSnapshot(` + "example.co.uk wants you to sign in with your Ethereum account: + 0xA0Cf798816D4b9b9866b5330EEa46a18382f251e + + + URI: https://example.com/path + Version: 1 + Chain ID: 1 + Nonce: foobarbaz + Issued At: 2023-02-01T00:00:00.000Z" + `) + + vi.useRealTimers() +}) + test('parameters: scheme', () => { vi.useFakeTimers() vi.setSystemTime(new Date(Date.UTC(2023, 1, 1))) diff --git a/src/utils/siwe/createSiweMessage.ts b/src/utils/siwe/createSiweMessage.ts index f1b6a20319..cda7c2b30e 100644 --- a/src/utils/siwe/createSiweMessage.ts +++ b/src/utils/siwe/createSiweMessage.ts @@ -170,7 +170,7 @@ export function createSiweMessage( } const domainRegex = - /^([a-zA-Z0-9][-a-zA-Z0-9]{0,61}[a-zA-Z0-9])\.[a-zA-Z]{2,}(:[0-9]{1,5})?$/ + /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}(:[0-9]{1,5})?$/ const ipRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(:[0-9]{1,5})?$/ const localhostRegex = /^localhost(:[0-9]{1,5})?$/ From 1128535f71b01af1551c2b3e90da2a91e289ea4e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Jun 2024 12:34:08 -0400 Subject: [PATCH 12/30] chore: version package (#2367) Co-authored-by: github-actions[bot] --- .changeset/clever-shoes-hope.md | 5 -- .changeset/rfc3986-authority-domain.md | 5 -- pnpm-lock.yaml | 40 +++++++-------- src/CHANGELOG.md | 8 +++ src/errors/version.ts | 2 +- src/jsr.json | 11 +++-- src/package.json | 67 ++++++++++++++++++++------ 7 files changed, 88 insertions(+), 50 deletions(-) delete mode 100644 .changeset/clever-shoes-hope.md delete mode 100644 .changeset/rfc3986-authority-domain.md diff --git a/.changeset/clever-shoes-hope.md b/.changeset/clever-shoes-hope.md deleted file mode 100644 index 8e58031428..0000000000 --- a/.changeset/clever-shoes-hope.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"viem": patch ---- - -Updated `createSiweMessage` `statement` construction to match ABNF Message Format. diff --git a/.changeset/rfc3986-authority-domain.md b/.changeset/rfc3986-authority-domain.md deleted file mode 100644 index a2387965c1..0000000000 --- a/.changeset/rfc3986-authority-domain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"viem": patch ---- - -Fixed `createSiweMessage` domain check to be RFC 3986 compliant. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3cbaa5e0ef..a9e05b4a1b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -159,7 +159,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -172,7 +172,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -185,7 +185,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -198,7 +198,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -217,7 +217,7 @@ importers: version: 18.2.0(react@18.2.0) viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: '@types/react': specifier: ^18.0.27 @@ -245,7 +245,7 @@ importers: version: 18.2.0(react@18.2.0) viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: '@types/react': specifier: ^18.0.27 @@ -267,7 +267,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -280,7 +280,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -299,7 +299,7 @@ importers: version: 18.2.0(react@18.2.0) viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: '@types/react': specifier: ^18.0.27 @@ -321,7 +321,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -334,7 +334,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -347,7 +347,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -360,7 +360,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -407,7 +407,7 @@ importers: version: 18.2.0(react@18.2.0) viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: '@types/react': specifier: ^18.0.27 @@ -429,7 +429,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -448,7 +448,7 @@ importers: version: 18.2.0(react@18.2.0) viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: '@types/react': specifier: ^18.0.27 @@ -482,7 +482,7 @@ importers: version: 18.2.0(react@18.2.0) viem: specifier: latest - version: 2.13.3(typescript@5.4.2)(zod@3.22.4) + version: 2.13.5(typescript@5.4.2)(zod@3.22.4) devDependencies: '@types/react': specifier: ^18.0.27 @@ -5714,8 +5714,8 @@ packages: vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - viem@2.13.3: - resolution: {integrity: sha512-3tlwDRKHSelupFjbFMdUxF41f79ktyH2F9PAQ9Dltbs1DpdDlR1x+Ksa0th6qkyjjAbpDZP3F5nMTJv/1GVPdQ==} + viem@2.13.5: + resolution: {integrity: sha512-jXkFh52GwBLJJE/OWkPZdXwiO3zpgTL7ebhpMcQkaa7F7xEhYeGBjqs26zn6rjlUYP43JjoAf/VnpmbYTQvR6Q==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -12145,7 +12145,7 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - viem@2.13.3(typescript@5.4.2)(zod@3.22.4): + viem@2.13.5(typescript@5.4.2)(zod@3.22.4): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index 147df0330f..a00bd78474 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -1,5 +1,13 @@ # viem +## 2.13.6 + +### Patch Changes + +- [#2337](https://github.com/wevm/viem/pull/2337) [`8984eee7`](https://github.com/wevm/viem/commit/8984eee7f23d430070e42ac1f2645ced0e82faf8) Thanks [@jaeil-wiki](https://github.com/jaeil-wiki)! - Updated `createSiweMessage` `statement` construction to match ABNF Message Format. + +- [#2351](https://github.com/wevm/viem/pull/2351) [`48e6d50c`](https://github.com/wevm/viem/commit/48e6d50cae738e55869758cb25c52b2244069f09) Thanks [@agsola](https://github.com/agsola)! - Fixed `createSiweMessage` domain check to be RFC 3986 compliant. + ## 2.13.5 ### Patch Changes diff --git a/src/errors/version.ts b/src/errors/version.ts index 7282060b3b..ad6807f8f8 100644 --- a/src/errors/version.ts +++ b/src/errors/version.ts @@ -1 +1 @@ -export const version = '2.13.5' +export const version = '2.13.6' diff --git a/src/jsr.json b/src/jsr.json index ebc2c600f1..f731e65be6 100644 --- a/src/jsr.json +++ b/src/jsr.json @@ -1,6 +1,6 @@ { "name": "@wevm/viem", - "version": "2.13.5", + "version": "2.13.6", "exports": { ".": "./index.ts", "./accounts": "./accounts/index.ts", @@ -16,7 +16,12 @@ "./zksync": "./zksync/index.ts" }, "publish": { - "include": ["LICENSE", "README.md", "CHANGELOG.md", "**/*.ts"], + "include": [ + "LICENSE", + "README.md", + "CHANGELOG.md", + "**/*.ts" + ], "exclude": [ "**/*.bench.ts", "**/*.bench-d.ts", @@ -24,4 +29,4 @@ "**/*.test-d.ts" ] } -} +} \ No newline at end of file diff --git a/src/package.json b/src/package.json index 3fb2e06f4e..cccb4721b3 100644 --- a/src/package.json +++ b/src/package.json @@ -1,7 +1,7 @@ { "name": "viem", "description": "TypeScript Interface for Ethereum", - "version": "2.13.5", + "version": "2.13.6", "type": "module", "main": "./_cjs/index.js", "module": "./_esm/index.js", @@ -94,19 +94,45 @@ }, "typesVersions": { "*": { - "accounts": ["./_types/accounts/index.d.ts"], - "actions": ["./_types/actions/index.d.ts"], - "celo": ["./_types/celo/index.d.ts"], - "chains": ["./_types/chains/index.d.ts"], - "chains/utils": ["./_types/chains/utils.d.ts"], - "ens": ["./_types/ens/index.d.ts"], - "experimental": ["./_types/experimental/index.d.ts"], - "node": ["./_types/node/index.d.ts"], - "op-stack": ["./_types/op-stack/index.d.ts"], - "siwe": ["./_types/siwe/index.d.ts"], - "utils": ["./_types/utils/index.d.ts"], - "window": ["./_types/window/index.d.ts"], - "zksync": ["./_types/zksync/index.d.ts"] + "accounts": [ + "./_types/accounts/index.d.ts" + ], + "actions": [ + "./_types/actions/index.d.ts" + ], + "celo": [ + "./_types/celo/index.d.ts" + ], + "chains": [ + "./_types/chains/index.d.ts" + ], + "chains/utils": [ + "./_types/chains/utils.d.ts" + ], + "ens": [ + "./_types/ens/index.d.ts" + ], + "experimental": [ + "./_types/experimental/index.d.ts" + ], + "node": [ + "./_types/node/index.d.ts" + ], + "op-stack": [ + "./_types/op-stack/index.d.ts" + ], + "siwe": [ + "./_types/siwe/index.d.ts" + ], + "utils": [ + "./_types/utils/index.d.ts" + ], + "window": [ + "./_types/window/index.d.ts" + ], + "zksync": [ + "./_types/zksync/index.d.ts" + ] } }, "peerDependencies": { @@ -130,12 +156,21 @@ "license": "MIT", "homepage": "https://viem.sh", "repository": "wevm/viem", - "authors": ["awkweb.eth", "jxom.eth"], + "authors": [ + "awkweb.eth", + "jxom.eth" + ], "funding": [ { "type": "github", "url": "https://github.com/sponsors/wevm" } ], - "keywords": ["eth", "ethereum", "dapps", "wallet", "web3"] + "keywords": [ + "eth", + "ethereum", + "dapps", + "wallet", + "web3" + ] } From 6dbc88addba8869d1690887f8b63e94ea36953f9 Mon Sep 17 00:00:00 2001 From: tmm Date: Tue, 4 Jun 2024 16:35:17 +0000 Subject: [PATCH 13/30] chore: format --- src/jsr.json | 9 ++----- src/package.json | 65 +++++++++++------------------------------------- 2 files changed, 17 insertions(+), 57 deletions(-) diff --git a/src/jsr.json b/src/jsr.json index f731e65be6..4d61663edc 100644 --- a/src/jsr.json +++ b/src/jsr.json @@ -16,12 +16,7 @@ "./zksync": "./zksync/index.ts" }, "publish": { - "include": [ - "LICENSE", - "README.md", - "CHANGELOG.md", - "**/*.ts" - ], + "include": ["LICENSE", "README.md", "CHANGELOG.md", "**/*.ts"], "exclude": [ "**/*.bench.ts", "**/*.bench-d.ts", @@ -29,4 +24,4 @@ "**/*.test-d.ts" ] } -} \ No newline at end of file +} diff --git a/src/package.json b/src/package.json index cccb4721b3..09584538ce 100644 --- a/src/package.json +++ b/src/package.json @@ -94,45 +94,19 @@ }, "typesVersions": { "*": { - "accounts": [ - "./_types/accounts/index.d.ts" - ], - "actions": [ - "./_types/actions/index.d.ts" - ], - "celo": [ - "./_types/celo/index.d.ts" - ], - "chains": [ - "./_types/chains/index.d.ts" - ], - "chains/utils": [ - "./_types/chains/utils.d.ts" - ], - "ens": [ - "./_types/ens/index.d.ts" - ], - "experimental": [ - "./_types/experimental/index.d.ts" - ], - "node": [ - "./_types/node/index.d.ts" - ], - "op-stack": [ - "./_types/op-stack/index.d.ts" - ], - "siwe": [ - "./_types/siwe/index.d.ts" - ], - "utils": [ - "./_types/utils/index.d.ts" - ], - "window": [ - "./_types/window/index.d.ts" - ], - "zksync": [ - "./_types/zksync/index.d.ts" - ] + "accounts": ["./_types/accounts/index.d.ts"], + "actions": ["./_types/actions/index.d.ts"], + "celo": ["./_types/celo/index.d.ts"], + "chains": ["./_types/chains/index.d.ts"], + "chains/utils": ["./_types/chains/utils.d.ts"], + "ens": ["./_types/ens/index.d.ts"], + "experimental": ["./_types/experimental/index.d.ts"], + "node": ["./_types/node/index.d.ts"], + "op-stack": ["./_types/op-stack/index.d.ts"], + "siwe": ["./_types/siwe/index.d.ts"], + "utils": ["./_types/utils/index.d.ts"], + "window": ["./_types/window/index.d.ts"], + "zksync": ["./_types/zksync/index.d.ts"] } }, "peerDependencies": { @@ -156,21 +130,12 @@ "license": "MIT", "homepage": "https://viem.sh", "repository": "wevm/viem", - "authors": [ - "awkweb.eth", - "jxom.eth" - ], + "authors": ["awkweb.eth", "jxom.eth"], "funding": [ { "type": "github", "url": "https://github.com/sponsors/wevm" } ], - "keywords": [ - "eth", - "ethereum", - "dapps", - "wallet", - "web3" - ] + "keywords": ["eth", "ethereum", "dapps", "wallet", "web3"] } From 9d217b42808dc3fb2498938178e01643a52177a5 Mon Sep 17 00:00:00 2001 From: Tom Meagher Date: Tue, 4 Jun 2024 12:37:58 -0400 Subject: [PATCH 14/30] refactor(internal): remove explicit never from unions --- src/accounts/types.ts | 8 +++--- src/actions/public/call.ts | 4 +-- .../public/createContractEventFilter.ts | 4 +-- src/actions/public/createEventFilter.ts | 26 +++++++++---------- src/actions/public/estimateGas.ts | 4 +-- src/actions/public/getBalance.ts | 4 +-- src/actions/public/getBlock.ts | 12 ++++----- .../public/getBlockTransactionCount.ts | 12 ++++----- src/actions/public/getBytecode.ts | 4 +-- src/actions/public/getFeeHistory.ts | 4 +-- src/actions/public/getLogs.ts | 20 +++++++------- src/actions/public/getProof.ts | 4 +-- src/actions/public/getStorageAt.ts | 4 +-- src/actions/public/getTransaction.ts | 24 ++++++++--------- .../public/getTransactionConfirmations.ts | 4 +-- src/actions/public/getTransactionCount.ts | 4 +-- src/actions/public/watchEvent.ts | 14 +++++----- src/clients/transports/fallback.ts | 4 +-- src/errors/base.ts | 4 +-- .../actions/buildDepositTransaction.ts | 2 +- src/op-stack/types/deposit.ts | 2 +- src/types/eip1193.ts | 8 +++--- src/types/fee.ts | 10 +++---- src/types/filter.ts | 14 +++++----- src/types/rpc.ts | 16 ++++++------ src/types/transaction.ts | 12 ++++----- src/types/typedData.ts | 2 +- src/utils/encoding/toHex.ts | 2 +- src/zksync/actions/getL1Balance.ts | 4 +-- src/zksync/actions/getL1TokenBalance.ts | 4 +-- src/zksync/types/transaction.ts | 2 +- 31 files changed, 121 insertions(+), 121 deletions(-) diff --git a/src/accounts/types.ts b/src/accounts/types.ts index aa049c3ad7..dd57144d98 100644 --- a/src/accounts/types.ts +++ b/src/accounts/types.ts @@ -73,12 +73,12 @@ export type HDOptions = addressIndex?: number | undefined /** The change index to use in the path (`"m/44'/60'/0'/${changeIndex}/0"`). */ changeIndex?: number | undefined - path?: never | undefined + path?: undefined } | { - accountIndex?: never | undefined - addressIndex?: never | undefined - changeIndex?: never | undefined + accountIndex?: undefined + addressIndex?: undefined + changeIndex?: undefined /** The HD path. */ path: `m/44'/60'/${string}` } diff --git a/src/actions/public/call.ts b/src/actions/public/call.ts index 050d3e448c..be84773d13 100644 --- a/src/actions/public/call.ts +++ b/src/actions/public/call.ts @@ -81,10 +81,10 @@ export type CallParameters< | { /** The balance of the account at a block number. */ blockNumber?: bigint | undefined - blockTag?: never | undefined + blockTag?: undefined } | { - blockNumber?: never | undefined + blockNumber?: undefined /** * The balance of the account at a block tag. * @default 'latest' diff --git a/src/actions/public/createContractEventFilter.ts b/src/actions/public/createContractEventFilter.ts index db456f4e27..df767bb603 100644 --- a/src/actions/public/createContractEventFilter.ts +++ b/src/actions/public/createContractEventFilter.ts @@ -45,7 +45,7 @@ export type CreateContractEventFilterParameters< toBlock?: toBlock | BlockNumber | BlockTag | undefined } & (undefined extends eventName ? { - args?: never | undefined + args?: undefined } : MaybeExtractEventArgsFromAbi extends infer TEventFilterArgs ? { @@ -55,7 +55,7 @@ export type CreateContractEventFilterParameters< | undefined } : { - args?: never | undefined + args?: undefined }) export type CreateContractEventFilterReturnType< diff --git a/src/actions/public/createEventFilter.ts b/src/actions/public/createEventFilter.ts index be53cf0421..d3fb89629b 100644 --- a/src/actions/public/createEventFilter.ts +++ b/src/actions/public/createEventFilter.ts @@ -51,7 +51,7 @@ export type CreateEventFilterParameters< | TEventFilterArgs | (_Args extends TEventFilterArgs ? _Args : never) event: TAbiEvent - events?: never | undefined + events?: undefined /** * Whether or not the logs must match the indexed/non-indexed arguments on `event`. * @default false @@ -59,9 +59,9 @@ export type CreateEventFilterParameters< strict?: TStrict | undefined } | { - args?: never | undefined + args?: undefined event?: TAbiEvent | undefined - events?: never | undefined + events?: undefined /** * Whether or not the logs must match the indexed/non-indexed arguments on `event`. * @default false @@ -69,8 +69,8 @@ export type CreateEventFilterParameters< strict?: TStrict | undefined } | { - args?: never | undefined - event?: never | undefined + args?: undefined + event?: undefined events: TAbiEvents | undefined /** * Whether or not the logs must match the indexed/non-indexed arguments on `event`. @@ -79,16 +79,16 @@ export type CreateEventFilterParameters< strict?: TStrict | undefined } | { - args?: never | undefined - event?: never | undefined - events?: never | undefined - strict?: never | undefined + args?: undefined + event?: undefined + events?: undefined + strict?: undefined } : { - args?: never | undefined - event?: never | undefined - events?: never | undefined - strict?: never | undefined + args?: undefined + event?: undefined + events?: undefined + strict?: undefined }) export type CreateEventFilterReturnType< diff --git a/src/actions/public/estimateGas.ts b/src/actions/public/estimateGas.ts index 5bf9faafe4..65ac81bfb6 100644 --- a/src/actions/public/estimateGas.ts +++ b/src/actions/public/estimateGas.ts @@ -50,10 +50,10 @@ export type EstimateGasParameters< | { /** The balance of the account at a block number. */ blockNumber?: bigint | undefined - blockTag?: never | undefined + blockTag?: undefined } | { - blockNumber?: never | undefined + blockNumber?: undefined /** * The balance of the account at a block tag. * @default 'latest' diff --git a/src/actions/public/getBalance.ts b/src/actions/public/getBalance.ts index 42cefddff1..ea78e7002d 100644 --- a/src/actions/public/getBalance.ts +++ b/src/actions/public/getBalance.ts @@ -18,10 +18,10 @@ export type GetBalanceParameters = { | { /** The balance of the account at a block number. */ blockNumber?: bigint | undefined - blockTag?: never | undefined + blockTag?: undefined } | { - blockNumber?: never | undefined + blockNumber?: undefined /** The balance of the account at a block tag. */ blockTag?: BlockTag | undefined } diff --git a/src/actions/public/getBlock.ts b/src/actions/public/getBlock.ts index 081adcdd05..152f204233 100644 --- a/src/actions/public/getBlock.ts +++ b/src/actions/public/getBlock.ts @@ -31,18 +31,18 @@ export type GetBlockParameters< | { /** Hash of the block. */ blockHash?: Hash | undefined - blockNumber?: never | undefined - blockTag?: never | undefined + blockNumber?: undefined + blockTag?: undefined } | { - blockHash?: never | undefined + blockHash?: undefined /** The block number. */ blockNumber?: bigint | undefined - blockTag?: never | undefined + blockTag?: undefined } | { - blockHash?: never | undefined - blockNumber?: never | undefined + blockHash?: undefined + blockNumber?: undefined /** * The block tag. * @default 'latest' diff --git a/src/actions/public/getBlockTransactionCount.ts b/src/actions/public/getBlockTransactionCount.ts index 819518816f..3fcfcb981c 100644 --- a/src/actions/public/getBlockTransactionCount.ts +++ b/src/actions/public/getBlockTransactionCount.ts @@ -19,18 +19,18 @@ export type GetBlockTransactionCountParameters = | { /** Hash of the block. */ blockHash?: Hash | undefined - blockNumber?: never | undefined - blockTag?: never | undefined + blockNumber?: undefined + blockTag?: undefined } | { - blockHash?: never | undefined + blockHash?: undefined /** The block number. */ blockNumber?: bigint | undefined - blockTag?: never | undefined + blockTag?: undefined } | { - blockHash?: never | undefined - blockNumber?: never | undefined + blockHash?: undefined + blockNumber?: undefined /** The block tag. Defaults to 'latest'. */ blockTag?: BlockTag | undefined } diff --git a/src/actions/public/getBytecode.ts b/src/actions/public/getBytecode.ts index 510125ff42..e38a244a9b 100644 --- a/src/actions/public/getBytecode.ts +++ b/src/actions/public/getBytecode.ts @@ -16,12 +16,12 @@ export type GetBytecodeParameters = { address: Address } & ( | { - blockNumber?: never | undefined + blockNumber?: undefined blockTag?: BlockTag | undefined } | { blockNumber?: bigint | undefined - blockTag?: never | undefined + blockTag?: undefined } ) diff --git a/src/actions/public/getFeeHistory.ts b/src/actions/public/getFeeHistory.ts index 4cc94b069c..54e748e41c 100644 --- a/src/actions/public/getFeeHistory.ts +++ b/src/actions/public/getFeeHistory.ts @@ -24,7 +24,7 @@ export type GetFeeHistoryParameters = { rewardPercentiles: number[] } & ( | { - blockNumber?: never | undefined + blockNumber?: undefined /** * Highest number block of the requested range. * @default 'latest' @@ -34,7 +34,7 @@ export type GetFeeHistoryParameters = { | { /** Highest number block of the requested range. */ blockNumber?: bigint | undefined - blockTag?: never | undefined + blockTag?: undefined } ) export type GetFeeHistoryReturnType = FeeHistory diff --git a/src/actions/public/getLogs.ts b/src/actions/public/getLogs.ts index 9f664774e5..b3caf5bca4 100644 --- a/src/actions/public/getLogs.ts +++ b/src/actions/public/getLogs.ts @@ -45,7 +45,7 @@ export type GetLogsParameters< } & ( | { event: TAbiEvent - events?: never | undefined + events?: undefined args?: MaybeExtractEventArgsFromAbi | undefined /** * Whether or not the logs must match the indexed/non-indexed arguments on `event`. @@ -54,9 +54,9 @@ export type GetLogsParameters< strict?: TStrict | undefined } | { - event?: never | undefined + event?: undefined events: TAbiEvents - args?: never | undefined + args?: undefined /** * Whether or not the logs must match the indexed/non-indexed arguments on `event`. * @default false @@ -64,10 +64,10 @@ export type GetLogsParameters< strict?: TStrict | undefined } | { - event?: never | undefined - events?: never | undefined - args?: never | undefined - strict?: never | undefined + event?: undefined + events?: undefined + args?: undefined + strict?: undefined } ) & ( @@ -76,11 +76,11 @@ export type GetLogsParameters< fromBlock?: TFromBlock | BlockNumber | BlockTag | undefined /** Block number or tag before which to include logs */ toBlock?: TToBlock | BlockNumber | BlockTag | undefined - blockHash?: never | undefined + blockHash?: undefined } | { - fromBlock?: never | undefined - toBlock?: never | undefined + fromBlock?: undefined + toBlock?: undefined /** Hash of block to include logs from */ blockHash?: Hash | undefined } diff --git a/src/actions/public/getProof.ts b/src/actions/public/getProof.ts index e5dd1c8893..96a5646868 100644 --- a/src/actions/public/getProof.ts +++ b/src/actions/public/getProof.ts @@ -25,10 +25,10 @@ export type GetProofParameters = { | { /** The block number. */ blockNumber?: bigint | undefined - blockTag?: never | undefined + blockTag?: undefined } | { - blockNumber?: never | undefined + blockNumber?: undefined /** * The block tag. * @default 'latest' diff --git a/src/actions/public/getStorageAt.ts b/src/actions/public/getStorageAt.ts index 5c6227ccd6..d23a5b020f 100644 --- a/src/actions/public/getStorageAt.ts +++ b/src/actions/public/getStorageAt.ts @@ -17,12 +17,12 @@ export type GetStorageAtParameters = { slot: Hex } & ( | { - blockNumber?: never | undefined + blockNumber?: undefined blockTag?: BlockTag | undefined } | { blockNumber?: bigint | undefined - blockTag?: never | undefined + blockTag?: undefined } ) diff --git a/src/actions/public/getTransaction.ts b/src/actions/public/getTransaction.ts index 66a1fe8682..de4e266d95 100644 --- a/src/actions/public/getTransaction.ts +++ b/src/actions/public/getTransaction.ts @@ -21,34 +21,34 @@ export type GetTransactionParameters = | { /** The block hash */ blockHash: Hash - blockNumber?: never | undefined - blockTag?: never | undefined - hash?: never | undefined + blockNumber?: undefined + blockTag?: undefined + hash?: undefined /** The index of the transaction on the block. */ index: number } | { - blockHash?: never | undefined + blockHash?: undefined /** The block number */ blockNumber: bigint - blockTag?: never | undefined - hash?: never | undefined + blockTag?: undefined + hash?: undefined /** The index of the transaction on the block. */ index: number } | { - blockHash?: never | undefined - blockNumber?: never | undefined + blockHash?: undefined + blockNumber?: undefined /** The block tag. */ blockTag: TBlockTag | BlockTag - hash?: never | undefined + hash?: undefined /** The index of the transaction on the block. */ index: number } | { - blockHash?: never | undefined - blockNumber?: never | undefined - blockTag?: never | undefined + blockHash?: undefined + blockNumber?: undefined + blockTag?: undefined /** The hash of the transaction. */ hash: Hash index?: number | undefined diff --git a/src/actions/public/getTransactionConfirmations.ts b/src/actions/public/getTransactionConfirmations.ts index d1aed774ff..ed876f42f7 100644 --- a/src/actions/public/getTransactionConfirmations.ts +++ b/src/actions/public/getTransactionConfirmations.ts @@ -21,10 +21,10 @@ export type GetTransactionConfirmationsParameters< | { /** The transaction hash. */ hash: Hash - transactionReceipt?: never | undefined + transactionReceipt?: undefined } | { - hash?: never | undefined + hash?: undefined /** The transaction receipt. */ transactionReceipt: FormattedTransactionReceipt } diff --git a/src/actions/public/getTransactionCount.ts b/src/actions/public/getTransactionCount.ts index e0c3a5dbff..ed0a5b0ddf 100644 --- a/src/actions/public/getTransactionCount.ts +++ b/src/actions/public/getTransactionCount.ts @@ -23,10 +23,10 @@ export type GetTransactionCountParameters = { | { /** The block number. */ blockNumber?: bigint | undefined - blockTag?: never | undefined + blockTag?: undefined } | { - blockNumber?: never | undefined + blockNumber?: undefined /** The block tag. Defaults to 'latest'. */ blockTag?: BlockTag | undefined } diff --git a/src/actions/public/watchEvent.ts b/src/actions/public/watchEvent.ts index 5009982886..a061ffe292 100644 --- a/src/actions/public/watchEvent.ts +++ b/src/actions/public/watchEvent.ts @@ -81,7 +81,7 @@ export type WatchEventParameters< ( | { event: TAbiEvent - events?: never | undefined + events?: undefined args?: MaybeExtractEventArgsFromAbi | undefined /** * Whether or not the logs must match the indexed/non-indexed arguments on `event`. @@ -90,9 +90,9 @@ export type WatchEventParameters< strict?: TStrict | undefined } | { - event?: never | undefined + event?: undefined events?: TAbiEvents | undefined - args?: never | undefined + args?: undefined /** * Whether or not the logs must match the indexed/non-indexed arguments on `event`. * @default false @@ -100,10 +100,10 @@ export type WatchEventParameters< strict?: TStrict | undefined } | { - event?: never | undefined - events?: never | undefined - args?: never | undefined - strict?: never | undefined + event?: undefined + events?: undefined + args?: undefined + strict?: undefined } ) diff --git a/src/clients/transports/fallback.ts b/src/clients/transports/fallback.ts index d6c3744815..f084fce526 100644 --- a/src/clients/transports/fallback.ts +++ b/src/clients/transports/fallback.ts @@ -20,13 +20,13 @@ export type OnResponseFn = ( transport: ReturnType } & ( | { - error?: never | undefined + error?: undefined response: unknown status: 'success' } | { error: Error - response?: never | undefined + response?: undefined status: 'error' } ), diff --git a/src/errors/base.ts b/src/errors/base.ts index 60e1ece294..9d44ba05c3 100644 --- a/src/errors/base.ts +++ b/src/errors/base.ts @@ -6,12 +6,12 @@ type BaseErrorParameters = { metaMessages?: string[] | undefined } & ( | { - cause?: never | undefined + cause?: undefined details?: string | undefined } | { cause: BaseError | Error | undefined - details?: never | undefined + details?: undefined } ) diff --git a/src/op-stack/actions/buildDepositTransaction.ts b/src/op-stack/actions/buildDepositTransaction.ts index cbd9084a00..f890b73bc7 100644 --- a/src/op-stack/actions/buildDepositTransaction.ts +++ b/src/op-stack/actions/buildDepositTransaction.ts @@ -57,7 +57,7 @@ export type BuildDepositTransactionParameters< /** Whether or not this is a contract deployment transaction. */ isCreation: true /** L2 Transaction recipient. Cannot exist for contract deployment transactions. */ - to?: never | undefined + to?: undefined } ) diff --git a/src/op-stack/types/deposit.ts b/src/op-stack/types/deposit.ts index db2d4238f0..80864fcd3a 100644 --- a/src/op-stack/types/deposit.ts +++ b/src/op-stack/types/deposit.ts @@ -23,6 +23,6 @@ export type DepositRequest = { /** Whether or not this is a contract deployment transaction. */ isCreation: true /** L2 Transaction recipient. Cannot exist for contract deployment transactions. */ - to?: never | undefined + to?: undefined } ) diff --git a/src/types/eip1193.ts b/src/types/eip1193.ts index e1d8896319..ee81f77325 100644 --- a/src/types/eip1193.ts +++ b/src/types/eip1193.ts @@ -548,11 +548,11 @@ export type PublicRpcSchema = [ | { fromBlock?: BlockNumber | BlockTag | undefined toBlock?: BlockNumber | BlockTag | undefined - blockHash?: never | undefined + blockHash?: undefined } | { - fromBlock?: never | undefined - toBlock?: never | undefined + fromBlock?: undefined + toBlock?: undefined blockHash?: Hash | undefined } ), @@ -1508,7 +1508,7 @@ export type EIP1193Parameters< : never } & (TRpcSchema[K] extends TRpcSchema[number] ? TRpcSchema[K]['Parameters'] extends undefined - ? { params?: never | undefined } + ? { params?: undefined } : { params: TRpcSchema[K]['Parameters'] } : never) > diff --git a/src/types/fee.ts b/src/types/fee.ts index 223edc9e71..69a1badadf 100644 --- a/src/types/fee.ts +++ b/src/types/fee.ts @@ -17,14 +17,14 @@ export type FeeHistory = { export type FeeValuesLegacy = { /** Base fee per gas. */ gasPrice: TQuantity - maxFeePerBlobGas?: never | undefined - maxFeePerGas?: never | undefined - maxPriorityFeePerGas?: never | undefined + maxFeePerBlobGas?: undefined + maxFeePerGas?: undefined + maxPriorityFeePerGas?: undefined } export type FeeValuesEIP1559 = { - gasPrice?: never | undefined - maxFeePerBlobGas?: never | undefined + gasPrice?: undefined + maxFeePerBlobGas?: undefined /** Total fee per gas in wei (gasPrice/baseFeePerGas + maxPriorityFeePerGas). */ maxFeePerGas: TQuantity /** Max priority fee per gas (in wei). */ diff --git a/src/types/filter.ts b/src/types/filter.ts index 2ca0ca732c..7bd5a7ad01 100644 --- a/src/types/filter.ts +++ b/src/types/filter.ts @@ -37,8 +37,8 @@ export type Filter< ? undefined extends TEventName ? { abi: TAbi - args?: never | undefined - eventName?: never | undefined + args?: undefined + eventName?: undefined strict: TStrict } : TArgs extends MaybeExtractEventArgsFromAbi @@ -50,14 +50,14 @@ export type Filter< } : { abi: TAbi - args?: never | undefined + args?: undefined eventName: TEventName strict: TStrict } : { - abi?: never | undefined - args?: never | undefined - eventName?: never | undefined - strict?: never | undefined + abi?: undefined + args?: undefined + eventName?: undefined + strict?: undefined }) : {}) diff --git a/src/types/rpc.ts b/src/types/rpc.ts index 8b727fee7a..e7afc51671 100644 --- a/src/types/rpc.ts +++ b/src/types/rpc.ts @@ -68,28 +68,28 @@ export type RpcTransaction = UnionOmit< > type SuccessResult = { - method?: never | undefined + method?: undefined result: T - error?: never | undefined + error?: undefined } type ErrorResult = { - method?: never | undefined - result?: never | undefined + method?: undefined + result?: undefined error: T } type Subscription = { method: 'eth_subscription' - error?: never | undefined - result?: never | undefined + error?: undefined + result?: undefined params: { subscription: string } & ( | { result: TResult - error?: never | undefined + error?: undefined } | { - result?: never | undefined + result?: undefined error: TError } ) diff --git a/src/types/transaction.ts b/src/types/transaction.ts index ff6f07ca3b..5323927a6e 100644 --- a/src/types/transaction.ts +++ b/src/types/transaction.ts @@ -112,11 +112,11 @@ export type TransactionLegacy< > = Omit, 'yParity'> & FeeValuesLegacy & { /** EIP-2930 Access List. */ - accessList?: never | undefined - blobVersionedHashes?: never | undefined + accessList?: undefined + blobVersionedHashes?: undefined /** Chain ID that this transaction is valid on. */ chainId?: TIndex | undefined - yParity?: never | undefined + yParity?: undefined type: TType } export type TransactionEIP2930< @@ -128,7 +128,7 @@ export type TransactionEIP2930< FeeValuesLegacy & { /** EIP-2930 Access List. */ accessList: AccessList - blobVersionedHashes?: never | undefined + blobVersionedHashes?: undefined /** Chain ID that this transaction is valid on. */ chainId: TIndex type: TType @@ -142,7 +142,7 @@ export type TransactionEIP1559< FeeValuesEIP1559 & { /** EIP-2930 Access List. */ accessList: AccessList - blobVersionedHashes?: never | undefined + blobVersionedHashes?: undefined /** Chain ID that this transaction is valid on. */ chainId: TIndex type: TType @@ -193,7 +193,7 @@ export type TransactionRequestLegacy< TTransactionType = 'legacy', > = TransactionRequestBase & ExactPartial> & { - accessList?: never | undefined + accessList?: undefined blobs?: undefined type?: TTransactionType | undefined } diff --git a/src/types/typedData.ts b/src/types/typedData.ts index ad9b158ca1..4d1d47c680 100644 --- a/src/types/typedData.ts +++ b/src/types/typedData.ts @@ -56,5 +56,5 @@ type EIP712DomainDefinition< domain: schema extends { EIP712Domain: infer domain } ? domain : Prettify - message?: never | undefined + message?: undefined } diff --git a/src/utils/encoding/toHex.ts b/src/utils/encoding/toHex.ts index 68d6e79603..ddb85adcfe 100644 --- a/src/utils/encoding/toHex.ts +++ b/src/utils/encoding/toHex.ts @@ -150,7 +150,7 @@ export type NumberToHexOpts = size: number } | { - signed?: never | undefined + signed?: undefined /** The size (in bytes) of the output hex value. */ size?: number | undefined } diff --git a/src/zksync/actions/getL1Balance.ts b/src/zksync/actions/getL1Balance.ts index 097354db2f..ba588c3bf0 100644 --- a/src/zksync/actions/getL1Balance.ts +++ b/src/zksync/actions/getL1Balance.ts @@ -24,10 +24,10 @@ export type GetL1BalanceParameters< | { /** The balance of the account at a block number. */ blockNumber?: bigint | undefined - blockTag?: never | undefined + blockTag?: undefined } | { - blockNumber?: never | undefined + blockNumber?: undefined /** The balance of the account at a block tag. */ blockTag?: BlockTag | undefined } diff --git a/src/zksync/actions/getL1TokenBalance.ts b/src/zksync/actions/getL1TokenBalance.ts index ec534f0bc9..bbf20e1a41 100644 --- a/src/zksync/actions/getL1TokenBalance.ts +++ b/src/zksync/actions/getL1TokenBalance.ts @@ -18,10 +18,10 @@ export type GetL1TokenBalanceParameters< | { /** The balance of the account at a block number. */ blockNumber?: bigint | undefined - blockTag?: never | undefined + blockTag?: undefined } | { - blockNumber?: never | undefined + blockNumber?: undefined /** The balance of the account at a block tag. */ blockTag?: BlockTag | undefined } diff --git a/src/zksync/types/transaction.ts b/src/zksync/types/transaction.ts index f8bb446e2a..93e293062b 100644 --- a/src/zksync/types/transaction.ts +++ b/src/zksync/types/transaction.ts @@ -238,7 +238,7 @@ export type TransactionRequestEIP712< TTransactionType = 'eip712', > = TransactionRequestBase & ExactPartial> & { - accessList?: never | undefined + accessList?: undefined gasPerPubdata?: bigint | undefined factoryDeps?: Hex[] | undefined paymaster?: Address | undefined From cfcc51ffe64914dcd805946a2dc8852bc5586d74 Mon Sep 17 00:00:00 2001 From: Tom Meagher Date: Tue, 4 Jun 2024 12:51:12 -0400 Subject: [PATCH 15/30] chore: remove sponsor --- site/vocs.config.tsx | 14 ++++---------- src/README.md | 6 ------ 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/site/vocs.config.tsx b/site/vocs.config.tsx index 4296a8ec8d..f9b50412f1 100644 --- a/site/vocs.config.tsx +++ b/site/vocs.config.tsx @@ -161,26 +161,20 @@ export default defineConfig({ image: 'https://raw.githubusercontent.com/wevm/.github/main/content/sponsors/spruce-light.svg', }, - { - name: 'rollup.id', - link: 'https://rollup.id', - image: - 'https://raw.githubusercontent.com/wevm/.github/main/content/sponsors/rollup.id-light.svg', - }, { name: 'Celo', link: 'https://celo.org', image: 'https://raw.githubusercontent.com/wevm/.github/main/content/sponsors/celo-light.svg', }, - ], - [ { name: 'Rainbow', link: 'https://rainbow.me', image: 'https://raw.githubusercontent.com/wevm/.github/main/content/sponsors/rainbow-light.svg', }, + ], + [ { name: 'Pimlico', link: 'https://pimlico.io', @@ -193,14 +187,14 @@ export default defineConfig({ image: 'https://raw.githubusercontent.com/wevm/.github/main/content/sponsors/zora-light.svg', }, - ], - [ { name: 'Lattice', link: 'https://lattice.xyz', image: 'https://raw.githubusercontent.com/wevm/.github/main/content/sponsors/lattice-light.svg', }, + ], + [ { name: 'Supa', link: 'https://twitter.com/supafinance', diff --git a/src/README.md b/src/README.md index f77238765c..295efe9135 100644 --- a/src/README.md +++ b/src/README.md @@ -168,12 +168,6 @@ Check out the following places for more viem-related content: Spruce logo - - - - rollup.id logo - - From cc05da82fc3530144c21744948dd6a454985c5fe Mon Sep 17 00:00:00 2001 From: awkweb Date: Tue, 4 Jun 2024 18:08:38 -0400 Subject: [PATCH 16/30] refactor: core types (#2369) * wip: transactions * chore: merge * chore: up types * chore: up size limit --- package.json | 2 +- src/celo/fees.test.ts | 5 +- src/celo/fees.ts | 1 - src/celo/formatters.test-d.ts | 2 +- src/celo/formatters.ts | 6 +- src/celo/serializers.ts | 1 - src/celo/types.ts | 185 ++++---- src/clients/transports/fallback.test.ts | 2 +- src/clients/transports/fallback.ts | 25 +- src/package.json | 2 +- src/types/block.ts | 32 +- src/types/chain.test-d.ts | 67 ++- src/types/chain.ts | 104 ++--- src/types/eip1193.ts | 4 +- src/types/fee.ts | 44 +- src/types/rpc.ts | 61 ++- src/types/transaction.ts | 423 +++++++++--------- src/types/transport.test-d.ts | 45 ++ src/types/transport.ts | 4 +- src/types/utils.ts | 18 +- src/utils/chain/extractChain.test.ts | 4 +- src/utils/chain/extractChain.ts | 4 +- .../transaction/getTransactionType.test-d.ts | 10 + src/utils/transaction/parseTransaction.ts | 4 +- src/zksync/actions/sendTransaction.ts | 3 +- test/src/anvil.ts | 17 +- test/tsconfig.json | 1 + 27 files changed, 599 insertions(+), 477 deletions(-) create mode 100644 src/types/transport.test-d.ts diff --git a/package.json b/package.json index 70cb90447f..a682902561 100644 --- a/package.json +++ b/package.json @@ -120,7 +120,7 @@ { "name": "viem/chains", "path": "./src/_esm/chains/index.js", - "limit": "28 kB", + "limit": "30 kB", "import": "*" }, { diff --git a/src/celo/fees.test.ts b/src/celo/fees.test.ts index e4a1527d8a..5983d6f892 100644 --- a/src/celo/fees.test.ts +++ b/src/celo/fees.test.ts @@ -1,7 +1,6 @@ import { describe, expect, test, vi } from 'vitest' import { celo } from '~viem/chains/index.js' import { http, createTestClient } from '~viem/index.js' -import type { ChainEstimateFeesPerGasFn } from '~viem/types/chain.js' const client = createTestClient({ transport: http(), @@ -10,8 +9,8 @@ const client = createTestClient({ }) describe('celo/fees', () => { - const celoestimateFeesPerGasFn = celo.fees - .estimateFeesPerGas as ChainEstimateFeesPerGasFn + const celoestimateFeesPerGasFn = celo.fees.estimateFeesPerGas + if (typeof celoestimateFeesPerGasFn !== 'function') return test("doesn't call the client when feeCurrency is not provided", async () => { const requestMock = vi.spyOn(client, 'request') diff --git a/src/celo/fees.ts b/src/celo/fees.ts index 8be6b495c0..7329f71687 100644 --- a/src/celo/fees.ts +++ b/src/celo/fees.ts @@ -5,7 +5,6 @@ import type { ChainFees, Hex, } from '../index.js' - import type { formatters } from './formatters.js' export const fees: ChainFees = { diff --git a/src/celo/formatters.test-d.ts b/src/celo/formatters.test-d.ts index f64c40606c..e83cc9ddc4 100644 --- a/src/celo/formatters.test-d.ts +++ b/src/celo/formatters.test-d.ts @@ -25,7 +25,7 @@ describe('block', () => { Assign< ExactPartial, CeloBlockOverrides & { - transactions: `0x${string}`[] | CeloRpcTransaction[] + transactions: readonly `0x${string}`[] | readonly CeloRpcTransaction[] } > >() diff --git a/src/celo/formatters.ts b/src/celo/formatters.ts index 6f7defe996..758a900ead 100644 --- a/src/celo/formatters.ts +++ b/src/celo/formatters.ts @@ -22,10 +22,10 @@ export const formatters = { exclude: ['difficulty', 'gasLimit', 'mixHash', 'nonce', 'uncles'], format( args: CeloBlockOverrides & { - transactions: Hash[] | CeloRpcTransaction[] + transactions: readonly Hash[] | readonly CeloRpcTransaction[] }, ): CeloBlockOverrides & { - transactions: Hash[] | CeloTransaction[] + transactions: readonly Hash[] | readonly CeloTransaction[] } { const transactions = args.transactions?.map((transaction) => { if (typeof transaction === 'string') return transaction @@ -41,7 +41,7 @@ export const formatters = { } : {}), } - }) as Hash[] | CeloTransaction[] + }) as readonly Hash[] | readonly CeloTransaction[] return { randomness: args.randomness, transactions, diff --git a/src/celo/serializers.ts b/src/celo/serializers.ts index 243403557b..b126d0c325 100644 --- a/src/celo/serializers.ts +++ b/src/celo/serializers.ts @@ -27,7 +27,6 @@ export function serializeTransaction( ) { if (isCIP64(transaction)) return serializeTransactionCIP64(transaction, signature) - return serializeTransaction_(transaction, signature) } diff --git a/src/celo/types.ts b/src/celo/types.ts index a57cc7afd1..3f869dcabc 100644 --- a/src/celo/types.ts +++ b/src/celo/types.ts @@ -7,19 +7,19 @@ import type { Index, Quantity, RpcBlock, - RpcTransactionRequest as RpcTransactionRequest_, - RpcTransaction as RpcTransaction_, TransactionType, + RpcTransaction as core_RpcTransaction, + RpcTransactionRequest as core_RpcTransactionRequest, } from '../types/rpc.js' import type { AccessList, TransactionBase, TransactionRequestBase, - TransactionRequest as TransactionRequest_, TransactionSerializable, TransactionSerializableBase, TransactionSerialized, - Transaction as Transaction_, + Transaction as core_Transaction, + TransactionRequest as core_TransactionRequest, } from '../types/transaction.js' import type { ExactPartial, NeverBy, OneOf } from '../types/utils.js' @@ -36,15 +36,16 @@ export type CeloBlockOverrides = { revealed: Hex } } + export type CeloBlock< - TIncludeTransactions extends boolean = boolean, - TBlockTag extends BlockTag = BlockTag, + includeTransactions extends boolean = boolean, + blockTag extends BlockTag = BlockTag, > = NeverBy< Block< bigint, - TIncludeTransactions, - TBlockTag, - CeloTransaction + includeTransactions, + blockTag, + CeloTransaction >, CeloBlockExclude > & @@ -57,31 +58,31 @@ export type CeloRpcBlockOverrides = { } } export type CeloRpcBlock< - TBlockTag extends BlockTag = BlockTag, - TIncludeTransactions extends boolean = boolean, + blockTag extends BlockTag = BlockTag, + includeTransactions extends boolean = boolean, > = NeverBy< RpcBlock< - TBlockTag, - TIncludeTransactions, - RpcTransaction + blockTag, + includeTransactions, + RpcTransaction >, CeloBlockExclude > & CeloRpcBlockOverrides -export type CeloRpcTransaction = - | RpcTransaction - | RpcTransactionCIP42 - | RpcTransactionCIP64 +export type CeloRpcTransaction = + | RpcTransaction + | RpcTransactionCIP42 + | RpcTransactionCIP64 export type CeloRpcTransactionRequest = | RpcTransactionRequest | RpcTransactionRequestCIP64 -export type CeloTransaction = - | Transaction - | TransactionCIP42 - | TransactionCIP64 +export type CeloTransaction = + | Transaction + | TransactionCIP42 + | TransactionCIP64 export type CeloTransactionRequest = | TransactionRequest @@ -100,111 +101,103 @@ export type CeloTransactionSerialized< export type CeloTransactionType = TransactionType | 'cip42' | 'cip64' -type RpcTransaction = - RpcTransaction_ & { +type RpcTransaction = + core_RpcTransaction & { feeCurrency: Address | null gatewayFee: Hex | null gatewayFeeRecipient: Address | null } -type RpcTransactionRequest = RpcTransactionRequest_ & { +type RpcTransactionRequest = core_RpcTransactionRequest & { feeCurrency?: Address | undefined } -export type RpcTransactionCIP42 = Omit< - TransactionBase, +export type RpcTransactionCIP42 = Omit< + TransactionBase, 'typeHex' -> & - FeeValuesEIP1559 & { - feeCurrency: Address | null - gatewayFee: Hex | null - gatewayFeeRecipient: Address | null - type: '0x7c' - } +> & { + feeCurrency: Address | null + gatewayFee: Hex | null + gatewayFeeRecipient: Address | null + type: '0x7c' +} & FeeValuesEIP1559 -export type RpcTransactionCIP64 = Omit< - TransactionBase, +export type RpcTransactionCIP64 = Omit< + TransactionBase, 'typeHex' -> & - FeeValuesEIP1559 & { - feeCurrency: Address | null - gatewayFee?: undefined - gatewayFeeRecipient?: undefined - type: '0x7b' - } +> & { + feeCurrency: Address | null + gatewayFee?: undefined + gatewayFeeRecipient?: undefined + type: '0x7b' +} & FeeValuesEIP1559 export type RpcTransactionRequestCIP64 = TransactionRequestBase< Quantity, Index -> & - ExactPartial> & { - accessList?: AccessList | undefined - feeCurrency?: Address | undefined - type?: '0x7b' | undefined - } +> & { + accessList?: AccessList | undefined + feeCurrency?: Address | undefined + type?: '0x7b' | undefined +} & ExactPartial> -type Transaction = Transaction_< +type Transaction = core_Transaction< bigint, number, - TPending + isPending > & { feeCurrency: Address | null gatewayFee?: undefined gatewayFeeRecipient?: undefined } -export type TransactionCIP42 = - TransactionBase & - FeeValuesEIP1559 & { - feeCurrency: Address | null - gatewayFee: bigint | null - gatewayFeeRecipient: Address | null - type: 'cip42' - } - -export type TransactionCIP64 = - TransactionBase & - FeeValuesEIP1559 & { - feeCurrency: Address | null - gatewayFee?: undefined - gatewayFeeRecipient?: undefined - type: 'cip64' - } - -type TransactionRequest = TransactionRequest_ & { +export type TransactionCIP42 = + TransactionBase & { + feeCurrency: Address | null + gatewayFee: bigint | null + gatewayFeeRecipient: Address | null + type: 'cip42' + } & FeeValuesEIP1559 + +export type TransactionCIP64 = + TransactionBase & { + feeCurrency: Address | null + gatewayFee?: undefined + gatewayFeeRecipient?: undefined + type: 'cip64' + } & FeeValuesEIP1559 + +type TransactionRequest = core_TransactionRequest & { feeCurrency?: Address | undefined } -export type TransactionRequestCIP64 = TransactionRequestBase & - ExactPartial & { - accessList?: AccessList | undefined - feeCurrency?: Address | undefined - type?: 'cip64' | undefined - } +export type TransactionRequestCIP64 = TransactionRequestBase & { + accessList?: AccessList | undefined + feeCurrency?: Address | undefined + type?: 'cip64' | undefined +} & ExactPartial export type TransactionSerializableCIP42< - TQuantity = bigint, - TIndex = number, -> = TransactionSerializableBase & - ExactPartial> & { - accessList?: AccessList | undefined - feeCurrency?: Address | undefined - gatewayFeeRecipient?: Address | undefined - gatewayFee?: TQuantity | undefined - chainId: number - type?: 'cip42' | undefined - } + quantity = bigint, + index = number, +> = TransactionSerializableBase & { + accessList?: AccessList | undefined + feeCurrency?: Address | undefined + gatewayFeeRecipient?: Address | undefined + gatewayFee?: quantity | undefined + chainId: number + type?: 'cip42' | undefined +} & ExactPartial> export type TransactionSerializableCIP64< - TQuantity = bigint, - TIndex = number, -> = TransactionSerializableBase & - ExactPartial> & { - accessList?: AccessList | undefined - feeCurrency?: Address | undefined - chainId: number - type?: 'cip64' | undefined - } + quantity = bigint, + index = number, +> = TransactionSerializableBase & { + accessList?: AccessList | undefined + feeCurrency?: Address | undefined + chainId: number + type?: 'cip64' | undefined +} & ExactPartial> export type TransactionSerializedCIP42 = `0x7c${string}` export type TransactionSerializedCIP64 = `0x7b${string}` diff --git a/src/clients/transports/fallback.test.ts b/src/clients/transports/fallback.test.ts index 3d3ad58907..5dae4c639d 100644 --- a/src/clients/transports/fallback.test.ts +++ b/src/clients/transports/fallback.test.ts @@ -750,7 +750,7 @@ describe('rankTransports', () => { const transport2 = http(server2.url, { key: '2' }) const transport3 = http(server3.url, { key: '3' }) - const rankedTransports: Transport[][] = [] + const rankedTransports: (readonly Transport[])[] = [] rankTransports({ chain: localhost, diff --git a/src/clients/transports/fallback.ts b/src/clients/transports/fallback.ts index f084fce526..0c7b28a628 100644 --- a/src/clients/transports/fallback.ts +++ b/src/clients/transports/fallback.ts @@ -80,20 +80,21 @@ export type FallbackTransportConfig = { retryDelay?: TransportConfig['retryDelay'] | undefined } -export type FallbackTransport = - Transport< - 'fallback', - { - onResponse: (fn: OnResponseFn) => void - transports: { - [key in keyof transports]: ReturnType - } +export type FallbackTransport< + transports extends readonly Transport[] = readonly Transport[], +> = Transport< + 'fallback', + { + onResponse: (fn: OnResponseFn) => void + transports: { + [key in keyof transports]: ReturnType } - > + } +> export type FallbackTransportErrorType = CreateTransportErrorType | ErrorType -export function fallback( +export function fallback( transports_: transports, config: FallbackTransportConfig = {}, ): FallbackTransport { @@ -205,10 +206,10 @@ export function rankTransports({ }: { chain?: Chain | undefined interval: RankOptions['interval'] - onTransports: (transports: Transport[]) => void + onTransports: (transports: readonly Transport[]) => void sampleCount?: RankOptions['sampleCount'] | undefined timeout?: RankOptions['timeout'] | undefined - transports: Transport[] + transports: readonly Transport[] weights?: RankOptions['weights'] | undefined }) { const { stability: stabilityWeight = 0.7, latency: latencyWeight = 0.3 } = diff --git a/src/package.json b/src/package.json index 09584538ce..f3b5cc2e83 100644 --- a/src/package.json +++ b/src/package.json @@ -137,5 +137,5 @@ "url": "https://github.com/sponsors/wevm" } ], - "keywords": ["eth", "ethereum", "dapps", "wallet", "web3"] + "keywords": ["eth", "ethereum", "dapps", "wallet", "web3", "typescript"] } diff --git a/src/types/block.ts b/src/types/block.ts index f40f9934a7..ef4b6dab8b 100644 --- a/src/types/block.ts +++ b/src/types/block.ts @@ -5,7 +5,7 @@ import type { Transaction } from './transaction.js' import type { Withdrawal } from './withdrawal.js' export type Block< - TQuantity = bigint, + quantity = bigint, TIncludeTransactions extends boolean = boolean, TBlockTag extends BlockTag = BlockTag, TTransaction = Transaction< @@ -15,19 +15,19 @@ export type Block< >, > = { /** Base fee per gas */ - baseFeePerGas: TQuantity | null + baseFeePerGas: quantity | null /** Total used blob gas by all transactions in this block */ - blobGasUsed: TQuantity + blobGasUsed: quantity /** Difficulty for this block */ - difficulty: TQuantity + difficulty: quantity /** Excess blob gas */ - excessBlobGas: TQuantity + excessBlobGas: quantity /** "Extra data" field of this block */ extraData: Hex /** Maximum gas allowed in this block */ - gasLimit: TQuantity + gasLimit: quantity /** Total used gas by all transactions in this block */ - gasUsed: TQuantity + gasUsed: quantity /** Block hash or `null` if pending */ hash: TBlockTag extends 'pending' ? null : Hash /** Logs bloom filter or `null` if pending */ @@ -39,7 +39,7 @@ export type Block< /** Proof-of-work hash or `null` if pending */ nonce: TBlockTag extends 'pending' ? null : Hex /** Block number or `null` if pending */ - number: TBlockTag extends 'pending' ? null : TQuantity + number: TBlockTag extends 'pending' ? null : quantity /** Parent block hash */ parentHash: Hash /** Root of the this block’s receipts trie */ @@ -48,13 +48,13 @@ export type Block< /** SHA3 of the uncles data in this block */ sha3Uncles: Hash /** Size of this block in bytes */ - size: TQuantity + size: quantity /** Root of this block’s final state trie */ stateRoot: Hash /** Unix timestamp of when this block was collated */ - timestamp: TQuantity + timestamp: quantity /** Total difficulty of the chain until this block */ - totalDifficulty: TQuantity | null + totalDifficulty: quantity | null /** List of transaction objects or hashes */ transactions: TIncludeTransactions extends true ? TTransaction[] : Hash[] /** Root of this block’s transaction trie */ @@ -67,13 +67,13 @@ export type Block< withdrawalsRoot?: Hex | undefined } -export type BlockIdentifier = { +export type BlockIdentifier = { /** Whether or not to throw an error if the block is not in the canonical chain as described below. Only allowed in conjunction with the blockHash tag. Defaults to false. */ requireCanonical?: boolean | undefined } & ( | { /** The block in the canonical chain with this number */ - blockNumber: BlockNumber + blockNumber: BlockNumber } | { /** The block uniquely identified by this hash. The `blockNumber` and `blockHash` properties are mutually exclusive; exactly one of them must be set. */ @@ -81,12 +81,12 @@ export type BlockIdentifier = { } ) -export type BlockNumber = TQuantity +export type BlockNumber = quantity export type BlockTag = 'latest' | 'earliest' | 'pending' | 'safe' | 'finalized' export type Uncle< - TQuantity = bigint, + quantity = bigint, TIncludeTransactions extends boolean = boolean, TBlockTag extends BlockTag = BlockTag, TTransaction = Transaction< @@ -94,4 +94,4 @@ export type Uncle< number, TBlockTag extends 'pending' ? true : false >, -> = Block +> = Block diff --git a/src/types/chain.test-d.ts b/src/types/chain.test-d.ts index 9fda3f5fc2..e55f23f090 100644 --- a/src/types/chain.test-d.ts +++ b/src/types/chain.test-d.ts @@ -1,8 +1,16 @@ import { expectTypeOf, test } from 'vitest' +import type { base } from '~viem/chains/index.js' +import type { celo } from '../chains/definitions/celo.js' import type { mainnet } from '../chains/definitions/mainnet.js' import type { optimism } from '../chains/definitions/optimism.js' -import type { Chain, DeriveChain } from './chain.js' +import type { + Chain, + DeriveChain, + ExtractChainFormatterParameters, + GetChainParameter, +} from './chain.js' +import type { TransactionRequest } from './transaction.js' test('DeriveChain', () => { type Result = DeriveChain @@ -20,3 +28,60 @@ test('DeriveChain', () => { type Result5 = DeriveChain expectTypeOf().toEqualTypeOf() }) + +test('ExtractChainFormatterParameters', () => { + type Result = ExtractChainFormatterParameters< + typeof mainnet, + 'transactionRequest', + TransactionRequest + > + expectTypeOf().toEqualTypeOf< + 'legacy' | 'eip2930' | 'eip1559' | 'eip4844' | undefined + >() + + type Result2 = ExtractChainFormatterParameters< + typeof base, + 'transactionRequest', + TransactionRequest + > + expectTypeOf().toEqualTypeOf< + 'legacy' | 'eip2930' | 'eip1559' | 'eip4844' | undefined + >() + + type Result3 = ExtractChainFormatterParameters< + typeof celo, + 'transactionRequest', + TransactionRequest + > + expectTypeOf().toEqualTypeOf< + 'legacy' | 'eip2930' | 'eip1559' | 'eip4844' | 'cip64' | undefined + >() + expectTypeOf().toEqualTypeOf< + `0x${string}` | undefined + >() +}) + +test('GetChainParameter', () => { + type Result = GetChainParameter + expectTypeOf().toEqualTypeOf<{ chain: Chain | null | undefined }>() + + type Result2 = GetChainParameter + expectTypeOf().toEqualTypeOf<{ chain?: Chain | null | undefined }>() + + type Result3 = GetChainParameter + expectTypeOf().toEqualTypeOf<{ chain: Chain | null }>() + + type Result4 = GetChainParameter + expectTypeOf().toEqualTypeOf<{ chain: Chain | null }>() + + type Result5 = GetChainParameter + expectTypeOf().toEqualTypeOf<{ chain?: undefined | null }>() + + type Result6 = GetChainParameter + expectTypeOf().toEqualTypeOf<{ chain?: undefined | null }>() + + type Result7 = GetChainParameter + expectTypeOf().toEqualTypeOf<{ + chain?: typeof optimism | undefined | null + }>() +}) diff --git a/src/types/chain.ts b/src/types/chain.ts index 2d652f4c10..2219ffead4 100644 --- a/src/types/chain.ts +++ b/src/types/chain.ts @@ -61,41 +61,12 @@ export type Chain< /** Custom chain data. */ custom?: custom | undefined - /** - * Modifies how chain data structures (ie. Blocks, Transactions, etc) - * are formatted & typed. - */ - formatters?: formatters | undefined - /** Modifies how data (ie. Transactions) is serialized. */ - serializers?: ChainSerializers | undefined /** Modifies how fees are derived. */ fees?: ChainFees | undefined -} - -///////////////////////////////////////////////////////////////////// -// Constants - -type ChainBlockExplorer = { - name: string - url: string - apiUrl?: string | undefined -} - -export type ChainContract = { - address: Address - blockCreated?: number | undefined -} - -type ChainNativeCurrency = { - name: string - /** 2-6 characters long */ - symbol: string - decimals: number -} - -type ChainRpcUrls = { - http: readonly string[] - webSocket?: readonly string[] | undefined + /** Modifies how data is formatted and typed (e.g. blocks and transactions) */ + formatters?: formatters | undefined + /** Modifies how data is serialized (e.g. transactions). */ + serializers?: ChainSerializers | undefined } ///////////////////////////////////////////////////////////////////// @@ -129,17 +100,13 @@ export type ChainFees< * Overrides the return value in the [`estimateFeesPerGas` Action](/docs/actions/public/estimateFeesPerGas). */ estimateFeesPerGas?: - | ChainEstimateFeesPerGasFn | bigint + | (( + args: ChainEstimateFeesPerGasFnParameters, + ) => Promise) | undefined } -export type ChainEstimateFeesPerGasFn< - formatters extends ChainFormatters | undefined = ChainFormatters | undefined, -> = ( - args: ChainEstimateFeesPerGasFnParameters, -) => Promise - export type ChainFormatters = { /** Modifies how the Block structure is formatted & typed. */ block?: ChainFormatter<'block'> | undefined @@ -158,18 +125,18 @@ export type ChainFormatter = { export type ChainSerializers< formatters extends ChainFormatters | undefined = undefined, + /// + transaction extends + TransactionSerializableGeneric = formatters extends ChainFormatters + ? formatters['transactionRequest'] extends ChainFormatter + ? TransactionSerializableGeneric & + Parameters[0] + : TransactionSerializable + : TransactionSerializable, > = { /** Modifies how Transactions are serialized. */ transaction?: - | SerializeTransactionFn< - formatters extends ChainFormatters - ? formatters['transactionRequest'] extends ChainFormatter - ? TransactionSerializableGeneric & - Parameters[0] - : TransactionSerializable - : TransactionSerializable, - TransactionSerializedGeneric - > + | SerializeTransactionFn | undefined } @@ -201,24 +168,15 @@ export type ChainFeesFnParameters< export type ChainEstimateFeesPerGasFnParameters< formatters extends ChainFormatters | undefined = ChainFormatters | undefined, > = { - /** - * A function to multiply the base fee based on the `baseFeeMultiplier` value. - */ + /** A function to multiply the base fee based on the `baseFeeMultiplier` value. */ multiply(x: bigint): bigint - /** - * The type of fees to return. - */ + /** The type of fees to return. */ type: FeeValuesType } & ChainFeesFnParameters ///////////////////////////////////////////////////////////////////// // Utils -export type ExtractChain< - chains extends readonly Chain[], - chainId extends Chain['id'], -> = Extract - export type ExtractChainFormatterExclude< chain extends Chain | undefined, type extends keyof ChainFormatters, @@ -267,3 +225,29 @@ export type GetChainParameter< > = IsUndefined extends true ? { chain: chainOverride | null } : { chain?: chainOverride | null | undefined } + +///////////////////////////////////////////////////////////////////// +// Constants + +type ChainBlockExplorer = { + name: string + url: string + apiUrl?: string | undefined +} + +export type ChainContract = { + address: Address + blockCreated?: number | undefined +} + +type ChainNativeCurrency = { + name: string + /** 2-6 characters long */ + symbol: string + decimals: number +} + +type ChainRpcUrls = { + http: readonly string[] + webSocket?: readonly string[] | undefined +} diff --git a/src/types/eip1193.ts b/src/types/eip1193.ts index ee81f77325..5a7fc58a5c 100644 --- a/src/types/eip1193.ts +++ b/src/types/eip1193.ts @@ -366,7 +366,7 @@ export type PublicRpcSchema = [ | [ transaction: TransactionRequest, block: BlockNumber | BlockTag, - RpcStateOverride, + stateOverride: RpcStateOverride, ] ReturnType: Quantity }, @@ -1237,7 +1237,7 @@ export type WalletRpcSchema = [ | [ transaction: TransactionRequest, block: BlockNumber | BlockTag, - RpcStateOverride, + stateOverride: RpcStateOverride, ] ReturnType: Quantity }, diff --git a/src/types/fee.ts b/src/types/fee.ts index 69a1badadf..62b855cfd3 100644 --- a/src/types/fee.ts +++ b/src/types/fee.ts @@ -1,48 +1,50 @@ -import type { Assign, OneOf } from './utils.js' +import type { OneOf } from './utils.js' -export type FeeHistory = { +export type FeeHistory = { /** * An array of block base fees per gas (in wei). This includes the next block after * the newest of the returned range, because this value can be derived from the newest block. * Zeroes are returned for pre-EIP-1559 blocks. */ - baseFeePerGas: TQuantity[] + baseFeePerGas: quantity[] /** An array of block gas used ratios. These are calculated as the ratio of gasUsed and gasLimit. */ gasUsedRatio: number[] /** Lowest number block of the returned range. */ - oldestBlock: TQuantity + oldestBlock: quantity /** An array of effective priority fees (in wei) per gas data points from a single block. All zeroes are returned if the block is empty. */ - reward?: TQuantity[][] | undefined + reward?: quantity[][] | undefined } -export type FeeValuesLegacy = { +export type FeeValuesLegacy = { /** Base fee per gas. */ - gasPrice: TQuantity + gasPrice: quantity maxFeePerBlobGas?: undefined maxFeePerGas?: undefined maxPriorityFeePerGas?: undefined } -export type FeeValuesEIP1559 = { +export type FeeValuesEIP1559 = { gasPrice?: undefined maxFeePerBlobGas?: undefined /** Total fee per gas in wei (gasPrice/baseFeePerGas + maxPriorityFeePerGas). */ - maxFeePerGas: TQuantity + maxFeePerGas: quantity /** Max priority fee per gas (in wei). */ - maxPriorityFeePerGas: TQuantity + maxPriorityFeePerGas: quantity } -export type FeeValuesEIP4844 = Assign< - FeeValuesEIP1559, - { - /** The maximum total fee per gas the sender is willing to pay for blob gas (in wei). */ - maxFeePerBlobGas: TQuantity - } -> +export type FeeValuesEIP4844 = { + gasPrice?: undefined + /** Maximum total fee per gas sender is willing to pay for blob gas (in wei). */ + maxFeePerBlobGas: quantity + /** Total fee per gas in wei (gasPrice/baseFeePerGas + maxPriorityFeePerGas). */ + maxFeePerGas: quantity + /** Max priority fee per gas (in wei). */ + maxPriorityFeePerGas: quantity +} -export type FeeValues = OneOf< - | FeeValuesLegacy - | FeeValuesEIP1559 - | FeeValuesEIP4844 +export type FeeValues = OneOf< + | FeeValuesLegacy + | FeeValuesEIP1559 + | FeeValuesEIP4844 > export type FeeValuesType = 'legacy' | 'eip1559' | 'eip4844' diff --git a/src/types/rpc.ts b/src/types/rpc.ts index e7afc51671..add792a9f2 100644 --- a/src/types/rpc.ts +++ b/src/types/rpc.ts @@ -1,4 +1,5 @@ import type { Address } from 'abitype' + import type { Block, BlockIdentifier, @@ -21,7 +22,7 @@ import type { TransactionRequestEIP4844, TransactionRequestLegacy, } from './transaction.js' -import type { OneOf, UnionOmit, UnionPartialBy } from './utils.js' +import type { Omit, OneOf, PartialBy } from './utils.js' export type Index = `0x${string}` export type Quantity = `0x${string}` @@ -52,47 +53,49 @@ export type RpcTransactionRequest = OneOf< | TransactionRequestEIP1559 | TransactionRequestEIP4844 > -export type RpcTransaction = UnionOmit< - UnionPartialBy< - OneOf< - | TransactionLegacy - | TransactionEIP2930 - | TransactionEIP1559 - | TransactionEIP4844 - >, - // `yParity` is optional on the RPC type as some nodes do not return it - // for 1559 & 2930 transactions (they should!). - 'yParity' - >, - 'typeHex' +// `yParity` is optional on the RPC type as some nodes do not return it +// for 1559 & 2930 transactions (they should!). +export type RpcTransaction = OneOf< + | Omit, 'typeHex'> + | PartialBy< + Omit, 'typeHex'>, + 'yParity' + > + | PartialBy< + Omit, 'typeHex'>, + 'yParity' + > + | PartialBy< + Omit, 'typeHex'>, + 'yParity' + > > -type SuccessResult = { +type SuccessResult = { method?: undefined - result: T + result: result error?: undefined } -type ErrorResult = { +type ErrorResult = { method?: undefined result?: undefined - error: T + error: error } -type Subscription = { +type Subscription = { method: 'eth_subscription' error?: undefined result?: undefined - params: { - subscription: string - } & ( + params: | { - result: TResult + subscription: string + result: result error?: undefined } | { + subscription: string result?: undefined - error: TError + error: error } - ) } export type RpcRequest = { @@ -102,14 +105,10 @@ export type RpcRequest = { id?: number | undefined } -export type RpcResponse = { +export type RpcResponse = { jsonrpc: `${number}` id: number -} & ( - | SuccessResult - | ErrorResult - | Subscription -) +} & (SuccessResult | ErrorResult | Subscription) /** A key-value mapping of slot and storage values (supposedly 32 bytes each) */ export type RpcStateMapping = { diff --git a/src/types/transaction.ts b/src/types/transaction.ts index 5323927a6e..04b9b7675c 100644 --- a/src/types/transaction.ts +++ b/src/types/transaction.ts @@ -13,11 +13,15 @@ import type { Branded, ExactPartial, IsNever, + Omit, OneOf, RequiredBy, } from './utils.js' -export type AccessList = { address: Address; storageKeys: Hex[] }[] +export type AccessList = readonly { + address: Address + storageKeys: readonly Hex[] +}[] export type TransactionType = | 'legacy' @@ -27,66 +31,66 @@ export type TransactionType = | (string & {}) export type TransactionReceipt< - TQuantity = bigint, - TIndex = number, - TStatus = 'success' | 'reverted', - TType = TransactionType, + quantity = bigint, + index = number, + status = 'success' | 'reverted', + type = TransactionType, > = { /** The actual value per gas deducted from the sender's account for blob gas. Only specified for blob transactions as defined by EIP-4844. */ - blobGasPrice?: TQuantity | undefined + blobGasPrice?: quantity | undefined /** The amount of blob gas used. Only specified for blob transactions as defined by EIP-4844. */ - blobGasUsed?: TQuantity | undefined + blobGasUsed?: quantity | undefined /** Hash of block containing this transaction */ blockHash: Hash /** Number of block containing this transaction */ - blockNumber: TQuantity + blockNumber: quantity /** Address of new contract or `null` if no contract was created */ contractAddress: Address | null | undefined /** Gas used by this and all preceding transactions in this block */ - cumulativeGasUsed: TQuantity + cumulativeGasUsed: quantity /** Pre-London, it is equal to the transaction's gasPrice. Post-London, it is equal to the actual gas price paid for inclusion. */ - effectiveGasPrice: TQuantity + effectiveGasPrice: quantity /** Transaction sender */ from: Address /** Gas used by this transaction */ - gasUsed: TQuantity + gasUsed: quantity /** List of log objects generated by this transaction */ - logs: Log[] + logs: Log[] /** Logs bloom filter */ logsBloom: Hex /** The post-transaction state root. Only specified for transactions included before the Byzantium upgrade. */ root?: Hash | undefined /** `success` if this transaction was successful or `reverted` if it failed */ - status: TStatus + status: status /** Transaction recipient or `null` if deploying a contract */ to: Address | null /** Hash of this transaction */ transactionHash: Hash /** Index of this transaction in the block */ - transactionIndex: TIndex + transactionIndex: index /** Transaction type */ - type: TType + type: type } export type TransactionBase< - TQuantity = bigint, - TIndex = number, - TPending extends boolean = boolean, + quantity = bigint, + index = number, + isPending extends boolean = boolean, > = { /** Hash of block containing this transaction or `null` if pending */ - blockHash: TPending extends true ? null : Hash + blockHash: isPending extends true ? null : Hash /** Number of block containing this transaction or `null` if pending */ - blockNumber: TPending extends true ? null : TQuantity + blockNumber: isPending extends true ? null : quantity /** Transaction sender */ from: Address /** Gas provided for transaction execution */ - gas: TQuantity + gas: quantity /** Hash of this transaction */ hash: Hash /** Contract code or a hashed method call */ input: Hex /** Unique number identifying this transaction */ - nonce: TIndex + nonce: index /** ECDSA signature r */ r: Hex /** ECDSA signature s */ @@ -94,233 +98,241 @@ export type TransactionBase< /** Transaction recipient or `null` if deploying a contract */ to: Address | null /** Index of this transaction in the block or `null` if pending */ - transactionIndex: TPending extends true ? null : TIndex + transactionIndex: isPending extends true ? null : index /** The type represented as hex. */ typeHex: Hex | null /** ECDSA recovery ID */ - v: TQuantity + v: quantity /** Value in wei sent with this transaction */ - value: TQuantity + value: quantity /** The parity of the y-value of the secp256k1 signature. */ - yParity: TIndex + yParity: index } + export type TransactionLegacy< - TQuantity = bigint, - TIndex = number, - TPending extends boolean = boolean, - TType = 'legacy', -> = Omit, 'yParity'> & - FeeValuesLegacy & { - /** EIP-2930 Access List. */ - accessList?: undefined - blobVersionedHashes?: undefined - /** Chain ID that this transaction is valid on. */ - chainId?: TIndex | undefined - yParity?: undefined - type: TType - } + quantity = bigint, + index = number, + isPending extends boolean = boolean, + type = 'legacy', +> = Omit, 'yParity'> & { + /** EIP-2930 Access List. */ + accessList?: undefined + blobVersionedHashes?: undefined + /** Chain ID that this transaction is valid on. */ + chainId?: index | undefined + yParity?: undefined + type: type +} & FeeValuesLegacy + export type TransactionEIP2930< - TQuantity = bigint, - TIndex = number, - TPending extends boolean = boolean, - TType = 'eip2930', -> = TransactionBase & - FeeValuesLegacy & { - /** EIP-2930 Access List. */ - accessList: AccessList - blobVersionedHashes?: undefined - /** Chain ID that this transaction is valid on. */ - chainId: TIndex - type: TType - } + quantity = bigint, + index = number, + isPending extends boolean = boolean, + type = 'eip2930', +> = TransactionBase & { + /** EIP-2930 Access List. */ + accessList: AccessList + blobVersionedHashes?: undefined + /** Chain ID that this transaction is valid on. */ + chainId: index + type: type +} & FeeValuesLegacy + export type TransactionEIP1559< - TQuantity = bigint, - TIndex = number, - TPending extends boolean = boolean, - TType = 'eip1559', -> = TransactionBase & - FeeValuesEIP1559 & { - /** EIP-2930 Access List. */ - accessList: AccessList - blobVersionedHashes?: undefined - /** Chain ID that this transaction is valid on. */ - chainId: TIndex - type: TType - } + quantity = bigint, + index = number, + isPending extends boolean = boolean, + type = 'eip1559', +> = TransactionBase & { + /** EIP-2930 Access List. */ + accessList: AccessList + blobVersionedHashes?: undefined + /** Chain ID that this transaction is valid on. */ + chainId: index + type: type +} & FeeValuesEIP1559 + export type TransactionEIP4844< - TQuantity = bigint, - TIndex = number, - TPending extends boolean = boolean, - TType = 'eip4844', -> = TransactionBase & - FeeValuesEIP4844 & { - /** EIP-2930 Access List. */ - accessList: AccessList - /** List of versioned blob hashes associated with the transaction's blobs. */ - blobVersionedHashes: readonly Hex[] - /** Chain ID that this transaction is valid on. */ - chainId: TIndex - type: TType - } + quantity = bigint, + index = number, + isPending extends boolean = boolean, + type = 'eip4844', +> = TransactionBase & { + /** EIP-2930 Access List. */ + accessList: AccessList + /** List of versioned blob hashes associated with the transaction's blobs. */ + blobVersionedHashes: readonly Hex[] + /** Chain ID that this transaction is valid on. */ + chainId: index + type: type +} & FeeValuesEIP4844 + export type Transaction< - TQuantity = bigint, - TIndex = number, - TPending extends boolean = boolean, + quantity = bigint, + index = number, + isPending extends boolean = boolean, > = OneOf< - | TransactionLegacy - | TransactionEIP2930 - | TransactionEIP1559 - | TransactionEIP4844 + | TransactionLegacy + | TransactionEIP2930 + | TransactionEIP1559 + | TransactionEIP4844 > -export type TransactionRequestBase = { +//////////////////////////////////////////////////////////////////////////////////////////// +// Request +//////////////////////////////////////////////////////////////////////////////////////////// + +export type TransactionRequestBase = { /** Contract code or a hashed method call with encoded args */ data?: Hex | undefined /** Transaction sender */ from: Address /** Gas provided for transaction execution */ - gas?: TQuantity | undefined + gas?: quantity | undefined /** Unique number identifying this transaction */ - nonce?: TIndex | undefined + nonce?: index | undefined /** Transaction recipient */ to?: Address | null | undefined /** Value in wei sent with this transaction */ - value?: TQuantity | undefined + value?: quantity | undefined } + export type TransactionRequestLegacy< - TQuantity = bigint, - TIndex = number, - TTransactionType = 'legacy', -> = TransactionRequestBase & - ExactPartial> & { - accessList?: undefined - blobs?: undefined - type?: TTransactionType | undefined - } + quantity = bigint, + index = number, + type = 'legacy', +> = TransactionRequestBase & { + accessList?: undefined + blobs?: undefined + type?: type | undefined +} & ExactPartial> + export type TransactionRequestEIP2930< - TQuantity = bigint, - TIndex = number, - TTransactionType = 'eip2930', -> = TransactionRequestBase & - ExactPartial> & { - accessList?: AccessList | undefined - blobs?: undefined - type?: TTransactionType | undefined - } + quantity = bigint, + index = number, + type = 'eip2930', +> = TransactionRequestBase & { + accessList?: AccessList | undefined + blobs?: undefined + type?: type | undefined +} & ExactPartial> + export type TransactionRequestEIP1559< - TQuantity = bigint, - TIndex = number, - TTransactionType = 'eip1559', -> = TransactionRequestBase & - ExactPartial> & { + quantity = bigint, + index = number, + type = 'eip1559', +> = TransactionRequestBase & + ExactPartial> & { accessList?: AccessList | undefined blobs?: undefined - type?: TTransactionType | undefined + type?: type | undefined } + export type TransactionRequestEIP4844< - TQuantity = bigint, - TIndex = number, - TTransactionType = 'eip4844', -> = RequiredBy, 'to'> & - RequiredBy>, 'maxFeePerBlobGas'> & { - accessList?: AccessList | undefined - /** The blobs associated with this transaction. */ - blobs: readonly Hex[] | readonly ByteArray[] - blobVersionedHashes?: readonly Hex[] | undefined - kzg?: Kzg | undefined - sidecars?: readonly BlobSidecar[] | undefined - type?: TTransactionType | undefined - } -export type TransactionRequest = OneOf< - | TransactionRequestLegacy - | TransactionRequestEIP2930 - | TransactionRequestEIP1559 - | TransactionRequestEIP4844 + quantity = bigint, + index = number, + type = 'eip4844', +> = RequiredBy, 'to'> & { + accessList?: AccessList | undefined + /** The blobs associated with this transaction. */ + blobs: readonly Hex[] | readonly ByteArray[] + blobVersionedHashes?: readonly Hex[] | undefined + kzg?: Kzg | undefined + sidecars?: readonly BlobSidecar[] | undefined + type?: type | undefined +} & RequiredBy>, 'maxFeePerBlobGas'> + +export type TransactionRequest = OneOf< + | TransactionRequestLegacy + | TransactionRequestEIP2930 + | TransactionRequestEIP1559 + | TransactionRequestEIP4844 > export type TransactionRequestGeneric< - TQuantity = bigint, - TIndex = number, -> = TransactionRequestBase & { + quantity = bigint, + index = number, +> = TransactionRequestBase & { accessList?: AccessList | undefined blobs?: readonly Hex[] | readonly ByteArray[] | undefined blobVersionedHashes?: readonly Hex[] | undefined - gasPrice?: TQuantity | undefined - maxFeePerBlobGas?: TQuantity | undefined - maxFeePerGas?: TQuantity | undefined - maxPriorityFeePerGas?: TQuantity | undefined + gasPrice?: quantity | undefined + maxFeePerBlobGas?: quantity | undefined + maxFeePerGas?: quantity | undefined + maxPriorityFeePerGas?: quantity | undefined type?: string | undefined } +//////////////////////////////////////////////////////////////////////////////////////////// +// Serializable +//////////////////////////////////////////////////////////////////////////////////////////// + export type TransactionSerializedEIP1559 = `0x02${string}` export type TransactionSerializedEIP2930 = `0x01${string}` export type TransactionSerializedEIP4844 = `0x03${string}` export type TransactionSerializedLegacy = Branded<`0x${string}`, 'legacy'> export type TransactionSerializedGeneric = `0x${string}` export type TransactionSerialized< - TType extends TransactionType = TransactionType, + type extends TransactionType = TransactionType, result = - | (TType extends 'eip1559' ? TransactionSerializedEIP1559 : never) - | (TType extends 'eip2930' ? TransactionSerializedEIP2930 : never) - | (TType extends 'eip4844' ? TransactionSerializedEIP4844 : never) - | (TType extends 'legacy' ? TransactionSerializedLegacy : never), + | (type extends 'eip1559' ? TransactionSerializedEIP1559 : never) + | (type extends 'eip2930' ? TransactionSerializedEIP2930 : never) + | (type extends 'eip4844' ? TransactionSerializedEIP4844 : never) + | (type extends 'legacy' ? TransactionSerializedLegacy : never), > = IsNever extends true ? TransactionSerializedGeneric : result export type TransactionSerializableBase< - TQuantity = bigint, - TIndex = number, -> = Omit, 'from'> & + quantity = bigint, + index = number, +> = Omit, 'from'> & ExactPartial export type TransactionSerializableLegacy< - TQuantity = bigint, - TIndex = number, -> = TransactionSerializableBase & - ExactPartial> & { - accessList?: undefined - blobs?: undefined - blobVersionedHashes?: undefined - chainId?: number | undefined - type?: 'legacy' | undefined - } + quantity = bigint, + index = number, +> = TransactionSerializableBase & { + accessList?: undefined + blobs?: undefined + blobVersionedHashes?: undefined + chainId?: number | undefined + type?: 'legacy' | undefined +} & ExactPartial> export type TransactionSerializableEIP2930< - TQuantity = bigint, - TIndex = number, -> = TransactionSerializableBase & - ExactPartial> & { - accessList?: AccessList | undefined - blobs?: undefined - blobVersionedHashes?: undefined - chainId: number - type?: 'eip2930' | undefined - yParity?: number | undefined - } + quantity = bigint, + index = number, +> = TransactionSerializableBase & { + accessList?: AccessList | undefined + blobs?: undefined + blobVersionedHashes?: undefined + chainId: number + type?: 'eip2930' | undefined + yParity?: number | undefined +} & ExactPartial> export type TransactionSerializableEIP1559< - TQuantity = bigint, - TIndex = number, -> = TransactionSerializableBase & - ExactPartial> & { - accessList?: AccessList | undefined - blobs?: undefined - blobVersionedHashes?: undefined - chainId: number - type?: 'eip1559' | undefined - yParity?: number | undefined - } + quantity = bigint, + index = number, +> = TransactionSerializableBase & { + accessList?: AccessList | undefined + blobs?: undefined + blobVersionedHashes?: undefined + chainId: number + type?: 'eip1559' | undefined + yParity?: number | undefined +} & ExactPartial> export type TransactionSerializableEIP4844< - TQuantity = bigint, - TIndex = number, -> = TransactionSerializableBase & - ExactPartial> & { - accessList?: AccessList | undefined - chainId: number - sidecars?: readonly BlobSidecar[] | false | undefined - type?: 'eip4844' | undefined - yParity?: number | undefined - } & OneOf< + quantity = bigint, + index = number, +> = TransactionSerializableBase & { + accessList?: AccessList | undefined + chainId: number + sidecars?: readonly BlobSidecar[] | false | undefined + type?: 'eip4844' | undefined + yParity?: number | undefined +} & ExactPartial> & + OneOf< | { blobs?: readonly Hex[] | readonly ByteArray[] | undefined blobVersionedHashes: readonly Hex[] @@ -332,28 +344,25 @@ export type TransactionSerializableEIP4844< } > +export type TransactionSerializable = OneOf< + | TransactionSerializableLegacy + | TransactionSerializableEIP2930 + | TransactionSerializableEIP1559 + | TransactionSerializableEIP4844 +> + export type TransactionSerializableGeneric< - TQuantity = bigint, - TIndex = number, -> = TransactionSerializableBase & { + quantity = bigint, + index = number, +> = TransactionSerializableBase & { accessList?: AccessList | undefined blobs?: readonly Hex[] | readonly ByteArray[] | undefined blobVersionedHashes?: readonly Hex[] | undefined chainId?: number | undefined - gasPrice?: TQuantity | undefined - maxFeePerBlobGas?: TQuantity | undefined - maxFeePerGas?: TQuantity | undefined - maxPriorityFeePerGas?: TQuantity | undefined + gasPrice?: quantity | undefined + maxFeePerBlobGas?: quantity | undefined + maxFeePerGas?: quantity | undefined + maxPriorityFeePerGas?: quantity | undefined sidecars?: readonly BlobSidecar[] | false | undefined type?: string | undefined } - -export type TransactionSerializable< - TQuantity = bigint, - TIndex = number, -> = OneOf< - | TransactionSerializableLegacy - | TransactionSerializableEIP2930 - | TransactionSerializableEIP1559 - | TransactionSerializableEIP4844 -> diff --git a/src/types/transport.test-d.ts b/src/types/transport.test-d.ts new file mode 100644 index 0000000000..cd596ffc1d --- /dev/null +++ b/src/types/transport.test-d.ts @@ -0,0 +1,45 @@ +import { expectTypeOf, test } from 'vitest' + +import { fallback } from '../clients/transports/fallback.js' +import { http } from '../clients/transports/http.js' +import { webSocket } from '../clients/transports/webSocket.js' +import type { HasTransportType } from './transport.js' + +test('HasTransportType', () => { + { + const transport = webSocket() + expectTypeOf< + HasTransportType + >().toEqualTypeOf() + expectTypeOf< + HasTransportType + >().toEqualTypeOf() + } + { + const transport = http() + expectTypeOf< + HasTransportType + >().toEqualTypeOf() + expectTypeOf< + HasTransportType + >().toEqualTypeOf() + } + { + const transport = fallback([http(), webSocket()]) + expectTypeOf< + HasTransportType + >().toEqualTypeOf() + expectTypeOf< + HasTransportType + >().toEqualTypeOf() + } + { + const transport = fallback([webSocket()]) + expectTypeOf< + HasTransportType + >().toEqualTypeOf() + expectTypeOf< + HasTransportType + >().toEqualTypeOf() + } +}) diff --git a/src/types/transport.ts b/src/types/transport.ts index caf7cd639d..9b4bc06ce0 100644 --- a/src/types/transport.ts +++ b/src/types/transport.ts @@ -36,7 +36,9 @@ export type HasTransportType< type extends string, > = GetTransportConfig['type'] extends type ? true - : transport extends FallbackTransport + : transport extends FallbackTransport< + infer transports extends readonly Transport[] + > ? Some< { [key in keyof transports]: GetTransportConfig['type'] diff --git a/src/types/utils.ts b/src/types/utils.ts index 9058eabb67..4d95e022e0 100644 --- a/src/types/utils.ts +++ b/src/types/utils.ts @@ -57,6 +57,11 @@ export type IsNarrowable = IsNever< */ export type IsNever = [T] extends [never] ? true : false +/** Removes `readonly` from all properties of an object. */ +export type Mutable = { + -readonly [key in keyof type]: type[key] +} + /** * @description Returns type {@link T} if it is an opaque type of {@link U} * @param T - Type to check @@ -157,6 +162,7 @@ export type NoInfer = [type][type extends any ? 0 : never] */ export type NoUndefined = T extends undefined ? never : T +/** Strict version of built-in Omit type */ export type Omit = Pick< type, Exclude @@ -184,6 +190,10 @@ export type Prettify = { [K in keyof T]: T[K] } & {} +export type Evaluate = { + [K in keyof T]: T[K] +} & {} + /** * @description Creates a type that is T with the required keys K. * @@ -201,12 +211,12 @@ export type RequiredBy = Omit & * Some<[1, 2, 3], 2> * => true */ -export type Some = array extends [ +export type Some< + array extends readonly unknown[], value, - ...unknown[], -] +> = array extends readonly [value, ...unknown[]] ? true - : array extends [unknown, ...infer rest] + : array extends readonly [unknown, ...infer rest] ? Some : false diff --git a/src/utils/chain/extractChain.test.ts b/src/utils/chain/extractChain.test.ts index 8daecbb7e5..150faa3d90 100644 --- a/src/utils/chain/extractChain.test.ts +++ b/src/utils/chain/extractChain.test.ts @@ -1,4 +1,4 @@ -import { expect, test } from 'vitest' +import { expect, expectTypeOf, test } from 'vitest' import * as chains from '../../chains/index.js' import { extractChain } from './extractChain.js' @@ -8,6 +8,7 @@ test('default', async () => { chains: Object.values(chains), id: 1, }) + expectTypeOf(mainnet).toEqualTypeOf() expect(mainnet).toMatchInlineSnapshot(` { "blockExplorers": { @@ -54,6 +55,7 @@ test('default', async () => { chains: Object.values(chains), id: 10, }) + expectTypeOf(optimism).toEqualTypeOf() expect(optimism).toMatchInlineSnapshot(` { "blockExplorers": { diff --git a/src/utils/chain/extractChain.ts b/src/utils/chain/extractChain.ts index 0e9e187ffe..2bb828d433 100644 --- a/src/utils/chain/extractChain.ts +++ b/src/utils/chain/extractChain.ts @@ -1,5 +1,5 @@ import type { ErrorType } from '../../errors/utils.js' -import type { Chain, ExtractChain } from '../../types/chain.js' +import type { Chain } from '../../types/chain.js' export type ExtractChainParameters< chains extends readonly Chain[], @@ -12,7 +12,7 @@ export type ExtractChainParameters< export type ExtractChainReturnType< chains extends readonly Chain[], chainId extends chains[number]['id'], -> = ExtractChain +> = Extract export type ExtractChainErrorType = ErrorType diff --git a/src/utils/transaction/getTransactionType.test-d.ts b/src/utils/transaction/getTransactionType.test-d.ts index fea5b8cda7..2648fbe90a 100644 --- a/src/utils/transaction/getTransactionType.test-d.ts +++ b/src/utils/transaction/getTransactionType.test-d.ts @@ -72,6 +72,16 @@ test('const: eip1559 attributes', () => { }) test('const: eip2930 attributes', () => { + expectTypeOf( + getTransactionType({ + accessList: [ + { + address: '0x', + storageKeys: ['0x'], + }, + ], + }), + ).toEqualTypeOf<'eip2930'>() expectTypeOf( getTransactionType({ accessList: [] }), ).toEqualTypeOf<'eip2930'>() diff --git a/src/utils/transaction/parseTransaction.ts b/src/utils/transaction/parseTransaction.ts index 07c6198e59..baa9fdfb25 100644 --- a/src/utils/transaction/parseTransaction.ts +++ b/src/utils/transaction/parseTransaction.ts @@ -26,7 +26,7 @@ import type { TransactionSerializedGeneric, TransactionType, } from '../../types/transaction.js' -import type { IsNarrowable } from '../../types/utils.js' +import type { IsNarrowable, Mutable } from '../../types/utils.js' import { type IsAddressErrorType, isAddress } from '../address/isAddress.js' import { toBlobSidecars } from '../blob/toBlobSidecars.js' import { type IsHexErrorType, isHex } from '../data/isHex.js' @@ -442,7 +442,7 @@ export type ParseAccessListErrorType = | ErrorType export function parseAccessList(accessList_: RecursiveArray): AccessList { - const accessList: AccessList = [] + const accessList: Mutable = [] for (let i = 0; i < accessList_.length; i++) { const [address, storageKeys] = accessList_[i] as [Hex, Hex[]] diff --git a/src/zksync/actions/sendTransaction.ts b/src/zksync/actions/sendTransaction.ts index d0de3052b9..4c4cc8f9ad 100644 --- a/src/zksync/actions/sendTransaction.ts +++ b/src/zksync/actions/sendTransaction.ts @@ -73,7 +73,6 @@ export async function sendTransaction< client: Client, args: SendTransactionParameters, ): Promise { - if (isEIP712Transaction(args as any)) - return sendEip712Transaction(client, args) + if (isEIP712Transaction(args)) return sendEip712Transaction(client, args) return sendTransaction_(client, args) } diff --git a/test/src/anvil.ts b/test/src/anvil.ts index e753091157..62481e179c 100644 --- a/test/src/anvil.ts +++ b/test/src/anvil.ts @@ -128,13 +128,16 @@ type DefineAnvilReturnType = { start(): Promise<() => Promise> } -function defineAnvil({ - chain: chain_, - forkUrl, - forkBlockNumber, - port, - ...options -}: DefineAnvilParameters): DefineAnvilReturnType { +function defineAnvil( + parameters: DefineAnvilParameters, +): DefineAnvilReturnType { + const { + chain: chain_, + forkUrl, + forkBlockNumber, + port, + ...options + } = parameters const rpcUrl = { http: `http://127.0.0.1:${port}/${poolId}`, ipc: `/tmp/anvil-${poolId}.ipc`, diff --git a/test/tsconfig.json b/test/tsconfig.json index 47ab3780ca..2c59e6da5c 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -1,4 +1,5 @@ { + "extends": "../tsconfig.base.json", "compilerOptions": { "module": "nodenext", "moduleResolution": "nodenext", From 561b03a53955894f49e96f4af080588ac39657a0 Mon Sep 17 00:00:00 2001 From: Harsh R <53080940+fullstackninja864@users.noreply.github.com> Date: Wed, 5 Jun 2024 04:13:42 +0530 Subject: [PATCH 17/30] chore: update nativeCurrency decimal for defichainEvmTestnet and defichainEvm (#2366) * fix(chain): updated nativeCurrency decimal for defichainEvmTestnet and defichainEvm * Create chatty-brooms-draw.md --------- Co-authored-by: jxom --- .changeset/chatty-brooms-draw.md | 5 +++++ src/chains/definitions/defichainEvm.ts | 2 +- src/chains/definitions/defichainEvmTestnet.ts | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/chatty-brooms-draw.md diff --git a/.changeset/chatty-brooms-draw.md b/.changeset/chatty-brooms-draw.md new file mode 100644 index 0000000000..05e882c6ed --- /dev/null +++ b/.changeset/chatty-brooms-draw.md @@ -0,0 +1,5 @@ +--- +"viem": patch +--- + +Updated `nativeCurrency` for `defichainEvmTestnet` and `defichainEvm`. diff --git a/src/chains/definitions/defichainEvm.ts b/src/chains/definitions/defichainEvm.ts index 7b28f00db9..3c24cdf6aa 100644 --- a/src/chains/definitions/defichainEvm.ts +++ b/src/chains/definitions/defichainEvm.ts @@ -7,7 +7,7 @@ export const defichainEvm = /*#__PURE__*/ defineChain({ nativeCurrency: { name: 'DeFiChain', symbol: 'DFI', - decimals: 8, + decimals: 18, }, rpcUrls: { default: { diff --git a/src/chains/definitions/defichainEvmTestnet.ts b/src/chains/definitions/defichainEvmTestnet.ts index a03f588adc..7b80c84404 100644 --- a/src/chains/definitions/defichainEvmTestnet.ts +++ b/src/chains/definitions/defichainEvmTestnet.ts @@ -7,7 +7,7 @@ export const defichainEvmTestnet = /*#__PURE__*/ defineChain({ nativeCurrency: { name: 'DeFiChain', symbol: 'DFI', - decimals: 8, + decimals: 18, }, rpcUrls: { default: { From 711720370cb833e05ad9a96755ef047b6e3ddcf8 Mon Sep 17 00:00:00 2001 From: jxom Date: Thu, 6 Jun 2024 09:16:19 +1000 Subject: [PATCH 18/30] chore: update prool --- package.json | 2 +- pnpm-lock.yaml | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index a682902561..ca7b48a04c 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "ethers": "^6.0.2", "fs-extra": "^10.1.0", "globby": "^13.2.2", - "prool": "^0.0.4", + "prool": "^0.0.9", "rimraf": "^4.4.1", "simple-git-hooks": "^2.8.1", "size-limit": "^11.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a9e05b4a1b..04c12a8b39 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,8 +60,8 @@ importers: specifier: ^13.2.2 version: 13.2.2 prool: - specifier: ^0.0.4 - version: 0.0.4 + specifier: ^0.0.9 + version: 0.0.9 rimraf: specifier: ^4.4.1 version: 4.4.1 @@ -4728,9 +4728,14 @@ packages: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} - prool@0.0.4: - resolution: {integrity: sha512-9jRsEPMn1Y+MLOrIws1gcGoCB3yo6LlBkmIt9ENCYp+wf0j678khnm6UzJeTPg1vqipsHXUx9eFpng7UaZawcQ==} + prool@0.0.9: + resolution: {integrity: sha512-NiSfoD/EOcZXQyIos5krvHLI7KPkhauNHPCX/qx5tIsiWNKAHSJL6y6lH/6pTs9JTrEydFXhpQxjUBDvy78wfw==} engines: {node: '>=22'} + peerDependencies: + '@pimlico/alto': '*' + peerDependenciesMeta: + '@pimlico/alto': + optional: true prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -11030,7 +11035,7 @@ snapshots: progress@2.0.3: {} - prool@0.0.4: + prool@0.0.9: dependencies: eventemitter3: 5.0.1 execa: 9.1.0 From a3a8b1b191466e77baeb7975f34f8ee4b3117a69 Mon Sep 17 00:00:00 2001 From: jxom Date: Thu, 6 Jun 2024 16:53:44 +1000 Subject: [PATCH 19/30] feat: export `serializeTypedData` --- .changeset/curly-cougars-obey.md | 5 +++++ src/index.ts | 2 ++ src/utils/index.ts | 3 +++ 3 files changed, 10 insertions(+) create mode 100644 .changeset/curly-cougars-obey.md diff --git a/.changeset/curly-cougars-obey.md b/.changeset/curly-cougars-obey.md new file mode 100644 index 0000000000..109b61f9c0 --- /dev/null +++ b/.changeset/curly-cougars-obey.md @@ -0,0 +1,5 @@ +--- +"viem": patch +--- + +Exported `serializeTypedData`. diff --git a/src/index.ts b/src/index.ts index 4a28a07a03..9b0f4fc5a3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1617,7 +1617,9 @@ export { export { type DomainSeparatorErrorType, type GetTypesForEIP712DomainErrorType, + type SerializeTypedDataErrorType, type ValidateTypedDataErrorType, + serializeTypedData, validateTypedData, domainSeparator, getTypesForEIP712Domain, diff --git a/src/utils/index.ts b/src/utils/index.ts index e9b2f2f366..7faa570c3f 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -64,6 +64,9 @@ export { getWebSocketRpcClient } from './rpc/webSocket.js' export { type StringifyErrorType, stringify } from './stringify.js' export { type DomainSeparatorErrorType, + type SerializeTypedDataErrorType, + type ValidateTypedDataErrorType, + serializeTypedData, validateTypedData, } from './typedData.js' export { From 933e88306883aa62f3270194fbdee1712930436c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 6 Jun 2024 16:55:23 +1000 Subject: [PATCH 20/30] chore: version package (#2371) Co-authored-by: github-actions[bot] --- .changeset/chatty-brooms-draw.md | 5 --- .changeset/curly-cougars-obey.md | 5 --- pnpm-lock.yaml | 40 +++++++++---------- src/CHANGELOG.md | 8 ++++ src/errors/version.ts | 2 +- src/jsr.json | 11 ++++-- src/package.json | 68 ++++++++++++++++++++++++-------- 7 files changed, 89 insertions(+), 50 deletions(-) delete mode 100644 .changeset/chatty-brooms-draw.md delete mode 100644 .changeset/curly-cougars-obey.md diff --git a/.changeset/chatty-brooms-draw.md b/.changeset/chatty-brooms-draw.md deleted file mode 100644 index 05e882c6ed..0000000000 --- a/.changeset/chatty-brooms-draw.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"viem": patch ---- - -Updated `nativeCurrency` for `defichainEvmTestnet` and `defichainEvm`. diff --git a/.changeset/curly-cougars-obey.md b/.changeset/curly-cougars-obey.md deleted file mode 100644 index 109b61f9c0..0000000000 --- a/.changeset/curly-cougars-obey.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"viem": patch ---- - -Exported `serializeTypedData`. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 04c12a8b39..b7d8571100 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -159,7 +159,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -172,7 +172,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -185,7 +185,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -198,7 +198,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -217,7 +217,7 @@ importers: version: 18.2.0(react@18.2.0) viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: '@types/react': specifier: ^18.0.27 @@ -245,7 +245,7 @@ importers: version: 18.2.0(react@18.2.0) viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: '@types/react': specifier: ^18.0.27 @@ -267,7 +267,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -280,7 +280,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -299,7 +299,7 @@ importers: version: 18.2.0(react@18.2.0) viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: '@types/react': specifier: ^18.0.27 @@ -321,7 +321,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -334,7 +334,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -347,7 +347,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -360,7 +360,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -407,7 +407,7 @@ importers: version: 18.2.0(react@18.2.0) viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: '@types/react': specifier: ^18.0.27 @@ -429,7 +429,7 @@ importers: dependencies: viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: typescript: specifier: ^5.0.3 @@ -448,7 +448,7 @@ importers: version: 18.2.0(react@18.2.0) viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: '@types/react': specifier: ^18.0.27 @@ -482,7 +482,7 @@ importers: version: 18.2.0(react@18.2.0) viem: specifier: latest - version: 2.13.5(typescript@5.4.2)(zod@3.22.4) + version: 2.13.6(typescript@5.4.2)(zod@3.22.4) devDependencies: '@types/react': specifier: ^18.0.27 @@ -5719,8 +5719,8 @@ packages: vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - viem@2.13.5: - resolution: {integrity: sha512-jXkFh52GwBLJJE/OWkPZdXwiO3zpgTL7ebhpMcQkaa7F7xEhYeGBjqs26zn6rjlUYP43JjoAf/VnpmbYTQvR6Q==} + viem@2.13.6: + resolution: {integrity: sha512-BhvYhLrExC9P4AH9Gu/2A3VPUFkJT/ayH+A9anco2Ja/D0h3NStq+2uF4htcly1e68/U7IOrlCyX3Jz9zqeEJA==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -12150,7 +12150,7 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - viem@2.13.5(typescript@5.4.2)(zod@3.22.4): + viem@2.13.6(typescript@5.4.2)(zod@3.22.4): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.2.0 diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index a00bd78474..7acb5b9f0d 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -1,5 +1,13 @@ # viem +## 2.13.7 + +### Patch Changes + +- [#2366](https://github.com/wevm/viem/pull/2366) [`561b03a5`](https://github.com/wevm/viem/commit/561b03a53955894f49e96f4af080588ac39657a0) Thanks [@fullstackninja864](https://github.com/fullstackninja864)! - Updated `nativeCurrency` for `defichainEvmTestnet` and `defichainEvm`. + +- [`a3a8b1b1`](https://github.com/wevm/viem/commit/a3a8b1b191466e77baeb7975f34f8ee4b3117a69) Thanks [@jxom](https://github.com/jxom)! - Exported `serializeTypedData`. + ## 2.13.6 ### Patch Changes diff --git a/src/errors/version.ts b/src/errors/version.ts index ad6807f8f8..e20e39f319 100644 --- a/src/errors/version.ts +++ b/src/errors/version.ts @@ -1 +1 @@ -export const version = '2.13.6' +export const version = '2.13.7' diff --git a/src/jsr.json b/src/jsr.json index 4d61663edc..4c377aadbd 100644 --- a/src/jsr.json +++ b/src/jsr.json @@ -1,6 +1,6 @@ { "name": "@wevm/viem", - "version": "2.13.6", + "version": "2.13.7", "exports": { ".": "./index.ts", "./accounts": "./accounts/index.ts", @@ -16,7 +16,12 @@ "./zksync": "./zksync/index.ts" }, "publish": { - "include": ["LICENSE", "README.md", "CHANGELOG.md", "**/*.ts"], + "include": [ + "LICENSE", + "README.md", + "CHANGELOG.md", + "**/*.ts" + ], "exclude": [ "**/*.bench.ts", "**/*.bench-d.ts", @@ -24,4 +29,4 @@ "**/*.test-d.ts" ] } -} +} \ No newline at end of file diff --git a/src/package.json b/src/package.json index f3b5cc2e83..2872b4dabf 100644 --- a/src/package.json +++ b/src/package.json @@ -1,7 +1,7 @@ { "name": "viem", "description": "TypeScript Interface for Ethereum", - "version": "2.13.6", + "version": "2.13.7", "type": "module", "main": "./_cjs/index.js", "module": "./_esm/index.js", @@ -94,19 +94,45 @@ }, "typesVersions": { "*": { - "accounts": ["./_types/accounts/index.d.ts"], - "actions": ["./_types/actions/index.d.ts"], - "celo": ["./_types/celo/index.d.ts"], - "chains": ["./_types/chains/index.d.ts"], - "chains/utils": ["./_types/chains/utils.d.ts"], - "ens": ["./_types/ens/index.d.ts"], - "experimental": ["./_types/experimental/index.d.ts"], - "node": ["./_types/node/index.d.ts"], - "op-stack": ["./_types/op-stack/index.d.ts"], - "siwe": ["./_types/siwe/index.d.ts"], - "utils": ["./_types/utils/index.d.ts"], - "window": ["./_types/window/index.d.ts"], - "zksync": ["./_types/zksync/index.d.ts"] + "accounts": [ + "./_types/accounts/index.d.ts" + ], + "actions": [ + "./_types/actions/index.d.ts" + ], + "celo": [ + "./_types/celo/index.d.ts" + ], + "chains": [ + "./_types/chains/index.d.ts" + ], + "chains/utils": [ + "./_types/chains/utils.d.ts" + ], + "ens": [ + "./_types/ens/index.d.ts" + ], + "experimental": [ + "./_types/experimental/index.d.ts" + ], + "node": [ + "./_types/node/index.d.ts" + ], + "op-stack": [ + "./_types/op-stack/index.d.ts" + ], + "siwe": [ + "./_types/siwe/index.d.ts" + ], + "utils": [ + "./_types/utils/index.d.ts" + ], + "window": [ + "./_types/window/index.d.ts" + ], + "zksync": [ + "./_types/zksync/index.d.ts" + ] } }, "peerDependencies": { @@ -130,12 +156,22 @@ "license": "MIT", "homepage": "https://viem.sh", "repository": "wevm/viem", - "authors": ["awkweb.eth", "jxom.eth"], + "authors": [ + "awkweb.eth", + "jxom.eth" + ], "funding": [ { "type": "github", "url": "https://github.com/sponsors/wevm" } ], - "keywords": ["eth", "ethereum", "dapps", "wallet", "web3", "typescript"] + "keywords": [ + "eth", + "ethereum", + "dapps", + "wallet", + "web3", + "typescript" + ] } From 9f08e6db5c259c6431e74e7f4ff58488f7468108 Mon Sep 17 00:00:00 2001 From: jxom Date: Thu, 6 Jun 2024 06:56:31 +0000 Subject: [PATCH 21/30] chore: format --- src/jsr.json | 9 ++----- src/package.json | 66 +++++++++++------------------------------------- 2 files changed, 17 insertions(+), 58 deletions(-) diff --git a/src/jsr.json b/src/jsr.json index 4c377aadbd..ecf761d992 100644 --- a/src/jsr.json +++ b/src/jsr.json @@ -16,12 +16,7 @@ "./zksync": "./zksync/index.ts" }, "publish": { - "include": [ - "LICENSE", - "README.md", - "CHANGELOG.md", - "**/*.ts" - ], + "include": ["LICENSE", "README.md", "CHANGELOG.md", "**/*.ts"], "exclude": [ "**/*.bench.ts", "**/*.bench-d.ts", @@ -29,4 +24,4 @@ "**/*.test-d.ts" ] } -} \ No newline at end of file +} diff --git a/src/package.json b/src/package.json index 2872b4dabf..c86d50b71b 100644 --- a/src/package.json +++ b/src/package.json @@ -94,45 +94,19 @@ }, "typesVersions": { "*": { - "accounts": [ - "./_types/accounts/index.d.ts" - ], - "actions": [ - "./_types/actions/index.d.ts" - ], - "celo": [ - "./_types/celo/index.d.ts" - ], - "chains": [ - "./_types/chains/index.d.ts" - ], - "chains/utils": [ - "./_types/chains/utils.d.ts" - ], - "ens": [ - "./_types/ens/index.d.ts" - ], - "experimental": [ - "./_types/experimental/index.d.ts" - ], - "node": [ - "./_types/node/index.d.ts" - ], - "op-stack": [ - "./_types/op-stack/index.d.ts" - ], - "siwe": [ - "./_types/siwe/index.d.ts" - ], - "utils": [ - "./_types/utils/index.d.ts" - ], - "window": [ - "./_types/window/index.d.ts" - ], - "zksync": [ - "./_types/zksync/index.d.ts" - ] + "accounts": ["./_types/accounts/index.d.ts"], + "actions": ["./_types/actions/index.d.ts"], + "celo": ["./_types/celo/index.d.ts"], + "chains": ["./_types/chains/index.d.ts"], + "chains/utils": ["./_types/chains/utils.d.ts"], + "ens": ["./_types/ens/index.d.ts"], + "experimental": ["./_types/experimental/index.d.ts"], + "node": ["./_types/node/index.d.ts"], + "op-stack": ["./_types/op-stack/index.d.ts"], + "siwe": ["./_types/siwe/index.d.ts"], + "utils": ["./_types/utils/index.d.ts"], + "window": ["./_types/window/index.d.ts"], + "zksync": ["./_types/zksync/index.d.ts"] } }, "peerDependencies": { @@ -156,22 +130,12 @@ "license": "MIT", "homepage": "https://viem.sh", "repository": "wevm/viem", - "authors": [ - "awkweb.eth", - "jxom.eth" - ], + "authors": ["awkweb.eth", "jxom.eth"], "funding": [ { "type": "github", "url": "https://github.com/sponsors/wevm" } ], - "keywords": [ - "eth", - "ethereum", - "dapps", - "wallet", - "web3", - "typescript" - ] + "keywords": ["eth", "ethereum", "dapps", "wallet", "web3", "typescript"] } From a3761f739b03f53dc23439ac77f8b9147ac8a80e Mon Sep 17 00:00:00 2001 From: jxom Date: Thu, 6 Jun 2024 16:59:45 +1000 Subject: [PATCH 22/30] chore: update snapshots --- src/index.test.ts | 1 + src/utils/index.test.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/src/index.test.ts b/src/index.test.ts index 065d4b233e..b4f418f283 100644 --- a/src/index.test.ts +++ b/src/index.test.ts @@ -392,6 +392,7 @@ test('exports', () => { "sliceHex", "stringify", "trim", + "serializeTypedData", "validateTypedData", "domainSeparator", "getTypesForEIP712Domain", diff --git a/src/utils/index.test.ts b/src/utils/index.test.ts index 8a2a7cab37..9a367a9743 100644 --- a/src/utils/index.test.ts +++ b/src/utils/index.test.ts @@ -25,6 +25,7 @@ test('exports utils', () => { "socketClientCache", "getWebSocketRpcClient", "stringify", + "serializeTypedData", "validateTypedData", "decodeAbiParameters", "decodeErrorResult", From 643b45ac5fe8b0884ea929ba658420193ef3d749 Mon Sep 17 00:00:00 2001 From: awkweb Date: Thu, 6 Jun 2024 16:07:28 -0400 Subject: [PATCH 23/30] chore: prune dead exports (#2372) * chore: prune dead exports * chore: versions * chore: types * chore: export types * chore: format * chore: more exports * chore: more exports * chore: checkpoint * chore: finish exports * chore: snaps --------- Co-authored-by: tmm --- SECURITY.md => .github/SECURITY.md | 0 .github/workflows/changesets.yml | 4 - .github/workflows/snapshot.yml | 2 - .github/workflows/verify.yml | 9 + .npmrc | 2 + environments/next/package.json | 12 +- environments/vite/package.json | 2 +- examples/_template/package.json | 2 +- examples/blocks_fetching-blocks/package.json | 2 +- examples/blocks_watching-blocks/package.json | 2 +- examples/clients_public-client/package.json | 2 +- examples/clients_wallet-client/package.json | 2 +- .../package.json | 2 +- examples/contracts_multicall/package.json | 2 +- .../contracts_reading-contracts/package.json | 2 +- .../package.json | 2 +- examples/ens/package.json | 2 +- examples/logs_block-event-logs/package.json | 2 +- examples/logs_event-logs/package.json | 2 +- .../package.json | 2 +- examples/op-stack_deposit/package.json | 2 +- examples/signing_typed-data/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- examples/walletconnect/package.json | 2 +- package.json | 48 +- pnpm-lock.yaml | 1241 ++++++++++++----- scripts/generateTypedArtifacts.ts | 13 +- src/accounts/hdKeyToAccount.ts | 3 +- src/accounts/types.ts | 2 +- src/actions/public/call.ts | 10 +- src/actions/public/estimateGas.ts | 7 +- src/actions/public/getBlockNumber.ts | 10 +- .../wallet/prepareTransactionRequest.ts | 20 - src/actions/wallet/signTypedData.ts | 2 + src/celo/index.ts | 7 +- src/celo/utils.ts | 1 + src/clients/createClient.ts | 6 +- src/clients/transports/fallback.ts | 1 + src/clients/transports/http.ts | 17 +- src/constants/abis.ts | 1 + src/constants/blob.ts | 2 +- src/constants/kzg.ts | 6 - src/errors/abi.ts | 13 - src/errors/ccip.ts | 1 + src/errors/stateOverride.ts | 1 + .../eip5792/actions/getCapabilities.test.ts | 3 +- .../eip5792/actions/getCapabilities.ts | 2 +- src/experimental/eip5792/actions/sendCalls.ts | 2 +- src/experimental/erc7715/types/permission.ts | 5 + src/experimental/erc7715/types/signer.ts | 3 + src/index.test.ts | 1 + src/index.ts | 26 +- src/node/trustedSetups.ts | 5 - src/node/trustedSetups_cjs.ts | 5 - src/op-stack/abis.ts | 458 ------ src/op-stack/actions/buildProveWithdrawal.ts | 1 + src/op-stack/actions/getWithdrawalStatus.ts | 7 +- src/op-stack/index.ts | 1 - src/types/account.ts | 12 +- src/types/kzg.ts | 3 +- src/types/proof.ts | 4 +- src/types/utils.ts | 14 +- src/utils/abi/decodeAbiParameters.ts | 7 +- src/utils/abi/encodeAbiParameters.ts | 41 +- src/utils/abi/getAbiItem.ts | 10 +- src/utils/accounts.ts | 7 - src/utils/address/getAddress.ts | 2 +- src/utils/address/isAddress.ts | 1 + src/utils/blob/toBlobs.ts | 3 +- src/utils/buildRequest.ts | 1 + src/utils/ccip.ts | 14 +- src/utils/cursor.ts | 22 +- src/utils/encoding/fromRlp.bench.ts | 14 +- src/utils/encoding/fromRlp.test.ts | 194 +-- src/utils/encoding/fromRlp.ts | 24 +- src/utils/ens/avatar/parseAvatarRecord.ts | 2 +- src/utils/ens/avatar/utils.ts | 6 +- src/utils/ens/errors.ts | 1 + src/utils/hash/normalizeSignature.ts | 4 +- src/utils/observe.ts | 2 + src/utils/promise/createBatchScheduler.ts | 5 +- src/utils/promise/withCache.ts | 4 +- src/utils/promise/withTimeout.ts | 4 +- src/utils/rpc/id.ts | 2 +- src/utils/rpc/ipc.ts | 1 + src/utils/stateOverride.ts | 13 +- src/utils/transaction/parseTransaction.ts | 9 +- src/zksync/actions/deployContract.ts | 10 +- src/zksync/actions/estimateGasL1ToL2.ts | 2 +- src/zksync/actions/getAllBalances.ts | 2 +- src/zksync/actions/getL1Allowance.ts | 2 +- src/zksync/actions/getL1Balance.ts | 2 +- src/zksync/actions/getL1TokenBalance.ts | 17 +- src/zksync/constants/contract.ts | 1 - src/zksync/index.ts | 5 + src/zksync/serializers.ts | 3 +- src/zksync/types/eip1193.ts | 58 +- src/zksync/utils/abi/encodeDeployData.ts | 14 +- src/zksync/utils/assertEip712Request.ts | 11 +- src/zksync/utils/hashBytecode.ts | 16 +- test/{ => scripts}/chains.test.ts | 8 +- test/scripts/typebench.ts | 7 + test/src/ccip.ts | 3 +- test/src/utils.ts | 3 +- test/tsconfig.json | 3 +- test/typebench.ts | 7 - tsconfig.base.json | 1 - vectors/bun.d.ts | 2 +- vectors/src/abi.test.ts | 2 +- vectors/src/abi.ts | 2 +- vectors/src/rlp.ts | 2 +- vectors/src/rlp.vectors.test.ts | 2 +- vectors/src/transaction.ts | 2 +- vectors/src/transaction.vectors.test.ts | 2 +- 115 files changed, 1293 insertions(+), 1320 deletions(-) rename SECURITY.md => .github/SECURITY.md (100%) delete mode 100644 src/utils/accounts.ts rename test/{ => scripts}/chains.test.ts (90%) create mode 100644 test/scripts/typebench.ts delete mode 100644 test/typebench.ts diff --git a/SECURITY.md b/.github/SECURITY.md similarity index 100% rename from SECURITY.md rename to .github/SECURITY.md diff --git a/.github/workflows/changesets.yml b/.github/workflows/changesets.yml index 2fe27af317..227f289fc6 100644 --- a/.github/workflows/changesets.yml +++ b/.github/workflows/changesets.yml @@ -66,8 +66,6 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - # https://docs.npmjs.com/generating-provenance-statements - NPM_CONFIG_PROVENANCE: true - name: Publish Prerelease if: steps.changesets.outputs.published != 'true' @@ -75,8 +73,6 @@ jobs: env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # https://docs.npmjs.com/generating-provenance-statements - NPM_CONFIG_PROVENANCE: true run: | npm config set "//registry.npmjs.org/:_authToken" "$NPM_TOKEN" git reset --hard origin/main diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index 380f7995af..2c9093085b 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -25,8 +25,6 @@ jobs: env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # https://docs.npmjs.com/generating-provenance-statements - NPM_CONFIG_PROVENANCE: true run: | snapshot=$(git branch --show-current | tr -cs '[:alnum:]-' '-' | tr '[:upper:]' '[:lower:]' | sed 's/-$//') npm config set "//registry.npmjs.org/:_authToken" "$NPM_TOKEN" diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index bd0e0a476f..91f9ea188a 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -18,6 +18,9 @@ jobs: - name: Install dependencies uses: ./.github/actions/install-dependencies + - name: Lint repo + run: pnpm lint:repo + - name: Lint code run: pnpm lint @@ -47,6 +50,12 @@ jobs: - name: Build run: pnpm build + - name: Publint + run: pnpm test:build + + - name: Check for unused files, dependencies, and exports + run: pnpm knip --production + types: name: Types needs: lint diff --git a/.npmrc b/.npmrc index 30630492cd..d266bf70bd 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,4 @@ +auto-install-peers=false enable-pre-post-scripts=true +provenance=true strict-peer-dependencies=false diff --git a/environments/next/package.json b/environments/next/package.json index 2b00875782..e643f3b342 100644 --- a/environments/next/package.json +++ b/environments/next/package.json @@ -10,16 +10,16 @@ "test": "playwright test" }, "dependencies": { - "react": "^18", - "react-dom": "^18", + "react": "^18.2.0", + "react-dom": "^18.2.0", "next": "13.5.4", "viem": "file:../../src/" }, "devDependencies": { "@playwright/test": "1.40.1", - "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", - "typescript": "^5" + "@types/node": "^20.8.3", + "@types/react": "^18.0.27", + "@types/react-dom": "^18.0.10", + "typescript": "^5.0.3" } } diff --git a/environments/vite/package.json b/environments/vite/package.json index c5d2e8d215..32a7850a3c 100644 --- a/environments/vite/package.json +++ b/environments/vite/package.json @@ -13,7 +13,7 @@ "devDependencies": { "@playwright/test": "1.40.1", "@types/node": "^20.8.3", - "typescript": "^5.0.2", + "typescript": "^5.0.3", "vite": "^4.4.5" } } diff --git a/examples/_template/package.json b/examples/_template/package.json index 535343ac9d..a4796a9cb1 100644 --- a/examples/_template/package.json +++ b/examples/_template/package.json @@ -10,6 +10,6 @@ }, "devDependencies": { "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/blocks_fetching-blocks/package.json b/examples/blocks_fetching-blocks/package.json index 531fca9fa0..ff2688c11a 100644 --- a/examples/blocks_fetching-blocks/package.json +++ b/examples/blocks_fetching-blocks/package.json @@ -10,6 +10,6 @@ }, "devDependencies": { "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/blocks_watching-blocks/package.json b/examples/blocks_watching-blocks/package.json index d3e99c40d3..ecd4c442cb 100644 --- a/examples/blocks_watching-blocks/package.json +++ b/examples/blocks_watching-blocks/package.json @@ -10,6 +10,6 @@ }, "devDependencies": { "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/clients_public-client/package.json b/examples/clients_public-client/package.json index 7fef2be98b..3be97e4350 100644 --- a/examples/clients_public-client/package.json +++ b/examples/clients_public-client/package.json @@ -10,6 +10,6 @@ }, "devDependencies": { "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/clients_wallet-client/package.json b/examples/clients_wallet-client/package.json index 5879117e0e..9e43d0fa6a 100644 --- a/examples/clients_wallet-client/package.json +++ b/examples/clients_wallet-client/package.json @@ -15,6 +15,6 @@ "@types/react-dom": "^18.0.10", "@vitejs/plugin-react": "^3.1.0", "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/contracts_deploying-contracts/package.json b/examples/contracts_deploying-contracts/package.json index ddd9354736..0db310f889 100644 --- a/examples/contracts_deploying-contracts/package.json +++ b/examples/contracts_deploying-contracts/package.json @@ -15,6 +15,6 @@ "@types/react-dom": "^18.0.10", "@vitejs/plugin-react": "^3.1.0", "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/contracts_multicall/package.json b/examples/contracts_multicall/package.json index 77d9e5fb30..581ff5049f 100644 --- a/examples/contracts_multicall/package.json +++ b/examples/contracts_multicall/package.json @@ -10,6 +10,6 @@ }, "devDependencies": { "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/contracts_reading-contracts/package.json b/examples/contracts_reading-contracts/package.json index 1e54cc9dbd..19df036924 100644 --- a/examples/contracts_reading-contracts/package.json +++ b/examples/contracts_reading-contracts/package.json @@ -10,6 +10,6 @@ }, "devDependencies": { "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/contracts_writing-to-contracts/package.json b/examples/contracts_writing-to-contracts/package.json index 83f386d5fe..ebd03a8780 100644 --- a/examples/contracts_writing-to-contracts/package.json +++ b/examples/contracts_writing-to-contracts/package.json @@ -15,6 +15,6 @@ "@types/react-dom": "^18.0.10", "@vitejs/plugin-react": "^3.1.0", "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/ens/package.json b/examples/ens/package.json index b1e8a3f668..132cd2ef20 100644 --- a/examples/ens/package.json +++ b/examples/ens/package.json @@ -10,6 +10,6 @@ }, "devDependencies": { "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/logs_block-event-logs/package.json b/examples/logs_block-event-logs/package.json index aecd1451b9..f7103f7176 100644 --- a/examples/logs_block-event-logs/package.json +++ b/examples/logs_block-event-logs/package.json @@ -10,6 +10,6 @@ }, "devDependencies": { "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/logs_event-logs/package.json b/examples/logs_event-logs/package.json index fb1d118eb0..5cbd760127 100644 --- a/examples/logs_event-logs/package.json +++ b/examples/logs_event-logs/package.json @@ -10,6 +10,6 @@ }, "devDependencies": { "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/logs_pending-transactions-logs/package.json b/examples/logs_pending-transactions-logs/package.json index 95c456eb72..21835bb8d7 100644 --- a/examples/logs_pending-transactions-logs/package.json +++ b/examples/logs_pending-transactions-logs/package.json @@ -10,6 +10,6 @@ }, "devDependencies": { "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/op-stack_deposit/package.json b/examples/op-stack_deposit/package.json index 22cc93bcab..1d67ded2da 100644 --- a/examples/op-stack_deposit/package.json +++ b/examples/op-stack_deposit/package.json @@ -15,6 +15,6 @@ "@types/react-dom": "^18.0.10", "@vitejs/plugin-react": "^3.1.0", "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/signing_typed-data/package.json b/examples/signing_typed-data/package.json index fa2fd1cbcd..dc9ae55ace 100644 --- a/examples/signing_typed-data/package.json +++ b/examples/signing_typed-data/package.json @@ -15,6 +15,6 @@ "@types/react-dom": "^18.0.10", "@vitejs/plugin-react": "^3.1.0", "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/transactions_fetching-transactions/package.json b/examples/transactions_fetching-transactions/package.json index 867cc24f9b..23a4556d5b 100644 --- a/examples/transactions_fetching-transactions/package.json +++ b/examples/transactions_fetching-transactions/package.json @@ -10,6 +10,6 @@ }, "devDependencies": { "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/transactions_sending-transactions/package.json b/examples/transactions_sending-transactions/package.json index bfba4d76ef..491600c172 100644 --- a/examples/transactions_sending-transactions/package.json +++ b/examples/transactions_sending-transactions/package.json @@ -15,6 +15,6 @@ "@types/react-dom": "^18.0.10", "@vitejs/plugin-react": "^3.1.0", "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/examples/walletconnect/package.json b/examples/walletconnect/package.json index ac19df905a..46f98d4b06 100644 --- a/examples/walletconnect/package.json +++ b/examples/walletconnect/package.json @@ -17,6 +17,6 @@ "@types/react-dom": "^18.0.10", "@vitejs/plugin-react": "^3.1.0", "typescript": "^5.0.3", - "vite": "^4.4.2" + "vite": "^4.4.5" } } diff --git a/package.json b/package.json index ca7b48a04c..92f3bc16f9 100644 --- a/package.json +++ b/package.json @@ -12,18 +12,21 @@ "changeset:prepublish": "pnpm version:update && bun scripts/prepublishOnly.ts && pnpm build", "changeset:publish": "pnpm changeset:prepublish && changeset publish", "changeset:version": "changeset version && pnpm install --lockfile-only && pnpm version:update", - "clean": "rimraf *.tsbuildinfo src/*.tsbuildinfo src/_esm src/_cjs src/_types", + "clean": "rm -rf *.tsbuildinfo src/*.tsbuildinfo src/_esm src/_cjs src/_types", "contracts:build": "forge build --config-path ./test/foundry.toml && bun ./scripts/generateTypedArtifacts.ts", "docs:dev": "pnpm --filter site dev", "docs:build": "pnpm --filter site build", - "docs:preview": "pnpm --filter site preview", "lint": "biome check . --apply", + "lint:repo": "sherif", + "lint:unused": "pnpm clean && knip", "postinstall": "git submodule update --init --recursive && pnpm contracts:build", + "preinstall": "npx only-allow pnpm", "prepare": "pnpm simple-git-hooks", "prepublishOnly": "bun scripts/prepublishOnly.ts", "size": "size-limit", "test": "vitest -c ./test/vitest.config.ts dev", - "test:chains": "vitest test/chains.test.ts", + "test:build": "publint --strict ./src && attw --pack ./src --ignore-rules false-esm", + "test:chains": "vitest test/scripts/chains.test.ts", "test:ci": "CI=true vitest -c ./test/vitest.config.ts --coverage --retry=3 --bail=1", "test:cov": "vitest dev -c ./test/vitest.config.ts --coverage", "test:env": "pnpm test:env:bun && pnpm test:env:next && pnpm test:env:node && pnpm test:env:tsc && pnpm test:env:vite", @@ -34,13 +37,14 @@ "test:env:vite": "pnpm --filter test-vite test", "test:typecheck": "SKIP_GLOBAL_SETUP=true vitest --typecheck.only -c ./test/vitest.config.ts", "test:ui": "vitest dev -c ./test/vitest.config.ts --ui", - "typebench": "tsx test/typebench.ts --benchPercentThreshold 10 --benchErrorOnThresholdExceeded", + "typebench": "tsx test/scripts/typebench.ts --benchPercentThreshold 10 --benchErrorOnThresholdExceeded", "typecheck": "tsc --noEmit", "vectors": "bun test vectors/**/*.test.ts", "vectors:generate": "bun vectors/generate.ts", "version:update": "bun scripts/updateVersion.ts" }, "devDependencies": { + "@arethetypeswrong/cli": "^0.15.3", "@arktype/attest": "0.7.5", "@biomejs/biome": "^1.7.3", "@changesets/changelog-github": "^0.4.5", @@ -48,23 +52,21 @@ "@ethereumjs/rlp": "^5.0.0", "@size-limit/preset-big-lib": "^11.1.2", "@types/bun": "^1.1.3", - "@types/fs-extra": "^9.0.13", "@types/node": "^20.14.0", "@vitest/coverage-v8": "^1.0.4", "@vitest/ui": "^1.0.4", - "abitype": "1.0.0", "bun": "^1.1.12", "c-kzg": "^2.1.2", "ethers": "^6.0.2", - "fs-extra": "^10.1.0", - "globby": "^13.2.2", + "glob": "^10.4.1", + "knip": "^5.17.4", "prool": "^0.0.9", - "rimraf": "^4.4.1", + "publint": "^0.2.8", + "sherif": "^0.8.4", "simple-git-hooks": "^2.8.1", "size-limit": "^11.1.2", "tsx": "^4.11.0", "typescript": "5.4.5", - "vite": "^5.0.7", "vitest": "^1.0.4" }, "trustedDependencies": ["c-kzg"], @@ -75,6 +77,32 @@ "simple-git-hooks": { "pre-commit": "pnpm lint" }, + "knip": { + "ignore": [".github/**", "environments/**", "vectors/**"], + "ignoreBinaries": ["dev", "forge", "only-allow", "printf"], + "ignoreDependencies": ["bun", "@size-limit/preset-big-lib"], + "ignoreWorkspaces": ["examples/**", "test"], + "vitest": { + "config": ["test/vitest.config.ts"], + "entry": ["**/*.{bench,bench-d,test,test-d,spec}.?(c|m)[jt]s?(x)"] + }, + "workspaces": { + ".": { + "project": "scripts/*.ts" + }, + "src": { + "entry": [ + "index.ts!", + "{accounts,actions,celo,chains,ens,experimental,node,op-stack,siwe,utils,window,zksync}/index.ts!", + "chains/utils.ts!" + ], + "ignore": ["node/trustedSetups_cjs.ts"] + }, + "site": { + "project": ["**/*.ts", "**/*.tsx"] + } + } + }, "size-limit": [ { "name": "viem (esm)", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b7d8571100..0bb7c740a9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,13 +1,16 @@ lockfileVersion: '9.0' settings: - autoInstallPeers: true + autoInstallPeers: false excludeLinksFromLockfile: false importers: .: devDependencies: + '@arethetypeswrong/cli': + specifier: ^0.15.3 + version: 0.15.3 '@arktype/attest': specifier: 0.7.5 version: 0.7.5(typescript@5.4.5) @@ -29,9 +32,6 @@ importers: '@types/bun': specifier: ^1.1.3 version: 1.1.3 - '@types/fs-extra': - specifier: ^9.0.13 - version: 9.0.13 '@types/node': specifier: ^20.14.0 version: 20.14.0 @@ -41,9 +41,6 @@ importers: '@vitest/ui': specifier: ^1.0.4 version: 1.0.4(vitest@1.0.4) - abitype: - specifier: 1.0.0 - version: 1.0.0(typescript@5.4.5)(zod@3.22.4) bun: specifier: ^1.1.12 version: 1.1.12 @@ -53,18 +50,21 @@ importers: ethers: specifier: ^6.0.2 version: 6.0.2 - fs-extra: - specifier: ^10.1.0 - version: 10.1.0 - globby: - specifier: ^13.2.2 - version: 13.2.2 + glob: + specifier: ^10.4.1 + version: 10.4.1 + knip: + specifier: ^5.17.4 + version: 5.17.4(@types/node@20.14.0)(typescript@5.4.5) prool: specifier: ^0.0.9 version: 0.0.9 - rimraf: - specifier: ^4.4.1 - version: 4.4.1 + publint: + specifier: ^0.2.8 + version: 0.2.8 + sherif: + specifier: ^0.8.4 + version: 0.8.4 simple-git-hooks: specifier: ^2.8.1 version: 2.8.1 @@ -77,9 +77,6 @@ importers: typescript: specifier: 5.4.5 version: 5.4.5 - vite: - specifier: ^5.0.7 - version: 5.0.7(@types/node@20.14.0)(terser@5.31.0) vitest: specifier: ^1.0.4 version: 1.0.4(@types/node@20.14.0)(@vitest/ui@1.0.4)(terser@5.31.0) @@ -88,7 +85,7 @@ importers: dependencies: viem: specifier: file:../../src/ - version: file:src(typescript@5.4.5)(zod@3.22.4) + version: link:../../src environments/next: dependencies: @@ -96,10 +93,10 @@ importers: specifier: 13.5.4 version: 13.5.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: - specifier: ^18 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) viem: specifier: file:../../src/ @@ -109,23 +106,23 @@ importers: specifier: 1.40.1 version: 1.40.1 '@types/node': - specifier: ^20 - version: 20.8.3 + specifier: ^20.8.3 + version: 20.14.0 '@types/react': - specifier: ^18 + specifier: ^18.0.27 version: 18.0.27 '@types/react-dom': - specifier: ^18 + specifier: ^18.0.10 version: 18.0.10 typescript: - specifier: ^5 - version: 5.4.2 + specifier: ^5.0.3 + version: 5.4.5 environments/node: dependencies: viem: specifier: file:../../src/ - version: file:src(typescript@5.4.5)(zod@3.22.4) + version: link:../../src environments/tsc: dependencies: @@ -134,7 +131,7 @@ importers: version: 5.4.5 viem: specifier: file:../../src/ - version: file:src(typescript@5.4.5)(zod@3.22.4) + version: link:../../src environments/vite: dependencies: @@ -149,8 +146,8 @@ importers: specifier: ^20.8.3 version: 20.8.3 typescript: - specifier: ^5.0.2 - version: 5.4.2 + specifier: ^5.0.3 + version: 5.4.5 vite: specifier: ^4.4.5 version: 4.4.5(@types/node@20.8.3)(terser@5.31.0) @@ -165,7 +162,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/blocks_fetching-blocks: @@ -178,7 +175,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/blocks_watching-blocks: @@ -191,7 +188,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/clients_public-client: @@ -204,7 +201,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/clients_wallet-client: @@ -232,7 +229,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/contracts_deploying-contracts: @@ -260,7 +257,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/contracts_multicall: @@ -273,7 +270,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/contracts_reading-contracts: @@ -286,7 +283,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/contracts_writing-to-contracts: @@ -314,7 +311,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/ens: @@ -327,7 +324,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/logs_block-event-logs: @@ -340,7 +337,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/logs_event-logs: @@ -353,7 +350,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/logs_pending-transactions-logs: @@ -366,7 +363,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/op-stack_deposit: @@ -394,7 +391,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/signing_typed-data: @@ -422,7 +419,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/transactions_fetching-transactions: @@ -435,7 +432,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/transactions_sending-transactions: @@ -463,7 +460,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) examples/walletconnect: @@ -497,7 +494,7 @@ importers: specifier: ^5.0.3 version: 5.4.2 vite: - specifier: ^4.4.2 + specifier: ^4.4.5 version: 4.4.5(@types/node@20.14.0)(terser@5.31.0) site: @@ -513,7 +510,7 @@ importers: version: link:../src vocs: specifier: 1.0.0-alpha.52 - version: 1.0.0-alpha.52(@types/node@20.14.0)(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.18.0)(terser@5.31.0)(typescript@5.4.5) + version: 1.0.0-alpha.52(@types/node@20.14.0)(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.18.0)(terser@5.31.0)(typescript@5.4.5) src: dependencies: @@ -534,13 +531,10 @@ importers: version: 1.2.1 abitype: specifier: 1.0.0 - version: 1.0.0(typescript@5.4.2)(zod@3.22.4) + version: 1.0.0(typescript@5.4.5)(zod@3.22.4) isows: specifier: 1.0.4 version: 1.0.4(ws@8.13.0) - typescript: - specifier: '>=5.0.4' - version: 5.4.2 ws: specifier: 8.13.0 version: 8.13.0 @@ -563,6 +557,18 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@andrewbranch/untar.js@1.0.3': + resolution: {integrity: sha512-Jh15/qVmrLGhkKJBdXlK1+9tY4lZruYjsgkDFj08ZmDiWVBLJcqkok7Z0/R0In+i1rScBpJlSvrTS2Lm41Pbnw==} + + '@arethetypeswrong/cli@0.15.3': + resolution: {integrity: sha512-sIMA9ZJBWDEg1+xt5RkAEflZuf8+PO8SdKj17x6PtETuUho+qlZJg4DgmKc3q+QwQ9zOB5VLK6jVRbFdNLdUIA==} + engines: {node: '>=18'} + hasBin: true + + '@arethetypeswrong/core@0.15.1': + resolution: {integrity: sha512-FYp6GBAgsNz81BkfItRz8RLZO03w5+BaeiPma1uCfmxTnxbtuMrI/dbzGiOk8VghO108uFI0oJo0OkewdSHw7g==} + engines: {node: '>=18'} + '@arktype/attest@0.7.5': resolution: {integrity: sha512-ZOF9uqLbvoVO6RHhlByJEBBj5qhWLpaCK/wWa5guD1OQR1/a7JZ9jCrDAcaASt6tYBA3dGhDerXhc7FcDWlRQw==} hasBin: true @@ -819,9 +825,17 @@ packages: bundledDependencies: - is-unicode-supported + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + '@emotion/hash@0.9.1': resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + '@ericcornelissen/bash-parser@0.5.2': + resolution: {integrity: sha512-4pIMTa1nEFfMXitv7oaNEWOdM+zpOZavesa5GaiWTgda6Zk32CFGxjUp/iIaN0PwgUW1yTq/fztSjbpE8SLGZQ==} + engines: {node: '>=4'} + '@esbuild/aix-ppc64@0.19.12': resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} @@ -1418,14 +1432,26 @@ packages: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} + '@nodelib/fs.scandir@3.0.0': + resolution: {integrity: sha512-ktI9+PxfHYtKjF3cLTUAh2N+b8MijCRPNwKJNqTVdL0gB0QxLU2rIRaZ1t71oEa3YBDE6bukH1sR0+CDnpp/Mg==} + engines: {node: '>=16.14.0'} + '@nodelib/fs.stat@2.0.5': resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} + '@nodelib/fs.stat@3.0.0': + resolution: {integrity: sha512-2tQOI38s19P9i7X/Drt0v8iMA+KMsgdhB/dyPER+e+2Y8L1Z7QvnuRdW/uLuf5YRFUYmnj4bMA6qCuZHFI1GDQ==} + engines: {node: '>=16.14.0'} + '@nodelib/fs.walk@1.2.8': resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@nodelib/fs.walk@2.0.0': + resolution: {integrity: sha512-54voNDBobGdMl3BUXSu7UaDh1P85PGHWlJ5e0XhPugo1JulOyCtp2I+5ri4wplGDJ8QGwPEQW7/x3yTLU7yF1A==} + engines: {node: '>=16.14.0'} + '@oven/bun-darwin-aarch64@1.1.12': resolution: {integrity: sha512-g8nmDXIYDmbEnP6moX3ZTS5BsikX8dz/XB0PAfL+LEBJEGECyor2Hv1yvhGQfeR1/lvfSXsWnk0Hhk9Mrj6uoQ==} cpu: [arm64] @@ -2042,6 +2068,10 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + '@sindresorhus/merge-streams@2.3.0': resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} @@ -2077,6 +2107,11 @@ packages: peerDependencies: size-limit: 11.1.2 + '@snyk/github-codeowners@1.1.0': + resolution: {integrity: sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw==} + engines: {node: '>=8.10'} + hasBin: true + '@stablelib/aead@1.0.1': resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} @@ -2170,9 +2205,6 @@ packages: '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - '@types/fs-extra@9.0.13': - resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} - '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -2203,9 +2235,6 @@ packages: '@types/node@20.12.14': resolution: {integrity: sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg==} - '@types/node@20.13.0': - resolution: {integrity: sha512-FM6AOb3khNkNIXPnHFDYaHerSv8uN22C91z098AnGccVu+Pcdhi+pNUFDi0iLmPIsVE0JBD0KVS7mzUYt4nRzQ==} - '@types/node@20.14.0': resolution: {integrity: sha512-5cHBxFGJx6L4s56Bubp4fglrEpmyJypsqI6RgzMfBHWUJQGWAAi8cWcgetEbZXHYXo9C2Fa4EEds/uSyS4cxmA==} @@ -2224,9 +2253,6 @@ packages: '@types/react@18.0.27': resolution: {integrity: sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==} - '@types/react@18.3.3': - resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} - '@types/scheduler@0.23.0': resolution: {integrity: sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==} @@ -2498,6 +2524,10 @@ packages: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + ajv-keywords@3.5.2: resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -2510,6 +2540,10 @@ packages: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} + ansi-escapes@6.2.1: + resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} + engines: {node: '>=14.16'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -2534,6 +2568,9 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + ansicolors@0.3.2: + resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} + any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -2547,10 +2584,16 @@ packages: 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.4: resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} engines: {node: '>=10'} + arity-n@1.0.4: + resolution: {integrity: sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==} + arktype@2.0.0-dev.11: resolution: {integrity: sha512-k+WVQoHsHsTyTiVQkO201mxLQxyXHmy3buJW8TXLOkr4X2yOUCp0K1SBscuG9OEJoc8MjpvoIharjPHEkFI7kg==} @@ -2558,6 +2601,10 @@ packages: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} + array-last@1.3.0: + resolution: {integrity: sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==} + engines: {node: '>=0.10.0'} + array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -2603,6 +2650,10 @@ packages: b4a@1.6.6: resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} + babylon@6.18.0: + resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} + hasBin: true + bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -2728,6 +2779,10 @@ packages: caniuse-lite@1.0.30001626: resolution: {integrity: sha512-JRW7kAH8PFJzoPCJhLSHgDgKg5348hsQ68aqb+slnzuB5QFERv846oA/mRChmlLAOdEDeOkRn3ynb1gSFnjt3w==} + cardinal@2.1.1: + resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} + hasBin: true + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -2747,6 +2802,10 @@ packages: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} 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'} + character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -2788,6 +2847,10 @@ packages: citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + cli-cursor@4.0.0: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2796,6 +2859,10 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -2840,6 +2907,10 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + commander@12.1.0: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} @@ -2851,6 +2922,9 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + compose-function@3.0.3: + resolution: {integrity: sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==} + compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} @@ -2997,6 +3071,9 @@ packages: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} + deep-freeze@0.0.1: + resolution: {integrity: sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==} + deep-object-diff@1.1.9: resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} @@ -3093,6 +3170,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + easy-table@1.2.0: + resolution: {integrity: sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==} + ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -3108,6 +3188,9 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + encode-utf8@1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} @@ -3334,6 +3417,10 @@ packages: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} @@ -3341,6 +3428,9 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + filter-iterator@0.0.1: + resolution: {integrity: sha512-v4lhL7Qa8XpbW3LN46CEnmhGk3eHZwxfNl5at20aEkreesht4YKb/Ba3BUIbnPhAC/r3dmu7ABaGk6MAvh2alA==} + filter-obj@1.1.0: resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} engines: {node: '>=0.10.0'} @@ -3360,6 +3450,10 @@ packages: find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} @@ -3390,10 +3484,6 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} - fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - fs-extra@11.2.0: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} @@ -3505,9 +3595,10 @@ packages: 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'} + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} @@ -3556,6 +3647,9 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + has-own-property@0.1.0: + resolution: {integrity: sha512-14qdBKoonU99XDhWcFKZTShK+QV47qU97u8zzoVo9cL5TZ3BmBHXogItSt9qJjR0KUMFRhcCW8uGIGl8nkl7Aw==} + has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -3663,9 +3757,16 @@ packages: idb-keyval@6.2.1: resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} + identity-function@1.0.0: + resolution: {integrity: sha512-kNrgUK0qI+9qLTBidsH85HjDLpZfrrS0ElquKKe/fJFdB3D7VeKdXXEvOPDUHSHOzdZKCAAaQIWWyp0l2yq6pw==} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore-walk@5.0.1: + resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -3780,6 +3881,10 @@ packages: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} + is-iterable@1.1.1: + resolution: {integrity: sha512-EdOZCr0NsGE00Pot+x1ZFx9MJK3C6wy91geZpXwvwexDLJvA4nzYyZf7r+EIwSeVsOLDdBz7ATg9NqKTzuNYuQ==} + engines: {node: '>= 4'} + is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} @@ -3788,6 +3893,10 @@ packages: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} + is-number@4.0.0: + resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} + engines: {node: '>=0.10.0'} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -3889,6 +3998,10 @@ packages: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} + iterable-lookahead@1.0.0: + resolution: {integrity: sha512-hJnEP2Xk4+44DDwJqUQGdXal5VbyeWLaPyDl2AQc242Zr7iqz4DgpQOrEzglWVMGHMDCkguLHEKxd1+rOsmgSQ==} + engines: {node: '>=4'} + jackspeak@3.1.2: resolution: {integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==} engines: {node: '>=14'} @@ -3911,6 +4024,10 @@ packages: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} @@ -3919,6 +4036,9 @@ packages: engines: {node: '>=4'} hasBin: true + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -3945,6 +4065,9 @@ packages: engines: {node: '>=10'} hasBin: true + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} @@ -3956,6 +4079,14 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + knip@5.17.4: + resolution: {integrity: sha512-D6dQjauc3ZIPq0jTYgTeuxpeDKVOaV84S5TNeBDB2GjoPQVzEPW7PA83XijyGXNrflWq4zvWNn49gTUN0Lfeig==} + engines: {node: '>=18.6.0'} + hasBin: true + peerDependencies: + '@types/node': '>=18' + typescript: '>=5.0.4' + lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -4000,6 +4131,9 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash.curry@4.1.1: + resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} + lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} @@ -4041,6 +4175,9 @@ packages: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} + magic-string@0.16.0: + resolution: {integrity: sha512-c4BEos3y6G2qO0B9X7K0FVLOPT9uGrjYwYRLFmDqyl5YMboUviyecnXWp94fJTSMwPw2/sf+CEYt5AGpmklkkQ==} + magic-string@0.27.0: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} @@ -4059,6 +4196,10 @@ packages: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} + map-obj@2.0.0: + resolution: {integrity: sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==} + engines: {node: '>=4'} + map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} @@ -4073,6 +4214,17 @@ packages: markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + marked-terminal@6.2.0: + resolution: {integrity: sha512-ubWhwcBFHnXsjYNsu+Wndpg0zhY4CahSpPlA70PlO0rR9r2sZpkyU+rkCsOWH+KMEkx847UpALON+HWgxowFtw==} + engines: {node: '>=16.0.0'} + peerDependencies: + marked: '>=1 <12' + + marked@9.1.6: + resolution: {integrity: sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==} + engines: {node: '>= 16'} + hasBin: true + mdast-util-directive@3.0.0: resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} @@ -4289,9 +4441,9 @@ packages: 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@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} @@ -4301,9 +4453,8 @@ packages: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} - minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} @@ -4397,6 +4548,10 @@ packages: resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} engines: {node: ^16 || ^18 || >= 20} + node-emoji@2.1.3: + resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} + engines: {node: '>=18'} + node-fetch-native@1.6.4: resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} @@ -4430,6 +4585,19 @@ packages: not@0.1.0: resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} + npm-bundled@2.0.1: + resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + npm-normalize-package-bin@2.0.0: + resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + npm-packlist@5.1.3: + resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -4456,6 +4624,13 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + object-pairs@0.1.0: + resolution: {integrity: sha512-3ECr6K831I4xX/Mduxr9UC+HPOz/d6WKKYj9p4cmC8Lg8p7g8gitzsxNX5IWlSIgFWN/a4JgrJaoAMKn20oKwA==} + + object-values@1.0.0: + resolution: {integrity: sha512-+8hwcz/JnQ9EpLIXzN0Rs7DLsBpJNT/xYehtB/jU93tHYr5BFEO8E+JGQNOSqE7opVzz5cGksKFHt7uUJVLSjQ==} + engines: {node: '>=0.10.0'} + object.assign@4.1.5: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} @@ -4530,6 +4705,10 @@ packages: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -4600,6 +4779,9 @@ packages: periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} @@ -4607,6 +4789,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} @@ -4756,6 +4942,11 @@ packages: pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + publint@0.2.8: + resolution: {integrity: sha512-C5MjGJ7gpanqaDpgBN+6QhjvXcoj0/YpbucoW29oO5729CGTMzfr3wZTIYcpzB1xl9ZfEqj4KL86P2Z50pt/JA==} + engines: {node: '>=16'} + hasBin: true + pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} @@ -4914,6 +5105,9 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} + redeyed@2.1.1: + resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} + regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -4986,10 +5180,8 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rimraf@4.4.1: - resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} - engines: {node: '>=14'} - hasBin: true + reverse-arguments@1.0.0: + resolution: {integrity: sha512-/x8uIPdTafBqakK0TmPNJzgkLP+3H+yxpUJhCQHsLBg1rYEVNR2D8BRYNWQhVBjyOd7oo1dZRVzIkwMY2oqfYQ==} rollup@3.29.4: resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} @@ -5004,6 +5196,10 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + safe-array-concat@1.1.2: resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} @@ -5091,6 +5287,43 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + shell-quote-word@1.0.1: + resolution: {integrity: sha512-lT297f1WLAdq0A4O+AknIFRP6kkiI3s8C913eJ0XqBxJbZPGWUNkRQk2u8zk4bEAjUJ5i+fSLwB6z1HzeT+DEg==} + + sherif-darwin-arm64@0.8.4: + resolution: {integrity: sha512-mFJO9BjwjXnzn7UQ0moLyJzDWu68g71E1jNKujkuS8a4UQ8jV2O6gosOqfqPMHLLiZjZwuVZNnp59ecqP4rVpg==} + cpu: [arm64] + os: [darwin] + + sherif-darwin-x64@0.8.4: + resolution: {integrity: sha512-71keXqkH27FvN5q3OmddS7FXaAVk0iBXGlfZhsuuNSR00CnSndM+AS8ibUH2okvF55HdPK6x6VovoEG3PvqCmw==} + cpu: [x64] + os: [darwin] + + sherif-linux-arm64@0.8.4: + resolution: {integrity: sha512-hQwFHQ6cGDOkKSa1zuEAc8WIsSgY0a4MFXEiHIPfRbJdE+leDcAVDovvpPIQZRUgbSe96mQ5QJg5fw52+eySrw==} + cpu: [arm64] + os: [linux] + + sherif-linux-x64@0.8.4: + resolution: {integrity: sha512-S2BK9YLc12JMxg8ODIcceRW7Y4rmgrIEzUBOqp6NSeOz4Wq/34YdtimNRHzwrDOgjTpgUA/pt+TwPsGPXr+gNA==} + cpu: [x64] + os: [linux] + + sherif-windows-arm64@0.8.4: + resolution: {integrity: sha512-9IBeX13AeCQ9ETRqfGR7GQqcyRxu4jlXyO7TNQVKU/kBrMjWjYYic/VKwHB37q0xealXUNmB9nD08hfMmdnidg==} + cpu: [arm64] + os: [win32] + + sherif-windows-x64@0.8.4: + resolution: {integrity: sha512-PR1tjnCLxcdYaC8FRM3K6ldIwaJDEJn0tOt6e2V6R7OFMDwF8CJOSq24RzGgSmJRBFtlLqU94sXTDPfUCR0YPw==} + cpu: [x64] + os: [win32] + + sherif@0.8.4: + resolution: {integrity: sha512-L2tNE60i5gRNe5eFNSjUAqt2rCIbKj9jp/50zCfsw8bSBX6noHamR7FDhaecyrNBk6ZgGEEAjxGe4C6iqelwZw==} + hasBin: true + shiki@1.6.2: resolution: {integrity: sha512-X3hSm5GzzBd/BmPmGfkueOUADLyBoZo1ojYQXhd+NU2VJn458yt4duaS0rVzC+WtqftSV7mTVvDw+OB9AHi3Eg==} @@ -5124,6 +5357,10 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true + skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -5145,6 +5382,10 @@ packages: engines: {node: '>=6'} hasBin: true + smol-toml@1.1.4: + resolution: {integrity: sha512-Y0OT8HezWsTNeEOSVxDnKOW/AyNXHQ4BwJNbAXlLTF5wWsBvrcHhIkE5Rf8kQMLmgf7nDX3PVOlgC6/Aiggu3Q==} + engines: {node: '>= 18', pnpm: '>= 8'} + socks-proxy-agent@8.0.3: resolution: {integrity: sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==} engines: {node: '>= 14'} @@ -5249,6 +5490,9 @@ packages: resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} engines: {node: '>=16'} + string.fromcodepoint@0.2.1: + resolution: {integrity: sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==} + string.prototype.trim@1.2.9: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} @@ -5294,6 +5538,10 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} + strip-json-comments@5.0.1: + resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==} + engines: {node: '>=14.16'} + strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} @@ -5321,6 +5569,9 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true + summary@2.1.0: + resolution: {integrity: sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw==} + supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -5333,6 +5584,10 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} + supports-hyperlinks@3.0.0: + resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==} + engines: {node: '>=14.18'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -5426,10 +5681,19 @@ packages: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} + to-no-case@1.0.2: + resolution: {integrity: sha512-Z3g735FxuZY8rodxV4gH7LxClE4H0hTIyHNIHdk+vpQxjLm0cwnKXq/OFVZ76SOQmto7txVcwSCwkU5kqp+FKg==} + + to-pascal-case@1.0.0: + resolution: {integrity: sha512-QGMWHqM6xPrcQW57S23c5/3BbYb0Tbe9p+ur98ckRnGDwD4wbbtDiYI38CfmMKNB5Iv0REjs5SNDntTwvDxzZA==} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + to-space-case@1.0.0: + resolution: {integrity: sha512-rLdvwXZ39VOn1IxGL3V6ZstoTbwLRckQmn/U8ZDLuWwIXNpuZDhQ3AiRUlhTbOXFVE9C+dR51wM0CBDhk31VcA==} + toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -5458,6 +5722,9 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + ts-expose-internals-conditionally@1.0.0-empty.0: + resolution: {integrity: sha512-F8m9NOF6ZhdOClDVdlM8gj3fDCav4ZIFSs/EI3ksQbAAXVSCN/Jh5OCJDDZWBuBy9psFc6jULGDlPwjMYMhJDw==} + ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -5520,6 +5787,11 @@ packages: resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} + typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.4.2: resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} engines: {node: '>=14.17'} @@ -5554,6 +5826,13 @@ packages: unenv@1.9.0: resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} + unescape-js@1.1.4: + resolution: {integrity: sha512-42SD8NOQEhdYntEiUQdYq/1V/YHwr1HLwlHuTJB5InVVdOSbgI6xu8jK5q65yIzuFCfczzyDF/7hbGzVbyCw0g==} + + unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} + unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} @@ -5694,6 +5973,10 @@ packages: 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} + valtio@1.11.0: resolution: {integrity: sha512-65Yd0yU5qs86b5lN1eu/nzcTgQ9/6YnD6iO+DDaDbQLn1Zv2w12Gwk43WkPlUBxk5wL/6cD5YMFf7kj6HZ1Kpg==} engines: {node: '>=12.20.0'} @@ -5727,14 +6010,6 @@ packages: typescript: optional: true - viem@file:src: - resolution: {directory: src, type: directory} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - vite-node@1.0.4: resolution: {integrity: sha512-9xQQtHdsz5Qn8hqbV7UKqkm8YkJhzT/zr41Dmt5N7AlD8hJXw/Z7y0QiD5I8lnTthV9Rvcvi0QW7PI0Fq83ZPg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -5773,34 +6048,6 @@ packages: terser: optional: true - vite@5.0.7: - resolution: {integrity: sha512-B4T4rJCDPihrQo2B+h1MbeGL/k/GMAHzhQ8S0LjQ142s6/+l3hHTT095ORvsshj4QCkoWu3Xtmob5mazvakaOw==} - 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: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - vite@5.2.12: resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -5854,6 +6101,9 @@ packages: jsdom: optional: true + vlq@0.2.3: + resolution: {integrity: sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==} + vocs@1.0.0-alpha.52: resolution: {integrity: sha512-+AVO5lFQ91jq2H6AdRR2HtqSfjiXesykH27XN1fo3pNHxCqxqajIUCapcEGTu1VTmHL899dyWvJgLiikxly/8w==} hasBin: true @@ -6043,6 +6293,12 @@ packages: resolution: {integrity: sha512-Ct97huExsu7cWeEjmrXlofevF8CvzUglJ4iGUet5B8xn1oumtAZBpHU4GzYuoE6PVqcZ5hghtBrSlhwHuR1Jmw==} engines: {node: '>=18'} + zod-validation-error@3.3.0: + resolution: {integrity: sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.18.0 + zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} @@ -6062,6 +6318,27 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + '@andrewbranch/untar.js@1.0.3': {} + + '@arethetypeswrong/cli@0.15.3': + dependencies: + '@arethetypeswrong/core': 0.15.1 + chalk: 4.1.2 + cli-table3: 0.6.5 + commander: 10.0.1 + marked: 9.1.6 + marked-terminal: 6.2.0(marked@9.1.6) + semver: 7.6.2 + + '@arethetypeswrong/core@0.15.1': + dependencies: + '@andrewbranch/untar.js': 1.0.3 + fflate: 0.8.2 + semver: 7.6.2 + ts-expose-internals-conditionally: 1.0.0-empty.0 + typescript: 5.3.3 + validate-npm-package-name: 5.0.1 + '@arktype/attest@0.7.5(typescript@5.4.5)': dependencies: '@arktype/fs': 0.0.19 @@ -6448,8 +6725,33 @@ snapshots: picocolors: 1.0.1 sisteransi: 1.0.5 + '@colors/colors@1.5.0': + optional: true + '@emotion/hash@0.9.1': {} + '@ericcornelissen/bash-parser@0.5.2': + dependencies: + array-last: 1.3.0 + babylon: 6.18.0 + compose-function: 3.0.3 + deep-freeze: 0.0.1 + filter-iterator: 0.0.1 + filter-obj: 1.1.0 + has-own-property: 0.1.0 + identity-function: 1.0.0 + is-iterable: 1.1.1 + iterable-lookahead: 1.0.0 + lodash.curry: 4.1.1 + magic-string: 0.16.0 + map-obj: 2.0.0 + object-pairs: 0.1.0 + object-values: 1.0.0 + reverse-arguments: 1.0.0 + shell-quote-word: 1.0.1 + to-pascal-case: 1.0.0 + unescape-js: 1.1.4 + '@esbuild/aix-ppc64@0.19.12': optional: true @@ -6770,10 +7072,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@3.0.1(@types/react@18.3.3)(react@18.2.0)': + '@mdx-js/react@3.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 18.3.3 + '@types/react': 18.0.27 react: 18.2.0 '@mdx-js/rollup@3.0.1(rollup@4.18.0)': @@ -6875,13 +7177,25 @@ snapshots: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 + '@nodelib/fs.scandir@3.0.0': + dependencies: + '@nodelib/fs.stat': 3.0.0 + run-parallel: 1.2.0 + '@nodelib/fs.stat@2.0.5': {} + '@nodelib/fs.stat@3.0.0': {} + '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@nodelib/fs.walk@2.0.0': + dependencies: + '@nodelib/fs.scandir': 3.0.0 + fastq: 1.17.1 + '@oven/bun-darwin-aarch64@1.1.12': optional: true @@ -7008,364 +7322,364 @@ snapshots: dependencies: '@babel/runtime': 7.24.6 - '@radix-ui/react-accordion@1.1.2(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-accordion@1.1.2(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 - '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 - '@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 - '@radix-ui/react-collection@1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-collection@1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.3)(react@18.2.0)': + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 react: 18.2.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 - '@radix-ui/react-context@1.0.1(@types/react@18.3.3)(react@18.2.0)': + '@radix-ui/react-context@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 react: 18.2.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 - '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) aria-hidden: 1.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.3.3)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 - '@radix-ui/react-direction@1.0.1(@types/react@18.3.3)(react@18.2.0)': + '@radix-ui/react-direction@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 react: 18.2.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 - '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.3)(react@18.2.0)': + '@radix-ui/react-focus-guards@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 react: 18.2.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 - '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 '@radix-ui/react-icons@1.3.0(react@18.2.0)': dependencies: react: 18.2.0 - '@radix-ui/react-id@1.0.1(@types/react@18.3.3)(react@18.2.0)': + '@radix-ui/react-id@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 - '@radix-ui/react-label@2.0.2(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-label@2.0.2(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 - '@radix-ui/react-navigation-menu@1.1.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-navigation-menu@1.1.4(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 - '@radix-ui/react-popover@1.0.7(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-popover@1.0.7(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) aria-hidden: 1.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.3.3)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.0.27)(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 - '@radix-ui/react-popper@1.1.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-popper@1.1.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 '@floating-ui/react-dom': 2.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.0.27)(react@18.2.0) '@radix-ui/rect': 1.0.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 - '@radix-ui/react-portal@1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-portal@1.0.4(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 - '@radix-ui/react-presence@1.0.1(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-presence@1.0.1(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 - '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 - '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 - '@radix-ui/react-slot@1.0.2(@types/react@18.3.3)(react@18.2.0)': + '@radix-ui/react-slot@1.0.2(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 - '@radix-ui/react-tabs@1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-tabs@1.0.4(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.0.27)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.3)(react@18.2.0)': + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 react: 18.2.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.3)(react@18.2.0)': + '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.3)(react@18.2.0)': + '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.3)(react@18.2.0)': + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 react: 18.2.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 - '@radix-ui/react-use-previous@1.0.1(@types/react@18.3.3)(react@18.2.0)': + '@radix-ui/react-use-previous@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 react: 18.2.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 - '@radix-ui/react-use-rect@1.0.1(@types/react@18.3.3)(react@18.2.0)': + '@radix-ui/react-use-rect@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 '@radix-ui/rect': 1.0.1 react: 18.2.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 - '@radix-ui/react-use-size@1.0.1(@types/react@18.3.3)(react@18.2.0)': + '@radix-ui/react-use-size@1.0.1(@types/react@18.0.27)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.0.27)(react@18.2.0) react: 18.2.0 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 - '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.6 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 '@types/react-dom': 18.0.10 '@radix-ui/rect@1.0.1': @@ -7470,6 +7784,8 @@ snapshots: '@sinclair/typebox@0.27.8': {} + '@sindresorhus/is@4.6.0': {} + '@sindresorhus/merge-streams@2.3.0': {} '@sindresorhus/merge-streams@4.0.0': {} @@ -7519,6 +7835,12 @@ snapshots: - uglify-js - webpack-cli + '@snyk/github-codeowners@1.1.0': + dependencies: + commander: 4.1.1 + ignore: 5.3.1 + p-map: 4.0.0 + '@stablelib/aead@1.0.1': {} '@stablelib/binary@1.0.1': @@ -7654,10 +7976,6 @@ snapshots: '@types/estree@1.0.5': {} - '@types/fs-extra@9.0.13': - dependencies: - '@types/node': 20.14.0 - '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.2 @@ -7686,10 +8004,6 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@20.13.0': - dependencies: - undici-types: 5.26.5 - '@types/node@20.14.0': dependencies: undici-types: 5.26.5 @@ -7710,11 +8024,6 @@ snapshots: '@types/scheduler': 0.23.0 csstype: 3.1.3 - '@types/react@18.3.3': - dependencies: - '@types/prop-types': 15.7.12 - csstype: 3.1.3 - '@types/scheduler@0.23.0': {} '@types/semver@6.2.7': {} @@ -8344,6 +8653,11 @@ snapshots: transitivePeerDependencies: - supports-color + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 @@ -8357,6 +8671,8 @@ snapshots: ansi-colors@4.1.3: {} + ansi-escapes@6.2.1: {} + ansi-regex@5.0.1: {} ansi-regex@6.0.1: {} @@ -8373,6 +8689,8 @@ snapshots: ansi-styles@6.2.1: {} + ansicolors@0.3.2: {} + any-promise@1.3.0: {} anymatch@3.1.3: @@ -8386,10 +8704,14 @@ snapshots: dependencies: sprintf-js: 1.0.3 + argparse@2.0.1: {} + aria-hidden@1.2.4: dependencies: tslib: 2.6.2 + arity-n@1.0.4: {} + arktype@2.0.0-dev.11: dependencies: '@arktype/schema': 0.1.2 @@ -8400,6 +8722,10 @@ snapshots: call-bind: 1.0.7 is-array-buffer: 3.0.4 + array-last@1.3.0: + dependencies: + is-number: 4.0.0 + array-union@2.1.0: {} array.prototype.flat@1.3.2: @@ -8448,6 +8774,8 @@ snapshots: b4a@1.6.6: {} + babylon@6.18.0: {} + bail@2.0.2: {} balanced-match@1.0.2: {} @@ -8588,6 +8916,11 @@ snapshots: caniuse-lite@1.0.30001626: {} + cardinal@2.1.1: + dependencies: + ansicolors: 0.3.2 + redeyed: 2.1.1 + ccount@2.0.1: {} chai@4.4.1: @@ -8613,6 +8946,8 @@ snapshots: chalk@5.3.0: {} + char-regex@1.0.2: {} + character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} @@ -8656,12 +8991,20 @@ snapshots: dependencies: consola: 3.2.3 + clean-stack@2.2.0: {} + cli-cursor@4.0.0: dependencies: restore-cursor: 4.0.0 cli-spinners@2.9.2: {} + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + client-only@0.0.1: {} clipboardy@4.0.0: @@ -8708,12 +9051,18 @@ snapshots: comma-separated-tokens@2.0.3: {} + commander@10.0.1: {} + commander@12.1.0: {} commander@2.20.3: {} commander@4.1.1: {} + compose-function@3.0.3: + dependencies: + arity-n: 1.0.4 + compressible@2.0.18: dependencies: mime-db: 1.52.0 @@ -8842,6 +9191,8 @@ snapshots: dependencies: type-detect: 4.0.8 + deep-freeze@0.0.1: {} + deep-object-diff@1.1.9: {} deepmerge@4.3.1: {} @@ -8921,6 +9272,12 @@ snapshots: eastasianwidth@0.2.0: {} + easy-table@1.2.0: + dependencies: + ansi-regex: 5.0.1 + optionalDependencies: + wcwidth: 1.0.1 + ee-first@1.1.1: {} electron-to-chromium@1.4.788: {} @@ -8931,6 +9288,8 @@ snapshots: emoji-regex@9.2.2: {} + emojilib@2.4.0: {} + encode-utf8@1.0.3: {} encodeurl@1.0.2: {} @@ -9203,7 +9562,7 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.0 require-like: 0.1.2 eventemitter3@4.0.7: {} @@ -9307,12 +9666,18 @@ snapshots: dependencies: is-unicode-supported: 2.0.0 + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + file-uri-to-path@1.0.0: {} fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 + filter-iterator@0.0.1: {} + filter-obj@1.1.0: {} find-chrome-bin@2.0.2: @@ -9336,6 +9701,11 @@ snapshots: micromatch: 4.0.7 pkg-dir: 4.2.0 + flat-cache@4.0.1: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + flatted@3.3.1: {} follow-redirects@1.15.6: {} @@ -9355,12 +9725,6 @@ snapshots: fresh@0.5.2: {} - fs-extra@10.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 @@ -9479,12 +9843,13 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@9.3.5: + glob@8.1.0: dependencies: fs.realpath: 1.0.0 - minimatch: 8.0.4 - minipass: 4.2.8 - path-scurry: 1.11.1 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 globals@11.12.0: {} @@ -9550,6 +9915,8 @@ snapshots: has-flag@4.0.0: {} + has-own-property@0.1.0: {} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 @@ -9717,8 +10084,14 @@ snapshots: idb-keyval@6.2.1: {} + identity-function@1.0.0: {} + ieee754@1.2.1: {} + ignore-walk@5.0.1: + dependencies: + minimatch: 5.1.6 + ignore@5.3.1: {} indent-string@4.0.0: {} @@ -9818,12 +10191,16 @@ snapshots: is-interactive@2.0.0: {} + is-iterable@1.1.1: {} + is-negative-zero@2.0.3: {} is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.2 + is-number@4.0.0: {} + is-number@7.0.0: {} is-plain-obj@1.1.0: {} @@ -9912,6 +10289,8 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + iterable-lookahead@1.0.0: {} + jackspeak@3.1.2: dependencies: '@isaacs/cliui': 8.0.2 @@ -9935,10 +10314,16 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + jsbn@1.1.0: {} jsesc@2.5.2: {} + json-buffer@3.0.1: {} + json-parse-even-better-errors@2.3.1: {} json-schema-traverse@0.4.1: {} @@ -9962,12 +10347,39 @@ snapshots: jsonparse: 1.3.1 through2: 4.0.2 + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + keyvaluestorage-interface@1.0.0: {} kind-of@6.0.3: {} kleur@4.1.5: {} + knip@5.17.4(@types/node@20.14.0)(typescript@5.4.5): + dependencies: + '@ericcornelissen/bash-parser': 0.5.2 + '@nodelib/fs.walk': 2.0.0 + '@snyk/github-codeowners': 1.1.0 + '@types/node': 20.14.0 + easy-table: 1.2.0 + fast-glob: 3.3.2 + file-entry-cache: 8.0.0 + jiti: 1.21.0 + js-yaml: 4.1.0 + minimist: 1.2.8 + picocolors: 1.0.0 + picomatch: 4.0.2 + pretty-ms: 9.0.0 + resolve: 1.22.8 + smol-toml: 1.1.4 + strip-json-comments: 5.0.1 + summary: 2.1.0 + typescript: 5.4.5 + zod: 3.22.4 + zod-validation-error: 3.3.0(zod@3.22.4) + lilconfig@2.1.0: {} lilconfig@3.1.1: {} @@ -10035,6 +10447,8 @@ snapshots: dependencies: p-locate: 5.0.0 + lodash.curry@4.1.1: {} + lodash.isequal@4.5.0: {} lodash.startcase@4.4.0: {} @@ -10073,6 +10487,10 @@ snapshots: lru-cache@7.18.3: {} + magic-string@0.16.0: + dependencies: + vlq: 0.2.3 + magic-string@0.27.0: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -10093,6 +10511,8 @@ snapshots: map-obj@1.0.1: {} + map-obj@2.0.0: {} + map-obj@4.3.0: {} mark.js@8.11.1: {} @@ -10101,6 +10521,18 @@ snapshots: markdown-table@3.0.3: {} + marked-terminal@6.2.0(marked@9.1.6): + dependencies: + ansi-escapes: 6.2.1 + cardinal: 2.1.1 + chalk: 5.3.0 + cli-table3: 0.6.5 + marked: 9.1.6 + node-emoji: 2.1.3 + supports-hyperlinks: 3.0.0 + + marked@9.1.6: {} + mdast-util-directive@3.0.0: dependencies: '@types/mdast': 4.0.4 @@ -10616,7 +11048,7 @@ snapshots: dependencies: brace-expansion: 1.1.11 - minimatch@8.0.4: + minimatch@5.1.6: dependencies: brace-expansion: 2.0.1 @@ -10630,7 +11062,7 @@ snapshots: is-plain-obj: 1.1.0 kind-of: 6.0.3 - minipass@4.2.8: {} + minimist@1.2.8: {} minipass@7.1.2: {} @@ -10719,6 +11151,13 @@ snapshots: node-addon-api@7.1.0: {} + node-emoji@2.1.3: + dependencies: + '@sindresorhus/is': 4.6.0 + char-regex: 1.0.2 + emojilib: 2.4.0 + skin-tone: 2.0.0 + node-fetch-native@1.6.4: {} node-fetch@2.7.0: @@ -10742,6 +11181,19 @@ snapshots: not@0.1.0: {} + npm-bundled@2.0.1: + dependencies: + npm-normalize-package-bin: 2.0.0 + + npm-normalize-package-bin@2.0.0: {} + + npm-packlist@5.1.3: + dependencies: + glob: 8.1.0 + ignore-walk: 5.0.1 + npm-bundled: 2.0.1 + npm-normalize-package-bin: 2.0.0 + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 @@ -10762,6 +11214,10 @@ snapshots: object-keys@1.1.1: {} + object-pairs@0.1.0: {} + + object-values@1.0.0: {} + object.assign@4.1.5: dependencies: call-bind: 1.0.7 @@ -10841,6 +11297,10 @@ snapshots: p-map@2.1.0: {} + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + p-try@2.2.0: {} pac-proxy-agent@7.0.1: @@ -10914,10 +11374,14 @@ snapshots: estree-walker: 3.0.3 is-reference: 3.0.2 + picocolors@1.0.0: {} + picocolors@1.0.1: {} picomatch@2.3.1: {} + picomatch@4.0.2: {} + pify@2.3.0: {} pify@4.0.1: {} @@ -11071,6 +11535,12 @@ snapshots: pseudomap@1.0.2: {} + publint@0.2.8: + dependencies: + npm-packlist: 5.1.3 + picocolors: 1.0.1 + sade: 1.8.1 + pump@3.0.0: dependencies: end-of-stream: 1.4.4 @@ -11148,24 +11618,24 @@ snapshots: react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.2.0): + react-remove-scroll-bar@2.3.6(@types/react@18.0.27)(react@18.2.0): dependencies: react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) tslib: 2.6.2 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 - react-remove-scroll@2.5.5(@types/react@18.3.3)(react@18.2.0): + react-remove-scroll@2.5.5(@types/react@18.0.27)(react@18.2.0): dependencies: react: 18.2.0 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.2.0) + react-remove-scroll-bar: 2.3.6(@types/react@18.0.27)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.0.27)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.2.0) + use-callback-ref: 1.3.2(@types/react@18.0.27)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.0.27)(react@18.2.0) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 react-router-dom@6.23.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: @@ -11183,14 +11653,14 @@ snapshots: dependencies: react: 18.2.0 - react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.2.0): + react-style-singleton@2.2.1(@types/react@18.0.27)(react@18.2.0): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 tslib: 2.6.2 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 react@18.2.0: dependencies: @@ -11237,6 +11707,10 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 + redeyed@2.1.1: + dependencies: + esprima: 4.0.1 + regenerator-runtime@0.14.1: {} regexp.prototype.flags@1.5.2: @@ -11363,9 +11837,7 @@ snapshots: reusify@1.0.4: {} - rimraf@4.4.1: - dependencies: - glob: 9.3.5 + reverse-arguments@1.0.0: {} rollup@3.29.4: optionalDependencies: @@ -11397,6 +11869,10 @@ snapshots: dependencies: queue-microtask: 1.2.3 + sade@1.8.1: + dependencies: + mri: 1.2.0 + safe-array-concat@1.1.2: dependencies: call-bind: 1.0.7 @@ -11501,6 +11977,35 @@ snapshots: shebang-regex@3.0.0: {} + shell-quote-word@1.0.1: {} + + sherif-darwin-arm64@0.8.4: + optional: true + + sherif-darwin-x64@0.8.4: + optional: true + + sherif-linux-arm64@0.8.4: + optional: true + + sherif-linux-x64@0.8.4: + optional: true + + sherif-windows-arm64@0.8.4: + optional: true + + sherif-windows-x64@0.8.4: + optional: true + + sherif@0.8.4: + optionalDependencies: + sherif-darwin-arm64: 0.8.4 + sherif-darwin-x64: 0.8.4 + sherif-linux-arm64: 0.8.4 + sherif-linux-x64: 0.8.4 + sherif-windows-arm64: 0.8.4 + sherif-windows-x64: 0.8.4 + shiki@1.6.2: dependencies: '@shikijs/core': 1.6.2 @@ -11538,6 +12043,10 @@ snapshots: nanospinner: 1.1.0 picocolors: 1.0.1 + skin-tone@2.0.0: + dependencies: + unicode-emoji-modifier-base: 1.0.0 + slash@3.0.0: {} slash@4.0.0: {} @@ -11555,6 +12064,8 @@ snapshots: wcwidth: 1.0.1 yargs: 15.4.1 + smol-toml@1.1.4: {} + socks-proxy-agent@8.0.3: dependencies: agent-base: 7.1.1 @@ -11662,6 +12173,8 @@ snapshots: emoji-regex: 10.3.0 strip-ansi: 7.1.0 + string.fromcodepoint@0.2.1: {} + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 @@ -11710,6 +12223,8 @@ snapshots: dependencies: min-indent: 1.0.1 + strip-json-comments@5.0.1: {} + strip-literal@1.3.0: dependencies: acorn: 8.11.3 @@ -11737,6 +12252,8 @@ snapshots: pirates: 4.0.6 ts-interface-checker: 0.1.13 + summary@2.1.0: {} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -11749,6 +12266,11 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-hyperlinks@3.0.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} system-architecture@0.1.0: {} @@ -11856,10 +12378,20 @@ snapshots: to-fast-properties@2.0.0: {} + to-no-case@1.0.2: {} + + to-pascal-case@1.0.0: + dependencies: + to-space-case: 1.0.0 + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 + to-space-case@1.0.0: + dependencies: + to-no-case: 1.0.2 + toidentifier@1.0.1: {} toml@3.0.0: {} @@ -11876,6 +12408,8 @@ snapshots: trough@2.2.0: {} + ts-expose-internals-conditionally@1.0.0-empty.0: {} + ts-interface-checker@0.1.13: {} tslib@1.14.1: {} @@ -11951,6 +12485,8 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 + typescript@5.3.3: {} + typescript@5.4.2: {} typescript@5.4.5: {} @@ -11987,6 +12523,12 @@ snapshots: node-fetch-native: 1.6.4 pathe: 1.1.2 + unescape-js@1.1.4: + dependencies: + string.fromcodepoint: 0.2.1 + + unicode-emoji-modifier-base@1.0.0: {} + unicorn-magic@0.1.0: {} unified@10.1.2: @@ -12086,20 +12628,20 @@ snapshots: urlpattern-polyfill@10.0.0: {} - use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.2.0): + use-callback-ref@1.3.2(@types/react@18.0.27)(react@18.2.0): dependencies: react: 18.2.0 tslib: 2.6.2 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 - use-sidecar@1.1.2(@types/react@18.3.3)(react@18.2.0): + use-sidecar@1.1.2(@types/react@18.0.27)(react@18.2.0): dependencies: detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.2 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.0.27 use-sync-external-store@1.2.0(react@18.2.0): dependencies: @@ -12118,6 +12660,8 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 + validate-npm-package-name@5.0.1: {} + valtio@1.11.0(react@18.2.0): dependencies: proxy-compare: 2.5.1 @@ -12167,30 +12711,13 @@ snapshots: - utf-8-validate - zod - viem@file:src(typescript@5.4.5)(zod@3.22.4): - dependencies: - '@adraffy/ens-normalize': 1.10.0 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/bip32': 1.3.2 - '@scure/bip39': 1.2.1 - abitype: 1.0.0(typescript@5.4.5)(zod@3.22.4) - isows: 1.0.4(ws@8.13.0) - ws: 8.13.0 - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - vite-node@1.0.4(@types/node@20.14.0)(terser@5.31.0): dependencies: cac: 6.7.14 debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.0.7(@types/node@20.14.0)(terser@5.31.0) + vite: 5.2.12(@types/node@20.14.0)(terser@5.31.0) transitivePeerDependencies: - '@types/node' - less @@ -12238,16 +12765,6 @@ snapshots: fsevents: 2.3.3 terser: 5.31.0 - vite@5.0.7(@types/node@20.14.0)(terser@5.31.0): - dependencies: - esbuild: 0.19.12 - postcss: 8.4.38 - rollup: 4.18.0 - optionalDependencies: - '@types/node': 20.14.0 - fsevents: 2.3.3 - terser: 5.31.0 - vite@5.2.12(@types/node@20.14.0)(terser@5.31.0): dependencies: esbuild: 0.20.2 @@ -12278,7 +12795,7 @@ snapshots: strip-literal: 1.3.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.0.7(@types/node@20.14.0)(terser@5.31.0) + vite: 5.2.12(@types/node@20.14.0)(terser@5.31.0) vite-node: 1.0.4(@types/node@20.14.0)(terser@5.31.0) why-is-node-running: 2.2.2 optionalDependencies: @@ -12293,21 +12810,23 @@ snapshots: - supports-color - terser - vocs@1.0.0-alpha.52(@types/node@20.14.0)(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.18.0)(terser@5.31.0)(typescript@5.4.5): + vlq@0.2.3: {} + + vocs@1.0.0-alpha.52(@types/node@20.14.0)(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.18.0)(terser@5.31.0)(typescript@5.4.5): dependencies: '@floating-ui/react': 0.26.16(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@hono/node-server': 1.11.2 - '@mdx-js/react': 3.0.1(@types/react@18.3.3)(react@18.2.0) + '@mdx-js/react': 3.0.1(@types/react@18.0.27)(react@18.2.0) '@mdx-js/rollup': 3.0.1(rollup@4.18.0) '@noble/hashes': 1.3.2 '@radix-ui/colors': 3.0.0 - '@radix-ui/react-accordion': 1.1.2(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-accordion': 1.1.2(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@radix-ui/react-icons': 1.3.0(react@18.2.0) - '@radix-ui/react-label': 2.0.2(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-navigation-menu': 1.1.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-popover': 1.0.7(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-tabs': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.3.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-label': 2.0.2(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-navigation-menu': 1.1.4(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-popover': 1.0.7(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-tabs': 1.0.4(@types/react-dom@18.0.10)(@types/react@18.0.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@shikijs/rehype': 1.6.2 '@shikijs/transformers': 1.6.2 '@shikijs/twoslash': 1.6.2(typescript@5.4.5) @@ -12558,6 +13077,10 @@ snapshots: yoctocolors@2.0.2: {} + zod-validation-error@3.3.0(zod@3.22.4): + dependencies: + zod: 3.22.4 + zod@3.22.4: {} zwitch@2.0.4: {} diff --git a/scripts/generateTypedArtifacts.ts b/scripts/generateTypedArtifacts.ts index 23fb960ce7..0333cd6966 100644 --- a/scripts/generateTypedArtifacts.ts +++ b/scripts/generateTypedArtifacts.ts @@ -1,5 +1,5 @@ import { join } from 'node:path' -import { globby } from 'globby' +import { Glob } from 'bun' const generatedPath = join(import.meta.dir, '../test/contracts/generated.ts') Bun.write(generatedPath, '') @@ -7,17 +7,14 @@ Bun.write(generatedPath, '') const generated = Bun.file(generatedPath) const writer = generated.writer() -const paths = await globby([ - join(import.meta.dir, '../test/contracts/out/**/*.json'), -]) - const fileNames = [] -for (const path of paths) { - const fileName = path.split('/').pop()?.replace('.json', '') +const glob = new Glob('test/contracts/out/**/*.json') +for await (const file of glob.scan('.')) { + const fileName = file.split('/').pop()?.replace('.json', '') if (fileNames.includes(fileName)) continue - const { abi, bytecode } = await Bun.file(path, { + const { abi, bytecode } = await Bun.file(file, { type: 'application/json', }).json() fileNames.push(fileName) diff --git a/src/accounts/hdKeyToAccount.ts b/src/accounts/hdKeyToAccount.ts index 1bfd64ff3b..047a9dde28 100644 --- a/src/accounts/hdKeyToAccount.ts +++ b/src/accounts/hdKeyToAccount.ts @@ -1,8 +1,7 @@ -import type { HDKey } from '@scure/bip32' - import { type ToHexErrorType, toHex } from '../utils/encoding/toHex.js' import type { ErrorType } from '../errors/utils.js' +import type { HDKey } from '../types/account.js' import { type PrivateKeyToAccountErrorType, privateKeyToAccount, diff --git a/src/accounts/types.ts b/src/accounts/types.ts index dd57144d98..5f209bc4e5 100644 --- a/src/accounts/types.ts +++ b/src/accounts/types.ts @@ -1,6 +1,6 @@ -import type { HDKey } from '@scure/bip32' import type { Address, TypedData } from 'abitype' +import type { HDKey } from '../types/account.js' import type { Hash, Hex, SignableMessage } from '../types/misc.js' import type { TransactionSerializable, diff --git a/src/actions/public/call.ts b/src/actions/public/call.ts index be84773d13..7475cd318b 100644 --- a/src/actions/public/call.ts +++ b/src/actions/public/call.ts @@ -67,10 +67,6 @@ import type { AssertRequestParameters, } from '../../utils/transaction/assertRequest.js' -export type FormattedCall< - TChain extends Chain | undefined = Chain | undefined, -> = FormattedTransactionRequest - export type CallParameters< TChain extends Chain | undefined = Chain | undefined, > = UnionOmit, 'from'> & { @@ -92,6 +88,8 @@ export type CallParameters< blockTag?: BlockTag | undefined } ) +type FormattedCall = + FormattedTransactionRequest export type CallReturnType = { data: Hex | undefined } @@ -256,7 +254,7 @@ type ScheduleMulticallParameters = Pick< to: Address } -export type ScheduleMulticallErrorType = +type ScheduleMulticallErrorType = | GetChainContractAddressErrorType | NumberToHexErrorType | CreateBatchSchedulerErrorType @@ -345,8 +343,10 @@ async function scheduleMulticall( return { data: returnData } } +/** @internal */ export type GetRevertErrorDataErrorType = ErrorType +/** @internal */ export function getRevertErrorData(err: unknown) { if (!(err instanceof BaseError)) return undefined const error = err.walk() as RawContractError diff --git a/src/actions/public/estimateGas.ts b/src/actions/public/estimateGas.ts index 65ac81bfb6..5fa83aeecf 100644 --- a/src/actions/public/estimateGas.ts +++ b/src/actions/public/estimateGas.ts @@ -37,10 +37,6 @@ import { prepareTransactionRequest, } from '../wallet/prepareTransactionRequest.js' -export type FormattedEstimateGas< - TChain extends Chain | undefined = Chain | undefined, -> = FormattedTransactionRequest - export type EstimateGasParameters< TChain extends Chain | undefined = Chain | undefined, > = UnionOmit, 'from'> & { @@ -61,6 +57,9 @@ export type EstimateGasParameters< blockTag?: BlockTag | undefined } ) +type FormattedEstimateGas< + TChain extends Chain | undefined = Chain | undefined, +> = FormattedTransactionRequest export type EstimateGasReturnType = bigint diff --git a/src/actions/public/getBlockNumber.ts b/src/actions/public/getBlockNumber.ts index 08bf0aef81..50dc2cc6e1 100644 --- a/src/actions/public/getBlockNumber.ts +++ b/src/actions/public/getBlockNumber.ts @@ -3,7 +3,11 @@ import type { Transport } from '../../clients/transports/createTransport.js' import type { ErrorType } from '../../errors/utils.js' import type { Chain } from '../../types/chain.js' import type { RequestErrorType } from '../../utils/buildRequest.js' -import { getCache, withCache } from '../../utils/promise/withCache.js' +import { + type GetCacheErrorType, + getCache, + withCache, +} from '../../utils/promise/withCache.js' export type GetBlockNumberParameters = { /** Time (in ms) that cached block number will remain in memory. */ @@ -16,6 +20,10 @@ export type GetBlockNumberErrorType = RequestErrorType | ErrorType const cacheKey = (id: string) => `blockNumber.${id}` +/** @internal */ +export type GetBlockNumberCacheErrorType = GetCacheErrorType | ErrorType + +/** @internal */ export function getBlockNumberCache(id: string) { return getCache(cacheKey(id)) } diff --git a/src/actions/wallet/prepareTransactionRequest.ts b/src/actions/wallet/prepareTransactionRequest.ts index f208f9aaf8..6fa59b0737 100644 --- a/src/actions/wallet/prepareTransactionRequest.ts +++ b/src/actions/wallet/prepareTransactionRequest.ts @@ -115,26 +115,6 @@ export type PrepareTransactionRequestParameters< GetChainParameter & GetTransactionRequestKzgParameter & { chainId?: number | undefined } -export type PrepareTransactionRequestReturnType_< - chain extends Chain | undefined = Chain | undefined, - account extends Account | undefined = Account | undefined, - chainOverride extends Chain | undefined = Chain | undefined, - accountOverride extends Account | Address | undefined = - | Account - | Address - | undefined, - /// - _derivedAccount extends Account | Address | undefined = DeriveAccount< - account, - accountOverride - >, - _derivedChain extends Chain | undefined = DeriveChain, -> = UnionOmit, 'from'> & - GetChainParameter & - (_derivedAccount extends Account - ? { account: _derivedAccount; from: Address } - : { account?: undefined; from?: undefined }) - export type PrepareTransactionRequestReturnType< chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined, diff --git a/src/actions/wallet/signTypedData.ts b/src/actions/wallet/signTypedData.ts index 439a39104b..d862f5a1e5 100644 --- a/src/actions/wallet/signTypedData.ts +++ b/src/actions/wallet/signTypedData.ts @@ -22,6 +22,7 @@ import type { IsHexErrorType } from '../../utils/data/isHex.js' import type { StringifyErrorType } from '../../utils/stringify.js' import { type GetTypesForEIP712DomainErrorType, + type SerializeTypedDataErrorType, type ValidateTypedDataErrorType, getTypesForEIP712Domain, serializeTypedData, @@ -48,6 +49,7 @@ export type SignTypedDataErrorType = | SignTypedDataErrorType_account | IsHexErrorType | RequestErrorType + | SerializeTypedDataErrorType | ErrorType /** diff --git a/src/celo/index.ts b/src/celo/index.ts index c84b14c64d..db67a64a90 100644 --- a/src/celo/index.ts +++ b/src/celo/index.ts @@ -1,9 +1,12 @@ // biome-ignore lint/performance/noBarrelFile: entrypoint module export { chainConfig } from './chainConfig.js' -export { parseTransaction } from './parsers.js' +export { type ParseTransactionReturnType, parseTransaction } from './parsers.js' -export { serializeTransaction } from './serializers.js' +export { + type SerializeTransactionCIP64ReturnType, + serializeTransaction, +} from './serializers.js' export type { CeloBlock, diff --git a/src/celo/utils.ts b/src/celo/utils.ts index d16552b7a0..d16b68c7ab 100644 --- a/src/celo/utils.ts +++ b/src/celo/utils.ts @@ -28,6 +28,7 @@ export function isPresent( return !isEmpty(value) } +/** @internal */ export function isEIP1559( transaction: CeloTransactionSerializable | CeloTransactionRequest, ): boolean { diff --git a/src/clients/createClient.ts b/src/clients/createClient.ts index ee03acdb97..cff5be076a 100644 --- a/src/clients/createClient.ts +++ b/src/clients/createClient.ts @@ -1,7 +1,10 @@ import type { Address } from 'abitype' import type { JsonRpcAccount } from '../accounts/types.js' -import type { ParseAccountErrorType } from '../accounts/utils/parseAccount.js' +import { + type ParseAccountErrorType, + parseAccount, +} from '../accounts/utils/parseAccount.js' import type { ErrorType } from '../errors/utils.js' import type { Account } from '../types/account.js' import type { Chain } from '../types/chain.js' @@ -11,7 +14,6 @@ import type { RpcSchema, } from '../types/eip1193.js' import type { ExactPartial, Prettify } from '../types/utils.js' -import { parseAccount } from '../utils/accounts.js' import type { CcipRequestParameters, CcipRequestReturnType, diff --git a/src/clients/transports/fallback.ts b/src/clients/transports/fallback.ts index 0c7b28a628..fd975bd17b 100644 --- a/src/clients/transports/fallback.ts +++ b/src/clients/transports/fallback.ts @@ -195,6 +195,7 @@ function shouldThrow(error: Error) { return false } +/** @internal */ export function rankTransports({ chain, interval = 4_000, diff --git a/src/clients/transports/http.ts b/src/clients/transports/http.ts index df78d6a3a2..1d3480b84b 100644 --- a/src/clients/transports/http.ts +++ b/src/clients/transports/http.ts @@ -18,19 +18,20 @@ import { createTransport, } from './createTransport.js' -export type BatchOptions = { - /** The maximum number of JSON-RPC requests to send in a batch. @default 1_000 */ - batchSize?: number | undefined - /** The maximum number of milliseconds to wait before sending a batch. @default 0 */ - wait?: number | undefined -} - export type HttpTransportConfig = { /** * Whether to enable Batch JSON-RPC. * @link https://www.jsonrpc.org/specification#batch */ - batch?: boolean | BatchOptions | undefined + batch?: + | boolean + | { + /** The maximum number of JSON-RPC requests to send in a batch. @default 1_000 */ + batchSize?: number | undefined + /** The maximum number of milliseconds to wait before sending a batch. @default 0 */ + wait?: number | undefined + } + | undefined /** * Request configuration to pass to `fetch`. * @link https://developer.mozilla.org/en-US/docs/Web/API/fetch diff --git a/src/constants/abis.ts b/src/constants/abis.ts index 8180876424..df58e90f10 100644 --- a/src/constants/abis.ts +++ b/src/constants/abis.ts @@ -188,6 +188,7 @@ export const addressResolverAbi = [ // ERC-1271 // isValidSignature(bytes32 hash, bytes signature) → bytes4 magicValue +/** @internal */ export const smartAccountAbi = [ { name: 'isValidSignature', diff --git a/src/constants/blob.ts b/src/constants/blob.ts index 1215c90bd8..433090cba4 100644 --- a/src/constants/blob.ts +++ b/src/constants/blob.ts @@ -1,7 +1,7 @@ // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-4844.md#parameters /** Blob limit per transaction. */ -export const blobsPerTransaction = 6 +const blobsPerTransaction = 6 /** The number of bytes in a BLS scalar field element. */ export const bytesPerFieldElement = 32 diff --git a/src/constants/kzg.ts b/src/constants/kzg.ts index a466ae0926..85c615ac73 100644 --- a/src/constants/kzg.ts +++ b/src/constants/kzg.ts @@ -1,9 +1,3 @@ // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-4844.md#parameters -/** The number of bytes in a KZG commitment. */ -export const bytesPerCommitment = 48 - -/** The number of bytes in a KZG proof. */ -export const bytesPerProof = 48 - export const versionedHashVersionKzg = 1 diff --git a/src/errors/abi.ts b/src/errors/abi.ts index 57a1a2a551..01d85e24ec 100644 --- a/src/errors/abi.ts +++ b/src/errors/abi.ts @@ -95,19 +95,6 @@ export class AbiDecodingDataSizeTooSmallError extends BaseError { } } -export type AbiDecodingOffsetOutOfBoundsErrorType = - AbiDecodingOffsetOutOfBoundsError & { - name: 'AbiDecodingOffsetOutOfBoundsError' - } -export class AbiDecodingOffsetOutOfBoundsError extends BaseError { - override name = 'AbiDecodingOffsetOutOfBoundsError' - constructor({ offset, position }: { offset: number; position: number }) { - super( - `Offset at "${offset}" is out-of-bounds (current position: "${position}").`, - ) - } -} - export type AbiDecodingZeroDataErrorType = AbiDecodingZeroDataError & { name: 'AbiDecodingZeroDataError' } diff --git a/src/errors/ccip.ts b/src/errors/ccip.ts index dc8c4d024c..9422fb7986 100644 --- a/src/errors/ccip.ts +++ b/src/errors/ccip.ts @@ -68,6 +68,7 @@ export class OffchainLookupResponseMalformedError extends BaseError { } } +/** @internal */ export type OffchainLookupSenderMismatchErrorType = OffchainLookupSenderMismatchError & { name: 'OffchainLookupSenderMismatchError' diff --git a/src/errors/stateOverride.ts b/src/errors/stateOverride.ts index d48135ed3e..eefde16673 100644 --- a/src/errors/stateOverride.ts +++ b/src/errors/stateOverride.ts @@ -23,6 +23,7 @@ export class StateAssignmentConflictError extends BaseError { } } +/** @internal */ export function prettyStateMapping(stateMapping: StateMapping) { return stateMapping.reduce((pretty, { slot, value }) => { return `${pretty} ${slot}: ${value}\n` diff --git a/src/experimental/eip5792/actions/getCapabilities.test.ts b/src/experimental/eip5792/actions/getCapabilities.test.ts index 6fc795ad4b..facdfd1e0a 100644 --- a/src/experimental/eip5792/actions/getCapabilities.test.ts +++ b/src/experimental/eip5792/actions/getCapabilities.test.ts @@ -1,9 +1,10 @@ import { expect, test } from 'vitest' + import { accounts } from '../../../../test/src/constants.js' +import type { JsonRpcAccount } from '../../../accounts/types.js' import { type Client, createClient } from '../../../clients/createClient.js' import type { Transport } from '../../../clients/transports/createTransport.js' import { custom } from '../../../clients/transports/custom.js' -import type { JsonRpcAccount } from '../../../types/account.js' import type { Chain } from '../../../types/chain.js' import { getCapabilities } from './getCapabilities.js' diff --git a/src/experimental/eip5792/actions/getCapabilities.ts b/src/experimental/eip5792/actions/getCapabilities.ts index db4b010eb2..525ec39fa4 100644 --- a/src/experimental/eip5792/actions/getCapabilities.ts +++ b/src/experimental/eip5792/actions/getCapabilities.ts @@ -1,3 +1,4 @@ +import { parseAccount } from '../../../accounts/utils/parseAccount.js' import type { Client } from '../../../clients/createClient.js' import type { Transport } from '../../../clients/transports/createTransport.js' import { AccountNotFoundError } from '../../../errors/account.js' @@ -9,7 +10,6 @@ import type { WalletCapabilitiesRecord, } from '../../../types/eip1193.js' import type { Prettify } from '../../../types/utils.js' -import { parseAccount } from '../../../utils/accounts.js' import type { RequestErrorType } from '../../../utils/buildRequest.js' export type GetCapabilitiesParameters< diff --git a/src/experimental/eip5792/actions/sendCalls.ts b/src/experimental/eip5792/actions/sendCalls.ts index 19b1f21ecd..8c6d2d7652 100644 --- a/src/experimental/eip5792/actions/sendCalls.ts +++ b/src/experimental/eip5792/actions/sendCalls.ts @@ -1,3 +1,4 @@ +import { parseAccount } from '../../../accounts/utils/parseAccount.js' import type { Client } from '../../../clients/createClient.js' import type { Transport } from '../../../clients/transports/createTransport.js' import { AccountNotFoundError } from '../../../errors/account.js' @@ -12,7 +13,6 @@ import type { } from '../../../types/eip1193.js' import type { Hex } from '../../../types/misc.js' import type { OneOf } from '../../../types/utils.js' -import { parseAccount } from '../../../utils/accounts.js' import type { RequestErrorType } from '../../../utils/buildRequest.js' import { numberToHex } from '../../../utils/encoding/toHex.js' import { getTransactionError } from '../../../utils/errors/getTransactionError.js' diff --git a/src/experimental/erc7715/types/permission.ts b/src/experimental/erc7715/types/permission.ts index 68311fddb0..9dcc576374 100644 --- a/src/experimental/erc7715/types/permission.ts +++ b/src/experimental/erc7715/types/permission.ts @@ -2,6 +2,7 @@ import type { Address } from 'abitype' import type { OneOf } from '../../../types/utils.js' +/** @internal */ export type NativeTokenLimitPermission = { type: 'native-token-limit' data: { @@ -9,6 +10,7 @@ export type NativeTokenLimitPermission = { } } +/** @internal */ export type Erc20LimitPermission = { type: 'erc20-limit' data: { @@ -17,6 +19,7 @@ export type Erc20LimitPermission = { } } +/** @internal */ export type GasLimitPermission = { type: 'gas-limit' data: { @@ -24,11 +27,13 @@ export type GasLimitPermission = { } } +/** @internal */ export type ContractCallPermission = { type: 'contract-call' data: unknown } +/** @internal */ export type RateLimitPermission = { type: 'rate-limit' data: { diff --git a/src/experimental/erc7715/types/signer.ts b/src/experimental/erc7715/types/signer.ts index 346400a7ef..0d3facd646 100644 --- a/src/experimental/erc7715/types/signer.ts +++ b/src/experimental/erc7715/types/signer.ts @@ -1,6 +1,7 @@ import type { Address } from 'abitype' import type { OneOf } from '../../../types/utils.js' +/** @internal */ export type AccountSigner = { type: 'account' data: { @@ -8,6 +9,7 @@ export type AccountSigner = { } } +/** @internal */ export type KeySigner = { type: 'key' data: { @@ -15,6 +17,7 @@ export type KeySigner = { } } +/** @internal */ export type MultiKeySigner = { type: 'keys' data: { diff --git a/src/index.test.ts b/src/index.test.ts index b4f418f283..7257ee3c4f 100644 --- a/src/index.test.ts +++ b/src/index.test.ts @@ -247,6 +247,7 @@ test('exports', () => { "UrlRequiredError", "AccountStateConflictError", "StateAssignmentConflictError", + "EIP1193ProviderRpcError", "labelhash", "namehash", "defineBlock", diff --git a/src/index.ts b/src/index.ts index 9b0f4fc5a3..3b21398be3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -994,7 +994,7 @@ export type { EIP1193Provider, EIP1193RequestFn, EIP1474Methods, - ProviderRpcError as EIP1193ProviderRpcError, + ProviderRpcErrorType as EIP1193ProviderRpcErrorType, ProviderConnectInfo, ProviderMessage, PublicRpcSchema, @@ -1014,6 +1014,7 @@ export type { WalletRpcSchema, WatchAssetParams, } from './types/eip1193.js' +export { ProviderRpcError as EIP1193ProviderRpcError } from './types/eip1193.js' export type { BlobSidecar, BlobSidecars } from './types/eip4844.js' export type { FeeHistory, @@ -1026,7 +1027,6 @@ export type { export type { Filter, FilterType } from './types/filter.js' export type { TypedDataDefinition } from './types/typedData.js' export type { GetTransportConfig, GetPollOptions } from './types/transport.js' -export type { HDKey } from '@scure/bip32' export type { Log } from './types/log.js' export type { MulticallContracts, @@ -1036,6 +1036,7 @@ export type { export type { ParseAccount, DeriveAccount, + HDKey, } from './types/account.js' export type { Index, @@ -1178,6 +1179,7 @@ export { export { type GetAbiItemErrorType, type GetAbiItemParameters, + type GetAbiItemReturnType, getAbiItem, } from './utils/abi/getAbiItem.js' export { @@ -1553,19 +1555,33 @@ export { hashMessage, } from './utils/signature/hashMessage.js' export { + type IsAddressOptions, type IsAddressErrorType, isAddress, } from './utils/address/isAddress.js' export { + type IsAddressEqualReturnType, type IsAddressEqualErrorType, isAddressEqual, } from './utils/address/isAddressEqual.js' export { type IsBytesErrorType, isBytes } from './utils/data/isBytes.js' export { type IsHashErrorType, isHash } from './utils/hash/isHash.js' export { type IsHexErrorType, isHex } from './utils/data/isHex.js' -export { type Keccak256ErrorType, keccak256 } from './utils/hash/keccak256.js' -export { type Sha256ErrorType, sha256 } from './utils/hash/sha256.js' -export { type Ripemd160ErrorType, ripemd160 } from './utils/hash/ripemd160.js' +export { + type Keccak256Hash, + type Keccak256ErrorType, + keccak256, +} from './utils/hash/keccak256.js' +export { + type Sha256Hash, + type Sha256ErrorType, + sha256, +} from './utils/hash/sha256.js' +export { + type Ripemd160Hash, + type Ripemd160ErrorType, + ripemd160, +} from './utils/hash/ripemd160.js' export { type PadBytesErrorType, type PadErrorType, diff --git a/src/node/trustedSetups.ts b/src/node/trustedSetups.ts index d65bd04828..e67110634e 100644 --- a/src/node/trustedSetups.ts +++ b/src/node/trustedSetups.ts @@ -12,8 +12,3 @@ export const mainnetTrustedSetupPath = resolve( __dirname, '../trusted-setups/mainnet.json', ) - -export const minimalTrustedSetupPath = resolve( - __dirname, - '../trusted-setups/mainnet.json', -) diff --git a/src/node/trustedSetups_cjs.ts b/src/node/trustedSetups_cjs.ts index 5528612573..1297e31f01 100644 --- a/src/node/trustedSetups_cjs.ts +++ b/src/node/trustedSetups_cjs.ts @@ -4,8 +4,3 @@ export const mainnetTrustedSetupPath = resolve( __dirname, '../trusted-setups/mainnet.json', ) - -export const minimalTrustedSetupPath = resolve( - __dirname, - '../trusted-setups/mainnet.json', -) diff --git a/src/op-stack/abis.ts b/src/op-stack/abis.ts index a02dea66bc..6d887bdcf8 100644 --- a/src/op-stack/abis.ts +++ b/src/op-stack/abis.ts @@ -335,464 +335,6 @@ export const l2OutputOracleAbi = [ }, ] as const -export const l1StandardBridgeAbi = [ - { stateMutability: 'nonpayable', type: 'constructor', inputs: [] }, - { - type: 'event', - anonymous: false, - inputs: [ - { - name: 'localToken', - internalType: 'address', - type: 'address', - indexed: true, - }, - { - name: 'remoteToken', - internalType: 'address', - type: 'address', - indexed: true, - }, - { name: 'from', internalType: 'address', type: 'address', indexed: true }, - { name: 'to', internalType: 'address', type: 'address', indexed: false }, - { - name: 'amount', - internalType: 'uint256', - type: 'uint256', - indexed: false, - }, - { - name: 'extraData', - internalType: 'bytes', - type: 'bytes', - indexed: false, - }, - ], - name: 'ERC20BridgeFinalized', - }, - { - type: 'event', - anonymous: false, - inputs: [ - { - name: 'localToken', - internalType: 'address', - type: 'address', - indexed: true, - }, - { - name: 'remoteToken', - internalType: 'address', - type: 'address', - indexed: true, - }, - { name: 'from', internalType: 'address', type: 'address', indexed: true }, - { name: 'to', internalType: 'address', type: 'address', indexed: false }, - { - name: 'amount', - internalType: 'uint256', - type: 'uint256', - indexed: false, - }, - { - name: 'extraData', - internalType: 'bytes', - type: 'bytes', - indexed: false, - }, - ], - name: 'ERC20BridgeInitiated', - }, - { - type: 'event', - anonymous: false, - inputs: [ - { - name: 'l1Token', - internalType: 'address', - type: 'address', - indexed: true, - }, - { - name: 'l2Token', - internalType: 'address', - type: 'address', - indexed: true, - }, - { name: 'from', internalType: 'address', type: 'address', indexed: true }, - { name: 'to', internalType: 'address', type: 'address', indexed: false }, - { - name: 'amount', - internalType: 'uint256', - type: 'uint256', - indexed: false, - }, - { - name: 'extraData', - internalType: 'bytes', - type: 'bytes', - indexed: false, - }, - ], - name: 'ERC20DepositInitiated', - }, - { - type: 'event', - anonymous: false, - inputs: [ - { - name: 'l1Token', - internalType: 'address', - type: 'address', - indexed: true, - }, - { - name: 'l2Token', - internalType: 'address', - type: 'address', - indexed: true, - }, - { name: 'from', internalType: 'address', type: 'address', indexed: true }, - { name: 'to', internalType: 'address', type: 'address', indexed: false }, - { - name: 'amount', - internalType: 'uint256', - type: 'uint256', - indexed: false, - }, - { - name: 'extraData', - internalType: 'bytes', - type: 'bytes', - indexed: false, - }, - ], - name: 'ERC20WithdrawalFinalized', - }, - { - type: 'event', - anonymous: false, - inputs: [ - { name: 'from', internalType: 'address', type: 'address', indexed: true }, - { name: 'to', internalType: 'address', type: 'address', indexed: true }, - { - name: 'amount', - internalType: 'uint256', - type: 'uint256', - indexed: false, - }, - { - name: 'extraData', - internalType: 'bytes', - type: 'bytes', - indexed: false, - }, - ], - name: 'ETHBridgeFinalized', - }, - { - type: 'event', - anonymous: false, - inputs: [ - { name: 'from', internalType: 'address', type: 'address', indexed: true }, - { name: 'to', internalType: 'address', type: 'address', indexed: true }, - { - name: 'amount', - internalType: 'uint256', - type: 'uint256', - indexed: false, - }, - { - name: 'extraData', - internalType: 'bytes', - type: 'bytes', - indexed: false, - }, - ], - name: 'ETHBridgeInitiated', - }, - { - type: 'event', - anonymous: false, - inputs: [ - { name: 'from', internalType: 'address', type: 'address', indexed: true }, - { name: 'to', internalType: 'address', type: 'address', indexed: true }, - { - name: 'amount', - internalType: 'uint256', - type: 'uint256', - indexed: false, - }, - { - name: 'extraData', - internalType: 'bytes', - type: 'bytes', - indexed: false, - }, - ], - name: 'ETHDepositInitiated', - }, - { - type: 'event', - anonymous: false, - inputs: [ - { name: 'from', internalType: 'address', type: 'address', indexed: true }, - { name: 'to', internalType: 'address', type: 'address', indexed: true }, - { - name: 'amount', - internalType: 'uint256', - type: 'uint256', - indexed: false, - }, - { - name: 'extraData', - internalType: 'bytes', - type: 'bytes', - indexed: false, - }, - ], - name: 'ETHWithdrawalFinalized', - }, - { - type: 'event', - anonymous: false, - inputs: [ - { name: 'version', internalType: 'uint8', type: 'uint8', indexed: false }, - ], - name: 'Initialized', - }, - { - stateMutability: 'view', - type: 'function', - inputs: [], - name: 'MESSENGER', - outputs: [ - { - name: '', - internalType: 'contract CrossDomainMessenger', - type: 'address', - }, - ], - }, - { - stateMutability: 'view', - type: 'function', - inputs: [], - name: 'OTHER_BRIDGE', - outputs: [ - { name: '', internalType: 'contract StandardBridge', type: 'address' }, - ], - }, - { - stateMutability: 'nonpayable', - type: 'function', - inputs: [ - { name: '_localToken', internalType: 'address', type: 'address' }, - { name: '_remoteToken', internalType: 'address', type: 'address' }, - { name: '_amount', internalType: 'uint256', type: 'uint256' }, - { name: '_minGasLimit', internalType: 'uint32', type: 'uint32' }, - { name: '_extraData', internalType: 'bytes', type: 'bytes' }, - ], - name: 'bridgeERC20', - outputs: [], - }, - { - stateMutability: 'nonpayable', - type: 'function', - inputs: [ - { name: '_localToken', internalType: 'address', type: 'address' }, - { name: '_remoteToken', internalType: 'address', type: 'address' }, - { name: '_to', internalType: 'address', type: 'address' }, - { name: '_amount', internalType: 'uint256', type: 'uint256' }, - { name: '_minGasLimit', internalType: 'uint32', type: 'uint32' }, - { name: '_extraData', internalType: 'bytes', type: 'bytes' }, - ], - name: 'bridgeERC20To', - outputs: [], - }, - { - stateMutability: 'payable', - type: 'function', - inputs: [ - { name: '_minGasLimit', internalType: 'uint32', type: 'uint32' }, - { name: '_extraData', internalType: 'bytes', type: 'bytes' }, - ], - name: 'bridgeETH', - outputs: [], - }, - { - stateMutability: 'payable', - type: 'function', - inputs: [ - { name: '_to', internalType: 'address', type: 'address' }, - { name: '_minGasLimit', internalType: 'uint32', type: 'uint32' }, - { name: '_extraData', internalType: 'bytes', type: 'bytes' }, - ], - name: 'bridgeETHTo', - outputs: [], - }, - { - stateMutability: 'nonpayable', - type: 'function', - inputs: [ - { name: '_l1Token', internalType: 'address', type: 'address' }, - { name: '_l2Token', internalType: 'address', type: 'address' }, - { name: '_amount', internalType: 'uint256', type: 'uint256' }, - { name: '_minGasLimit', internalType: 'uint32', type: 'uint32' }, - { name: '_extraData', internalType: 'bytes', type: 'bytes' }, - ], - name: 'depositERC20', - outputs: [], - }, - { - stateMutability: 'nonpayable', - type: 'function', - inputs: [ - { name: '_l1Token', internalType: 'address', type: 'address' }, - { name: '_l2Token', internalType: 'address', type: 'address' }, - { name: '_to', internalType: 'address', type: 'address' }, - { name: '_amount', internalType: 'uint256', type: 'uint256' }, - { name: '_minGasLimit', internalType: 'uint32', type: 'uint32' }, - { name: '_extraData', internalType: 'bytes', type: 'bytes' }, - ], - name: 'depositERC20To', - outputs: [], - }, - { - stateMutability: 'payable', - type: 'function', - inputs: [ - { name: '_minGasLimit', internalType: 'uint32', type: 'uint32' }, - { name: '_extraData', internalType: 'bytes', type: 'bytes' }, - ], - name: 'depositETH', - outputs: [], - }, - { - stateMutability: 'payable', - type: 'function', - inputs: [ - { name: '_to', internalType: 'address', type: 'address' }, - { name: '_minGasLimit', internalType: 'uint32', type: 'uint32' }, - { name: '_extraData', internalType: 'bytes', type: 'bytes' }, - ], - name: 'depositETHTo', - outputs: [], - }, - { - stateMutability: 'view', - type: 'function', - inputs: [ - { name: '', internalType: 'address', type: 'address' }, - { name: '', internalType: 'address', type: 'address' }, - ], - name: 'deposits', - outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], - }, - { - stateMutability: 'nonpayable', - type: 'function', - inputs: [ - { name: '_localToken', internalType: 'address', type: 'address' }, - { name: '_remoteToken', internalType: 'address', type: 'address' }, - { name: '_from', internalType: 'address', type: 'address' }, - { name: '_to', internalType: 'address', type: 'address' }, - { name: '_amount', internalType: 'uint256', type: 'uint256' }, - { name: '_extraData', internalType: 'bytes', type: 'bytes' }, - ], - name: 'finalizeBridgeERC20', - outputs: [], - }, - { - stateMutability: 'payable', - type: 'function', - inputs: [ - { name: '_from', internalType: 'address', type: 'address' }, - { name: '_to', internalType: 'address', type: 'address' }, - { name: '_amount', internalType: 'uint256', type: 'uint256' }, - { name: '_extraData', internalType: 'bytes', type: 'bytes' }, - ], - name: 'finalizeBridgeETH', - outputs: [], - }, - { - stateMutability: 'nonpayable', - type: 'function', - inputs: [ - { name: '_l1Token', internalType: 'address', type: 'address' }, - { name: '_l2Token', internalType: 'address', type: 'address' }, - { name: '_from', internalType: 'address', type: 'address' }, - { name: '_to', internalType: 'address', type: 'address' }, - { name: '_amount', internalType: 'uint256', type: 'uint256' }, - { name: '_extraData', internalType: 'bytes', type: 'bytes' }, - ], - name: 'finalizeERC20Withdrawal', - outputs: [], - }, - { - stateMutability: 'payable', - type: 'function', - inputs: [ - { name: '_from', internalType: 'address', type: 'address' }, - { name: '_to', internalType: 'address', type: 'address' }, - { name: '_amount', internalType: 'uint256', type: 'uint256' }, - { name: '_extraData', internalType: 'bytes', type: 'bytes' }, - ], - name: 'finalizeETHWithdrawal', - outputs: [], - }, - { - stateMutability: 'nonpayable', - type: 'function', - inputs: [ - { - name: '_messenger', - internalType: 'contract CrossDomainMessenger', - type: 'address', - }, - ], - name: 'initialize', - outputs: [], - }, - { - stateMutability: 'view', - type: 'function', - inputs: [], - name: 'l2TokenBridge', - outputs: [{ name: '', internalType: 'address', type: 'address' }], - }, - { - stateMutability: 'view', - type: 'function', - inputs: [], - name: 'messenger', - outputs: [ - { - name: '', - internalType: 'contract CrossDomainMessenger', - type: 'address', - }, - ], - }, - { - stateMutability: 'view', - type: 'function', - inputs: [], - name: 'otherBridge', - outputs: [ - { name: '', internalType: 'contract StandardBridge', type: 'address' }, - ], - }, - { - stateMutability: 'view', - type: 'function', - inputs: [], - name: 'version', - outputs: [{ name: '', internalType: 'string', type: 'string' }], - }, - { stateMutability: 'payable', type: 'receive' }, -] as const - export const l2ToL1MessagePasserAbi = [ { inputs: [], stateMutability: 'nonpayable', type: 'constructor' }, { diff --git a/src/op-stack/actions/buildProveWithdrawal.ts b/src/op-stack/actions/buildProveWithdrawal.ts index 3d1692339a..539dafc792 100644 --- a/src/op-stack/actions/buildProveWithdrawal.ts +++ b/src/op-stack/actions/buildProveWithdrawal.ts @@ -156,6 +156,7 @@ export async function buildProveWithdrawal< > } +/** @internal */ export function maybeAddProofNode(key: string, proof: readonly Hex[]) { const lastProofRlp = proof[proof.length - 1] const lastProof = fromRlp(lastProofRlp) diff --git a/src/op-stack/actions/getWithdrawalStatus.ts b/src/op-stack/actions/getWithdrawalStatus.ts index 2cf608b8b2..5f2d62e6de 100644 --- a/src/op-stack/actions/getWithdrawalStatus.ts +++ b/src/op-stack/actions/getWithdrawalStatus.ts @@ -15,7 +15,10 @@ import type { import type { TransactionReceipt } from '../../types/transaction.js' import type { OneOf } from '../../types/utils.js' import { portal2Abi, portalAbi } from '../abis.js' -import { ReceiptContainsNoWithdrawalsError } from '../errors/withdrawal.js' +import { + ReceiptContainsNoWithdrawalsError, + type ReceiptContainsNoWithdrawalsErrorType, +} from '../errors/withdrawal.js' import type { TargetChain } from '../types/chain.js' import type { GetContractAddressParameter } from '../types/contract.js' import { @@ -67,11 +70,13 @@ export type GetWithdrawalStatusReturnType = | 'waiting-to-finalize' | 'ready-to-finalize' | 'finalized' + export type GetWithdrawalStatusErrorType = | GetL2OutputErrorType | GetTimeToFinalizeErrorType | GetWithdrawalsErrorType | ReadContractErrorType + | ReceiptContainsNoWithdrawalsErrorType | ErrorType /** diff --git a/src/op-stack/index.ts b/src/op-stack/index.ts index 392cf37a0d..a2698c8fc2 100644 --- a/src/op-stack/index.ts +++ b/src/op-stack/index.ts @@ -176,7 +176,6 @@ export { export { chainConfig } from './chainConfig.js' -// @ts-ignore TS2354: This syntax requires an imported helper but module 'tslib' cannot be found. // biome-ignore lint/performance/noReExportAll: intentionally re-exporting export * from './chains.js' diff --git a/src/types/account.ts b/src/types/account.ts index 506123f996..71a95ec5c7 100644 --- a/src/types/account.ts +++ b/src/types/account.ts @@ -1,7 +1,6 @@ import type { Address } from 'abitype' import type { Account, JsonRpcAccount } from '../accounts/types.js' - import type { IsUndefined, Prettify } from './utils.js' export type DeriveAccount< @@ -28,14 +27,5 @@ export type ParseAccount< ? Prettify> : TAccountOrAddress -export type { - Account, - AccountSource, - CustomSource, - HDAccount, - HDOptions, - JsonRpcAccount, - LocalAccount, - PrivateKeyAccount, -} from '../accounts/types.js' +export type { Account } from '../accounts/types.js' export type { HDKey } from '@scure/bip32' diff --git a/src/types/kzg.ts b/src/types/kzg.ts index a00b01ce3a..bac72235b4 100644 --- a/src/types/kzg.ts +++ b/src/types/kzg.ts @@ -1,5 +1,6 @@ import type { Address } from 'abitype' -import type { LocalAccount } from './account.js' + +import type { LocalAccount } from '../accounts/types.js' import type { ByteArray } from './misc.js' import type { TransactionRequestEIP4844 } from './transaction.js' import type { MaybeRequired } from './utils.js' diff --git a/src/types/proof.ts b/src/types/proof.ts index 5135cea20e..093289fd9c 100644 --- a/src/types/proof.ts +++ b/src/types/proof.ts @@ -1,9 +1,9 @@ import type { Address } from 'abitype' import type { Hash } from './misc.js' -export type AccountProof = Hash +type AccountProof = Hash -export type StorageProof = { +type StorageProof = { key: Hash proof: Hash[] value: TQuantity diff --git a/src/types/utils.ts b/src/types/utils.ts index 4d95e022e0..70efdb7462 100644 --- a/src/types/utils.ts +++ b/src/types/utils.ts @@ -159,6 +159,8 @@ export type NoInfer = [type][type extends any ? 0 : never] * @example * NoUndefined * => string + * + * @internal */ export type NoUndefined = T extends undefined ? never : T @@ -190,8 +192,9 @@ export type Prettify = { [K in keyof T]: T[K] } & {} -export type Evaluate = { - [K in keyof T]: T[K] +/** @internal */ +export type Evaluate = { + [key in keyof type]: type[key] } & {} /** @@ -226,6 +229,8 @@ export type Some< * @example * ValueOf<{ a: string, b: number }> * => string | number + * + * @internal */ export type ValueOf = T[keyof T] @@ -286,7 +291,10 @@ type KeyofUnion = type extends type ? keyof type : never /////////////////////////////////////////////////////////////////////////// // Loose types -/** Loose version of {@link Omit} */ +/** + * Loose version of {@link Omit} + * @internal + */ export type LooseOmit = Pick< type, Exclude diff --git a/src/utils/abi/decodeAbiParameters.ts b/src/utils/abi/decodeAbiParameters.ts index 6a0e85eee9..dc33d71393 100644 --- a/src/utils/abi/decodeAbiParameters.ts +++ b/src/utils/abi/decodeAbiParameters.ts @@ -13,7 +13,11 @@ import { type ChecksumAddressErrorType, checksumAddress, } from '../address/getAddress.js' -import { type Cursor, createCursor } from '../cursor.js' +import { + type CreateCursorErrorType, + type Cursor, + createCursor, +} from '../cursor.js' import { type SizeErrorType, size } from '../data/size.js' import { type SliceBytesErrorType, sliceBytes } from '../data/slice.js' import { type TrimErrorType, trim } from '../data/trim.js' @@ -42,6 +46,7 @@ export type DecodeAbiParametersErrorType = | BytesToHexErrorType | DecodeParameterErrorType | SizeErrorType + | CreateCursorErrorType | ErrorType export function decodeAbiParameters< diff --git a/src/utils/abi/encodeAbiParameters.ts b/src/utils/abi/encodeAbiParameters.ts index 0bba68b91d..e482214d0d 100644 --- a/src/utils/abi/encodeAbiParameters.ts +++ b/src/utils/abi/encodeAbiParameters.ts @@ -110,7 +110,7 @@ type PreparedParam = { dynamic: boolean; encoded: Hex } type TupleAbiParameter = AbiParameter & { components: readonly AbiParameter[] } type Tuple = AbiParameterToPrimitiveType -export type PrepareParamsErrorType = ErrorType +type PrepareParamsErrorType = PrepareParamErrorType | ErrorType function prepareParams({ params, @@ -126,7 +126,14 @@ function prepareParams({ return preparedParams } -export type PrepareParamErrorType = +type PrepareParamErrorType = + | EncodeAddressErrorType + | EncodeArrayErrorType + | EncodeBytesErrorType + | EncodeBoolErrorType + | EncodeNumberErrorType + | EncodeStringErrorType + | EncodeTupleErrorType | GetArrayComponentsErrorType | InvalidAbiEncodingTypeErrorType | ErrorType @@ -171,10 +178,7 @@ function prepareParam({ ///////////////////////////////////////////////////////////////// -export type EncodeParamsErrorType = - | NumberToHexErrorType - | SizeErrorType - | ErrorType +type EncodeParamsErrorType = NumberToHexErrorType | SizeErrorType | ErrorType function encodeParams(preparedParams: PreparedParam[]): Hex { // 1. Compute the size of the static part of the parameters. @@ -206,7 +210,7 @@ function encodeParams(preparedParams: PreparedParam[]): Hex { ///////////////////////////////////////////////////////////////// -export type EncodeAddressErrorType = +type EncodeAddressErrorType = | InvalidAddressErrorType | IsAddressErrorType | ErrorType @@ -216,13 +220,14 @@ function encodeAddress(value: Hex): PreparedParam { return { dynamic: false, encoded: padHex(value.toLowerCase() as Hex) } } -export type EncodeArrayErrorType = +type EncodeArrayErrorType = | AbiEncodingArrayLengthMismatchErrorType | ConcatErrorType | EncodeParamsErrorType | InvalidArrayErrorType | NumberToHexErrorType - | PrepareParamErrorType + // TODO: Add back once circular type reference is resolved + // | PrepareParamErrorType | ErrorType function encodeArray( @@ -270,7 +275,7 @@ function encodeArray( } } -export type EncodeBytesErrorType = +type EncodeBytesErrorType = | AbiEncodingBytesSizeMismatchErrorType | ConcatErrorType | PadHexErrorType @@ -306,10 +311,7 @@ function encodeBytes( return { dynamic: false, encoded: padHex(value, { dir: 'right' }) } } -export type EncodeBoolErrorType = - | PadHexErrorType - | BoolToHexErrorType - | ErrorType +type EncodeBoolErrorType = PadHexErrorType | BoolToHexErrorType | ErrorType function encodeBool(value: boolean): PreparedParam { if (typeof value !== 'boolean') @@ -319,7 +321,7 @@ function encodeBool(value: boolean): PreparedParam { return { dynamic: false, encoded: padHex(boolToHex(value)) } } -export type EncodeNumberErrorType = NumberToHexErrorType | ErrorType +type EncodeNumberErrorType = NumberToHexErrorType | ErrorType function encodeNumber( value: number, @@ -334,7 +336,7 @@ function encodeNumber( } } -export type EncodeStringErrorType = +type EncodeStringErrorType = | ConcatErrorType | NumberToHexErrorType | PadHexErrorType @@ -363,10 +365,11 @@ function encodeString(value: string): PreparedParam { } } -export type EncodeTupleErrorType = +type EncodeTupleErrorType = | ConcatErrorType | EncodeParamsErrorType - | PrepareParamErrorType + // TODO: Add back once circular type reference is resolved + // | PrepareParamErrorType | ErrorType function encodeTuple< @@ -395,7 +398,7 @@ function encodeTuple< } } -export type GetArrayComponentsErrorType = ErrorType +type GetArrayComponentsErrorType = ErrorType export function getArrayComponents( type: string, diff --git a/src/utils/abi/getAbiItem.ts b/src/utils/abi/getAbiItem.ts index b36fe8b3e6..3a7a5da108 100644 --- a/src/utils/abi/getAbiItem.ts +++ b/src/utils/abi/getAbiItem.ts @@ -1,6 +1,9 @@ import type { Abi, AbiParameter, Address } from 'abitype' -import { AbiItemAmbiguityError } from '../../errors/abi.js' +import { + AbiItemAmbiguityError, + type AbiItemAmbiguityErrorType, +} from '../../errors/abi.js' import type { ErrorType } from '../../errors/utils.js' import type { AbiItem, @@ -57,6 +60,7 @@ export type GetAbiItemErrorType = | IsArgOfTypeErrorType | IsHexErrorType | ToFunctionSelectorErrorType + | AbiItemAmbiguityErrorType | ErrorType export type GetAbiItemReturnType< @@ -148,8 +152,9 @@ export function getAbiItem< return abiItems[0] as GetAbiItemReturnType } -export type IsArgOfTypeErrorType = IsAddressErrorType | ErrorType +type IsArgOfTypeErrorType = IsAddressErrorType | ErrorType +/** @internal */ export function isArgOfType(arg: unknown, abiParameter: AbiParameter): boolean { const argType = typeof arg const abiParameterType = abiParameter.type @@ -207,6 +212,7 @@ export function isArgOfType(arg: unknown, abiParameter: AbiParameter): boolean { } } +/** @internal */ export function getAmbiguousTypes( sourceParameters: readonly AbiParameter[], targetParameters: readonly AbiParameter[], diff --git a/src/utils/accounts.ts b/src/utils/accounts.ts deleted file mode 100644 index 049231c0a3..0000000000 --- a/src/utils/accounts.ts +++ /dev/null @@ -1,7 +0,0 @@ -// Tree-shaking doesn't work well when we import from an index entrypoint. We don't -// want to bundle libs like `@noble/curves`, etc within the `/accounts` entrypoint -// as that will dramatically increase bundle size. So we export the modules directly. - -// biome-ignore lint/performance/noBarrelFile: entrypoint module -export { parseAccount } from '../accounts/utils/parseAccount.js' -export { publicKeyToAddress } from '../accounts/utils/publicKeyToAddress.js' diff --git a/src/utils/address/getAddress.ts b/src/utils/address/getAddress.ts index 1b7214bf8d..d051395c38 100644 --- a/src/utils/address/getAddress.ts +++ b/src/utils/address/getAddress.ts @@ -10,7 +10,7 @@ import { type Keccak256ErrorType, keccak256 } from '../hash/keccak256.js' import { LruMap } from '../lru.js' import { type IsAddressErrorType, isAddress } from './isAddress.js' -export const checksumAddressCache = /*#__PURE__*/ new LruMap
(8192) +const checksumAddressCache = /*#__PURE__*/ new LruMap
(8192) export type ChecksumAddressErrorType = | Keccak256ErrorType diff --git a/src/utils/address/isAddress.ts b/src/utils/address/isAddress.ts index 0f9bb76f2c..a053dcdcda 100644 --- a/src/utils/address/isAddress.ts +++ b/src/utils/address/isAddress.ts @@ -5,6 +5,7 @@ import { checksumAddress } from './getAddress.js' const addressRegex = /^0x[a-fA-F0-9]{40}$/ +/** @internal */ export const isAddressCache = /*#__PURE__*/ new LruMap(8192) export type IsAddressOptions = { diff --git a/src/utils/blob/toBlobs.ts b/src/utils/blob/toBlobs.ts index 4b46f74670..e8d8fc6e35 100644 --- a/src/utils/blob/toBlobs.ts +++ b/src/utils/blob/toBlobs.ts @@ -12,7 +12,7 @@ import { } from '../../errors/blob.js' import type { ErrorType } from '../../errors/utils.js' import type { ByteArray, Hex } from '../../types/misc.js' -import { createCursor } from '../cursor.js' +import { type CreateCursorErrorType, createCursor } from '../cursor.js' import { type SizeErrorType, size } from '../data/size.js' import { type HexToBytesErrorType, hexToBytes } from '../encoding/toBytes.js' import { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js' @@ -36,6 +36,7 @@ export type ToBlobsReturnType = export type ToBlobsErrorType = | BlobSizeTooLargeErrorType | BytesToHexErrorType + | CreateCursorErrorType | EmptyBlobErrorType | HexToBytesErrorType | SizeErrorType diff --git a/src/utils/buildRequest.ts b/src/utils/buildRequest.ts index f9eec1a54c..48b3567625 100644 --- a/src/utils/buildRequest.ts +++ b/src/utils/buildRequest.ts @@ -190,6 +190,7 @@ export function buildRequest Promise>( } } +/** @internal */ export function shouldRetry(error: Error) { if ('code' in error && typeof error.code === 'number') { if (error.code === -1) return true // Unknown error diff --git a/src/utils/ccip.ts b/src/utils/ccip.ts index a0f26e7794..19cdb7b839 100644 --- a/src/utils/ccip.ts +++ b/src/utils/ccip.ts @@ -5,10 +5,15 @@ import type { Transport } from '../clients/transports/createTransport.js' import type { BaseError } from '../errors/base.js' import { OffchainLookupError, + type OffchainLookupErrorType as OffchainLookupErrorType_, OffchainLookupResponseMalformedError, + type OffchainLookupResponseMalformedErrorType, OffchainLookupSenderMismatchError, } from '../errors/ccip.js' -import { HttpRequestError } from '../errors/request.js' +import { + HttpRequestError, + type HttpRequestErrorType, +} from '../errors/request.js' import type { Chain } from '../types/chain.js' import type { Hex } from '../types/misc.js' @@ -49,7 +54,7 @@ export const offchainLookupAbiItem = { ], } as const satisfies Abi[number] -export type OffchainLookupErrorType = ErrorType +export type OffchainLookupErrorType = OffchainLookupErrorType_ | ErrorType export async function offchainLookup( client: Client, @@ -115,7 +120,10 @@ export type CcipRequestParameters = { export type CcipRequestReturnType = Hex -export type CcipRequestErrorType = ErrorType +export type CcipRequestErrorType = + | HttpRequestErrorType + | OffchainLookupResponseMalformedErrorType + | ErrorType export async function ccipRequest({ data, diff --git a/src/utils/cursor.ts b/src/utils/cursor.ts index db2c586d17..7aef2c2289 100644 --- a/src/utils/cursor.ts +++ b/src/utils/cursor.ts @@ -1,7 +1,10 @@ import { NegativeOffsetError, + type NegativeOffsetErrorType, PositionOutOfBoundsError, + type PositionOutOfBoundsErrorType, RecursiveReadLimitExceededError, + type RecursiveReadLimitExceededErrorType, } from '../errors/cursor.js' import type { ErrorType } from '../errors/utils.js' import type { ByteArray } from '../types/misc.js' @@ -41,19 +44,21 @@ export type Cursor = { _touch(): void } -export type CreateCursorErrorType = ErrorType - -export type CursorErrorType = +type CursorErrorType = | CursorAssertPositionErrorType | CursorDecrementPositionErrorType | CursorIncrementPositionErrorType | ErrorType -export type CursorAssertPositionErrorType = PositionOutOfBoundsError | ErrorType +type CursorAssertPositionErrorType = PositionOutOfBoundsErrorType | ErrorType + +type CursorDecrementPositionErrorType = NegativeOffsetError | ErrorType -export type CursorDecrementPositionErrorType = NegativeOffsetError | ErrorType +type CursorIncrementPositionErrorType = NegativeOffsetError | ErrorType -export type CursorIncrementPositionErrorType = NegativeOffsetError | ErrorType +type StaticCursorErrorType = + | NegativeOffsetErrorType + | RecursiveReadLimitExceededErrorType const staticCursor: Cursor = { bytes: new Uint8Array(), @@ -216,6 +221,11 @@ const staticCursor: Cursor = { type CursorConfig = { recursiveReadLimit?: number | undefined } +export type CreateCursorErrorType = + | CursorErrorType + | StaticCursorErrorType + | ErrorType + export function createCursor( bytes: ByteArray, { recursiveReadLimit = 8_192 }: CursorConfig = {}, diff --git a/src/utils/encoding/fromRlp.bench.ts b/src/utils/encoding/fromRlp.bench.ts index 4d86bca455..b94da6945d 100644 --- a/src/utils/encoding/fromRlp.bench.ts +++ b/src/utils/encoding/fromRlp.bench.ts @@ -2,7 +2,7 @@ import { RLP } from '@ethereumjs/rlp' import { decodeRlp } from 'ethers' import { bench, describe } from 'vitest' -import { rlpToBytes } from './fromRlp.js' +import { fromRlp } from './fromRlp.js' import { bytesToRlp } from './toRlp.js' const generateBytes = (length: number) => { @@ -21,7 +21,7 @@ describe('rlp: prefix === 0xb8', () => { const bytes = bytesToRlp(generateBytes(255)) bench('viem: `fromRlp`', () => { - rlpToBytes(bytes) + fromRlp(bytes) }) bench('ethers: `decodeRlp`', () => { @@ -37,7 +37,7 @@ describe('rlp: prefix === 0xb9', () => { const bytes = bytesToRlp(generateBytes(65_535)) bench('viem: `fromRlp`', () => { - rlpToBytes(bytes) + fromRlp(bytes) }) bench('ethers: `decodeRlp`', () => { @@ -53,7 +53,7 @@ describe('rlp: prefix === 0xba', () => { const bytes = bytesToRlp(generateBytes(16_777_215)) bench('viem: `fromRlp`', () => { - rlpToBytes(bytes) + fromRlp(bytes) }) bench.skip('ethers: `decodeRlp`', () => { @@ -69,7 +69,7 @@ describe('rlp list: prefix === 0xf8', () => { const list = bytesToRlp(generateList(60)) bench('viem: `fromRlp`', () => { - rlpToBytes(list) + fromRlp(list) }) bench('ethers: `decodeRlp`', () => { @@ -96,7 +96,7 @@ describe('rlp list: prefix === 0xf8 (recursive)', () => { ]) bench('viem: `fromRlp`', () => { - rlpToBytes(list) + fromRlp(list) }) bench('ethers: `decodeRlp`', () => { @@ -121,7 +121,7 @@ describe('rlp: tx (2048kB - prefix: 0xfa)', () => { ]) bench('viem: `fromRlp`', () => { - rlpToBytes(list) + fromRlp(list) }) bench('ethers: `decodeRlp`', () => { diff --git a/src/utils/encoding/fromRlp.test.ts b/src/utils/encoding/fromRlp.test.ts index d31178f3dd..0b3abb3d9e 100644 --- a/src/utils/encoding/fromRlp.test.ts +++ b/src/utils/encoding/fromRlp.test.ts @@ -1,218 +1,26 @@ import { describe, expect, test } from 'vitest' -import { fromRlp, rlpToBytes, rlpToHex } from './fromRlp.js' -import { hexToBytes, toBytes } from './toBytes.js' -import { bytesToRlp } from './toRlp.js' - -const generateBytes = (length: number) => { - const bytes = new Uint8Array(length) - for (let i = 0; i < length; i++) bytes[i] = i - return bytes -} - -const generateList = (length: number) => { - const bytes: Uint8Array[] = [] - for (let i = 0; i < length; i++) bytes.push(generateBytes(i % 8)) - return bytes -} +import { fromRlp } from './fromRlp.js' test('no bytes', () => { - // bytes -> bytes - expect(rlpToBytes(hexToBytes('0x'))).toStrictEqual(new Uint8Array([])) - // bytes -> hex - expect(rlpToHex('0x')).toEqual('0x') // hex -> bytes expect(fromRlp('0x', 'bytes')).toStrictEqual(new Uint8Array([])) // hex -> hex expect(fromRlp('0x')).toEqual('0x') }) -describe('prefix < 0x80', () => { - test('bytes -> bytes', () => { - expect(rlpToBytes(hexToBytes('0x00'))).toStrictEqual(new Uint8Array([0])) - expect(rlpToBytes(hexToBytes('0x01'))).toStrictEqual(new Uint8Array([1])) - - expect(rlpToBytes(hexToBytes('0x21'))).toEqual(toBytes('!')) - expect(rlpToBytes(hexToBytes('0x61'))).toEqual(toBytes('a')) - expect(rlpToBytes(hexToBytes('0x7e'))).toEqual(toBytes('~')) - - expect(rlpToBytes(hexToBytes('0x01'))).toEqual(toBytes(true)) - expect(rlpToBytes(hexToBytes('0x00'))).toEqual(toBytes(false)) - - expect(rlpToBytes(hexToBytes('0x00'))).toEqual(toBytes(0)) - expect(rlpToBytes(hexToBytes('0x45'))).toEqual(toBytes(69)) - expect(rlpToBytes(hexToBytes('0x7f'))).toEqual(toBytes(127)) - }) -}) - -describe('prefix < 0xb7 (single byte)', () => { - test('bytes -> bytes', () => { - expect(rlpToBytes(hexToBytes('0x8180'))).toEqual(hexToBytes('0x80')) - expect(rlpToBytes(hexToBytes('0x81a4'))).toEqual(hexToBytes('0xa4')) - expect(rlpToBytes(hexToBytes('0x81ff'))).toEqual(hexToBytes('0xff')) - }) -}) - -describe('prefix < 0xb7', () => { - test('bytes -> bytes', () => { - expect(rlpToBytes(Uint8Array.from([0x82, ...generateBytes(2)]))).toEqual( - generateBytes(2), - ) - expect(rlpToBytes(Uint8Array.from([0xb7, ...generateBytes(55)]))).toEqual( - generateBytes(55), - ) - }) -}) - -describe('prefix === 0xb8', () => { - test('bytes -> bytes', () => { - expect( - rlpToBytes(Uint8Array.from([0xb8, 56, ...generateBytes(56)])), - ).toEqual(generateBytes(56)) - expect( - rlpToBytes(Uint8Array.from([0xb8, 255, ...generateBytes(255)])), - ).toEqual(generateBytes(255)) - }) -}) - -describe('prefix === 0xb9', () => { - test('bytes -> bytes', () => { - expect( - rlpToBytes(Uint8Array.from([0xb9, 1, 0, ...generateBytes(256)])), - ).toEqual(generateBytes(256)) - expect( - rlpToBytes(Uint8Array.from([0xb9, 255, 255, ...generateBytes(65_535)])), - ).toEqual(generateBytes(65_535)) - }) -}) - -describe('prefix === 0xba', () => { - test('bytes -> bytes', () => { - expect( - rlpToBytes(Uint8Array.from([0xba, 1, 0, 0, ...generateBytes(65_536)])), - ).toEqual(generateBytes(65_536)) - expect( - rlpToBytes( - Uint8Array.from([0xba, 255, 255, 255, ...generateBytes(16_777_215)]), - ), - ).toEqual(generateBytes(16_777_215)) - }) -}) - -describe('prefix === 0xbb', () => { - test('bytes -> bytes', () => { - expect( - rlpToBytes( - Uint8Array.from([0xbb, 1, 0, 0, 0, ...generateBytes(16_777_216)]), - ), - ).toEqual(generateBytes(16_777_216)) - }) -}) - describe('list', () => { test('no bytes', () => { - // bytes -> bytes - expect(rlpToBytes(Uint8Array.from([0xc0]))).toEqual([]) // bytes -> hex expect(fromRlp(Uint8Array.from([0xc0]), 'hex')).toEqual([]) - // hex -> hex - expect(rlpToHex('0xc0')).toEqual([]) // hex -> bytes expect(fromRlp('0xc0', 'bytes')).toEqual([]) }) test('inner no bytes', () => { - // bytes -> bytes - expect(rlpToBytes(Uint8Array.from([0xc1, 0xc0]))).toEqual([[]]) // bytes -> hex expect(fromRlp(Uint8Array.from([0xc1, 0xc0]), 'hex')).toEqual([[]]) - // hex -> hex - expect(rlpToHex('0xc1c0')).toEqual([[]]) // hex -> bytes expect(fromRlp('0xc1c0', 'bytes')).toEqual([[]]) }) - - describe('prefix < 0xf8', () => { - test('bytes -> bytes', () => { - expect(rlpToBytes(hexToBytes('0xc100'))).toEqual([hexToBytes('0x00')]) - expect(rlpToBytes(hexToBytes('0xc28180'))).toEqual([hexToBytes('0x80')]) - expect( - rlpToBytes( - hexToBytes( - '0xf780008200018300010284000102038500010203048600010203040587000102030405068000820001830001028400010203850001020304', - ), - ), - ).toEqual(generateList(14)) - expect( - rlpToBytes( - hexToBytes( - '0xf7c9800082000183000102ece38000820001830001028400010203850001020304860001020304058700010203040506c7c5800082000100', - ), - ), - ).toEqual([ - generateList(4), - [generateList(8), [generateList(3), generateBytes(1)]], - ]) - }) - }) - - test('prefix === 0xf8', () => { - expect( - rlpToBytes( - hexToBytes( - '0xf83e8000820001830001028400010203850001020304860001020304058700010203040506800082000183000102840001020385000102030486000102030405', - ), - ), - ).toEqual(generateList(15)) - expect( - rlpToBytes( - hexToBytes( - '0xf8fe8000820001830001028400010203850001020304860001020304058700010203040506800082000183000102840001020385000102030486000102030405870001020304050680008200018300010284000102038500010203048600010203040587000102030405068000820001830001028400010203850001020304860001020304058700010203040506800082000183000102840001020385000102030486000102030405870001020304050680008200018300010284000102038500010203048600010203040587000102030405068000820001830001028400010203850001020304860001020304058700010203040506800082000183000102', - ), - ), - ).toEqual(generateList(60)) - expect( - rlpToBytes( - hexToBytes( - '0xf8eec9800082000183000102ece38000820001830001028400010203850001020304860001020304058700010203040506c7c5800082000100f8b5e580008200018300010284000102038500010203048600010203040587000102030405068000f88dce8000820001830001028400010203820001f879e580008200018300010284000102038500010203048600010203040587000102030405068000f851f84f80008200018300010284000102038500010203048600010203040587000102030405068000820001830001028400010203850001020304860001020304058700010203040506800082000183000102', - ), - ), - ).toEqual([ - generateList(4), - [generateList(8), [generateList(3), generateBytes(1)]], - [ - generateList(10), - [ - generateList(5), - generateBytes(2), - [generateList(10), [generateList(20)]], - ], - ], - ]) - }) - - test('prefix === 0xf9', () => { - expect( - rlpToBytes( - hexToBytes( - '0xf9010380008200018300010284000102038500010203048600010203040587000102030405068000820001830001028400010203850001020304860001020304058700010203040506800082000183000102840001020385000102030486000102030405870001020304050680008200018300010284000102038500010203048600010203040587000102030405068000820001830001028400010203850001020304860001020304058700010203040506800082000183000102840001020385000102030486000102030405870001020304050680008200018300010284000102038500010203048600010203040587000102030405068000820001830001028400010203', - ), - ), - ).toEqual(generateList(61)) - expect(rlpToBytes(bytesToRlp(generateList(12_000)))).toEqual( - generateList(12_000), - ) - }) - - test('prefix === 0xfa', () => { - expect(rlpToBytes(bytesToRlp(generateList(60_000)))).toEqual( - generateList(60_000), - ) - }) - - // This test works, but it's really slow (understandably). - test.skip('prefix === 0xfb', () => { - const list = generateList(10_000_000) - expect(rlpToBytes(bytesToRlp(list))).toEqual(list) - }) }) diff --git a/src/utils/encoding/fromRlp.ts b/src/utils/encoding/fromRlp.ts index 715b368ef0..39dc71cf79 100644 --- a/src/utils/encoding/fromRlp.ts +++ b/src/utils/encoding/fromRlp.ts @@ -49,25 +49,7 @@ export function fromRlp( return result as FromRlpReturnType } -export type RlpToBytesErrorType = FromRlpErrorType | ErrorType - -export function rlpToBytes( - bytes: ByteArray, - to: to | To | undefined = 'bytes', -): FromRlpReturnType { - return fromRlp(bytes, to) -} - -export type RlpToHexErrorType = FromRlpErrorType | ErrorType - -export function rlpToHex( - hex: Hex, - to: to | To | undefined = 'hex', -): FromRlpReturnType { - return fromRlp(hex, to) -} - -export type FromRlpCursorErrorType = +type FromRlpCursorErrorType = | BytesToHexErrorType | ReadLengthErrorType | ReadListErrorType @@ -97,7 +79,7 @@ function fromRlpCursor( return readList(cursor, length, to) as {} as FromRlpReturnType } -export type ReadLengthErrorType = BaseErrorType | ErrorType +type ReadLengthErrorType = BaseErrorType | ErrorType function readLength(cursor: Cursor, prefix: number, offset: number) { if (offset === 0x80 && prefix < 0x80) return 1 @@ -109,7 +91,7 @@ function readLength(cursor: Cursor, prefix: number, offset: number) { throw new BaseError('Invalid RLP prefix') } -export type ReadListErrorType = ErrorType +type ReadListErrorType = ErrorType function readList(cursor: Cursor, length: number, to: to | To) { const position = cursor.position diff --git a/src/utils/ens/avatar/parseAvatarRecord.ts b/src/utils/ens/avatar/parseAvatarRecord.ts index be88ec7f30..34746790cf 100644 --- a/src/utils/ens/avatar/parseAvatarRecord.ts +++ b/src/utils/ens/avatar/parseAvatarRecord.ts @@ -49,7 +49,7 @@ export async function parseAvatarRecord( return parseAvatarUri({ uri: record, gatewayUrls }) } -export type ParseNftAvatarUriErrorType = +type ParseNftAvatarUriErrorType = | ParseNftUriErrorType | GetNftTokenUriErrorType | ResolveAvatarUriErrorType diff --git a/src/utils/ens/avatar/utils.ts b/src/utils/ens/avatar/utils.ts index 513e3159e1..eccb43c54f 100644 --- a/src/utils/ens/avatar/utils.ts +++ b/src/utils/ens/avatar/utils.ts @@ -33,8 +33,9 @@ const ipfsHashRegex = const base64Regex = /^data:([a-zA-Z\-/+]*);base64,([^"].*)/ const dataURIRegex = /^data:([a-zA-Z\-/+]*)?(;[a-zA-Z0-9].*?)?(,)/ -export type IsImageUriErrorType = ErrorType +type IsImageUriErrorType = ErrorType +/** @internal */ export async function isImageUri(uri: string) { try { const res = await fetch(uri, { method: 'HEAD' }) @@ -66,8 +67,9 @@ export async function isImageUri(uri: string) { } } -export type GetGatewayErrorType = ErrorType +type GetGatewayErrorType = ErrorType +/** @internal */ export function getGateway(custom: string | undefined, defaultGateway: string) { if (!custom) return defaultGateway if (custom.endsWith('/')) return custom.slice(0, -1) diff --git a/src/utils/ens/errors.ts b/src/utils/ens/errors.ts index 7e3c065316..59a9b566e7 100644 --- a/src/utils/ens/errors.ts +++ b/src/utils/ens/errors.ts @@ -3,6 +3,7 @@ import { BaseError } from '../../errors/base.js' import { ContractFunctionRevertedError } from '../../errors/contract.js' import type { ErrorType } from '../../errors/utils.js' +/** @internal */ export type IsNullUniversalResolverErrorErrorType = ErrorType /* diff --git a/src/utils/hash/normalizeSignature.ts b/src/utils/hash/normalizeSignature.ts index 76d565170e..8e04062673 100644 --- a/src/utils/hash/normalizeSignature.ts +++ b/src/utils/hash/normalizeSignature.ts @@ -1,8 +1,8 @@ import { BaseError } from '../../errors/base.js' import type { ErrorType } from '../../errors/utils.js' -export type NormalizeSignatureParameters = string -export type NormalizeSignatureReturnType = string +type NormalizeSignatureParameters = string +type NormalizeSignatureReturnType = string export type NormalizeSignatureErrorType = ErrorType export function normalizeSignature( diff --git a/src/utils/observe.ts b/src/utils/observe.ts index 2fd59488a8..54f7cd615c 100644 --- a/src/utils/observe.ts +++ b/src/utils/observe.ts @@ -6,10 +6,12 @@ type Callbacks = Record export type ObserveErrorType = ErrorType +/** @internal */ export const listenersCache = /*#__PURE__*/ new Map< string, { id: number; fns: Callbacks }[] >() +/** @internal */ export const cleanupCache = /*#__PURE__*/ new Map void>() type EmitFunction = ( diff --git a/src/utils/promise/createBatchScheduler.ts b/src/utils/promise/createBatchScheduler.ts index ff9cacfbde..9610c09212 100644 --- a/src/utils/promise/createBatchScheduler.ts +++ b/src/utils/promise/createBatchScheduler.ts @@ -17,7 +17,7 @@ type BatchResultsCompareFn = ( b: TResult, ) => number -export type CreateBatchSchedulerArguments< +type CreateBatchSchedulerArguments< TParameters = unknown, TReturnType extends readonly unknown[] = readonly unknown[], > = { @@ -28,7 +28,7 @@ export type CreateBatchSchedulerArguments< sort?: BatchResultsCompareFn | undefined } -export type CreateBatchSchedulerReturnType< +type CreateBatchSchedulerReturnType< TParameters = unknown, TReturnType extends readonly unknown[] = readonly unknown[], > = { @@ -42,6 +42,7 @@ export type CreateBatchSchedulerErrorType = ErrorType const schedulerCache = /*#__PURE__*/ new Map() +/** @internal */ export function createBatchScheduler< TParameters, TReturnType extends readonly unknown[], diff --git a/src/utils/promise/withCache.ts b/src/utils/promise/withCache.ts index 103c94fd5c..1f12b1cb5d 100644 --- a/src/utils/promise/withCache.ts +++ b/src/utils/promise/withCache.ts @@ -1,6 +1,8 @@ import type { ErrorType } from '../../errors/utils.js' +/** @internal */ export const promiseCache = /*#__PURE__*/ new Map() +/** @internal */ export const responseCache = /*#__PURE__*/ new Map() export type GetCacheErrorType = ErrorType @@ -28,7 +30,7 @@ export function getCache(cacheKey: string) { } } -export type WithCacheParameters = { +type WithCacheParameters = { /** The key to cache the data against. */ cacheKey: string /** The time that cached data will remain in memory. Default: Infinity (no expiry) */ diff --git a/src/utils/promise/withTimeout.ts b/src/utils/promise/withTimeout.ts index ada0fa6227..fb79fb4b9f 100644 --- a/src/utils/promise/withTimeout.ts +++ b/src/utils/promise/withTimeout.ts @@ -21,7 +21,7 @@ export function withTimeout( ): Promise { return new Promise((resolve, reject) => { ;(async () => { - let timeoutId!: Timer + let timeoutId!: NodeJS.Timeout try { const controller = new AbortController() if (timeout > 0) { @@ -31,7 +31,7 @@ export function withTimeout( } else { reject(errorInstance) } - }, timeout) + }, timeout) as NodeJS.Timeout // need to cast because bun globals.d.ts overrides @types/node } resolve(await fn({ signal: controller?.signal || null })) } catch (err) { diff --git a/src/utils/rpc/id.ts b/src/utils/rpc/id.ts index f1f1e36f4c..3ef4cd711f 100644 --- a/src/utils/rpc/id.ts +++ b/src/utils/rpc/id.ts @@ -1,4 +1,4 @@ -export function createIdStore() { +function createIdStore() { return { current: 0, take() { diff --git a/src/utils/rpc/ipc.ts b/src/utils/rpc/ipc.ts index 5f8c231c67..80fbfd9fe7 100644 --- a/src/utils/rpc/ipc.ts +++ b/src/utils/rpc/ipc.ts @@ -15,6 +15,7 @@ export type GetIpcRpcClientOptions = Pick< const openingBrace = '{'.charCodeAt(0) const closingBrace = '}'.charCodeAt(0) +/** @internal */ export function extractMessages(buffer: Buffer): [Buffer[], Buffer] { const messages: Buffer[] = [] diff --git a/src/utils/stateOverride.ts b/src/utils/stateOverride.ts index eb4c4ea46b..4cb149f6e6 100644 --- a/src/utils/stateOverride.ts +++ b/src/utils/stateOverride.ts @@ -21,10 +21,11 @@ import type { StateMapping, StateOverride } from '../types/stateOverride.js' import { isAddress } from './address/isAddress.js' import { type NumberToHexErrorType, numberToHex } from './encoding/toHex.js' -export type SerializeStateMappingParameters = StateMapping | undefined +type SerializeStateMappingParameters = StateMapping | undefined -export type SerializeStateMappingErrorType = InvalidBytesLengthErrorType +type SerializeStateMappingErrorType = InvalidBytesLengthErrorType +/** @internal */ export function serializeStateMapping( stateMapping: SerializeStateMappingParameters, ): RpcStateMapping | undefined { @@ -47,16 +48,17 @@ export function serializeStateMapping( }, {} as RpcStateMapping) } -export type SerializeAccountStateOverrideParameters = Omit< +type SerializeAccountStateOverrideParameters = Omit< StateOverride[number], 'address' > -export type SerializeAccountStateOverrideErrorType = +type SerializeAccountStateOverrideErrorType = | NumberToHexErrorType | StateAssignmentConflictErrorType | SerializeStateMappingErrorType +/** @internal */ export function serializeAccountStateOverride( parameters: SerializeAccountStateOverrideParameters, ): RpcAccountStateOverride { @@ -75,13 +77,14 @@ export function serializeAccountStateOverride( return rpcAccountStateOverride } -export type SerializeStateOverrideParameters = StateOverride | undefined +type SerializeStateOverrideParameters = StateOverride | undefined export type SerializeStateOverrideErrorType = | InvalidAddressErrorType | AccountStateConflictErrorType | SerializeAccountStateOverrideErrorType +/** @internal */ export function serializeStateOverride( parameters?: SerializeStateOverrideParameters, ): RpcStateOverride | undefined { diff --git a/src/utils/transaction/parseTransaction.ts b/src/utils/transaction/parseTransaction.ts index baa9fdfb25..2212c71b5b 100644 --- a/src/utils/transaction/parseTransaction.ts +++ b/src/utils/transaction/parseTransaction.ts @@ -102,6 +102,7 @@ export function parseTransaction< } type ParseTransactionEIP4844ErrorType = + | ToTransactionArrayErrorType | AssertTransactionEIP4844ErrorType | ToTransactionArrayErrorType | HexToBigIntErrorType @@ -204,6 +205,7 @@ function parseTransactionEIP4844( } type ParseTransactionEIP1559ErrorType = + | ToTransactionArrayErrorType | AssertTransactionEIP1559ErrorType | ToTransactionArrayErrorType | HexToBigIntErrorType @@ -212,6 +214,7 @@ type ParseTransactionEIP1559ErrorType = | InvalidSerializedTransactionErrorType | IsHexErrorType | ParseEIP155SignatureErrorType + | ParseAccessListErrorType | ErrorType function parseTransactionEIP1559( @@ -285,6 +288,7 @@ function parseTransactionEIP1559( } type ParseTransactionEIP2930ErrorType = + | ToTransactionArrayErrorType | AssertTransactionEIP2930ErrorType | ToTransactionArrayErrorType | HexToBigIntErrorType @@ -293,6 +297,7 @@ type ParseTransactionEIP2930ErrorType = | InvalidSerializedTransactionErrorType | IsHexErrorType | ParseEIP155SignatureErrorType + | ParseAccessListErrorType | ErrorType function parseTransactionEIP2930( @@ -430,13 +435,13 @@ function parseTransactionLegacy( return transaction } -export type ToTransactionArrayErrorType = FromRlpErrorType | ErrorType +type ToTransactionArrayErrorType = FromRlpErrorType | ErrorType export function toTransactionArray(serializedTransaction: string) { return fromRlp(`0x${serializedTransaction.slice(4)}` as Hex, 'hex') } -export type ParseAccessListErrorType = +type ParseAccessListErrorType = | InvalidAddressErrorType | IsAddressErrorType | ErrorType diff --git a/src/zksync/actions/deployContract.ts b/src/zksync/actions/deployContract.ts index 04875900dd..32c660c8b0 100644 --- a/src/zksync/actions/deployContract.ts +++ b/src/zksync/actions/deployContract.ts @@ -10,7 +10,10 @@ import type { Hash, Hex } from '../../types/misc.js' import { contractDeployerAddress } from '../constants/address.js' import type { ChainEIP712 } from '../types/chain.js' import type { ContractDeploymentType } from '../types/contract.js' -import { encodeDeployData } from '../utils/abi/encodeDeployData.js' +import { + type EncodeDeployDataErrorType, + encodeDeployData, +} from '../utils/abi/encodeDeployData.js' import { type SendEip712TransactionErrorType, type SendEip712TransactionParameters, @@ -32,7 +35,10 @@ export type DeployContractParameters< export type DeployContractReturnType = SendEip712TransactionReturnType -export type DeployContractErrorType = SendEip712TransactionErrorType | ErrorType +export type DeployContractErrorType = + | EncodeDeployDataErrorType + | SendEip712TransactionErrorType + | ErrorType /** * Deploys a contract to the network, given bytecode and constructor arguments using EIP712 transaction. diff --git a/src/zksync/actions/estimateGasL1ToL2.ts b/src/zksync/actions/estimateGasL1ToL2.ts index 8d89e1778e..3ce9a439cb 100644 --- a/src/zksync/actions/estimateGasL1ToL2.ts +++ b/src/zksync/actions/estimateGasL1ToL2.ts @@ -1,8 +1,8 @@ +import { parseAccount } from '../../accounts/utils/parseAccount.js' import type { SendTransactionParameters } from '../../actions/wallet/sendTransaction.js' import type { Client } from '../../clients/createClient.js' import type { Transport } from '../../clients/transports/createTransport.js' import type { Account } from '../../types/account.js' -import { parseAccount } from '../../utils/accounts.js' import type { ChainEIP712 } from '../types/chain.js' import type { PublicZkSyncRpcSchema } from '../types/eip1193.js' diff --git a/src/zksync/actions/getAllBalances.ts b/src/zksync/actions/getAllBalances.ts index f1c1c6a6b5..523b48dd9a 100644 --- a/src/zksync/actions/getAllBalances.ts +++ b/src/zksync/actions/getAllBalances.ts @@ -1,9 +1,9 @@ import type { Address } from 'abitype' +import { parseAccount } from '../../accounts/utils/parseAccount.js' import type { Client } from '../../clients/createClient.js' import type { Transport } from '../../clients/transports/createTransport.js' import type { Account, GetAccountParameter } from '../../types/account.js' import type { Chain } from '../../types/chain.js' -import { parseAccount } from '../../utils/accounts.js' import { hexToBigInt } from '../../utils/encoding/fromHex.js' import type { PublicZkSyncRpcSchema } from '../types/eip1193.js' diff --git a/src/zksync/actions/getL1Allowance.ts b/src/zksync/actions/getL1Allowance.ts index 198ddce804..10bbc2f4de 100644 --- a/src/zksync/actions/getL1Allowance.ts +++ b/src/zksync/actions/getL1Allowance.ts @@ -1,4 +1,5 @@ import type { Address } from 'abitype' +import { parseAccount } from '../../accounts/utils/parseAccount.js' import { readContract } from '../../actions/public/readContract.js' import type { Client } from '../../clients/createClient.js' import type { Transport } from '../../clients/transports/createTransport.js' @@ -8,7 +9,6 @@ import type { BaseError } from '../../errors/base.js' import type { Account, GetAccountParameter } from '../../types/account.js' import type { BlockTag } from '../../types/block.js' import type { Chain } from '../../types/chain.js' -import { parseAccount } from '../../utils/accounts.js' export type GetL1AllowanceParameters< TAccount extends Account | undefined = Account | undefined, diff --git a/src/zksync/actions/getL1Balance.ts b/src/zksync/actions/getL1Balance.ts index ba588c3bf0..748f7624ae 100644 --- a/src/zksync/actions/getL1Balance.ts +++ b/src/zksync/actions/getL1Balance.ts @@ -1,4 +1,5 @@ import type { Address } from 'abitype' +import { parseAccount } from '../../accounts/utils/parseAccount.js' import { type GetBalanceParameters, getBalance, @@ -10,7 +11,6 @@ import type { BaseError } from '../../errors/base.js' import type { Account, GetAccountParameter } from '../../types/account.js' import type { BlockTag } from '../../types/block.js' import type { Chain } from '../../types/chain.js' -import { parseAccount } from '../../utils/accounts.js' import { legacyEthAddress } from '../constants/address.js' import { isEth } from '../utils/isEth.js' import { diff --git a/src/zksync/actions/getL1TokenBalance.ts b/src/zksync/actions/getL1TokenBalance.ts index bbf20e1a41..becea43e56 100644 --- a/src/zksync/actions/getL1TokenBalance.ts +++ b/src/zksync/actions/getL1TokenBalance.ts @@ -1,15 +1,18 @@ import type { Address } from '../../accounts/index.js' +import { parseAccount } from '../../accounts/utils/parseAccount.js' import { readContract } from '../../actions/index.js' import type { Client } from '../../clients/createClient.js' import type { Transport } from '../../clients/transports/createTransport.js' import { erc20Abi } from '../../constants/abis.js' -import type { AccountNotFoundError } from '../../errors/account.js' -import type { BaseError } from '../../errors/base.js' +import type { AccountNotFoundErrorType } from '../../errors/account.js' +import type { BaseErrorType } from '../../errors/base.js' import type { Account, GetAccountParameter } from '../../types/account.js' import type { BlockTag } from '../../types/block.js' import type { Chain } from '../../types/chain.js' -import { parseAccount } from '../../utils/accounts.js' -import { TokenIsEthError } from '../errors/token-is-eth.js' +import { + TokenIsEthError, + type TokenIsEthErrorType, +} from '../errors/token-is-eth.js' import { isEth } from '../utils/isEth.js' export type GetL1TokenBalanceParameters< @@ -30,9 +33,9 @@ export type GetL1TokenBalanceParameters< export type GetL1TokenBalanceReturnType = bigint export type GetL1TokenBalanceErrorType = - | AccountNotFoundError - | BaseError - | TokenIsEthError + | AccountNotFoundErrorType + | TokenIsEthErrorType + | BaseErrorType export async function getL1TokenBalance< TChain extends Chain | undefined, diff --git a/src/zksync/constants/contract.ts b/src/zksync/constants/contract.ts index 4bfd661850..22d1b52190 100644 --- a/src/zksync/constants/contract.ts +++ b/src/zksync/constants/contract.ts @@ -1,2 +1 @@ -export const accountAbstractionVersionNone = 0 export const accountAbstractionVersion1 = 1 diff --git a/src/zksync/index.ts b/src/zksync/index.ts index 1a58b1577e..f921661a69 100644 --- a/src/zksync/index.ts +++ b/src/zksync/index.ts @@ -134,6 +134,11 @@ export type { EIP712DomainFn, ZkSyncEip712Meta, } from './types/eip712.js' +export type { + CommonDataRawBlockTransaction, + RawBlockTransactions, + PublicZkSyncRpcSchema, +} from './types/eip1193.js' export type { ZkSyncFeeValues } from './types/fee.js' export type { ZkSyncL2ToL1Log, diff --git a/src/zksync/serializers.ts b/src/zksync/serializers.ts index 99105a2215..a3ae32060d 100644 --- a/src/zksync/serializers.ts +++ b/src/zksync/serializers.ts @@ -32,8 +32,7 @@ export const serializers = { transaction: serializeTransaction, } as const satisfies ChainSerializers -export type SerializeTransactionEIP712ReturnType = - ZkSyncTransactionSerializedEIP712 +type SerializeTransactionEIP712ReturnType = ZkSyncTransactionSerializedEIP712 function serializeTransactionEIP712( transaction: ZkSyncTransactionSerializableEIP712, diff --git a/src/zksync/types/eip1193.ts b/src/zksync/types/eip1193.ts index cfd18cdae2..b9afd0a936 100644 --- a/src/zksync/types/eip1193.ts +++ b/src/zksync/types/eip1193.ts @@ -22,32 +22,38 @@ export type CommonDataRawBlockTransaction = { export type RawBlockTransactions = { common_data: { - L1?: { - serialId: number - deadlineBlock: number - layer2TipFee: Hex - fullFee: Hex - opProcessingType: string - priorityQueueType: string - } & CommonDataRawBlockTransaction - L2?: { - nonce: number - fee: ZkSyncFee - initiatorAddress: Address - signature: Uint8Array - transactionType: string - input?: { - hash: Hash - data: Uint8Array - } - paymasterParams: { - paymaster: Address - paymasterInput: Uint8Array - } - } - ProtocolUpgrade?: { - upgradeId: string - } & CommonDataRawBlockTransaction + L1?: + | ({ + serialId: number + deadlineBlock: number + layer2TipFee: Hex + fullFee: Hex + opProcessingType: string + priorityQueueType: string + } & CommonDataRawBlockTransaction) + | undefined + L2?: + | { + nonce: number + fee: ZkSyncFee + initiatorAddress: Address + signature: Uint8Array + transactionType: string + input?: { + hash: Hash + data: Uint8Array + } + paymasterParams: { + paymaster: Address + paymasterInput: Uint8Array + } + } + | undefined + ProtocolUpgrade?: + | ({ + upgradeId: string + } & CommonDataRawBlockTransaction) + | undefined } execute: { calldata: Hash diff --git a/src/zksync/utils/abi/encodeDeployData.ts b/src/zksync/utils/abi/encodeDeployData.ts index 787ec90d08..80befad007 100644 --- a/src/zksync/utils/abi/encodeDeployData.ts +++ b/src/zksync/utils/abi/encodeDeployData.ts @@ -5,6 +5,7 @@ import { AbiConstructorNotFoundError, AbiConstructorParamsNotFoundError, } from '../../../errors/abi.js' +import type { ErrorType } from '../../../errors/utils.js' import type { ContractConstructorArgs } from '../../../types/contract.js' import type { Hash } from '../../../types/misc.js' import type { Hex } from '../../../types/misc.js' @@ -13,15 +14,19 @@ import type { EncodeDeployDataParameters as EncodeDeployDataParameters_, EncodeDeployDataReturnType, } from '../../../utils/abi/encodeDeployData.js' -import { encodeFunctionData } from '../../../utils/abi/encodeFunctionData.js' +import { + type EncodeFunctionDataErrorType, + encodeFunctionData, +} from '../../../utils/abi/encodeFunctionData.js' import { toHex } from '../../../utils/encoding/toHex.js' import { contractDeployerAbi } from '../../constants/abis.js' import { accountAbstractionVersion1 } from '../../constants/contract.js' import type { ContractDeploymentType } from '../../types/contract.js' -import { hashBytecode } from '../hashBytecode.js' +import { type HashBytecodeErrorType, hashBytecode } from '../hashBytecode.js' const docsPath = '/docs/contract/encodeDeployData' +/** @internal */ export type EncodeDeployDataParameters< abi extends Abi | readonly unknown[] = Abi, hasConstructor = abi extends Abi @@ -37,6 +42,11 @@ export type EncodeDeployDataParameters< salt?: Hash | undefined } +export type EncodeDeployDataErrorType = + | EncodeFunctionDataErrorType + | HashBytecodeErrorType + | ErrorType + export function encodeDeployData( parameters: EncodeDeployDataParameters, ): EncodeDeployDataReturnType { diff --git a/src/zksync/utils/assertEip712Request.ts b/src/zksync/utils/assertEip712Request.ts index 614f2ceaa7..150d5545df 100644 --- a/src/zksync/utils/assertEip712Request.ts +++ b/src/zksync/utils/assertEip712Request.ts @@ -6,14 +6,21 @@ import { } from '../../utils/transaction/assertRequest.js' import type { zkSync } from '../../zksync/chains.js' import type { SendTransactionParameters } from '../actions/sendTransaction.js' -import { InvalidEip712TransactionError } from '../errors/transaction.js' +import { + InvalidEip712TransactionError, + type InvalidEip712TransactionErrorType, +} from '../errors/transaction.js' import { isEIP712Transaction } from './isEip712Transaction.js' export type AssertEip712RequestParameters = ExactPartial< SendTransactionParameters > -export type AssertEip712RequestErrorType = AssertRequestErrorType | ErrorType +/** @internal */ +export type AssertEip712RequestErrorType = + | InvalidEip712TransactionErrorType + | AssertRequestErrorType + | ErrorType export function assertEip712Request(args: AssertEip712RequestParameters) { if (!isEIP712Transaction(args as any)) diff --git a/src/zksync/utils/hashBytecode.ts b/src/zksync/utils/hashBytecode.ts index 8a564983c1..fcebde710b 100644 --- a/src/zksync/utils/hashBytecode.ts +++ b/src/zksync/utils/hashBytecode.ts @@ -1,14 +1,26 @@ +import type { ErrorType } from '../../errors/utils.js' import type { Hex } from '../../types/misc.js' import { pad } from '../../utils/data/pad.js' -import { toBytes } from '../../utils/encoding/toBytes.js' -import { sha256 } from '../../utils/hash/sha256.js' +import { type ToBytesErrorType, toBytes } from '../../utils/encoding/toBytes.js' +import { type Sha256ErrorType, sha256 } from '../../utils/hash/sha256.js' import { maxBytecodeSize } from '../constants/number.js' import { BytecodeLengthExceedsMaxSizeError, + type BytecodeLengthExceedsMaxSizeErrorType, BytecodeLengthInWordsMustBeOddError, + type BytecodeLengthInWordsMustBeOddErrorType, BytecodeLengthMustBeDivisibleBy32Error, + type BytecodeLengthMustBeDivisibleBy32ErrorType, } from '../errors/bytecode.js' +export type HashBytecodeErrorType = + | BytecodeLengthExceedsMaxSizeErrorType + | BytecodeLengthInWordsMustBeOddErrorType + | BytecodeLengthMustBeDivisibleBy32ErrorType + | Sha256ErrorType + | ToBytesErrorType + | ErrorType + export function hashBytecode(bytecode: Hex): Uint8Array { const bytecodeBytes = toBytes(bytecode) if (bytecodeBytes.length % 32 !== 0) diff --git a/test/chains.test.ts b/test/scripts/chains.test.ts similarity index 90% rename from test/chains.test.ts rename to test/scripts/chains.test.ts index 2061cbf850..2903a5df80 100644 --- a/test/chains.test.ts +++ b/test/scripts/chains.test.ts @@ -1,9 +1,9 @@ import { describe, expect, test } from 'vitest' -import * as allChains from '../src/chains/index.js' -import { withTimeout } from '../src/utils/promise/withTimeout.js' -import { getHttpRpcClient } from '../src/utils/rpc/http.js' -import { getWebSocketRpcClient } from '../src/utils/rpc/webSocket.js' +import * as allChains from '../../src/chains/index.js' +import { withTimeout } from '../../src/utils/promise/withTimeout.js' +import { getHttpRpcClient } from '../../src/utils/rpc/http.js' +import { getWebSocketRpcClient } from '../../src/utils/rpc/webSocket.js' const defaultTimeout = 10_000 diff --git a/test/scripts/typebench.ts b/test/scripts/typebench.ts new file mode 100644 index 0000000000..9127a0eb7d --- /dev/null +++ b/test/scripts/typebench.ts @@ -0,0 +1,7 @@ +import { glob } from 'glob' +import { tsImport } from 'tsx/esm/api' + +const paths = await glob('src/**/*.bench-d.ts') +for (const path of paths) { + await tsImport(`../../${path}`, import.meta.url) +} diff --git a/test/src/ccip.ts b/test/src/ccip.ts index b7f65962d1..4ea7e38a57 100644 --- a/test/src/ccip.ts +++ b/test/src/ccip.ts @@ -1,6 +1,5 @@ -import { parseAbiParameters } from 'abitype' - import { sign } from '~viem/accounts/utils/sign.js' +import { parseAbiParameters } from '~viem/index.js' import type { Hex } from '~viem/types/misc.js' import { decodeAbiParameters } from '~viem/utils/abi/decodeAbiParameters.js' import { encodeAbiParameters } from '~viem/utils/abi/encodeAbiParameters.js' diff --git a/test/src/utils.ts b/test/src/utils.ts index c6257565e4..a6da90e613 100644 --- a/test/src/utils.ts +++ b/test/src/utils.ts @@ -1,6 +1,4 @@ /* c8 ignore start */ -import type { Abi } from 'abitype' - import { getTransactionReceipt } from '~viem/actions/public/getTransactionReceipt.js' import { impersonateAccount } from '~viem/actions/test/impersonateAccount.js' import { mine } from '~viem/actions/test/mine.js' @@ -16,6 +14,7 @@ import { http } from '~viem/clients/transports/http.js' import { namehash } from '~viem/utils/ens/namehash.js' import type { TestClientMode } from '../../src/clients/createTestClient.js' import { + type Abi, type Account, type Chain, type TestClient, diff --git a/test/tsconfig.json b/test/tsconfig.json index 2c59e6da5c..39f3fcbace 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -1,10 +1,9 @@ { - "extends": "../tsconfig.base.json", "compilerOptions": { "module": "nodenext", "moduleResolution": "nodenext", "target": "ESNext", - "types": ["bun-types"], + "types": ["@types/bun"], "baseUrl": ".", "paths": { "~viem/*": ["../src/*"] diff --git a/test/typebench.ts b/test/typebench.ts deleted file mode 100644 index d312d98b63..0000000000 --- a/test/typebench.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { globby } from 'globby' -import { tsImport } from 'tsx/esm/api' - -const paths = await globby(['src/**/*.bench-d.ts']) -for (const path of paths) { - await tsImport(`../${path}`, import.meta.url) -} diff --git a/tsconfig.base.json b/tsconfig.base.json index d09c3254a1..8e21b113dd 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -28,7 +28,6 @@ "allowSyntheticDefaultImports": false, "forceConsistentCasingInFileNames": true, "verbatimModuleSyntax": true, - "importHelpers": true, // This is only used for build validation. Since we do not have `tslib` installed, this will fail if we accidentally make use of anything that'd require injection of helpers. // Language and environment "moduleResolution": "NodeNext", diff --git a/vectors/bun.d.ts b/vectors/bun.d.ts index 07a9bf8b17..59e1360293 100644 --- a/vectors/bun.d.ts +++ b/vectors/bun.d.ts @@ -1 +1 @@ -import 'bun-types' +import '@types/bun' diff --git a/vectors/src/abi.test.ts b/vectors/src/abi.test.ts index 543090a8ed..517db81c4c 100644 --- a/vectors/src/abi.test.ts +++ b/vectors/src/abi.test.ts @@ -1,4 +1,4 @@ -/// +/// import { join } from 'node:path'; import { describe, expect, test } from 'bun:test'; diff --git a/vectors/src/abi.ts b/vectors/src/abi.ts index eecbbbcb2f..d3f0cfdc77 100644 --- a/vectors/src/abi.ts +++ b/vectors/src/abi.ts @@ -1,4 +1,4 @@ -/// +/// import { join } from 'node:path' import { type AbiParameter, checksumAddress } from '../../src' diff --git a/vectors/src/rlp.ts b/vectors/src/rlp.ts index 24d03b19e5..4b09390c57 100644 --- a/vectors/src/rlp.ts +++ b/vectors/src/rlp.ts @@ -1,4 +1,4 @@ -/// +/// import { join } from 'node:path' diff --git a/vectors/src/rlp.vectors.test.ts b/vectors/src/rlp.vectors.test.ts index 5fc7000b8d..0959b5b2fd 100644 --- a/vectors/src/rlp.vectors.test.ts +++ b/vectors/src/rlp.vectors.test.ts @@ -1,4 +1,4 @@ -/// +/// import { join } from 'node:path' import { describe, expect, test } from 'bun:test' diff --git a/vectors/src/transaction.ts b/vectors/src/transaction.ts index 34df37a3b2..e6c7005c4a 100644 --- a/vectors/src/transaction.ts +++ b/vectors/src/transaction.ts @@ -1,4 +1,4 @@ -/// +/// import { join } from 'node:path' diff --git a/vectors/src/transaction.vectors.test.ts b/vectors/src/transaction.vectors.test.ts index 973ba887f8..0acb44ce34 100644 --- a/vectors/src/transaction.vectors.test.ts +++ b/vectors/src/transaction.vectors.test.ts @@ -1,4 +1,4 @@ -/// +/// import { join } from 'node:path' import { describe, expect, test } from 'bun:test' From d9aeb08967d5ca6228ac3a542988d0d372e9890a Mon Sep 17 00:00:00 2001 From: Tom Meagher Date: Thu, 6 Jun 2024 18:58:17 -0400 Subject: [PATCH 24/30] chore: bump biome --- environments/next/package.json | 2 +- environments/tsc/package.json | 4 +- package.json | 47 ++++++++++++++++----- pnpm-lock.yaml | 74 +++++++++++++++++----------------- src/package.json | 66 +++++++++++++++++++++++------- 5 files changed, 128 insertions(+), 65 deletions(-) diff --git a/environments/next/package.json b/environments/next/package.json index e643f3b342..63c5a0ca1e 100644 --- a/environments/next/package.json +++ b/environments/next/package.json @@ -10,9 +10,9 @@ "test": "playwright test" }, "dependencies": { + "next": "13.5.4", "react": "^18.2.0", "react-dom": "^18.2.0", - "next": "13.5.4", "viem": "file:../../src/" }, "devDependencies": { diff --git a/environments/tsc/package.json b/environments/tsc/package.json index 608eae535b..6d10c47392 100644 --- a/environments/tsc/package.json +++ b/environments/tsc/package.json @@ -6,7 +6,7 @@ "test": "tsc --module commonjs --verbatimModuleSyntax false && tsc --module es2015 && tsc --module es2020 && tsc --module esnext && tsc --module node16 --moduleResolution nodenext && tsc --module nodenext --moduleResolution nodenext" }, "dependencies": { - "viem": "file:../../src/", - "typescript": "latest" + "typescript": "latest", + "viem": "file:../../src/" } } diff --git a/package.json b/package.json index 92f3bc16f9..5c8aaaf586 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "changeset:version": "changeset version && pnpm install --lockfile-only && pnpm version:update", "clean": "rm -rf *.tsbuildinfo src/*.tsbuildinfo src/_esm src/_cjs src/_types", "contracts:build": "forge build --config-path ./test/foundry.toml && bun ./scripts/generateTypedArtifacts.ts", + "deps": "pnpx taze -r", "docs:dev": "pnpm --filter site dev", "docs:build": "pnpm --filter site build", "lint": "biome check . --apply", @@ -46,7 +47,7 @@ "devDependencies": { "@arethetypeswrong/cli": "^0.15.3", "@arktype/attest": "0.7.5", - "@biomejs/biome": "^1.7.3", + "@biomejs/biome": "^1.8.0", "@changesets/changelog-github": "^0.4.5", "@changesets/cli": "^2.23.2", "@ethereumjs/rlp": "^5.0.0", @@ -69,7 +70,9 @@ "typescript": "5.4.5", "vitest": "^1.0.4" }, - "trustedDependencies": ["c-kzg"], + "trustedDependencies": [ + "c-kzg" + ], "packageManager": "pnpm@9.1.0", "engines": { "node": "22.x" @@ -78,13 +81,32 @@ "pre-commit": "pnpm lint" }, "knip": { - "ignore": [".github/**", "environments/**", "vectors/**"], - "ignoreBinaries": ["dev", "forge", "only-allow", "printf"], - "ignoreDependencies": ["bun", "@size-limit/preset-big-lib"], - "ignoreWorkspaces": ["examples/**", "test"], + "ignore": [ + ".github/**", + "environments/**", + "vectors/**" + ], + "ignoreBinaries": [ + "dev", + "forge", + "only-allow", + "printf" + ], + "ignoreDependencies": [ + "bun", + "@size-limit/preset-big-lib" + ], + "ignoreWorkspaces": [ + "examples/**", + "test" + ], "vitest": { - "config": ["test/vitest.config.ts"], - "entry": ["**/*.{bench,bench-d,test,test-d,spec}.?(c|m)[jt]s?(x)"] + "config": [ + "test/vitest.config.ts" + ], + "entry": [ + "**/*.{bench,bench-d,test,test-d,spec}.?(c|m)[jt]s?(x)" + ] }, "workspaces": { ".": { @@ -96,10 +118,15 @@ "{accounts,actions,celo,chains,ens,experimental,node,op-stack,siwe,utils,window,zksync}/index.ts!", "chains/utils.ts!" ], - "ignore": ["node/trustedSetups_cjs.ts"] + "ignore": [ + "node/trustedSetups_cjs.ts" + ] }, "site": { - "project": ["**/*.ts", "**/*.tsx"] + "project": [ + "**/*.ts", + "**/*.tsx" + ] } } }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0bb7c740a9..491dc584db 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: specifier: 0.7.5 version: 0.7.5(typescript@5.4.5) '@biomejs/biome': - specifier: ^1.7.3 - version: 1.7.3 + specifier: ^1.8.0 + version: 1.8.0 '@changesets/changelog-github': specifier: ^0.4.5 version: 0.4.5 @@ -703,55 +703,55 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@biomejs/biome@1.7.3': - resolution: {integrity: sha512-ogFQI+fpXftr+tiahA6bIXwZ7CSikygASdqMtH07J2cUzrpjyTMVc9Y97v23c7/tL1xCZhM+W9k4hYIBm7Q6cQ==} + '@biomejs/biome@1.8.0': + resolution: {integrity: sha512-34xcE2z8GWrIz1sCFEmlHT/+4d+SN7YOqqvzlAKXKvaWPRJ2/NUwxPbRsP01P9QODkQ5bvGvc9rpBihmP+7RJQ==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@1.7.3': - resolution: {integrity: sha512-eDvLQWmGRqrPIRY7AIrkPHkQ3visEItJKkPYSHCscSDdGvKzYjmBJwG1Gu8+QC5ed6R7eiU63LEC0APFBobmfQ==} + '@biomejs/cli-darwin-arm64@1.8.0': + resolution: {integrity: sha512-dBAYzfIJ1JmWigKlWourT3sJ3I60LZPjqNwwlsyFjiv5AV7vPeWlHVVIImV2BpINwNjZQhpXnwDfVnGS4vr7AA==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@1.7.3': - resolution: {integrity: sha512-JXCaIseKRER7dIURsVlAJacnm8SG5I0RpxZ4ya3dudASYUc68WGl4+FEN03ABY3KMIq7hcK1tzsJiWlmXyosZg==} + '@biomejs/cli-darwin-x64@1.8.0': + resolution: {integrity: sha512-ZTTSD0bP0nn9UpRDGQrQNTILcYSj+IkxTYr3CAV64DWBDtQBomlk2oVKWzDaA1LOhpAsTh0giLCbPJaVk2jfMQ==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@1.7.3': - resolution: {integrity: sha512-c8AlO45PNFZ1BYcwaKzdt46kYbuP6xPGuGQ6h4j3XiEDpyseRRUy/h+6gxj07XovmyxKnSX9GSZ6nVbZvcVUAw==} + '@biomejs/cli-linux-arm64-musl@1.8.0': + resolution: {integrity: sha512-+ee/pZWsvhDv6eRI00krRNSgAg8DKSxzOv3LUsCjto6N1VzqatTASeQv2HRfG1nitf79rRKM75LkMJbqEfiKww==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@1.7.3': - resolution: {integrity: sha512-phNTBpo7joDFastnmZsFjYcDYobLTx4qR4oPvc9tJ486Bd1SfEVPHEvJdNJrMwUQK56T+TRClOQd/8X1nnjA9w==} + '@biomejs/cli-linux-arm64@1.8.0': + resolution: {integrity: sha512-cx725jTlJS6dskvJJwwCQaaMRBKE2Qss7ukzmx27Rn/DXRxz6tnnBix4FUGPf1uZfwrERkiJlbWM05JWzpvvXg==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-x64-musl@1.7.3': - resolution: {integrity: sha512-UdEHKtYGWEX3eDmVWvQeT+z05T9/Sdt2+F/7zmMOFQ7boANeX8pcO6EkJPK3wxMudrApsNEKT26rzqK6sZRTRA==} + '@biomejs/cli-linux-x64-musl@1.8.0': + resolution: {integrity: sha512-VPA4ocrAOak50VYl8gOAVnjuFFDpIUolShntc/aWM0pZfSIMbRucxnrfUfp44EVwayxjK6ruJTR5xEWj93WvDA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@1.7.3': - resolution: {integrity: sha512-vnedYcd5p4keT3iD48oSKjOIRPYcjSNNbd8MO1bKo9ajg3GwQXZLAH+0Cvlr+eMsO67/HddWmscSQwTFrC/uPA==} + '@biomejs/cli-linux-x64@1.8.0': + resolution: {integrity: sha512-cmgmhlD4QUxMhL1VdaNqnB81xBHb3R7huVNyYnPYzP+AykZ7XqJbPd1KcWAszNjUk2AHdx0aLKEBwCOWemxb2g==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-win32-arm64@1.7.3': - resolution: {integrity: sha512-unNCDqUKjujYkkSxs7gFIfdasttbDC4+z0kYmcqzRk6yWVoQBL4dNLcCbdnJS+qvVDNdI9rHp2NwpQ0WAdla4Q==} + '@biomejs/cli-win32-arm64@1.8.0': + resolution: {integrity: sha512-J31spvlh39FfRHQacYXxJX9PvTCH/a8+2Jx9D1lxw+LSF0JybqZcw/4JrlFUWUl4kF3yv8AuYUK0sENScc3g9w==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@1.7.3': - resolution: {integrity: sha512-ZmByhbrnmz/UUFYB622CECwhKIPjJLLPr5zr3edhu04LzbfcOrz16VYeNq5dpO1ADG70FORhAJkaIGdaVBG00w==} + '@biomejs/cli-win32-x64@1.8.0': + resolution: {integrity: sha512-uPHHvu76JC1zYe9zZDcOU9PAg+1MZmPuNgWkb5jljaDeATvzLFPB+0nuJTilf603LXL+E8IdPQAO61Wy2VuEJA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -6506,39 +6506,39 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@biomejs/biome@1.7.3': + '@biomejs/biome@1.8.0': optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.7.3 - '@biomejs/cli-darwin-x64': 1.7.3 - '@biomejs/cli-linux-arm64': 1.7.3 - '@biomejs/cli-linux-arm64-musl': 1.7.3 - '@biomejs/cli-linux-x64': 1.7.3 - '@biomejs/cli-linux-x64-musl': 1.7.3 - '@biomejs/cli-win32-arm64': 1.7.3 - '@biomejs/cli-win32-x64': 1.7.3 + '@biomejs/cli-darwin-arm64': 1.8.0 + '@biomejs/cli-darwin-x64': 1.8.0 + '@biomejs/cli-linux-arm64': 1.8.0 + '@biomejs/cli-linux-arm64-musl': 1.8.0 + '@biomejs/cli-linux-x64': 1.8.0 + '@biomejs/cli-linux-x64-musl': 1.8.0 + '@biomejs/cli-win32-arm64': 1.8.0 + '@biomejs/cli-win32-x64': 1.8.0 - '@biomejs/cli-darwin-arm64@1.7.3': + '@biomejs/cli-darwin-arm64@1.8.0': optional: true - '@biomejs/cli-darwin-x64@1.7.3': + '@biomejs/cli-darwin-x64@1.8.0': optional: true - '@biomejs/cli-linux-arm64-musl@1.7.3': + '@biomejs/cli-linux-arm64-musl@1.8.0': optional: true - '@biomejs/cli-linux-arm64@1.7.3': + '@biomejs/cli-linux-arm64@1.8.0': optional: true - '@biomejs/cli-linux-x64-musl@1.7.3': + '@biomejs/cli-linux-x64-musl@1.8.0': optional: true - '@biomejs/cli-linux-x64@1.7.3': + '@biomejs/cli-linux-x64@1.8.0': optional: true - '@biomejs/cli-win32-arm64@1.7.3': + '@biomejs/cli-win32-arm64@1.8.0': optional: true - '@biomejs/cli-win32-x64@1.7.3': + '@biomejs/cli-win32-x64@1.8.0': optional: true '@changesets/apply-release-plan@6.1.4': diff --git a/src/package.json b/src/package.json index c86d50b71b..2872b4dabf 100644 --- a/src/package.json +++ b/src/package.json @@ -94,19 +94,45 @@ }, "typesVersions": { "*": { - "accounts": ["./_types/accounts/index.d.ts"], - "actions": ["./_types/actions/index.d.ts"], - "celo": ["./_types/celo/index.d.ts"], - "chains": ["./_types/chains/index.d.ts"], - "chains/utils": ["./_types/chains/utils.d.ts"], - "ens": ["./_types/ens/index.d.ts"], - "experimental": ["./_types/experimental/index.d.ts"], - "node": ["./_types/node/index.d.ts"], - "op-stack": ["./_types/op-stack/index.d.ts"], - "siwe": ["./_types/siwe/index.d.ts"], - "utils": ["./_types/utils/index.d.ts"], - "window": ["./_types/window/index.d.ts"], - "zksync": ["./_types/zksync/index.d.ts"] + "accounts": [ + "./_types/accounts/index.d.ts" + ], + "actions": [ + "./_types/actions/index.d.ts" + ], + "celo": [ + "./_types/celo/index.d.ts" + ], + "chains": [ + "./_types/chains/index.d.ts" + ], + "chains/utils": [ + "./_types/chains/utils.d.ts" + ], + "ens": [ + "./_types/ens/index.d.ts" + ], + "experimental": [ + "./_types/experimental/index.d.ts" + ], + "node": [ + "./_types/node/index.d.ts" + ], + "op-stack": [ + "./_types/op-stack/index.d.ts" + ], + "siwe": [ + "./_types/siwe/index.d.ts" + ], + "utils": [ + "./_types/utils/index.d.ts" + ], + "window": [ + "./_types/window/index.d.ts" + ], + "zksync": [ + "./_types/zksync/index.d.ts" + ] } }, "peerDependencies": { @@ -130,12 +156,22 @@ "license": "MIT", "homepage": "https://viem.sh", "repository": "wevm/viem", - "authors": ["awkweb.eth", "jxom.eth"], + "authors": [ + "awkweb.eth", + "jxom.eth" + ], "funding": [ { "type": "github", "url": "https://github.com/sponsors/wevm" } ], - "keywords": ["eth", "ethereum", "dapps", "wallet", "web3", "typescript"] + "keywords": [ + "eth", + "ethereum", + "dapps", + "wallet", + "web3", + "typescript" + ] } From d1beebc3a4884704b89764529196f59df0b7812e Mon Sep 17 00:00:00 2001 From: Tom Meagher Date: Thu, 6 Jun 2024 18:58:30 -0400 Subject: [PATCH 25/30] chore: bump biome --- biome.json | 2 +- package.json | 46 ++++++++------------------------- src/package.json | 66 +++++++++++------------------------------------- 3 files changed, 26 insertions(+), 88 deletions(-) diff --git a/biome.json b/biome.json index 46d4ef4d7d..7d954c023f 100644 --- a/biome.json +++ b/biome.json @@ -66,7 +66,7 @@ "javascript": { "formatter": { "quoteStyle": "single", - "trailingComma": "all", + "trailingCommas": "all", "semicolons": "asNeeded" } }, diff --git a/package.json b/package.json index 5c8aaaf586..5f3f7d95e6 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "deps": "pnpx taze -r", "docs:dev": "pnpm --filter site dev", "docs:build": "pnpm --filter site build", - "lint": "biome check . --apply", + "lint": "biome check --fix", "lint:repo": "sherif", "lint:unused": "pnpm clean && knip", "postinstall": "git submodule update --init --recursive && pnpm contracts:build", @@ -70,9 +70,7 @@ "typescript": "5.4.5", "vitest": "^1.0.4" }, - "trustedDependencies": [ - "c-kzg" - ], + "trustedDependencies": ["c-kzg"], "packageManager": "pnpm@9.1.0", "engines": { "node": "22.x" @@ -81,32 +79,13 @@ "pre-commit": "pnpm lint" }, "knip": { - "ignore": [ - ".github/**", - "environments/**", - "vectors/**" - ], - "ignoreBinaries": [ - "dev", - "forge", - "only-allow", - "printf" - ], - "ignoreDependencies": [ - "bun", - "@size-limit/preset-big-lib" - ], - "ignoreWorkspaces": [ - "examples/**", - "test" - ], + "ignore": [".github/**", "environments/**", "vectors/**"], + "ignoreBinaries": ["dev", "forge", "only-allow", "printf"], + "ignoreDependencies": ["bun", "@size-limit/preset-big-lib"], + "ignoreWorkspaces": ["examples/**", "test"], "vitest": { - "config": [ - "test/vitest.config.ts" - ], - "entry": [ - "**/*.{bench,bench-d,test,test-d,spec}.?(c|m)[jt]s?(x)" - ] + "config": ["test/vitest.config.ts"], + "entry": ["**/*.{bench,bench-d,test,test-d,spec}.?(c|m)[jt]s?(x)"] }, "workspaces": { ".": { @@ -118,15 +97,10 @@ "{accounts,actions,celo,chains,ens,experimental,node,op-stack,siwe,utils,window,zksync}/index.ts!", "chains/utils.ts!" ], - "ignore": [ - "node/trustedSetups_cjs.ts" - ] + "ignore": ["node/trustedSetups_cjs.ts"] }, "site": { - "project": [ - "**/*.ts", - "**/*.tsx" - ] + "project": ["**/*.ts", "**/*.tsx"] } } }, diff --git a/src/package.json b/src/package.json index 2872b4dabf..c86d50b71b 100644 --- a/src/package.json +++ b/src/package.json @@ -94,45 +94,19 @@ }, "typesVersions": { "*": { - "accounts": [ - "./_types/accounts/index.d.ts" - ], - "actions": [ - "./_types/actions/index.d.ts" - ], - "celo": [ - "./_types/celo/index.d.ts" - ], - "chains": [ - "./_types/chains/index.d.ts" - ], - "chains/utils": [ - "./_types/chains/utils.d.ts" - ], - "ens": [ - "./_types/ens/index.d.ts" - ], - "experimental": [ - "./_types/experimental/index.d.ts" - ], - "node": [ - "./_types/node/index.d.ts" - ], - "op-stack": [ - "./_types/op-stack/index.d.ts" - ], - "siwe": [ - "./_types/siwe/index.d.ts" - ], - "utils": [ - "./_types/utils/index.d.ts" - ], - "window": [ - "./_types/window/index.d.ts" - ], - "zksync": [ - "./_types/zksync/index.d.ts" - ] + "accounts": ["./_types/accounts/index.d.ts"], + "actions": ["./_types/actions/index.d.ts"], + "celo": ["./_types/celo/index.d.ts"], + "chains": ["./_types/chains/index.d.ts"], + "chains/utils": ["./_types/chains/utils.d.ts"], + "ens": ["./_types/ens/index.d.ts"], + "experimental": ["./_types/experimental/index.d.ts"], + "node": ["./_types/node/index.d.ts"], + "op-stack": ["./_types/op-stack/index.d.ts"], + "siwe": ["./_types/siwe/index.d.ts"], + "utils": ["./_types/utils/index.d.ts"], + "window": ["./_types/window/index.d.ts"], + "zksync": ["./_types/zksync/index.d.ts"] } }, "peerDependencies": { @@ -156,22 +130,12 @@ "license": "MIT", "homepage": "https://viem.sh", "repository": "wevm/viem", - "authors": [ - "awkweb.eth", - "jxom.eth" - ], + "authors": ["awkweb.eth", "jxom.eth"], "funding": [ { "type": "github", "url": "https://github.com/sponsors/wevm" } ], - "keywords": [ - "eth", - "ethereum", - "dapps", - "wallet", - "web3", - "typescript" - ] + "keywords": ["eth", "ethereum", "dapps", "wallet", "web3", "typescript"] } From 1d329882c6b37e722260a40c2745b8f0baa56bf9 Mon Sep 17 00:00:00 2001 From: Ed Zynda Date: Sat, 8 Jun 2024 07:05:00 +0300 Subject: [PATCH 26/30] feat: add api url to sei (#2375) * Update sei.ts * Create forty-books-pump.md --------- Co-authored-by: jxom --- .changeset/forty-books-pump.md | 5 +++++ src/chains/definitions/sei.ts | 1 + 2 files changed, 6 insertions(+) create mode 100644 .changeset/forty-books-pump.md diff --git a/.changeset/forty-books-pump.md b/.changeset/forty-books-pump.md new file mode 100644 index 0000000000..d7a8861682 --- /dev/null +++ b/.changeset/forty-books-pump.md @@ -0,0 +1,5 @@ +--- +"viem": patch +--- + +Added API URL to `sei` chain. diff --git a/src/chains/definitions/sei.ts b/src/chains/definitions/sei.ts index 801da2f74a..e30e9a1ac5 100644 --- a/src/chains/definitions/sei.ts +++ b/src/chains/definitions/sei.ts @@ -14,6 +14,7 @@ export const sei = /*#__PURE__*/ defineChain({ default: { name: 'Seitrace', url: 'https://seitrace.com', + apiUrl: 'https://seitrace.com/pacific-1/api', }, }, contracts: { From ca902d85966a3581b093ed3e687e393dcce967fb Mon Sep 17 00:00:00 2001 From: Will Cory Date: Fri, 7 Jun 2024 22:51:59 -0700 Subject: [PATCH 27/30] fix: Jsdoc signUnsignedTx copy pasta (#2373) Jsdoc had copy pasta --- src/actions/test/sendUnsignedTransaction.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/actions/test/sendUnsignedTransaction.ts b/src/actions/test/sendUnsignedTransaction.ts index 87ad53e654..2530f18c70 100644 --- a/src/actions/test/sendUnsignedTransaction.ts +++ b/src/actions/test/sendUnsignedTransaction.ts @@ -24,9 +24,9 @@ export type SendUnsignedTransactionReturnType = Hash export type SendUnsignedTransactionErrorType = RequestErrorType | ErrorType /** - * Returns the details of all transactions currently pending for inclusion in the next block(s), as well as the ones that are being scheduled for future execution only. + * Executes a transaction regardless of the signature. * - * - Docs: https://viem.sh/docs/actions/test/getTxpoolContent + * - Docs: https://viem.sh/docs/actions/test/sendUnsignedTransaction#sendunsignedtransaction * * @param client - Client to use * @param parameters – {@link SendUnsignedTransactionParameters} From 7b76a87b3568c6ef5f475925a364cbf968a0c84d Mon Sep 17 00:00:00 2001 From: jxom Date: Sat, 8 Jun 2024 16:05:05 +1000 Subject: [PATCH 28/30] chore: update snapshot (foundry update) --- src/actions/wallet/sendTransaction.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/actions/wallet/sendTransaction.test.ts b/src/actions/wallet/sendTransaction.test.ts index 2c367ed36d..00eb8c5c5f 100644 --- a/src/actions/wallet/sendTransaction.test.ts +++ b/src/actions/wallet/sendTransaction.test.ts @@ -178,7 +178,7 @@ test('sends transaction (w/ serializer)', async () => { ).rejects.toThrowError() expect(serializer).toReturnWith( - '0x08ef0182028f8085016bebe66a825208809470997970c51812dc3a010c7d01b50e0d17dc79c8880de0b6b3a764000080c0', + '0x08f30182028f843b9aca008501a786b06a825208809470997970c51812dc3a010c7d01b50e0d17dc79c8880de0b6b3a764000080c0', ) }) From c54426f7ff54b3cfeaad92bb7e0f6ec5deb6df8f Mon Sep 17 00:00:00 2001 From: jxom Date: Sat, 8 Jun 2024 18:29:24 +1000 Subject: [PATCH 29/30] chore: update test --- src/op-stack/actions/getPortalVersion.test.ts | 24 +++---------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/src/op-stack/actions/getPortalVersion.test.ts b/src/op-stack/actions/getPortalVersion.test.ts index 8e9cac4c63..0876d91e5f 100644 --- a/src/op-stack/actions/getPortalVersion.test.ts +++ b/src/op-stack/actions/getPortalVersion.test.ts @@ -15,37 +15,19 @@ test('default', async () => { const version = await getPortalVersion(mainnetClient, { targetChain: base, }) - expect(version).toMatchInlineSnapshot(` - { - "major": 1, - "minor": 7, - "patch": 0, - } - `) + expect(version).toBeDefined() }) test('sepolia', async () => { const version = await getPortalVersion(sepoliaClient, { targetChain: optimismSepolia, }) - expect(version).toMatchInlineSnapshot(` - { - "major": 3, - "minor": 8, - "patch": 0, - } - `) + expect(version).toBeDefined() }) test('args: portalAddress', async () => { const version = await getPortalVersion(sepoliaClient, { portalAddress: '0xeffE2C6cA9Ab797D418f0D91eA60807713f3536f', }) - expect(version).toMatchInlineSnapshot(` - { - "major": 2, - "minor": 5, - "patch": 0, - } - `) + expect(version).toBeDefined() }) From 3d240bcd6d240efe80b7335c4c8a9e75793f398c Mon Sep 17 00:00:00 2001 From: jxom Date: Sun, 9 Jun 2024 13:57:10 +1000 Subject: [PATCH 30/30] chore: update comment --- src/utils/unit/parseUnits.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/unit/parseUnits.ts b/src/utils/unit/parseUnits.ts index 03a0e52773..c8e7010de2 100644 --- a/src/utils/unit/parseUnits.ts +++ b/src/utils/unit/parseUnits.ts @@ -19,7 +19,7 @@ export function parseUnits(value: string, decimals: number) { const negative = integer.startsWith('-') if (negative) integer = integer.slice(1) - // trim leading zeros. + // trim trailing zeros. fraction = fraction.replace(/(0+)$/, '') // round off if the fraction is larger than the number of decimals.