From 5ff999c23a8e4c92eda25e43056c13ba0cca1410 Mon Sep 17 00:00:00 2001 From: cb-jake <95890768+cb-jake@users.noreply.github.com> Date: Tue, 24 Sep 2024 12:29:20 -0600 Subject: [PATCH 01/28] fix noble hash keccak256 usage (#1406) * fix noble hash keccak256 usage * fix test and implementation --- .../wallet-sdk/src/sign/walletlink/WalletLinkSigner.test.ts | 2 +- packages/wallet-sdk/src/vendor-js/eth-eip712-util/index.js | 3 +++ packages/wallet-sdk/src/vendor-js/eth-eip712-util/util.js | 6 ++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.test.ts b/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.test.ts index 1df3ef3aaa..3bd9452cba 100644 --- a/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.test.ts +++ b/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.test.ts @@ -208,7 +208,7 @@ describe('LegacyProvider', () => { const sendRequestSpy = jest.spyOn(relay, 'sendRequest'); const provider = createAdapter({ relay }); - const ENCODED_MESSAGE = '0xb7845733ba102a68c6eb21c3cd2feafafd1130de581d7e73be60b76d775b6704'; + const ENCODED_MESSAGE = '0x421b6e328c574f0ee83a68d51d01be3597d8b5391c7725dfa80247a60b5cd390'; const ENCODED_TYPED_DATA_JSON = JSON.stringify(MOCK_TYPED_DATA); beforeEach(() => { diff --git a/packages/wallet-sdk/src/vendor-js/eth-eip712-util/index.js b/packages/wallet-sdk/src/vendor-js/eth-eip712-util/index.js index 7b3cc4c3f2..d0a56b44d2 100644 --- a/packages/wallet-sdk/src/vendor-js/eth-eip712-util/index.js +++ b/packages/wallet-sdk/src/vendor-js/eth-eip712-util/index.js @@ -1,3 +1,6 @@ +/* eslint-disable */ +//prettier-ignore + const util = require('./util') const abi = require('./abi') diff --git a/packages/wallet-sdk/src/vendor-js/eth-eip712-util/util.js b/packages/wallet-sdk/src/vendor-js/eth-eip712-util/util.js index 7d24b0f80a..47755cb8d1 100644 --- a/packages/wallet-sdk/src/vendor-js/eth-eip712-util/util.js +++ b/packages/wallet-sdk/src/vendor-js/eth-eip712-util/util.js @@ -138,8 +138,10 @@ function bufferToHex (buf) { function keccak (a, bits) { a = toBuffer(a) if (!bits) bits = 256 - - return Buffer.from(keccak_256('keccak' + bits)) + if (bits !== 256) { + throw new Error('unsupported') + } + return Buffer.from(keccak_256(new Uint8Array(a))) } function padToEven (str) { From 9c75ba771f78d3e5790d92460ae39abf64277861 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 24 Sep 2024 15:10:39 -0700 Subject: [PATCH 02/28] v4.1.0 (#1407) Co-authored-by: fan-zhang-sv --- packages/wallet-sdk/package.json | 2 +- packages/wallet-sdk/src/version.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/wallet-sdk/package.json b/packages/wallet-sdk/package.json index ca1b54ddd4..41a979d891 100644 --- a/packages/wallet-sdk/package.json +++ b/packages/wallet-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@coinbase/wallet-sdk", - "version": "4.0.4", + "version": "4.1.0", "description": "Coinbase Wallet JavaScript SDK", "keywords": [ "coinbase", diff --git a/packages/wallet-sdk/src/version.ts b/packages/wallet-sdk/src/version.ts index 6624994e11..c2a0f8b068 100644 --- a/packages/wallet-sdk/src/version.ts +++ b/packages/wallet-sdk/src/version.ts @@ -1 +1 @@ -export const LIB_VERSION = '4.0.4'; +export const LIB_VERSION = '4.1.0'; From dd37c070d105f9863498b09762ff406487d4f139 Mon Sep 17 00:00:00 2001 From: cb-jake <95890768+cb-jake@users.noreply.github.com> Date: Wed, 25 Sep 2024 10:49:25 -0600 Subject: [PATCH 03/28] Update testapp to use sdk latest (#1408) * update testapp to use sdk latest * use pkgjson to get latest version * remove log --- examples/testapp/package.json | 2 +- examples/testapp/src/components/Layout.tsx | 4 +++- .../context/CBWSDKReactContextProvider.tsx | 12 ++++++----- yarn.lock | 20 +++++++++---------- 4 files changed, 20 insertions(+), 18 deletions(-) diff --git a/examples/testapp/package.json b/examples/testapp/package.json index 45db0030e7..9402be999c 100644 --- a/examples/testapp/package.json +++ b/examples/testapp/package.json @@ -15,7 +15,7 @@ "@coinbase/wallet-sdk": "workspace:*", "@coinbase/wallet-sdk-3.7.2": "npm:@coinbase/wallet-sdk@3.7.2", "@coinbase/wallet-sdk-3.9.3": "npm:@coinbase/wallet-sdk@3.9.3", - "@coinbase/wallet-sdk-4.0.4": "npm:@coinbase/wallet-sdk@latest", + "@coinbase/wallet-sdk-latest": "npm:@coinbase/wallet-sdk@latest", "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", "@metamask/eth-sig-util": "^7.0.0", diff --git a/examples/testapp/src/components/Layout.tsx b/examples/testapp/src/components/Layout.tsx index 7fbae65c73..5fe74e5e30 100644 --- a/examples/testapp/src/components/Layout.tsx +++ b/examples/testapp/src/components/Layout.tsx @@ -17,10 +17,12 @@ import { useBreakpointValue, useDisclosure, } from '@chakra-ui/react'; +import latestPkgJson from '@coinbase/wallet-sdk/package.json'; import { useMemo } from 'react'; import { options, scwUrls, sdkVersions, useCBWSDK } from '../context/CBWSDKReactContextProvider'; + type LayoutProps = { children: React.ReactNode; }; @@ -65,7 +67,7 @@ export function Layout({ children }: LayoutProps) { ))} - {(sdkVersion === 'HEAD' || sdkVersion === '4.0.4') && ( + {(sdkVersion === 'HEAD' || sdkVersion === latestPkgJson.version) && ( <> }> diff --git a/examples/testapp/src/context/CBWSDKReactContextProvider.tsx b/examples/testapp/src/context/CBWSDKReactContextProvider.tsx index 28ca39f5c1..74584a8aa5 100644 --- a/examples/testapp/src/context/CBWSDKReactContextProvider.tsx +++ b/examples/testapp/src/context/CBWSDKReactContextProvider.tsx @@ -1,7 +1,9 @@ import { CoinbaseWalletSDK as CoinbaseWalletSDKHEAD } from '@coinbase/wallet-sdk'; import { CoinbaseWalletSDK as CoinbaseWalletSDK372 } from '@coinbase/wallet-sdk-3.7.2'; import { CoinbaseWalletSDK as CoinbaseWalletSDK393 } from '@coinbase/wallet-sdk-3.9.3'; -import { CoinbaseWalletSDK as CoinbaseWalletSDK404 } from '@coinbase/wallet-sdk-4.0.4'; +import { CoinbaseWalletSDK as CoinbaseWalletSDKLatest } from '@coinbase/wallet-sdk-latest'; +import latestPkgJson from '@coinbase/wallet-sdk/package.json'; + import React, { useEffect, useMemo } from 'react'; type CBWSDKProviderProps = { @@ -11,7 +13,7 @@ type CBWSDKProviderProps = { const CBWSDKReactContext = React.createContext(null); const SELECTED_SDK_KEY = 'selected_sdk_version'; -export const sdkVersions = ['HEAD', '4.0.4', '3.9.3', '3.7.2'] as const; +export const sdkVersions = ['HEAD', latestPkgJson.version, '3.9.3', '3.7.2'] as const; export type SDKVersionType = (typeof sdkVersions)[number]; const SELECTED_SCW_URL_KEY = 'scw_url'; @@ -74,8 +76,8 @@ export function CBWSDKReactContextProvider({ children }: CBWSDKProviderProps) { useEffect(() => { let cbwsdk; let preference; - if (version === 'HEAD' || version === '4.0.4') { - const SDK = version === 'HEAD' ? CoinbaseWalletSDKHEAD : CoinbaseWalletSDK404; + if (version === 'HEAD' || version === latestPkgJson.version) { + const SDK = version === 'HEAD' ? CoinbaseWalletSDKHEAD : CoinbaseWalletSDKLatest; cbwsdk = new SDK({ appName: 'SDK Playground', appChainIds: [84532, 8452], @@ -101,7 +103,7 @@ export function CBWSDKReactContextProvider({ children }: CBWSDKProviderProps) { }, [version, option]); useEffect(() => { - if (version === 'HEAD' || version === '4.0.4') { + if (version === 'HEAD' || version === latestPkgJson.version) { if (scwUrl) window.setPopupUrl?.(scwUrl); } }, [version, scwUrl, sdk]); diff --git a/yarn.lock b/yarn.lock index 88ec90fd64..886b7a8dd1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2713,17 +2713,15 @@ __metadata: languageName: node linkType: hard -"@coinbase/wallet-sdk-4.0.4@npm:@coinbase/wallet-sdk@latest": - version: 4.0.4 - resolution: "@coinbase/wallet-sdk@npm:4.0.4" +"@coinbase/wallet-sdk-latest@npm:@coinbase/wallet-sdk@latest": + version: 4.1.0 + resolution: "@coinbase/wallet-sdk@npm:4.1.0" dependencies: - buffer: "npm:^6.0.3" - clsx: "npm:^1.2.1" - eventemitter3: "npm:^5.0.1" - keccak: "npm:^3.0.3" - preact: "npm:^10.16.0" - sha.js: "npm:^2.4.11" - checksum: 002d03d791683a15b465a285d7293a7994684f6f91d67c01b52ee9a07ba62f555a12d5c9471c964ccae0df048190f9c2e82929aeba9247e6d97ad1a9e9dd4132 + "@noble/hashes": ^1.4.0 + clsx: ^1.2.1 + eventemitter3: ^5.0.1 + preact: ^10.16.0 + checksum: 13ccdbf48bc43db5b9285ca4e6d13a81e1d0c7d13735b1695f9c33c4e3bb0b03683adfffc084344aed475832c3613d68e025f029fc8f2b6abe386596aeee39c9 languageName: node linkType: hard @@ -9940,7 +9938,7 @@ __metadata: "@coinbase/wallet-sdk": "workspace:*" "@coinbase/wallet-sdk-3.7.2": "npm:@coinbase/wallet-sdk@3.7.2" "@coinbase/wallet-sdk-3.9.3": "npm:@coinbase/wallet-sdk@3.9.3" - "@coinbase/wallet-sdk-4.0.4": "npm:@coinbase/wallet-sdk@latest" + "@coinbase/wallet-sdk-latest": "npm:@coinbase/wallet-sdk@latest" "@emotion/react": ^11.11.1 "@emotion/styled": ^11.11.0 "@metamask/eth-sig-util": ^7.0.0 From 019fb4b51eb2939858a8e3fe5e3861e9b7bb4843 Mon Sep 17 00:00:00 2001 From: cb-jake <95890768+cb-jake@users.noreply.github.com> Date: Thu, 26 Sep 2024 16:21:06 -0600 Subject: [PATCH 04/28] add support for any config parameter (#1402) * extend preferences object for any config * update the Preference type to support new config values * remove keysUrl as defined config * update doc blocks and keysurl * update docs * revert keysUrl change --- .../wallet-sdk/src/CoinbaseWalletProvider.ts | 4 +- .../wallet-sdk/src/core/provider/interface.ts | 53 +++++++++++++++++-- 2 files changed, 53 insertions(+), 4 deletions(-) diff --git a/packages/wallet-sdk/src/CoinbaseWalletProvider.ts b/packages/wallet-sdk/src/CoinbaseWalletProvider.ts index 40ce7bb6f3..0ac6dec891 100644 --- a/packages/wallet-sdk/src/CoinbaseWalletProvider.ts +++ b/packages/wallet-sdk/src/CoinbaseWalletProvider.ts @@ -30,7 +30,9 @@ export class CoinbaseWalletProvider extends ProviderEventEmitter implements Prov this.communicator = new Communicator(keysUrl, metadata); const signerType = loadSignerType(); - if (signerType) this.signer = this.initSigner(signerType); + if (signerType) { + this.signer = this.initSigner(signerType); + } } public async request(args: RequestArguments): Promise { diff --git a/packages/wallet-sdk/src/core/provider/interface.ts b/packages/wallet-sdk/src/core/provider/interface.ts index a92b7c2484..da25c10207 100644 --- a/packages/wallet-sdk/src/core/provider/interface.ts +++ b/packages/wallet-sdk/src/core/provider/interface.ts @@ -42,10 +42,57 @@ export interface AppMetadata { appChainIds: number[]; } -export interface Preference { - options: 'all' | 'smartWalletOnly' | 'eoaOnly'; +type PostOnboardingAction = 'none' | 'onramp' | 'magicspend'; + +type OnrampPrefillOptions = { + contractAddress?: string; + amount: string; + chainId: number; +}; + +export type Preference = { + /** + * @deprecated internal use only. + */ keysUrl?: string; -} + /** + * @param options + */ + options: 'all' | 'smartWalletOnly' | 'eoaOnly'; + /** + * @param postOnboardingAction + * @type {PostOnboardingAction} + * @description This option only applies to Coinbase Smart Wallet. Displays CTAs to the user based on the preference of the app. + * These CTAs are part of prebuilt UI components that are available to the Coinbase + * Smart Wallet. + * + * Possible values: + * - `none`: No action is recommended post-onboarding. (Default experience) + * - `onramp`: Recommends initiating the onramp flow, allowing users to prefill their account with an optional asset. + * - `magicspend`: Suggests linking the users retail Coinbase account for seamless transactions. + */ + postOnboardingAction?: PostOnboardingAction; + /** + * @param onrampPrefillOptions + * @type {OnrampPrefillOptions} + * @description This option only applies to Coinbase Smart Wallet. Requires `postOnboardingAction` to be set to `onramp`. When not configured, + * The onramp screen defaults to an asset selector with 0 as the initial amount. + * + * - Prefills the onramp flow with the specified asset, chain, and suggested amount, allowing users to prefill their account. + * - Ensure the asset and chain are supported by the onramp provider (e.g., Coinbase Pay - CBPay). + * + * See https://docs.cdp.coinbase.com/onramp/docs/layer2#available-assets for a list of supported assets and networks. + */ + onrampPrefillOptions?: OnrampPrefillOptions; + /** + * @param attributionDataSuffix + * @type {Hex} + * @note Smart Wallet only + * @description This option only applies to Coinbase Smart Wallet. Data suffix to be appended to the initCode or executeBatch calldata + * Coinbase Smart Wallet expects a 4 byte hex string. If the suffix is not a 4 byte hex string, the Smart Wallet will not apply the data suffix. + */ + attributionDataSuffix?: string; +} & Record; export interface ConstructorOptions { metadata: AppMetadata; From 2342396202c1280e79d2baa48f7307b54d9a902b Mon Sep 17 00:00:00 2001 From: cb-jake <95890768+cb-jake@users.noreply.github.com> Date: Fri, 27 Sep 2024 09:12:07 -0600 Subject: [PATCH 05/28] create new SDK utils (#1405) --- packages/wallet-sdk/src/CoinbaseWalletSDK.ts | 6 +++ .../src/createCoinbaseWalletProvider.test.ts | 18 ++++++++ .../src/createCoinbaseWalletProvider.ts | 17 ++++++++ .../src/createCoinbaseWalletSDK.test.ts | 23 +++++++++++ .../wallet-sdk/src/createCoinbaseWalletSDK.ts | 41 +++++++++++++++++++ packages/wallet-sdk/src/index.ts | 1 + 6 files changed, 106 insertions(+) create mode 100644 packages/wallet-sdk/src/createCoinbaseWalletProvider.test.ts create mode 100644 packages/wallet-sdk/src/createCoinbaseWalletProvider.ts create mode 100644 packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts create mode 100644 packages/wallet-sdk/src/createCoinbaseWalletSDK.ts diff --git a/packages/wallet-sdk/src/CoinbaseWalletSDK.ts b/packages/wallet-sdk/src/CoinbaseWalletSDK.ts index 9cb4514360..9f4b125e97 100644 --- a/packages/wallet-sdk/src/CoinbaseWalletSDK.ts +++ b/packages/wallet-sdk/src/CoinbaseWalletSDK.ts @@ -11,6 +11,12 @@ import { getCoinbaseInjectedProvider } from ':util/provider'; // for backwards compatibility type CoinbaseWalletSDKOptions = Partial; +/** + * CoinbaseWalletSDK + * + * @deprecated CoinbaseWalletSDK is deprecated and will likely be removed in a future major version release. + * It's recommended to use `createCoinbaseWalletSDK` instead. + */ export class CoinbaseWalletSDK { private metadata: AppMetadata; diff --git a/packages/wallet-sdk/src/createCoinbaseWalletProvider.test.ts b/packages/wallet-sdk/src/createCoinbaseWalletProvider.test.ts new file mode 100644 index 0000000000..01998f2226 --- /dev/null +++ b/packages/wallet-sdk/src/createCoinbaseWalletProvider.test.ts @@ -0,0 +1,18 @@ +import { CoinbaseWalletProvider } from './CoinbaseWalletProvider'; +import { createCoinbaseWalletProvider } from './createCoinbaseWalletProvider'; +import { ConstructorOptions } from ':core/provider/interface'; + +describe('createCoinbaseWalletProvider', () => { + it('should return a provider', () => { + const options: ConstructorOptions = { + metadata: { + appName: 'Dapp', + appLogoUrl: 'https://example.com/favicon.ico', + appChainIds: [], + }, + preference: { options: 'all' }, + }; + const result = createCoinbaseWalletProvider(options); + expect(result).toBeInstanceOf(CoinbaseWalletProvider); + }); +}); diff --git a/packages/wallet-sdk/src/createCoinbaseWalletProvider.ts b/packages/wallet-sdk/src/createCoinbaseWalletProvider.ts new file mode 100644 index 0000000000..d6afb1042e --- /dev/null +++ b/packages/wallet-sdk/src/createCoinbaseWalletProvider.ts @@ -0,0 +1,17 @@ +import { CoinbaseWalletProvider } from './CoinbaseWalletProvider'; +import { AppMetadata, Preference } from ':core/provider/interface'; +import { ConstructorOptions } from ':core/provider/interface'; +import { getCoinbaseInjectedProvider } from ':util/provider'; + +export type CreateProviderOptions = { + metadata: AppMetadata; + preference: Preference; +}; + +export function createCoinbaseWalletProvider(options: CreateProviderOptions) { + const params: ConstructorOptions = { + metadata: options.metadata, + preference: options.preference, + }; + return getCoinbaseInjectedProvider(params) ?? new CoinbaseWalletProvider(params); +} diff --git a/packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts b/packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts new file mode 100644 index 0000000000..41b818d315 --- /dev/null +++ b/packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts @@ -0,0 +1,23 @@ +import { createCoinbaseWalletSDK, CreateCoinbaseWalletSDKOptions } from './createCoinbaseWalletSDK'; + +const options: CreateCoinbaseWalletSDKOptions = { + appName: 'Dapp', + appLogoUrl: 'https://example.com/favicon.ico', + appChainIds: [], + preference: { options: 'all' }, +}; + +describe('createCoinbaseWalletSDK', () => { + it('should return an object with a getProvider method', () => { + const sdk = createCoinbaseWalletSDK(options); + expect(sdk).toHaveProperty('getProvider'); + expect(typeof sdk.getProvider).toBe('function'); + }); + + it('should return the same provider instance on subsequent calls to getProvider', () => { + const sdk = createCoinbaseWalletSDK(options); + const provider1 = sdk.getProvider(); + const provider2 = sdk.getProvider(); + expect(provider1).toBe(provider2); + }); +}); diff --git a/packages/wallet-sdk/src/createCoinbaseWalletSDK.ts b/packages/wallet-sdk/src/createCoinbaseWalletSDK.ts new file mode 100644 index 0000000000..6ec937d7a6 --- /dev/null +++ b/packages/wallet-sdk/src/createCoinbaseWalletSDK.ts @@ -0,0 +1,41 @@ +import { createCoinbaseWalletProvider } from './createCoinbaseWalletProvider'; +import { LIB_VERSION } from './version'; +import { + AppMetadata, + ConstructorOptions, + Preference, + ProviderInterface, +} from ':core/provider/interface'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; + +export type CreateCoinbaseWalletSDKOptions = Partial & { + preference?: Preference; +}; + +const DEFAULT_PREFERENCE: Preference = { + options: 'all', +}; + +export function createCoinbaseWalletSDK(params: CreateCoinbaseWalletSDKOptions) { + const versionStorage = new ScopedLocalStorage('CBWSDK'); + versionStorage.setItem('VERSION', LIB_VERSION); + + const options: ConstructorOptions = { + metadata: { + appName: params.appName || 'Dapp', + appLogoUrl: params.appLogoUrl || '', + appChainIds: params.appChainIds || [], + }, + preference: Object.assign(DEFAULT_PREFERENCE, params.preference ?? {}), + }; + let provider: ProviderInterface | null = null; + + return { + getProvider: () => { + if (!provider) { + provider = createCoinbaseWalletProvider(options); + } + return provider; + }, + }; +} diff --git a/packages/wallet-sdk/src/index.ts b/packages/wallet-sdk/src/index.ts index 1298db0db9..803d82da28 100644 --- a/packages/wallet-sdk/src/index.ts +++ b/packages/wallet-sdk/src/index.ts @@ -5,3 +5,4 @@ export default CoinbaseWalletSDK; export type { CoinbaseWalletProvider } from './CoinbaseWalletProvider'; export { CoinbaseWalletSDK } from './CoinbaseWalletSDK'; export type { AppMetadata, Preference, ProviderInterface } from './core/provider/interface'; +export { createCoinbaseWalletSDK } from './createCoinbaseWalletSDK'; From 27acaf709a0061d8e14b2c804271231e29edf31d Mon Sep 17 00:00:00 2001 From: cb-jake <95890768+cb-jake@users.noreply.github.com> Date: Fri, 27 Sep 2024 11:45:32 -0600 Subject: [PATCH 06/28] Add testapp page for testing new config values (#1404) * wallet-sdk lint issues * update testapp to have new config page for testing --- .../MethodsSection/MethodsSection.tsx | 42 ++++ .../components/RpcMethods/RpcMethodCard.tsx | 2 +- .../src/components/SDKConfig/SDKConfig.tsx | 238 ++++++++++++++++++ examples/testapp/src/pages/config.tsx | 17 ++ examples/testapp/src/pages/index.tsx | 90 +++---- packages/wallet-sdk/.eslintrc.js | 86 +++---- packages/wallet-sdk/package.json | 2 +- .../src/CoinbaseWalletProvider.test.ts | 4 +- .../src/createCoinbaseWalletProvider.ts | 3 +- .../wallet-sdk/src/sign/scw/SCWSigner.test.ts | 4 +- .../sign/walletlink/WalletLinkSigner.test.ts | 3 +- 11 files changed, 377 insertions(+), 114 deletions(-) create mode 100644 examples/testapp/src/components/MethodsSection/MethodsSection.tsx create mode 100644 examples/testapp/src/components/SDKConfig/SDKConfig.tsx create mode 100644 examples/testapp/src/pages/config.tsx diff --git a/examples/testapp/src/components/MethodsSection/MethodsSection.tsx b/examples/testapp/src/components/MethodsSection/MethodsSection.tsx new file mode 100644 index 0000000000..fc0350dd4b --- /dev/null +++ b/examples/testapp/src/components/MethodsSection/MethodsSection.tsx @@ -0,0 +1,42 @@ +import { Box, Grid, GridItem, Heading } from "@chakra-ui/react"; +import React from "react"; + +import { RpcRequestInput } from "../RpcMethods/method/RpcRequestInput"; +import { RpcMethodCard } from "../RpcMethods/RpcMethodCard"; +import { ShortcutType } from "../RpcMethods/shortcut/ShortcutType"; + +export function MethodsSection({ + title, + methods, + shortcutsMap, +}: { + title: string; + methods: RpcRequestInput[]; + shortcutsMap?: Record; +}) { + return ( + + {title} + + {methods.map((rpc) => ( + + + + ))} + + + ); +} diff --git a/examples/testapp/src/components/RpcMethods/RpcMethodCard.tsx b/examples/testapp/src/components/RpcMethods/RpcMethodCard.tsx index cbb3d00398..4eddbb50d1 100644 --- a/examples/testapp/src/components/RpcMethods/RpcMethodCard.tsx +++ b/examples/testapp/src/components/RpcMethods/RpcMethodCard.tsx @@ -95,7 +95,7 @@ export function RpcMethodCard({ format, method, params, shortcuts }) { params: values, }); setResponse(response); - verify(response, data); + await verify(response, data); } catch (err) { const { code, message, data } = err; setError({ code, message, data }); diff --git a/examples/testapp/src/components/SDKConfig/SDKConfig.tsx b/examples/testapp/src/components/SDKConfig/SDKConfig.tsx new file mode 100644 index 0000000000..3cd3ac1380 --- /dev/null +++ b/examples/testapp/src/components/SDKConfig/SDKConfig.tsx @@ -0,0 +1,238 @@ +import { + Alert, + AlertIcon, + AlertTitle, + Box, + Button, + Card, + CardBody, + CardHeader, + Code, + Flex, + FormControl, + FormLabel, + FormHelperText, + Heading, + Input, + Menu, + MenuButton, + MenuItem, + MenuList, + Text, + VStack, + Divider, +} from "@chakra-ui/react"; +import React, { useCallback, useMemo, useState } from "react"; +import { createCoinbaseWalletSDK } from "@coinbase/wallet-sdk"; +import { useCBWSDK } from "../../context/CBWSDKReactContextProvider"; +import { + Preference, +} from "@coinbase/wallet-sdk/dist/core/provider/interface"; +import { CheckIcon, ChevronDownIcon } from "@chakra-ui/icons"; +import { keccak256, slice, toHex } from "viem"; +import { CreateCoinbaseWalletSDKOptions } from "@coinbase/wallet-sdk/dist/createCoinbaseWalletSDK"; + +type PostOnboardingAction = "none" | "onramp" | "magicspend"; + +const postOnboardingActions = ["none", "onramp", "magicspend"] as const; + +type OnrampPrefillOptions = { + contractAddress?: string; + amount: string; + chainId: number; +}; + +type Config = { + postOnboardingAction?: PostOnboardingAction; + onrampPrefillOptions?: OnrampPrefillOptions; + attributionDataSuffix?: string; +}; + +export function SDKConfig() { + const { option, scwUrl } = useCBWSDK(); + const [config, setConfig] = React.useState({}); + + const options: CreateCoinbaseWalletSDKOptions = useMemo(() => { + const preference: Preference = { + options: option, + keysUrl: scwUrl, + ...config, + }; + return { + appName: "SDK Playground", + appLogoUrl: null, + appChainIds: [84532, 8452], + preference, + }; + }, [config, option, scwUrl]); + + const startOnboarding = useCallback(async () => { + const sdk = createCoinbaseWalletSDK(options); + const provider = sdk.getProvider(); + await provider.request({ method: "eth_requestAccounts" }); + }, [options]); + + const handlePostOnboardingAction = useCallback( + (action: PostOnboardingAction) => { + const config_ = { ...config, postOnboardingAction: action }; + if (action !== "onramp") { + delete config_.onrampPrefillOptions; + } + setConfig(config_); + }, + [config] + ); + + const handleOnrampPrefill = useCallback( + (key: "contractAddress" | "amount" | "chainId") => (e) => { + const value = e.target.value; + setConfig((prev) => ({ + ...prev, + onrampPrefillOptions: { + ...prev.onrampPrefillOptions, + [key]: value, + }, + })); + }, + [] + ); + + const handleSetDataSuffix = useCallback((e) => { + const value = e.target.value; + setConfig((prev) => ({ + ...prev, + attributionDataSuffix: value, + })); + }, []); + + const [dataSuffix, setDataSuffix] = useState("Coinbase Wallet"); + const fourByteHex = useMemo( + () => slice(keccak256(toHex(dataSuffix)), 0, 4), + [dataSuffix] + ); + + return ( + + + + + + This section ONLY works for testing onboarding config + + + + + + Please signout of your Smart Wallet and reset the playground before + testing + + + + + + + Post Onboarding Action + postOnboardingAction + + + } + > + {config?.postOnboardingAction} + + + {postOnboardingActions.map((action) => ( + + ) : null + } + onClick={() => handlePostOnboardingAction(action)} + > + {action} + + ))} + + + + {config.postOnboardingAction === "onramp" && ( + <> + + + + Onramp Prefill Options + + Optional: Only works when postOnboardingAction is set to + onramp. Amount and chainId are required. If contract address + is omitted, onramp assumes native asset for that chain + + onrampPrefillOptions + + + + + + handleOnrampPrefill("chainId")({ + target: { value: parseInt(e.target.value, 10) }, + }) + } + /> + + + + )} + + + + Attribution Data Suffix + + First 4 bytes of a unique string to identify your onchain activity + + + + attributionDataSuffix + + setDataSuffix(e.target.value)} + value={dataSuffix} + /> + + Convert any string into a 4 byte data suffix + + + + {fourByteHex} + + + + + + + + + + ); +} diff --git a/examples/testapp/src/pages/config.tsx b/examples/testapp/src/pages/config.tsx new file mode 100644 index 0000000000..535cc041f0 --- /dev/null +++ b/examples/testapp/src/pages/config.tsx @@ -0,0 +1,17 @@ +import { Container } from "@chakra-ui/react"; +import { WIDTH_2XL } from "../components/Layout"; +import dynamic from "next/dynamic"; + +const SDKConfig = dynamic( + () => + import("../components/SDKConfig/SdkConfig").then((mod) => mod.SDKConfig), + { ssr: false } +); + +export default function Config() { + return ( + + + + ); +} diff --git a/examples/testapp/src/pages/index.tsx b/examples/testapp/src/pages/index.tsx index 4f71761ac6..5f045455c1 100644 --- a/examples/testapp/src/pages/index.tsx +++ b/examples/testapp/src/pages/index.tsx @@ -1,27 +1,27 @@ -import { Box, Container, Grid, GridItem, Heading } from '@chakra-ui/react'; -import React, { useEffect } from 'react'; +import { Box, Container, Grid, Heading } from "@chakra-ui/react"; +import React, { useEffect } from "react"; -import { EventListenersCard } from '../components/EventListeners/EventListenersCard'; -import { WIDTH_2XL } from '../components/Layout'; -import { connectionMethods } from '../components/RpcMethods/method/connectionMethods'; -import { multiChainMethods } from '../components/RpcMethods/method/multiChainMethods'; -import { readonlyJsonRpcMethods } from '../components/RpcMethods/method/readonlyJsonRpcMethods'; -import { RpcRequestInput } from '../components/RpcMethods/method/RpcRequestInput'; -import { sendMethods } from '../components/RpcMethods/method/sendMethods'; -import { signMessageMethods } from '../components/RpcMethods/method/signMessageMethods'; -import { walletTxMethods } from '../components/RpcMethods/method/walletTxMethods'; -import { RpcMethodCard } from '../components/RpcMethods/RpcMethodCard'; -import { multiChainShortcutsMap } from '../components/RpcMethods/shortcut/multipleChainShortcuts'; -import { readonlyJsonRpcShortcutsMap } from '../components/RpcMethods/shortcut/readonlyJsonRpcShortcuts'; -import { sendShortcutsMap } from '../components/RpcMethods/shortcut/sendShortcuts'; -import { ShortcutType } from '../components/RpcMethods/shortcut/ShortcutType'; -import { signMessageShortcutsMap } from '../components/RpcMethods/shortcut/signMessageShortcuts'; -import { walletTxShortcutsMap } from '../components/RpcMethods/shortcut/walletTxShortcuts'; -import { useCBWSDK } from '../context/CBWSDKReactContextProvider'; +import { EventListenersCard } from "../components/EventListeners/EventListenersCard"; +import { WIDTH_2XL } from "../components/Layout"; +import { connectionMethods } from "../components/RpcMethods/method/connectionMethods"; +import { multiChainMethods } from "../components/RpcMethods/method/multiChainMethods"; +import { readonlyJsonRpcMethods } from "../components/RpcMethods/method/readonlyJsonRpcMethods"; +import { sendMethods } from "../components/RpcMethods/method/sendMethods"; +import { signMessageMethods } from "../components/RpcMethods/method/signMessageMethods"; +import { walletTxMethods } from "../components/RpcMethods/method/walletTxMethods"; +import { multiChainShortcutsMap } from "../components/RpcMethods/shortcut/multipleChainShortcuts"; +import { readonlyJsonRpcShortcutsMap } from "../components/RpcMethods/shortcut/readonlyJsonRpcShortcuts"; +import { sendShortcutsMap } from "../components/RpcMethods/shortcut/sendShortcuts"; +import { signMessageShortcutsMap } from "../components/RpcMethods/shortcut/signMessageShortcuts"; +import { walletTxShortcutsMap } from "../components/RpcMethods/shortcut/walletTxShortcuts"; +import { useCBWSDK } from "../context/CBWSDKReactContextProvider"; +import { MethodsSection } from "../components/MethodsSection/MethodsSection"; export default function Home() { const { provider } = useCBWSDK(); - const [connected, setConnected] = React.useState(Boolean(provider?.connected)); + const [connected, setConnected] = React.useState( + Boolean(provider?.connected) + ); const [chainId, setChainId] = React.useState(undefined); // This is for Extension compatibility, Extension with SDK3.9 does not emit connect event // correctly, so we manually check if the extension is connected, and set the connected state @@ -32,17 +32,17 @@ export default function Home() { }, []); useEffect(() => { - provider?.on('connect', () => { + provider?.on("connect", () => { setConnected(true); }); - provider?.on('chainChanged', (newChainId) => { + provider?.on("chainChanged", (newChainId) => { setChainId(newChainId); }); }, [provider]); useEffect(() => { if (connected) { - provider?.request({ method: 'eth_chainId' }).then((chainId) => { + provider?.request({ method: "eth_chainId" }).then((chainId) => { setChainId(parseInt(chainId, 16)); }); } @@ -52,7 +52,7 @@ export default function Home() { Event Listeners - + @@ -69,7 +69,11 @@ export default function Home() { methods={signMessageMethods} shortcutsMap={signMessageShortcutsMap(chainId)} /> - + ); } - -function MethodsSection({ - title, - methods, - shortcutsMap, -}: { - title: string; - methods: RpcRequestInput[]; - shortcutsMap?: Record; -}) { - return ( - - {title} - - {methods.map((rpc) => ( - - - - ))} - - - ); -} diff --git a/packages/wallet-sdk/.eslintrc.js b/packages/wallet-sdk/.eslintrc.js index ad807b0818..cdf7a987a2 100644 --- a/packages/wallet-sdk/.eslintrc.js +++ b/packages/wallet-sdk/.eslintrc.js @@ -1,9 +1,14 @@ module.exports = { root: true, - extends: ['preact'], + extends: [ + 'preact', + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', + ], settings: { react: { - pragma: "h", + pragma: 'h', }, }, env: { @@ -12,73 +17,64 @@ module.exports = { node: true, commonjs: true, }, - plugins: [ - "@typescript-eslint", - "simple-import-sort", - "unused-imports", - "prettier", - ], - extends: [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:prettier/recommended", - ], - parser: "@typescript-eslint/parser", + plugins: ['@typescript-eslint', 'simple-import-sort', 'unused-imports', 'prettier'], + parser: '@typescript-eslint/parser', parserOptions: { - ecmaVersion: "latest", - sourceType: "module", + ecmaVersion: 'latest', + sourceType: 'module', }, rules: { - "@typescript-eslint/no-unused-vars": "off", - "simple-import-sort/imports": [ - "error", + '@typescript-eslint/no-unused-vars': 'off', + 'simple-import-sort/imports': [ + 'error', { - groups: [["^\\u0000"], ["^@?\\w"], ["^src(/.*|$)"]], + groups: [['^\\u0000'], ['^@?\\w'], ['^src(/.*|$)']], }, ], - "simple-import-sort/exports": "error", - "no-unused-vars": "off", - "unused-imports/no-unused-imports": "error", - "unused-imports/no-unused-vars": [ - "error", + 'simple-import-sort/exports': 'error', + 'no-unused-vars': 'off', + 'unused-imports/no-unused-imports': 'error', + 'unused-imports/no-unused-vars': [ + 'error', { - vars: "all", - varsIgnorePattern: "^_", - args: "after-used", - argsIgnorePattern: "^_", + vars: 'all', + varsIgnorePattern: '^_', + args: 'after-used', + argsIgnorePattern: '^_', }, ], - "no-console": [ - "error", + 'no-console': [ + 'error', { - allow: ["warn", "error", "info"], + allow: ['warn', 'error', 'info'], }, ], - "prettier/prettier": [ - "error", + 'prettier/prettier': [ + 'error', { - arrowParens: "always", + arrowParens: 'always', bracketSpacing: true, - endOfLine: "lf", - htmlWhitespaceSensitivity: "css", + endOfLine: 'lf', + htmlWhitespaceSensitivity: 'css', printWidth: 100, - quoteProps: "as-needed", + quoteProps: 'as-needed', semi: true, singleQuote: true, tabWidth: 2, - trailingComma: "es5", + trailingComma: 'es5', useTabs: false, }, ], // TODO: change this back to error - "@typescript-eslint/no-explicit-any": "warn", + '@typescript-eslint/no-explicit-any': 'warn', + 'no-useless-constructor': 'off', }, overrides: [ { - files: ["**/*.test.*"], + files: ['**/*.test.*'], rules: { - "@typescript-eslint/no-explicit-any": "off" - } - } - ] + '@typescript-eslint/no-explicit-any': 'off', + }, + }, + ], }; diff --git a/packages/wallet-sdk/package.json b/packages/wallet-sdk/package.json index 41a979d891..736245164a 100644 --- a/packages/wallet-sdk/package.json +++ b/packages/wallet-sdk/package.json @@ -23,7 +23,7 @@ "test:coverage": "yarn test:unit && open coverage/lcov-report/index.html", "prebuild": "rm -rf ./dist && node -p \"'export const LIB_VERSION = \\'' + require('./package.json').version + '\\';'\" > src/version.ts", "build": "node compile-assets.js && tsc -p ./tsconfig.build.json && tsc-alias && cp -a src/vendor-js dist", - "dev": "node compile-assets.js && tsc --watch & nodemon --watch dist --delay 1 --exec tsc-alias", + "dev": "yarn build && tsc --watch & nodemon --watch dist --delay 1 --exec tsc-alias", "typecheck": "tsc --noEmit", "lint": "eslint . --ext .ts,.tsx --fix" }, diff --git a/packages/wallet-sdk/src/CoinbaseWalletProvider.test.ts b/packages/wallet-sdk/src/CoinbaseWalletProvider.test.ts index e9e03f079a..e75097ac27 100644 --- a/packages/wallet-sdk/src/CoinbaseWalletProvider.test.ts +++ b/packages/wallet-sdk/src/CoinbaseWalletProvider.test.ts @@ -72,8 +72,8 @@ describe('Event handling', () => { describe('Request Handling', () => { it('returns default chain id even without signer set up', async () => { - expect(provider.request({ method: 'eth_chainId' })).resolves.toBe('0x1'); - expect(provider.request({ method: 'net_version' })).resolves.toBe(1); + await expect(provider.request({ method: 'eth_chainId' })).resolves.toBe('0x1'); + await expect(provider.request({ method: 'net_version' })).resolves.toBe(1); }); it('throws error when handling invalid request', async () => { diff --git a/packages/wallet-sdk/src/createCoinbaseWalletProvider.ts b/packages/wallet-sdk/src/createCoinbaseWalletProvider.ts index d6afb1042e..61d7cd7bf0 100644 --- a/packages/wallet-sdk/src/createCoinbaseWalletProvider.ts +++ b/packages/wallet-sdk/src/createCoinbaseWalletProvider.ts @@ -1,6 +1,5 @@ import { CoinbaseWalletProvider } from './CoinbaseWalletProvider'; -import { AppMetadata, Preference } from ':core/provider/interface'; -import { ConstructorOptions } from ':core/provider/interface'; +import { AppMetadata, ConstructorOptions, Preference } from ':core/provider/interface'; import { getCoinbaseInjectedProvider } from ':util/provider'; export type CreateProviderOptions = { diff --git a/packages/wallet-sdk/src/sign/scw/SCWSigner.test.ts b/packages/wallet-sdk/src/sign/scw/SCWSigner.test.ts index ff0ff352a1..00a0baa0e2 100644 --- a/packages/wallet-sdk/src/sign/scw/SCWSigner.test.ts +++ b/packages/wallet-sdk/src/sign/scw/SCWSigner.test.ts @@ -110,7 +110,9 @@ describe('SCWSigner', () => { expect(storageStoreSpy).toHaveBeenCalledWith('walletCapabilities', mockCapabilities); expect(storageStoreSpy).toHaveBeenCalledWith('accounts', ['0xAddress']); - expect(signer.request({ method: 'eth_requestAccounts' })).resolves.toEqual(['0xAddress']); + await expect(signer.request({ method: 'eth_requestAccounts' })).resolves.toEqual([ + '0xAddress', + ]); expect(mockCallback).toHaveBeenCalledWith('accountsChanged', ['0xAddress']); expect(mockCallback).toHaveBeenCalledWith('connect', { chainId: '0x1' }); }); diff --git a/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.test.ts b/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.test.ts index 3bd9452cba..04e8b3441a 100644 --- a/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.test.ts +++ b/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.test.ts @@ -217,6 +217,7 @@ describe('LegacyProvider', () => { }); }); + // eslint-disable-next-line jest/no-disabled-tests test.skip('eth_signTypedData_v1', async () => { const hashSpy = jest.spyOn(eip712, 'hashForSignTypedDataLegacy'); const response = await provider?.request({ @@ -414,7 +415,7 @@ describe('LegacyProvider', () => { }, ], }); - expect(response).rejects.toThrow( + await expect(response).rejects.toThrow( standardErrors.rpc.invalidParams('please pass in at least 1 rpcUrl') ); }); From ea73b467b4ce27e30a6e2fca3964ab5d20a819b2 Mon Sep 17 00:00:00 2001 From: cb-jake <95890768+cb-jake@users.noreply.github.com> Date: Fri, 27 Sep 2024 14:19:04 -0600 Subject: [PATCH 07/28] Pass preferences with popuploaded event (#1412) * pass preferences with popuploaded event * fix dynamic import --- examples/testapp/src/pages/config.tsx | 2 +- .../wallet-sdk/src/CoinbaseWalletProvider.ts | 6 +++++- .../src/core/communicator/Communicator.test.ts | 13 +++++++++++-- .../src/core/communicator/Communicator.ts | 18 +++++++++++++++--- .../wallet-sdk/src/sign/scw/SCWSigner.test.ts | 7 ++++++- packages/wallet-sdk/src/sign/util.test.ts | 6 +++++- 6 files changed, 43 insertions(+), 9 deletions(-) diff --git a/examples/testapp/src/pages/config.tsx b/examples/testapp/src/pages/config.tsx index 535cc041f0..0e89152f45 100644 --- a/examples/testapp/src/pages/config.tsx +++ b/examples/testapp/src/pages/config.tsx @@ -4,7 +4,7 @@ import dynamic from "next/dynamic"; const SDKConfig = dynamic( () => - import("../components/SDKConfig/SdkConfig").then((mod) => mod.SDKConfig), + import("../components/SDKConfig/SDKConfig").then((mod) => mod.SDKConfig), { ssr: false } ); diff --git a/packages/wallet-sdk/src/CoinbaseWalletProvider.ts b/packages/wallet-sdk/src/CoinbaseWalletProvider.ts index 0ac6dec891..a21085bdaa 100644 --- a/packages/wallet-sdk/src/CoinbaseWalletProvider.ts +++ b/packages/wallet-sdk/src/CoinbaseWalletProvider.ts @@ -27,7 +27,11 @@ export class CoinbaseWalletProvider extends ProviderEventEmitter implements Prov super(); this.metadata = metadata; this.preference = preference; - this.communicator = new Communicator(keysUrl, metadata); + this.communicator = new Communicator({ + url: keysUrl, + metadata, + preference, + }); const signerType = loadSignerType(); if (signerType) { diff --git a/packages/wallet-sdk/src/core/communicator/Communicator.test.ts b/packages/wallet-sdk/src/core/communicator/Communicator.test.ts index de0b26e3d4..3616a5e570 100644 --- a/packages/wallet-sdk/src/core/communicator/Communicator.test.ts +++ b/packages/wallet-sdk/src/core/communicator/Communicator.test.ts @@ -1,4 +1,4 @@ -import { AppMetadata } from 'src/index'; +import { AppMetadata, Preference } from 'src/index'; import { LIB_VERSION } from '../../version'; import { Message, MessageID } from '../message'; @@ -49,6 +49,8 @@ const appMetadata: AppMetadata = { appChainIds: [1], }; +const preference: Preference = { keysUrl: CB_KEYS_URL, options: 'all' }; + describe('Communicator', () => { let urlOrigin: string; let communicator: Communicator; @@ -61,7 +63,11 @@ describe('Communicator', () => { jest.clearAllMocks(); // url defaults to CB_KEYS_URL - communicator = new Communicator(CB_KEYS_URL, appMetadata); + communicator = new Communicator({ + url: CB_KEYS_URL, + metadata: appMetadata, + preference, + }); urlOrigin = new URL(CB_KEYS_URL).origin; mockPopup = { @@ -109,6 +115,7 @@ describe('Communicator', () => { data: { version: LIB_VERSION, metadata: appMetadata, + preference, }, }, urlOrigin @@ -135,6 +142,7 @@ describe('Communicator', () => { data: { version: LIB_VERSION, metadata: appMetadata, + preference, }, }, urlOrigin @@ -156,6 +164,7 @@ describe('Communicator', () => { data: { version: LIB_VERSION, metadata: appMetadata, + preference, }, }, urlOrigin diff --git a/packages/wallet-sdk/src/core/communicator/Communicator.ts b/packages/wallet-sdk/src/core/communicator/Communicator.ts index ac3c693527..88908297f1 100644 --- a/packages/wallet-sdk/src/core/communicator/Communicator.ts +++ b/packages/wallet-sdk/src/core/communicator/Communicator.ts @@ -2,9 +2,15 @@ import { LIB_VERSION } from '../../version'; import { ConfigMessage, Message, MessageID } from '../message'; import { CB_KEYS_URL } from ':core/constants'; import { standardErrors } from ':core/error'; -import { AppMetadata } from ':core/provider/interface'; +import { AppMetadata, Preference } from ':core/provider/interface'; import { closePopup, openPopup } from ':util/web'; +export type CommunicatorOptions = { + url?: string; + metadata: AppMetadata; + preference: Preference; +}; + /** * Communicates with a popup window for Coinbase keys.coinbase.com (or another url) * to send and receive messages. @@ -16,13 +22,15 @@ import { closePopup, openPopup } from ':util/web'; */ export class Communicator { private readonly metadata: AppMetadata; + private readonly preference: Preference; private readonly url: URL; private popup: Window | null = null; private listeners = new Map<(_: MessageEvent) => void, { reject: (_: Error) => void }>(); - constructor(url: string = CB_KEYS_URL, metadata: AppMetadata) { + constructor({ url = CB_KEYS_URL, metadata, preference }: CommunicatorOptions) { this.url = new URL(url); this.metadata = metadata; + this.preference = preference; } /** @@ -100,7 +108,11 @@ export class Communicator { .then((message) => { this.postMessage({ requestId: message.id, - data: { version: LIB_VERSION, metadata: this.metadata }, + data: { + version: LIB_VERSION, + metadata: this.metadata, + preference: this.preference, + }, }); }) .then(() => { diff --git a/packages/wallet-sdk/src/sign/scw/SCWSigner.test.ts b/packages/wallet-sdk/src/sign/scw/SCWSigner.test.ts index 00a0baa0e2..0b9425ae7f 100644 --- a/packages/wallet-sdk/src/sign/scw/SCWSigner.test.ts +++ b/packages/wallet-sdk/src/sign/scw/SCWSigner.test.ts @@ -64,7 +64,12 @@ describe('SCWSigner', () => { appChainIds: [1], }; - mockCommunicator = new Communicator(CB_KEYS_URL, mockMetadata) as jest.Mocked; + mockCommunicator = new Communicator({ + url: CB_KEYS_URL, + metadata: mockMetadata, + preference: { keysUrl: CB_KEYS_URL, options: 'all' }, + }) as jest.Mocked; + mockCommunicator.waitForPopupLoaded.mockResolvedValue({} as Window); mockCommunicator.postRequestAndWaitForResponse.mockResolvedValue(mockSuccessResponse); diff --git a/packages/wallet-sdk/src/sign/util.test.ts b/packages/wallet-sdk/src/sign/util.test.ts index 9be35b4b00..81b219ced2 100644 --- a/packages/wallet-sdk/src/sign/util.test.ts +++ b/packages/wallet-sdk/src/sign/util.test.ts @@ -42,7 +42,11 @@ describe('util', () => { const preference: Preference = { options: 'all' }; it('should complete signerType selection correctly', async () => { - const communicator = new Communicator(CB_KEYS_URL, metadata); + const communicator = new Communicator({ + url: CB_KEYS_URL, + metadata, + preference: { keysUrl: CB_KEYS_URL, options: 'all' }, + }); communicator.postMessage = jest.fn(); communicator.onMessage = jest.fn().mockResolvedValue({ data: 'scw', From 107bc87248bf1ab06289a3626b5950171417c620 Mon Sep 17 00:00:00 2001 From: Nate Date: Fri, 27 Sep 2024 14:05:56 -0700 Subject: [PATCH 08/28] Fix chainChanged event emitting for walletlink connection (#1411) * fix chainChanged event emitting for walletlink connection * ts --- packages/wallet-sdk/src/CoinbaseWalletProvider.ts | 1 + packages/wallet-sdk/src/sign/util.test.ts | 1 + packages/wallet-sdk/src/sign/util.ts | 9 ++++++--- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/wallet-sdk/src/CoinbaseWalletProvider.ts b/packages/wallet-sdk/src/CoinbaseWalletProvider.ts index a21085bdaa..355f7ccf98 100644 --- a/packages/wallet-sdk/src/CoinbaseWalletProvider.ts +++ b/packages/wallet-sdk/src/CoinbaseWalletProvider.ts @@ -96,6 +96,7 @@ export class CoinbaseWalletProvider extends ProviderEventEmitter implements Prov preference: this.preference, metadata: this.metadata, handshakeRequest, + callback: this.emit.bind(this), }); } diff --git a/packages/wallet-sdk/src/sign/util.test.ts b/packages/wallet-sdk/src/sign/util.test.ts index 81b219ced2..0477f9e07a 100644 --- a/packages/wallet-sdk/src/sign/util.test.ts +++ b/packages/wallet-sdk/src/sign/util.test.ts @@ -56,6 +56,7 @@ describe('util', () => { preference, metadata, handshakeRequest: { method: 'eth_requestAccounts' }, + callback: jest.fn(), }); expect(signerType).toEqual('scw'); }); diff --git a/packages/wallet-sdk/src/sign/util.ts b/packages/wallet-sdk/src/sign/util.ts index f352a35f4f..eb25624c1a 100644 --- a/packages/wallet-sdk/src/sign/util.ts +++ b/packages/wallet-sdk/src/sign/util.ts @@ -27,9 +27,10 @@ export async function fetchSignerType(params: { preference: Preference; metadata: AppMetadata; // for WalletLink handshakeRequest: RequestArguments; + callback: ProviderEventCallback; }): Promise { - const { communicator, metadata, handshakeRequest } = params; - listenForWalletLinkSessionRequest(communicator, metadata).catch(() => {}); + const { communicator, metadata, handshakeRequest, callback } = params; + listenForWalletLinkSessionRequest(communicator, metadata, callback).catch(() => {}); const request: ConfigMessage & { id: MessageID } = { id: crypto.randomUUID(), @@ -69,7 +70,8 @@ export function createSigner(params: { async function listenForWalletLinkSessionRequest( communicator: Communicator, - metadata: AppMetadata + metadata: AppMetadata, + callback: ProviderEventCallback ) { await communicator.onMessage(({ event }) => event === 'WalletLinkSessionRequest'); @@ -77,6 +79,7 @@ async function listenForWalletLinkSessionRequest( // will revisit this when refactoring the walletlink signer const walletlink = new WalletLinkSigner({ metadata, + callback, }); // send wallet link session to popup From e121d51e57faecd4f551403a1b44f483e070ffb4 Mon Sep 17 00:00:00 2001 From: Nate Date: Fri, 27 Sep 2024 15:05:26 -0700 Subject: [PATCH 09/28] Nate/trivial/playground workaround for v3.9.3 walletlink eventing bug (#1410) * fix chainChanged event emitting for walletlink connection * make testapp show all methods if version is 3.9.3 * Revert "fix chainChanged event emitting for walletlink connection" This reverts commit 78271be6d28ef93b5cb643eed51b880e7153ce6f. --- examples/testapp/src/pages/index.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/examples/testapp/src/pages/index.tsx b/examples/testapp/src/pages/index.tsx index 5f045455c1..bffb1b4ad1 100644 --- a/examples/testapp/src/pages/index.tsx +++ b/examples/testapp/src/pages/index.tsx @@ -1,5 +1,5 @@ import { Box, Container, Grid, Heading } from "@chakra-ui/react"; -import React, { useEffect } from "react"; +import React, { useCallback, useEffect } from "react"; import { EventListenersCard } from "../components/EventListeners/EventListenersCard"; import { WIDTH_2XL } from "../components/Layout"; @@ -18,7 +18,7 @@ import { useCBWSDK } from "../context/CBWSDKReactContextProvider"; import { MethodsSection } from "../components/MethodsSection/MethodsSection"; export default function Home() { - const { provider } = useCBWSDK(); + const { provider, sdkVersion } = useCBWSDK(); const [connected, setConnected] = React.useState( Boolean(provider?.connected) ); @@ -43,11 +43,14 @@ export default function Home() { useEffect(() => { if (connected) { provider?.request({ method: "eth_chainId" }).then((chainId) => { - setChainId(parseInt(chainId, 16)); + setChainId(Number.parseInt(chainId, 16)); }); } }, [connected, provider]); + // There's a bug in 3.9.3 where it does not emit a 'connect' event for walletlink connections + const shouldShowMethodsRequiringConnection = connected || (sdkVersion === '3.9.3') + return ( @@ -57,7 +60,7 @@ export default function Home() { - {connected && ( + {shouldShowMethodsRequiringConnection && ( <> Date: Fri, 27 Sep 2024 19:39:27 -0700 Subject: [PATCH 10/28] guess favicon based on convention, frontend handles malformed urls just in case (#1415) --- packages/wallet-sdk/src/core/type/util.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/wallet-sdk/src/core/type/util.ts b/packages/wallet-sdk/src/core/type/util.ts index d0ea07d680..1ba3a4564e 100644 --- a/packages/wallet-sdk/src/core/type/util.ts +++ b/packages/wallet-sdk/src/core/type/util.ts @@ -185,7 +185,7 @@ export function getFavicon(): string | null { const { protocol, host } = document.location; const href = el ? el.getAttribute('href') : null; if (!href || href.startsWith('javascript:') || href.startsWith('vbscript:')) { - return null; + return `${protocol}//${host}/favicon.ico`; // fallback } if (href.startsWith('http://') || href.startsWith('https://') || href.startsWith('data:')) { return href; From 02a8a649635939a10b138e22a84eeda73a4ed0a3 Mon Sep 17 00:00:00 2001 From: cb-jake <95890768+cb-jake@users.noreply.github.com> Date: Tue, 1 Oct 2024 12:14:51 -0600 Subject: [PATCH 11/28] Add coop warning (#1417) * add coop warning * add tests and update statement * mock coop check * update comment --- examples/testapp/next.config.js | 18 ++++++ .../wallet-sdk/src/CoinbaseWalletSDK.test.ts | 1 + packages/wallet-sdk/src/CoinbaseWalletSDK.ts | 6 ++ .../src/createCoinbaseWalletSDK.test.ts | 2 + .../wallet-sdk/src/createCoinbaseWalletSDK.ts | 3 + .../src/util/crossOriginOpenerPolicy.test.ts | 63 +++++++++++++++++++ .../src/util/crossOriginOpenerPolicy.ts | 15 +++++ 7 files changed, 108 insertions(+) create mode 100644 examples/testapp/next.config.js create mode 100644 packages/wallet-sdk/src/util/crossOriginOpenerPolicy.test.ts create mode 100644 packages/wallet-sdk/src/util/crossOriginOpenerPolicy.ts diff --git a/examples/testapp/next.config.js b/examples/testapp/next.config.js new file mode 100644 index 0000000000..b8a65f08c0 --- /dev/null +++ b/examples/testapp/next.config.js @@ -0,0 +1,18 @@ +/** + * @type {import('next').NextConfig} + */ +module.exports = { + async headers() { + return [ + { + source: "/", + headers: [ + { + key: "Cross-Origin-Opener-Policy", + value: "unsafe-none", // Or 'same-origin' to test COOP errors + }, + ], + }, + ]; + }, +}; diff --git a/packages/wallet-sdk/src/CoinbaseWalletSDK.test.ts b/packages/wallet-sdk/src/CoinbaseWalletSDK.test.ts index 6e558b3d61..ade93c5caa 100644 --- a/packages/wallet-sdk/src/CoinbaseWalletSDK.test.ts +++ b/packages/wallet-sdk/src/CoinbaseWalletSDK.test.ts @@ -7,6 +7,7 @@ import { getCoinbaseInjectedProvider } from ':util/provider'; jest.mock(':core/type/util'); jest.mock(':util/provider'); jest.mock('./CoinbaseWalletProvider'); +jest.mock('./util/crossOriginOpenerPolicy'); describe('CoinbaseWalletSDK', () => { test('@makeWeb3Provider - return Coinbase Injected Provider', () => { diff --git a/packages/wallet-sdk/src/CoinbaseWalletSDK.ts b/packages/wallet-sdk/src/CoinbaseWalletSDK.ts index 9f4b125e97..876917be54 100644 --- a/packages/wallet-sdk/src/CoinbaseWalletSDK.ts +++ b/packages/wallet-sdk/src/CoinbaseWalletSDK.ts @@ -6,6 +6,7 @@ import { AppMetadata, Preference, ProviderInterface } from './core/provider/inte import { LIB_VERSION } from './version'; import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; import { getFavicon } from ':core/type/util'; +import { checkCrossOriginOpenerPolicy } from ':util/crossOriginOpenerPolicy'; import { getCoinbaseInjectedProvider } from ':util/provider'; // for backwards compatibility @@ -27,6 +28,7 @@ export class CoinbaseWalletSDK { appChainIds: metadata.appChainIds || [], }; this.storeLatestVersion(); + this.checkCrossOriginOpenerPolicy(); } public makeWeb3Provider(preference: Preference = { options: 'all' }): ProviderInterface { @@ -48,4 +50,8 @@ export class CoinbaseWalletSDK { const versionStorage = new ScopedLocalStorage('CBWSDK'); versionStorage.setItem('VERSION', LIB_VERSION); } + + private checkCrossOriginOpenerPolicy() { + void checkCrossOriginOpenerPolicy(); + } } diff --git a/packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts b/packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts index 41b818d315..fab27c2096 100644 --- a/packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts +++ b/packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts @@ -7,6 +7,8 @@ const options: CreateCoinbaseWalletSDKOptions = { preference: { options: 'all' }, }; +jest.mock('./util/crossOriginOpenerPolicy'); + describe('createCoinbaseWalletSDK', () => { it('should return an object with a getProvider method', () => { const sdk = createCoinbaseWalletSDK(options); diff --git a/packages/wallet-sdk/src/createCoinbaseWalletSDK.ts b/packages/wallet-sdk/src/createCoinbaseWalletSDK.ts index 6ec937d7a6..b2dd2abc3c 100644 --- a/packages/wallet-sdk/src/createCoinbaseWalletSDK.ts +++ b/packages/wallet-sdk/src/createCoinbaseWalletSDK.ts @@ -7,6 +7,7 @@ import { ProviderInterface, } from ':core/provider/interface'; import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; +import { checkCrossOriginOpenerPolicy } from ':util/crossOriginOpenerPolicy'; export type CreateCoinbaseWalletSDKOptions = Partial & { preference?: Preference; @@ -20,6 +21,8 @@ export function createCoinbaseWalletSDK(params: CreateCoinbaseWalletSDKOptions) const versionStorage = new ScopedLocalStorage('CBWSDK'); versionStorage.setItem('VERSION', LIB_VERSION); + void checkCrossOriginOpenerPolicy(); + const options: ConstructorOptions = { metadata: { appName: params.appName || 'Dapp', diff --git a/packages/wallet-sdk/src/util/crossOriginOpenerPolicy.test.ts b/packages/wallet-sdk/src/util/crossOriginOpenerPolicy.test.ts new file mode 100644 index 0000000000..6fbfee569b --- /dev/null +++ b/packages/wallet-sdk/src/util/crossOriginOpenerPolicy.test.ts @@ -0,0 +1,63 @@ +import { checkCrossOriginOpenerPolicy } from './crossOriginOpenerPolicy'; + +describe('checkCrossOriginOpenerPolicy', () => { + beforeEach(() => { + // Clear all mocks before each test + jest.clearAllMocks(); + }); + + it('should not run if window is undefined', () => { + const originalWindow = global.window; + // @ts-expect-error delete window property + delete global.window; + + expect(checkCrossOriginOpenerPolicy()).toBeUndefined(); + + // Restore the original window object + global.window = originalWindow; + }); + + it('should fetch the current origin', async () => { + global.fetch = jest.fn().mockResolvedValue({ + headers: { + get: jest.fn().mockReturnValue(null), + }, + }); + + checkCrossOriginOpenerPolicy(); + + expect(global.fetch).toHaveBeenCalledWith(window.location.origin, {}); + }); + + it('should log an error if Cross-Origin-Opener-Policy is same-origin', async () => { + const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {}); + global.fetch = jest.fn().mockResolvedValue({ + headers: { + get: jest.fn().mockReturnValue('same-origin'), + }, + }); + + await checkCrossOriginOpenerPolicy(); + + expect(consoleErrorSpy).toHaveBeenCalledWith( + expect.stringContaining( + "Coinbase Wallet SDK requires the Cross-Origin-Opener-Policy header to not be set to 'same-origin'." + ) + ); + consoleErrorSpy.mockRestore(); + }); + + it('should not log an error if Cross-Origin-Opener-Policy is not same-origin', async () => { + const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {}); + global.fetch = jest.fn().mockResolvedValue({ + headers: { + get: jest.fn().mockReturnValue('unsafe-none'), + }, + }); + + await checkCrossOriginOpenerPolicy(); + + expect(consoleErrorSpy).not.toHaveBeenCalled(); + consoleErrorSpy.mockRestore(); + }); +}); diff --git a/packages/wallet-sdk/src/util/crossOriginOpenerPolicy.ts b/packages/wallet-sdk/src/util/crossOriginOpenerPolicy.ts new file mode 100644 index 0000000000..0d9e282ba0 --- /dev/null +++ b/packages/wallet-sdk/src/util/crossOriginOpenerPolicy.ts @@ -0,0 +1,15 @@ +export function checkCrossOriginOpenerPolicy() { + if (typeof window === 'undefined') { + return; + } + + fetch(window.location.origin, {}).then((response) => { + const headers = response.headers; + const crossOriginOpenerPolicy = headers.get('Cross-Origin-Opener-Policy'); + if (crossOriginOpenerPolicy === 'same-origin') { + console.error(`Coinbase Wallet SDK requires the Cross-Origin-Opener-Policy header to not be set to 'same-origin'. This is to ensure that the SDK can communicate with the Coinbase Smart Wallet app. + +Please see https://www.smartwallet.dev/guides/tips/popup-tips#cross-origin-opener-policy for more information.`); + } + }); +} From fc3c040811caf8cc27958e32587de03da5c77399 Mon Sep 17 00:00:00 2001 From: cb-jake <95890768+cb-jake@users.noreply.github.com> Date: Tue, 1 Oct 2024 13:43:14 -0600 Subject: [PATCH 12/28] Disable next config headers (#1418) * disable headers * remove next config headers * add example header for testing --- examples/testapp/config/headers.js | 17 +++++++++++++++++ examples/testapp/next.config.js | 16 +--------------- examples/testapp/tsconfig.json | 20 ++++---------------- 3 files changed, 22 insertions(+), 31 deletions(-) create mode 100644 examples/testapp/config/headers.js diff --git a/examples/testapp/config/headers.js b/examples/testapp/config/headers.js new file mode 100644 index 0000000000..8725266d17 --- /dev/null +++ b/examples/testapp/config/headers.js @@ -0,0 +1,17 @@ +function getCrossOriginOpenerPolicyHeaders() { + return { + source: "/", + headers: [ + { + key: "Cross-Origin-Opener-Policy", + value: "same-origin", + }, + ] + } +} + +// To test these headers in your local environment, +// add the following rules to the next.config.js headers property. +module.exports = { + getCrossOriginOpenerPolicyHeaders +} diff --git a/examples/testapp/next.config.js b/examples/testapp/next.config.js index b8a65f08c0..3215e2200f 100644 --- a/examples/testapp/next.config.js +++ b/examples/testapp/next.config.js @@ -1,18 +1,4 @@ /** * @type {import('next').NextConfig} */ -module.exports = { - async headers() { - return [ - { - source: "/", - headers: [ - { - key: "Cross-Origin-Opener-Policy", - value: "unsafe-none", // Or 'same-origin' to test COOP errors - }, - ], - }, - ]; - }, -}; +module.exports = {}; diff --git a/examples/testapp/tsconfig.json b/examples/testapp/tsconfig.json index 4c21d038a1..8a2c7379ab 100644 --- a/examples/testapp/tsconfig.json +++ b/examples/testapp/tsconfig.json @@ -1,10 +1,6 @@ { "compilerOptions": { - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": false, @@ -18,15 +14,7 @@ "isolatedModules": true, "jsx": "preserve" }, - "include": [ - "next-env.d.ts", - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "node_modules" - ], - "references": [ - - ] + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"], + "references": [] } From 960e67ebc33a1eede049640ef2565509c2ec1c97 Mon Sep 17 00:00:00 2001 From: cb-jake <95890768+cb-jake@users.noreply.github.com> Date: Tue, 1 Oct 2024 16:29:47 -0600 Subject: [PATCH 13/28] remove next config (#1419) --- examples/testapp/config/headers.js | 2 +- examples/testapp/next.config.js | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) delete mode 100644 examples/testapp/next.config.js diff --git a/examples/testapp/config/headers.js b/examples/testapp/config/headers.js index 8725266d17..bcf4667189 100644 --- a/examples/testapp/config/headers.js +++ b/examples/testapp/config/headers.js @@ -11,7 +11,7 @@ function getCrossOriginOpenerPolicyHeaders() { } // To test these headers in your local environment, -// add the following rules to the next.config.js headers property. +// create a next.config and add the following rules to the next.config.js headers property. module.exports = { getCrossOriginOpenerPolicyHeaders } diff --git a/examples/testapp/next.config.js b/examples/testapp/next.config.js deleted file mode 100644 index 3215e2200f..0000000000 --- a/examples/testapp/next.config.js +++ /dev/null @@ -1,4 +0,0 @@ -/** - * @type {import('next').NextConfig} - */ -module.exports = {}; From 3da9ef60dbf249c6c9d9c7c78c1d727f89cd72ed Mon Sep 17 00:00:00 2001 From: cb-jake <95890768+cb-jake@users.noreply.github.com> Date: Mon, 7 Oct 2024 15:48:12 -0600 Subject: [PATCH 14/28] Update the attribution property (#1420) * Update the attribution property * fix config page in sdk playground * add validation helper --- .../src/components/SDKConfig/SDKConfig.tsx | 226 +++++++----------- packages/wallet-sdk/src/CoinbaseWalletSDK.ts | 2 + .../wallet-sdk/src/core/provider/interface.ts | 52 ++-- .../wallet-sdk/src/createCoinbaseWalletSDK.ts | 12 + .../src/util/validatePreferences.test.ts | 70 ++++++ .../src/util/validatePreferences.ts | 24 ++ 6 files changed, 209 insertions(+), 177 deletions(-) create mode 100644 packages/wallet-sdk/src/util/validatePreferences.test.ts create mode 100644 packages/wallet-sdk/src/util/validatePreferences.ts diff --git a/examples/testapp/src/components/SDKConfig/SDKConfig.tsx b/examples/testapp/src/components/SDKConfig/SDKConfig.tsx index 3cd3ac1380..f93d6361bf 100644 --- a/examples/testapp/src/components/SDKConfig/SDKConfig.tsx +++ b/examples/testapp/src/components/SDKConfig/SDKConfig.tsx @@ -14,43 +14,29 @@ import { FormHelperText, Heading, Input, - Menu, - MenuButton, - MenuItem, - MenuList, Text, VStack, - Divider, + Switch, } from "@chakra-ui/react"; import React, { useCallback, useMemo, useState } from "react"; import { createCoinbaseWalletSDK } from "@coinbase/wallet-sdk"; import { useCBWSDK } from "../../context/CBWSDKReactContextProvider"; -import { - Preference, -} from "@coinbase/wallet-sdk/dist/core/provider/interface"; -import { CheckIcon, ChevronDownIcon } from "@chakra-ui/icons"; +import { Preference } from "@coinbase/wallet-sdk/dist/core/provider/interface"; import { keccak256, slice, toHex } from "viem"; import { CreateCoinbaseWalletSDKOptions } from "@coinbase/wallet-sdk/dist/createCoinbaseWalletSDK"; -type PostOnboardingAction = "none" | "onramp" | "magicspend"; - -const postOnboardingActions = ["none", "onramp", "magicspend"] as const; - -type OnrampPrefillOptions = { - contractAddress?: string; - amount: string; - chainId: number; -}; - -type Config = { - postOnboardingAction?: PostOnboardingAction; - onrampPrefillOptions?: OnrampPrefillOptions; - attributionDataSuffix?: string; -}; +function is0xString(value: string): value is `0x${string}` { + return value.startsWith("0x"); +} export function SDKConfig() { const { option, scwUrl } = useCBWSDK(); - const [config, setConfig] = React.useState({}); + const [config, setConfig] = React.useState({ + options: option, + attribution: { + auto: true, + }, + }); const options: CreateCoinbaseWalletSDKOptions = useMemo(() => { const preference: Preference = { @@ -72,45 +58,44 @@ export function SDKConfig() { await provider.request({ method: "eth_requestAccounts" }); }, [options]); - const handlePostOnboardingAction = useCallback( - (action: PostOnboardingAction) => { - const config_ = { ...config, postOnboardingAction: action }; - if (action !== "onramp") { - delete config_.onrampPrefillOptions; - } + const handleSetAttributionAuto = useCallback( + (event: React.ChangeEvent) => { + const config_: Preference = { + ...config, + attribution: { + auto: event.target.checked, + }, + }; setConfig(config_); }, [config] ); - const handleOnrampPrefill = useCallback( - (key: "contractAddress" | "amount" | "chainId") => (e) => { - const value = e.target.value; - setConfig((prev) => ({ - ...prev, - onrampPrefillOptions: { - ...prev.onrampPrefillOptions, - [key]: value, - }, - })); + const handleSetDataSuffix = useCallback( + (event: React.ChangeEvent) => { + const value = event.target.value; + if (is0xString(value)) { + setConfig((prev) => ({ + ...prev, + attribution: { + dataSuffix: value, + }, + })); + } }, [] ); - const handleSetDataSuffix = useCallback((e) => { - const value = e.target.value; - setConfig((prev) => ({ - ...prev, - attributionDataSuffix: value, - })); - }, []); - const [dataSuffix, setDataSuffix] = useState("Coinbase Wallet"); const fourByteHex = useMemo( () => slice(keccak256(toHex(dataSuffix)), 0, 4), [dataSuffix] ); + const attributionAuto = useMemo(() => { + return "auto" in config.attribution && config.attribution?.auto; + }, [config.attribution]); + return ( @@ -131,104 +116,65 @@ export function SDKConfig() { - Post Onboarding Action - postOnboardingAction + Attribution + attribution.auto - - } - > - {config?.postOnboardingAction} - - - {postOnboardingActions.map((action) => ( - - ) : null - } - onClick={() => handlePostOnboardingAction(action)} - > - {action} - - ))} - - - - {config.postOnboardingAction === "onramp" && ( - <> - - - - Onramp Prefill Options - - Optional: Only works when postOnboardingAction is set to - onramp. Amount and chainId are required. If contract address - is omitted, onramp assumes native asset for that chain - - onrampPrefillOptions - - - - - - handleOnrampPrefill("chainId")({ - target: { value: parseInt(e.target.value, 10) }, - }) - } - /> - - - - )} - - - Attribution Data Suffix - - First 4 bytes of a unique string to identify your onchain activity - - - attributionDataSuffix - - setDataSuffix(e.target.value)} - value={dataSuffix} + - - Convert any string into a 4 byte data suffix - - - {fourByteHex} - - - - + {!attributionAuto && ( + + + Data Suffix + + First 4 bytes of a unique string to identify your onchain + activity + + + + attribution.dataSuffix + + setDataSuffix(e.target.value)} + value={dataSuffix} + /> + + Convert any string into a 4 byte data suffix + + + + {fourByteHex} + + + + + + + )} ); } diff --git a/examples/testapp/src/context/CBWSDKReactContextProvider.tsx b/examples/testapp/src/context/CBWSDKReactContextProvider.tsx index 74584a8aa5..5d52da71cd 100644 --- a/examples/testapp/src/context/CBWSDKReactContextProvider.tsx +++ b/examples/testapp/src/context/CBWSDKReactContextProvider.tsx @@ -1,10 +1,13 @@ -import { CoinbaseWalletSDK as CoinbaseWalletSDKHEAD } from '@coinbase/wallet-sdk'; -import { CoinbaseWalletSDK as CoinbaseWalletSDK372 } from '@coinbase/wallet-sdk-3.7.2'; -import { CoinbaseWalletSDK as CoinbaseWalletSDK393 } from '@coinbase/wallet-sdk-3.9.3'; -import { CoinbaseWalletSDK as CoinbaseWalletSDKLatest } from '@coinbase/wallet-sdk-latest'; -import latestPkgJson from '@coinbase/wallet-sdk/package.json'; +import { + CoinbaseWalletSDK as CoinbaseWalletSDKHEAD, + Preference, +} from "@coinbase/wallet-sdk"; +import CoinbaseWalletSDK, { CoinbaseWalletSDK as CoinbaseWalletSDK372 } from "@coinbase/wallet-sdk-3.7.2"; +import { CoinbaseWalletSDK as CoinbaseWalletSDK393 } from "@coinbase/wallet-sdk-3.9.3"; +import { CoinbaseWalletSDK as CoinbaseWalletSDKLatest } from "@coinbase/wallet-sdk-latest"; +import latestPkgJson from "@coinbase/wallet-sdk/package.json"; -import React, { useEffect, useMemo } from 'react'; +import React, { useEffect, useMemo } from "react"; type CBWSDKProviderProps = { children: React.ReactNode; @@ -12,20 +15,25 @@ type CBWSDKProviderProps = { const CBWSDKReactContext = React.createContext(null); -const SELECTED_SDK_KEY = 'selected_sdk_version'; -export const sdkVersions = ['HEAD', latestPkgJson.version, '3.9.3', '3.7.2'] as const; +const SELECTED_SDK_KEY = "selected_sdk_version"; +export const sdkVersions = [ + "HEAD", + latestPkgJson.version, + "3.9.3", + "3.7.2", +] as const; export type SDKVersionType = (typeof sdkVersions)[number]; -const SELECTED_SCW_URL_KEY = 'scw_url'; +const SELECTED_SCW_URL_KEY = "scw_url"; export const scwUrls = [ - 'https://keys.coinbase.com/connect', - 'https://keys-beta.coinbase.com/connect', - 'http://localhost:3005/connect', + "https://keys.coinbase.com/connect", + "https://keys-beta.coinbase.com/connect", + "http://localhost:3005/connect", ] as const; export type ScwUrlType = (typeof scwUrls)[number]; -const OPTIONS_KEY = 'option_key'; -export const options = ['all', 'smartWalletOnly', 'eoaOnly'] as const; +const OPTIONS_KEY = "option_key"; +export const options = ["all", "smartWalletOnly", "eoaOnly"] as const; export type OptionsType = (typeof options)[number]; declare global { @@ -34,7 +42,7 @@ declare global { } } -if (typeof window !== 'undefined') { +if (typeof window !== "undefined") { window.setPopupUrl = (url: string) => { const communicator = (window.ethereum as any).communicator; if (communicator) { @@ -44,17 +52,31 @@ if (typeof window !== 'undefined') { } export function CBWSDKReactContextProvider({ children }: CBWSDKProviderProps) { - const [version, setVersion] = React.useState(undefined); - const [option, setOption] = React.useState(undefined); + const [version, setVersion] = React.useState( + undefined + ); + const [option, setOption] = React.useState( + undefined + ); + const [config, setConfig] = React.useState({ + options: option, + attribution: { + auto: false, + }, + }); const [sdk, setSdk] = React.useState(null); const [provider, setProvider] = React.useState(null); const [scwUrl, setScwUrl] = React.useState(undefined); useEffect(() => { if (version === undefined) { - const savedVersion = localStorage.getItem(SELECTED_SDK_KEY) as SDKVersionType; + const savedVersion = localStorage.getItem( + SELECTED_SDK_KEY + ) as SDKVersionType; setVersion( - sdkVersions.includes(savedVersion) ? (savedVersion as SDKVersionType) : sdkVersions[0] + sdkVersions.includes(savedVersion) + ? (savedVersion as SDKVersionType) + : sdkVersions[0] ); } }, [version]); @@ -62,48 +84,60 @@ export function CBWSDKReactContextProvider({ children }: CBWSDKProviderProps) { useEffect(() => { if (option === undefined) { const option = localStorage.getItem(OPTIONS_KEY) as OptionsType; - setOption(options.includes(option) ? (option as OptionsType) : 'all'); + setOption(options.includes(option) ? (option as OptionsType) : "all"); } }, [option]); useEffect(() => { if (scwUrl === undefined) { - const savedScwUrl = localStorage.getItem(SELECTED_SCW_URL_KEY) as ScwUrlType; - setScwUrl(scwUrls.includes(savedScwUrl) ? (savedScwUrl as ScwUrlType) : scwUrls[0]); + const savedScwUrl = localStorage.getItem( + SELECTED_SCW_URL_KEY + ) as ScwUrlType; + setScwUrl( + scwUrls.includes(savedScwUrl) ? (savedScwUrl as ScwUrlType) : scwUrls[0] + ); } }, [scwUrl]); useEffect(() => { let cbwsdk; - let preference; - if (version === 'HEAD' || version === latestPkgJson.version) { - const SDK = version === 'HEAD' ? CoinbaseWalletSDKHEAD : CoinbaseWalletSDKLatest; + let preference: Preference | string; + if (version === "HEAD" || version === latestPkgJson.version) { + const SDK = + version === "HEAD" ? CoinbaseWalletSDKHEAD : CoinbaseWalletSDKLatest; cbwsdk = new SDK({ - appName: 'SDK Playground', + appName: "SDK Playground", appChainIds: [84532, 8452], }); - preference = { options: option }; + if (version === "HEAD") { + preference = { options: option, attribution: config.attribution }; + } else { + preference = { options: option }; + } setSdk(cbwsdk); - } else if (version === '3.9.3' || version === '3.7.2') { - const SDK = version === '3.9.3' ? CoinbaseWalletSDK393 : CoinbaseWalletSDK372; + } else if (version === "3.9.3" || version === "3.7.2") { + const SDK = + version === "3.9.3" ? CoinbaseWalletSDK393 : CoinbaseWalletSDK372; cbwsdk = new SDK({ - appName: 'Test App', + appName: "Test App", enableMobileWalletLink: true, }); - preference = 'jsonRpcUrlMock'; + preference = "jsonRpcUrlMock"; setSdk(cbwsdk); } - if (!cbwsdk) return; + if (!cbwsdk) { + return; + } const cbwprovider = cbwsdk.makeWeb3Provider(preference); - cbwprovider.on('disconnect', () => { + cbwprovider.on("disconnect", () => { location.reload(); }); window.ethereum = cbwprovider; setProvider(cbwprovider); - }, [version, option]); + }, [version, option, config]); useEffect(() => { - if (version === 'HEAD' || version === latestPkgJson.version) { + if (version === "HEAD" || version === latestPkgJson.version) { if (scwUrl) window.setPopupUrl?.(scwUrl); } }, [version, scwUrl, sdk]); @@ -133,17 +167,34 @@ export function CBWSDKReactContextProvider({ children }: CBWSDKProviderProps) { setSDKVersion, scwUrl, setScwUrlAndSave, + config, + setConfig, }), - [sdk, provider, option, setPreference, version, setSDKVersion, scwUrl, setScwUrlAndSave] + [ + sdk, + provider, + option, + setPreference, + version, + setSDKVersion, + scwUrl, + setScwUrlAndSave, + config, + setConfig, + ] ); - return {children}; + return ( + + {children} + + ); } export function useCBWSDK() { const context = React.useContext(CBWSDKReactContext); if (context === undefined) { - throw new Error('useCBWSDK must be used within a CBWSDKProvider'); + throw new Error("useCBWSDK must be used within a CBWSDKProvider"); } return context; } diff --git a/examples/testapp/src/pages/config.tsx b/examples/testapp/src/pages/config.tsx deleted file mode 100644 index 0e89152f45..0000000000 --- a/examples/testapp/src/pages/config.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { Container } from "@chakra-ui/react"; -import { WIDTH_2XL } from "../components/Layout"; -import dynamic from "next/dynamic"; - -const SDKConfig = dynamic( - () => - import("../components/SDKConfig/SDKConfig").then((mod) => mod.SDKConfig), - { ssr: false } -); - -export default function Config() { - return ( - - - - ); -} diff --git a/examples/testapp/src/pages/index.tsx b/examples/testapp/src/pages/index.tsx index bffb1b4ad1..1d7aef09bf 100644 --- a/examples/testapp/src/pages/index.tsx +++ b/examples/testapp/src/pages/index.tsx @@ -1,5 +1,5 @@ import { Box, Container, Grid, Heading } from "@chakra-ui/react"; -import React, { useCallback, useEffect } from "react"; +import React, { useEffect } from "react"; import { EventListenersCard } from "../components/EventListeners/EventListenersCard"; import { WIDTH_2XL } from "../components/Layout"; @@ -16,6 +16,7 @@ import { signMessageShortcutsMap } from "../components/RpcMethods/shortcut/signM import { walletTxShortcutsMap } from "../components/RpcMethods/shortcut/walletTxShortcuts"; import { useCBWSDK } from "../context/CBWSDKReactContextProvider"; import { MethodsSection } from "../components/MethodsSection/MethodsSection"; +import { SDKConfig } from "../components/SDKConfig/SDKConfig"; export default function Home() { const { provider, sdkVersion } = useCBWSDK(); @@ -49,7 +50,8 @@ export default function Home() { }, [connected, provider]); // There's a bug in 3.9.3 where it does not emit a 'connect' event for walletlink connections - const shouldShowMethodsRequiringConnection = connected || (sdkVersion === '3.9.3') + const shouldShowMethodsRequiringConnection = + connected || sdkVersion === "3.9.3"; return ( @@ -59,6 +61,17 @@ export default function Home() { + {/* TODO: once published have this include latest */} + {sdkVersion === "HEAD" && ( + <> + + SDK Configuration (Optional) + + + + + + )} {shouldShowMethodsRequiringConnection && ( <> From 1bd8d67badf5b7aa886c9d6cad3586d7b00f8e8e Mon Sep 17 00:00:00 2001 From: Nate Date: Thu, 10 Oct 2024 14:57:46 -0700 Subject: [PATCH 18/28] [Trivial] use es6 namespaced Number.parseInt (#1416) * update parseInt to es6 namespaced Number.parseInt * enforce with lint rule --- packages/wallet-sdk/.eslintrc.js | 7 +++++++ packages/wallet-sdk/src/core/type/util.ts | 2 +- .../wallet-sdk/src/sign/walletlink/WalletLinkSigner.ts | 6 +++--- .../src/sign/walletlink/relay/WalletLinkRelay.ts | 2 +- .../wallet-sdk/src/sign/walletlink/relay/mocks/fixtures.ts | 2 +- packages/wallet-sdk/src/vendor-js/eth-eip712-util/abi.js | 6 +++--- packages/wallet-sdk/src/vendor-js/eth-eip712-util/util.js | 2 +- 7 files changed, 17 insertions(+), 10 deletions(-) diff --git a/packages/wallet-sdk/.eslintrc.js b/packages/wallet-sdk/.eslintrc.js index cdf7a987a2..b681ca8163 100644 --- a/packages/wallet-sdk/.eslintrc.js +++ b/packages/wallet-sdk/.eslintrc.js @@ -68,6 +68,13 @@ module.exports = { // TODO: change this back to error '@typescript-eslint/no-explicit-any': 'warn', 'no-useless-constructor': 'off', + 'no-restricted-globals': [ + 'error', + { + name: 'parseInt', + message: 'Use Number.parseInt instead of parseInt.', + }, + ], }, overrides: [ { diff --git a/packages/wallet-sdk/src/core/type/util.ts b/packages/wallet-sdk/src/core/type/util.ts index 1ba3a4564e..0dede56f59 100644 --- a/packages/wallet-sdk/src/core/type/util.ts +++ b/packages/wallet-sdk/src/core/type/util.ts @@ -19,7 +19,7 @@ export function uint8ArrayToHex(value: Uint8Array) { } export function hexStringToUint8Array(hexString: string): Uint8Array { - return new Uint8Array(hexString.match(/.{1,2}/g)!.map((byte) => parseInt(byte, 16))); + return new Uint8Array(hexString.match(/.{1,2}/g)!.map((byte) => Number.parseInt(byte, 16))); } export function hexStringFromBuffer(buf: Buffer, includePrefix = false): HexString { diff --git a/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.ts b/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.ts index 44122010a5..11ed22bbe1 100644 --- a/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.ts +++ b/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.ts @@ -155,7 +155,7 @@ export class WalletLinkSigner implements Signer { throw standardErrors.rpc.invalidParams('nativeCurrency is a required field'); } - const chainIdNumber = parseInt(request.chainId, 16); + const chainIdNumber = Number.parseInt(request.chainId, 16); if (chainIdNumber === this.getChainId()) { return false; @@ -193,7 +193,7 @@ export class WalletLinkSigner implements Signer { const request = params[0] as { chainId: string; }; - const chainId = parseInt(request.chainId, 16); + const chainId = Number.parseInt(request.chainId, 16); const relay = this.initializeRelay(); const res = await relay.switchEthereumChain( @@ -358,7 +358,7 @@ export class WalletLinkSigner implements Signer { } private getChainId(): number { - return parseInt(this._storage.getItem(DEFAULT_CHAIN_ID_KEY) ?? '1', 10); + return Number.parseInt(this._storage.getItem(DEFAULT_CHAIN_ID_KEY) ?? '1', 10); } private async _eth_requestAccounts() { diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/WalletLinkRelay.ts b/packages/wallet-sdk/src/sign/walletlink/relay/WalletLinkRelay.ts index 8261d23edb..8e6fe3bb5a 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/WalletLinkRelay.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/WalletLinkRelay.ts @@ -122,7 +122,7 @@ export class WalletLinkRelay implements WalletLinkConnectionUpdateListener { }; if (this.chainCallback) { - this.chainCallback(jsonRpcUrl, parseInt(chainId, 10)); + this.chainCallback(jsonRpcUrl, Number.parseInt(chainId, 10)); } }; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/mocks/fixtures.ts b/packages/wallet-sdk/src/sign/walletlink/relay/mocks/fixtures.ts index 09216aa4c0..f3f2ef2f5d 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/mocks/fixtures.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/mocks/fixtures.ts @@ -26,7 +26,7 @@ export const MOCK_TYPED_DATA = JSON.stringify({ domain: { name: 'Provider Test', version: '1', - chainId: parseInt('1', 10), + chainId: Number.parseInt('1', 10), verifyingContract: MOCK_ADDERESS, salt: '0xf2d857f4a3edcb9b78b4d503bfe733db1e3f6cdc2b7971ee739626c97e86a558', }, diff --git a/packages/wallet-sdk/src/vendor-js/eth-eip712-util/abi.js b/packages/wallet-sdk/src/vendor-js/eth-eip712-util/abi.js index e3444324c8..88c8400a40 100644 --- a/packages/wallet-sdk/src/vendor-js/eth-eip712-util/abi.js +++ b/packages/wallet-sdk/src/vendor-js/eth-eip712-util/abi.js @@ -30,20 +30,20 @@ function elementaryName (name) { // Parse N from type function parseTypeN (type) { - return parseInt(/^\D+(\d+)$/.exec(type)[1], 10) + return Number.parseInt(/^\D+(\d+)$/.exec(type)[1], 10) } // Parse N,M from typex function parseTypeNxM (type) { var tmp = /^\D+(\d+)x(\d+)$/.exec(type) - return [ parseInt(tmp[1], 10), parseInt(tmp[2], 10) ] + return [ Number.parseInt(tmp[1], 10), Number.parseInt(tmp[2], 10) ] } // Parse N in type[] where "type" can itself be an array type. function parseTypeArray (type) { var tmp = type.match(/(.*)\[(.*?)\]$/) if (tmp) { - return tmp[2] === '' ? 'dynamic' : parseInt(tmp[2], 10) + return tmp[2] === '' ? 'dynamic' : Number.parseInt(tmp[2], 10) } return null } diff --git a/packages/wallet-sdk/src/vendor-js/eth-eip712-util/util.js b/packages/wallet-sdk/src/vendor-js/eth-eip712-util/util.js index 47755cb8d1..cb3d45d99a 100644 --- a/packages/wallet-sdk/src/vendor-js/eth-eip712-util/util.js +++ b/packages/wallet-sdk/src/vendor-js/eth-eip712-util/util.js @@ -24,7 +24,7 @@ function bufferBEFromBigInt(num, length) { // Ensure the hex string length is even if (hex.length % 2 !== 0) hex = '0' + hex; // Convert hex string to a byte array - const byteArray = hex.match(/.{1,2}/g).map(byte => parseInt(byte, 16)); + const byteArray = hex.match(/.{1,2}/g).map(byte => Number.parseInt(byte, 16)); // Ensure the byte array is of the specified length while (byteArray.length < length) { byteArray.unshift(0); // Prepend with zeroes if shorter than required length From d06584ebf90603a2cebd48c5c02c3f0e560a8a62 Mon Sep 17 00:00:00 2001 From: Nate Date: Fri, 11 Oct 2024 09:51:52 -0700 Subject: [PATCH 19/28] trivial - add linting to playground (#1426) * add basic linting to playground * lint testapp as part of ci --- .github/workflows/main.yml | 23 ++++ examples/testapp/.eslintrc.js | 87 ++++++++++++++ examples/testapp/src/components/Layout.tsx | 1 - .../MethodsSection/MethodsSection.tsx | 16 +-- .../components/RpcMethods/RpcMethodCard.tsx | 86 +++++++------- .../RpcMethods/method/signMessageMethods.ts | 8 +- .../src/components/SDKConfig/SDKConfig.tsx | 39 +++--- .../context/CBWSDKReactContextProvider.tsx | 112 +++++++----------- examples/testapp/src/pages/index.tsx | 59 ++++----- 9 files changed, 249 insertions(+), 182 deletions(-) create mode 100644 examples/testapp/.eslintrc.js diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 96d937489f..2984fa9149 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -84,3 +84,26 @@ jobs: - name: Run Unit Tests run: yarn test + + lint-testapp: + name: Lint Testapp + runs-on: ubuntu-latest + defaults: + run: + working-directory: ./examples/testapp + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Checkout node action + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + cache-dependency-path: 'yarn.lock' + + - name: Install NPM dependencies + run: yarn install --immutable + + - name: eslint + run: yarn lint diff --git a/examples/testapp/.eslintrc.js b/examples/testapp/.eslintrc.js new file mode 100644 index 0000000000..b681ca8163 --- /dev/null +++ b/examples/testapp/.eslintrc.js @@ -0,0 +1,87 @@ +module.exports = { + root: true, + extends: [ + 'preact', + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', + ], + settings: { + react: { + pragma: 'h', + }, + }, + env: { + browser: true, + es2021: true, + node: true, + commonjs: true, + }, + plugins: ['@typescript-eslint', 'simple-import-sort', 'unused-imports', 'prettier'], + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + }, + rules: { + '@typescript-eslint/no-unused-vars': 'off', + 'simple-import-sort/imports': [ + 'error', + { + groups: [['^\\u0000'], ['^@?\\w'], ['^src(/.*|$)']], + }, + ], + 'simple-import-sort/exports': 'error', + 'no-unused-vars': 'off', + 'unused-imports/no-unused-imports': 'error', + 'unused-imports/no-unused-vars': [ + 'error', + { + vars: 'all', + varsIgnorePattern: '^_', + args: 'after-used', + argsIgnorePattern: '^_', + }, + ], + 'no-console': [ + 'error', + { + allow: ['warn', 'error', 'info'], + }, + ], + 'prettier/prettier': [ + 'error', + { + arrowParens: 'always', + bracketSpacing: true, + endOfLine: 'lf', + htmlWhitespaceSensitivity: 'css', + printWidth: 100, + quoteProps: 'as-needed', + semi: true, + singleQuote: true, + tabWidth: 2, + trailingComma: 'es5', + useTabs: false, + }, + ], + // TODO: change this back to error + '@typescript-eslint/no-explicit-any': 'warn', + 'no-useless-constructor': 'off', + 'no-restricted-globals': [ + 'error', + { + name: 'parseInt', + message: 'Use Number.parseInt instead of parseInt.', + }, + ], + }, + overrides: [ + { + files: ['**/*.test.*'], + rules: { + '@typescript-eslint/no-explicit-any': 'off', + }, + }, + ], +}; diff --git a/examples/testapp/src/components/Layout.tsx b/examples/testapp/src/components/Layout.tsx index 5fe74e5e30..5ff0f98189 100644 --- a/examples/testapp/src/components/Layout.tsx +++ b/examples/testapp/src/components/Layout.tsx @@ -22,7 +22,6 @@ import { useMemo } from 'react'; import { options, scwUrls, sdkVersions, useCBWSDK } from '../context/CBWSDKReactContextProvider'; - type LayoutProps = { children: React.ReactNode; }; diff --git a/examples/testapp/src/components/MethodsSection/MethodsSection.tsx b/examples/testapp/src/components/MethodsSection/MethodsSection.tsx index fc0350dd4b..9085d00c86 100644 --- a/examples/testapp/src/components/MethodsSection/MethodsSection.tsx +++ b/examples/testapp/src/components/MethodsSection/MethodsSection.tsx @@ -1,9 +1,9 @@ -import { Box, Grid, GridItem, Heading } from "@chakra-ui/react"; -import React from "react"; +import { Box, Grid, GridItem, Heading } from '@chakra-ui/react'; +import React from 'react'; -import { RpcRequestInput } from "../RpcMethods/method/RpcRequestInput"; -import { RpcMethodCard } from "../RpcMethods/RpcMethodCard"; -import { ShortcutType } from "../RpcMethods/shortcut/ShortcutType"; +import { RpcRequestInput } from '../RpcMethods/method/RpcRequestInput'; +import { RpcMethodCard } from '../RpcMethods/RpcMethodCard'; +import { ShortcutType } from '../RpcMethods/shortcut/ShortcutType'; export function MethodsSection({ title, @@ -20,9 +20,9 @@ export function MethodsSection({ diff --git a/examples/testapp/src/components/RpcMethods/RpcMethodCard.tsx b/examples/testapp/src/components/RpcMethods/RpcMethodCard.tsx index 4eddbb50d1..2d59b154a8 100644 --- a/examples/testapp/src/components/RpcMethods/RpcMethodCard.tsx +++ b/examples/testapp/src/components/RpcMethods/RpcMethodCard.tsx @@ -62,7 +62,7 @@ export function RpcMethodCard({ format, method, params, shortcuts }) { return; } }, - [provider] + [method, provider] ); const submit = useCallback( @@ -101,7 +101,7 @@ export function RpcMethodCard({ format, method, params, shortcuts }) { setError({ code, message, data }); } }, - [provider] + [format, method, provider, verify] ); return ( @@ -116,57 +116,55 @@ export function RpcMethodCard({ format, method, params, shortcuts }) { {params?.length > 0 && ( - <> - + + + + + Params + + + + + + {params.map((param) => { + const err = errors[param.key]; + return ( + + + {param.key} + + + {err?.message as string} + + ); + })} + + + + {shortcuts?.length > 0 && ( - Params + Shortcuts - - {params.map((param) => { - const err = errors[param.key]; - return ( - - - {param.key} - - - {err?.message as string} - - ); - })} - + + {shortcuts.map((shortcut) => ( + + ))} + - {shortcuts?.length > 0 && ( - - - - Shortcuts - - - - - - {shortcuts.map((shortcut) => ( - - ))} - - - - )} - - + )} + )} {response && ( diff --git a/examples/testapp/src/components/RpcMethods/method/signMessageMethods.ts b/examples/testapp/src/components/RpcMethods/method/signMessageMethods.ts index 8f8e9fd6d5..c591647f6e 100644 --- a/examples/testapp/src/components/RpcMethods/method/signMessageMethods.ts +++ b/examples/testapp/src/components/RpcMethods/method/signMessageMethods.ts @@ -89,9 +89,8 @@ export const verifySignMsg = async ({ }); if (valid) { return `SigUtil Successfully verified signer as ${from}`; - } else { - return `SigUtil Failed to verify signer`; } + return 'SigUtil Failed to verify signer'; } case 'eth_signTypedData_v1': case 'eth_signTypedData_v3': @@ -104,16 +103,17 @@ export const verifySignMsg = async ({ const valid = await client.verifyTypedData({ address: from as `0x${string}`, domain: message['domain'] as TypedDataDomain, + // eslint-disable-next-line @typescript-eslint/no-explicit-any types: message['types'] as any, primaryType: message['primaryType'] as string, + // eslint-disable-next-line @typescript-eslint/no-explicit-any message: message['message'] as any, signature: sign as `0x${string}`, }); if (valid) { return `SigUtil Successfully verified signer as ${from}`; - } else { - return `SigUtil Failed to verify signer`; } + return 'SigUtil Failed to verify signer'; } default: return null; diff --git a/examples/testapp/src/components/SDKConfig/SDKConfig.tsx b/examples/testapp/src/components/SDKConfig/SDKConfig.tsx index 7d20b2610c..692e3aaf3a 100644 --- a/examples/testapp/src/components/SDKConfig/SDKConfig.tsx +++ b/examples/testapp/src/components/SDKConfig/SDKConfig.tsx @@ -7,17 +7,14 @@ import { FormControl, Heading, Input, - Text, Switch, -} from "@chakra-ui/react"; -import React, { useCallback, useMemo, useState } from "react"; -import { useCBWSDK } from "../../context/CBWSDKReactContextProvider"; -import { Preference } from "@coinbase/wallet-sdk/dist/core/provider/interface"; -import { keccak256, slice, toHex } from "viem"; + Text, +} from '@chakra-ui/react'; +import { Preference } from '@coinbase/wallet-sdk/dist/core/provider/interface'; +import React, { useCallback, useMemo, useState } from 'react'; +import { keccak256, slice, toHex } from 'viem'; -function is0xString(value: string): value is `0x${string}` { - return value.startsWith("0x"); -} +import { useCBWSDK } from '../../context/CBWSDKReactContextProvider'; function computeDataSuffix(value: string): string { return slice(keccak256(toHex(value)), 0, 16); @@ -37,7 +34,7 @@ export function SDKConfig() { }; setConfig(config_); }, - [config] + [config, setConfig] ); const handleSetDataSuffix = useCallback( @@ -51,7 +48,7 @@ export function SDKConfig() { }, })); }, - [] + [setConfig] ); const sixteenByteHex = useMemo( @@ -60,7 +57,7 @@ export function SDKConfig() { ); const attributionAuto = useMemo(() => { - return "auto" in config.attribution && config.attribution?.auto; + return 'auto' in config.attribution && config.attribution?.auto; }, [config.attribution]); return ( @@ -76,10 +73,7 @@ export function SDKConfig() { - + @@ -87,13 +81,13 @@ export function SDKConfig() { @@ -102,9 +96,8 @@ export function SDKConfig() { attribution.dataSuffix - First 16 bytes of a unique string to identify your onchain - activity. Update the text box below to have your data suffix - applied + First 16 bytes of a unique string to identify your onchain activity. Update the text + box below to have your data suffix applied { - const communicator = (window.ethereum as any).communicator; + const communicator = window.ethereum.communicator; if (communicator) { communicator.url = new URL(url); } @@ -52,12 +43,8 @@ if (typeof window !== "undefined") { } export function CBWSDKReactContextProvider({ children }: CBWSDKProviderProps) { - const [version, setVersion] = React.useState( - undefined - ); - const [option, setOption] = React.useState( - undefined - ); + const [version, setVersion] = React.useState(undefined); + const [option, setOption] = React.useState(undefined); const [config, setConfig] = React.useState({ options: option, attribution: { @@ -70,13 +57,9 @@ export function CBWSDKReactContextProvider({ children }: CBWSDKProviderProps) { useEffect(() => { if (version === undefined) { - const savedVersion = localStorage.getItem( - SELECTED_SDK_KEY - ) as SDKVersionType; + const savedVersion = localStorage.getItem(SELECTED_SDK_KEY) as SDKVersionType; setVersion( - sdkVersions.includes(savedVersion) - ? (savedVersion as SDKVersionType) - : sdkVersions[0] + sdkVersions.includes(savedVersion) ? (savedVersion as SDKVersionType) : sdkVersions[0] ); } }, [version]); @@ -84,52 +67,47 @@ export function CBWSDKReactContextProvider({ children }: CBWSDKProviderProps) { useEffect(() => { if (option === undefined) { const option = localStorage.getItem(OPTIONS_KEY) as OptionsType; - setOption(options.includes(option) ? (option as OptionsType) : "all"); + setOption(options.includes(option) ? (option as OptionsType) : 'all'); } }, [option]); useEffect(() => { if (scwUrl === undefined) { - const savedScwUrl = localStorage.getItem( - SELECTED_SCW_URL_KEY - ) as ScwUrlType; - setScwUrl( - scwUrls.includes(savedScwUrl) ? (savedScwUrl as ScwUrlType) : scwUrls[0] - ); + const savedScwUrl = localStorage.getItem(SELECTED_SCW_URL_KEY) as ScwUrlType; + setScwUrl(scwUrls.includes(savedScwUrl) ? (savedScwUrl as ScwUrlType) : scwUrls[0]); } }, [scwUrl]); useEffect(() => { + // biome-ignore lint/suspicious/noImplicitAnyLet: let cbwsdk; let preference: Preference | string; - if (version === "HEAD" || version === latestPkgJson.version) { - const SDK = - version === "HEAD" ? CoinbaseWalletSDKHEAD : CoinbaseWalletSDKLatest; + if (version === 'HEAD' || version === latestPkgJson.version) { + const SDK = version === 'HEAD' ? CoinbaseWalletSDKHEAD : CoinbaseWalletSDKLatest; cbwsdk = new SDK({ - appName: "SDK Playground", + appName: 'SDK Playground', appChainIds: [84532, 8452], }); - if (version === "HEAD") { + if (version === 'HEAD') { preference = { options: option, attribution: config.attribution }; } else { preference = { options: option }; } setSdk(cbwsdk); - } else if (version === "3.9.3" || version === "3.7.2") { - const SDK = - version === "3.9.3" ? CoinbaseWalletSDK393 : CoinbaseWalletSDK372; + } else if (version === '3.9.3' || version === '3.7.2') { + const SDK = version === '3.9.3' ? CoinbaseWalletSDK393 : CoinbaseWalletSDK372; cbwsdk = new SDK({ - appName: "Test App", + appName: 'Test App', enableMobileWalletLink: true, }); - preference = "jsonRpcUrlMock"; + preference = 'jsonRpcUrlMock'; setSdk(cbwsdk); } if (!cbwsdk) { return; } const cbwprovider = cbwsdk.makeWeb3Provider(preference); - cbwprovider.on("disconnect", () => { + cbwprovider.on('disconnect', () => { location.reload(); }); window.ethereum = cbwprovider; @@ -137,25 +115,25 @@ export function CBWSDKReactContextProvider({ children }: CBWSDKProviderProps) { }, [version, option, config]); useEffect(() => { - if (version === "HEAD" || version === latestPkgJson.version) { + if (version === 'HEAD' || version === latestPkgJson.version) { if (scwUrl) window.setPopupUrl?.(scwUrl); } - }, [version, scwUrl, sdk]); + }, [version, scwUrl]); - const setPreference = (option: OptionsType) => { + const setPreference = useCallback((option: OptionsType) => { localStorage.setItem(OPTIONS_KEY, option); setOption(option); - }; + }, []); - const setSDKVersion = (version: SDKVersionType) => { + const setSDKVersion = useCallback((version: SDKVersionType) => { localStorage.setItem(SELECTED_SDK_KEY, version); setVersion(version); - }; + }, []); - const setScwUrlAndSave = (url: ScwUrlType) => { + const setScwUrlAndSave = useCallback((url: ScwUrlType) => { localStorage.setItem(SELECTED_SCW_URL_KEY, url); setScwUrl(url); - }; + }, []); const ctx = useMemo( () => ({ @@ -184,17 +162,13 @@ export function CBWSDKReactContextProvider({ children }: CBWSDKProviderProps) { ] ); - return ( - - {children} - - ); + return {children}; } export function useCBWSDK() { const context = React.useContext(CBWSDKReactContext); if (context === undefined) { - throw new Error("useCBWSDK must be used within a CBWSDKProvider"); + throw new Error('useCBWSDK must be used within a CBWSDKProvider'); } return context; } diff --git a/examples/testapp/src/pages/index.tsx b/examples/testapp/src/pages/index.tsx index 1d7aef09bf..bdba68ef31 100644 --- a/examples/testapp/src/pages/index.tsx +++ b/examples/testapp/src/pages/index.tsx @@ -1,28 +1,26 @@ -import { Box, Container, Grid, Heading } from "@chakra-ui/react"; -import React, { useEffect } from "react"; +import { Box, Container, Grid, Heading } from '@chakra-ui/react'; +import React, { useEffect } from 'react'; -import { EventListenersCard } from "../components/EventListeners/EventListenersCard"; -import { WIDTH_2XL } from "../components/Layout"; -import { connectionMethods } from "../components/RpcMethods/method/connectionMethods"; -import { multiChainMethods } from "../components/RpcMethods/method/multiChainMethods"; -import { readonlyJsonRpcMethods } from "../components/RpcMethods/method/readonlyJsonRpcMethods"; -import { sendMethods } from "../components/RpcMethods/method/sendMethods"; -import { signMessageMethods } from "../components/RpcMethods/method/signMessageMethods"; -import { walletTxMethods } from "../components/RpcMethods/method/walletTxMethods"; -import { multiChainShortcutsMap } from "../components/RpcMethods/shortcut/multipleChainShortcuts"; -import { readonlyJsonRpcShortcutsMap } from "../components/RpcMethods/shortcut/readonlyJsonRpcShortcuts"; -import { sendShortcutsMap } from "../components/RpcMethods/shortcut/sendShortcuts"; -import { signMessageShortcutsMap } from "../components/RpcMethods/shortcut/signMessageShortcuts"; -import { walletTxShortcutsMap } from "../components/RpcMethods/shortcut/walletTxShortcuts"; -import { useCBWSDK } from "../context/CBWSDKReactContextProvider"; -import { MethodsSection } from "../components/MethodsSection/MethodsSection"; -import { SDKConfig } from "../components/SDKConfig/SDKConfig"; +import { EventListenersCard } from '../components/EventListeners/EventListenersCard'; +import { WIDTH_2XL } from '../components/Layout'; +import { MethodsSection } from '../components/MethodsSection/MethodsSection'; +import { connectionMethods } from '../components/RpcMethods/method/connectionMethods'; +import { multiChainMethods } from '../components/RpcMethods/method/multiChainMethods'; +import { readonlyJsonRpcMethods } from '../components/RpcMethods/method/readonlyJsonRpcMethods'; +import { sendMethods } from '../components/RpcMethods/method/sendMethods'; +import { signMessageMethods } from '../components/RpcMethods/method/signMessageMethods'; +import { walletTxMethods } from '../components/RpcMethods/method/walletTxMethods'; +import { multiChainShortcutsMap } from '../components/RpcMethods/shortcut/multipleChainShortcuts'; +import { readonlyJsonRpcShortcutsMap } from '../components/RpcMethods/shortcut/readonlyJsonRpcShortcuts'; +import { sendShortcutsMap } from '../components/RpcMethods/shortcut/sendShortcuts'; +import { signMessageShortcutsMap } from '../components/RpcMethods/shortcut/signMessageShortcuts'; +import { walletTxShortcutsMap } from '../components/RpcMethods/shortcut/walletTxShortcuts'; +import { SDKConfig } from '../components/SDKConfig/SDKConfig'; +import { useCBWSDK } from '../context/CBWSDKReactContextProvider'; export default function Home() { const { provider, sdkVersion } = useCBWSDK(); - const [connected, setConnected] = React.useState( - Boolean(provider?.connected) - ); + const [connected, setConnected] = React.useState(Boolean(provider?.connected)); const [chainId, setChainId] = React.useState(undefined); // This is for Extension compatibility, Extension with SDK3.9 does not emit connect event // correctly, so we manually check if the extension is connected, and set the connected state @@ -33,36 +31,35 @@ export default function Home() { }, []); useEffect(() => { - provider?.on("connect", () => { + provider?.on('connect', () => { setConnected(true); }); - provider?.on("chainChanged", (newChainId) => { + provider?.on('chainChanged', (newChainId) => { setChainId(newChainId); }); }, [provider]); useEffect(() => { if (connected) { - provider?.request({ method: "eth_chainId" }).then((chainId) => { + provider?.request({ method: 'eth_chainId' }).then((chainId) => { setChainId(Number.parseInt(chainId, 16)); }); } }, [connected, provider]); // There's a bug in 3.9.3 where it does not emit a 'connect' event for walletlink connections - const shouldShowMethodsRequiringConnection = - connected || sdkVersion === "3.9.3"; + const shouldShowMethodsRequiringConnection = connected || sdkVersion === '3.9.3'; return ( Event Listeners - + {/* TODO: once published have this include latest */} - {sdkVersion === "HEAD" && ( + {sdkVersion === 'HEAD' && ( <> SDK Configuration (Optional) @@ -85,11 +82,7 @@ export default function Home() { methods={signMessageMethods} shortcutsMap={signMessageShortcutsMap(chainId)} /> - + Date: Wed, 16 Oct 2024 11:03:20 -0700 Subject: [PATCH 20/28] Web SDK sending info via searchParams (#1427) * Web SDK sending info via searchParams * rename checkCrossOriginOpenerPolicyCompatibility * checkCrossOriginOpenerPolicy returns policy * sdk-info.ts * yarn prebuild * remove LIB prefix * comments * dont format yml * getter return undefined * error handling + pathname * test --- .github/workflows/versioning.yml | 4 +- packages/wallet-sdk/package.json | 2 +- .../wallet-sdk/src/CoinbaseWalletSDK.test.ts | 2 +- packages/wallet-sdk/src/CoinbaseWalletSDK.ts | 12 ++-- .../core/communicator/Communicator.test.ts | 8 +-- .../src/core/communicator/Communicator.ts | 4 +- .../wallet-sdk/src/core/error/serialize.ts | 4 +- .../src/createCoinbaseWalletSDK.test.ts | 2 +- .../wallet-sdk/src/createCoinbaseWalletSDK.ts | 6 +- packages/wallet-sdk/src/sdk-info.ts | 2 + ...s => checkCrossOriginOpenerPolicy.test.ts} | 27 ++++++-- .../src/util/checkCrossOriginOpenerPolicy.ts | 62 +++++++++++++++++++ .../src/util/crossOriginOpenerPolicy.ts | 15 ----- packages/wallet-sdk/src/util/provider.ts | 8 ++- packages/wallet-sdk/src/util/web.test.ts | 14 +++++ packages/wallet-sdk/src/util/web.ts | 24 +++++-- packages/wallet-sdk/src/version.ts | 1 - 17 files changed, 144 insertions(+), 53 deletions(-) create mode 100644 packages/wallet-sdk/src/sdk-info.ts rename packages/wallet-sdk/src/util/{crossOriginOpenerPolicy.test.ts => checkCrossOriginOpenerPolicy.test.ts} (63%) create mode 100644 packages/wallet-sdk/src/util/checkCrossOriginOpenerPolicy.ts delete mode 100644 packages/wallet-sdk/src/util/crossOriginOpenerPolicy.ts delete mode 100644 packages/wallet-sdk/src/version.ts diff --git a/.github/workflows/versioning.yml b/.github/workflows/versioning.yml index b85546e75a..1a0ed710fb 100644 --- a/.github/workflows/versioning.yml +++ b/.github/workflows/versioning.yml @@ -45,8 +45,8 @@ jobs: - name: Install NPM dependencies run: yarn install --immutable - - - name: Update version.ts file + + - name: Update sdk-info.ts file run: yarn prebuild - name: Commit and branch updated version diff --git a/packages/wallet-sdk/package.json b/packages/wallet-sdk/package.json index 736245164a..f4c3a02a90 100644 --- a/packages/wallet-sdk/package.json +++ b/packages/wallet-sdk/package.json @@ -21,7 +21,7 @@ "pretest": "node compile-assets.js", "test": "jest", "test:coverage": "yarn test:unit && open coverage/lcov-report/index.html", - "prebuild": "rm -rf ./dist && node -p \"'export const LIB_VERSION = \\'' + require('./package.json').version + '\\';'\" > src/version.ts", + "prebuild": "rm -rf ./dist && node -p \"'export const VERSION = \\'' + require('./package.json').version + '\\';\\nexport const NAME = \\'' + require('./package.json').name + '\\';'\" > src/sdk-info.ts", "build": "node compile-assets.js && tsc -p ./tsconfig.build.json && tsc-alias && cp -a src/vendor-js dist", "dev": "yarn build && tsc --watch & nodemon --watch dist --delay 1 --exec tsc-alias", "typecheck": "tsc --noEmit", diff --git a/packages/wallet-sdk/src/CoinbaseWalletSDK.test.ts b/packages/wallet-sdk/src/CoinbaseWalletSDK.test.ts index ade93c5caa..70bb0bba15 100644 --- a/packages/wallet-sdk/src/CoinbaseWalletSDK.test.ts +++ b/packages/wallet-sdk/src/CoinbaseWalletSDK.test.ts @@ -7,7 +7,7 @@ import { getCoinbaseInjectedProvider } from ':util/provider'; jest.mock(':core/type/util'); jest.mock(':util/provider'); jest.mock('./CoinbaseWalletProvider'); -jest.mock('./util/crossOriginOpenerPolicy'); +jest.mock('./util/checkCrossOriginOpenerPolicy'); describe('CoinbaseWalletSDK', () => { test('@makeWeb3Provider - return Coinbase Injected Provider', () => { diff --git a/packages/wallet-sdk/src/CoinbaseWalletSDK.ts b/packages/wallet-sdk/src/CoinbaseWalletSDK.ts index b7fcb03046..543a1f8636 100644 --- a/packages/wallet-sdk/src/CoinbaseWalletSDK.ts +++ b/packages/wallet-sdk/src/CoinbaseWalletSDK.ts @@ -3,10 +3,10 @@ import { LogoType, walletLogo } from './assets/wallet-logo'; import { CoinbaseWalletProvider } from './CoinbaseWalletProvider'; import { AppMetadata, Preference, ProviderInterface } from './core/provider/interface'; -import { LIB_VERSION } from './version'; +import { VERSION } from './sdk-info'; import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; import { getFavicon } from ':core/type/util'; -import { checkCrossOriginOpenerPolicy } from ':util/crossOriginOpenerPolicy'; +import { checkCrossOriginOpenerPolicy } from ':util/checkCrossOriginOpenerPolicy'; import { getCoinbaseInjectedProvider } from ':util/provider'; import { validatePreferences } from ':util/validatePreferences'; @@ -29,7 +29,7 @@ export class CoinbaseWalletSDK { appChainIds: metadata.appChainIds || [], }; this.storeLatestVersion(); - this.checkCrossOriginOpenerPolicy(); + void checkCrossOriginOpenerPolicy(); } public makeWeb3Provider(preference: Preference = { options: 'all' }): ProviderInterface { @@ -50,10 +50,6 @@ export class CoinbaseWalletSDK { private storeLatestVersion() { const versionStorage = new ScopedLocalStorage('CBWSDK'); - versionStorage.setItem('VERSION', LIB_VERSION); - } - - private checkCrossOriginOpenerPolicy() { - void checkCrossOriginOpenerPolicy(); + versionStorage.setItem('VERSION', VERSION); } } diff --git a/packages/wallet-sdk/src/core/communicator/Communicator.test.ts b/packages/wallet-sdk/src/core/communicator/Communicator.test.ts index 3616a5e570..5fd91a52f2 100644 --- a/packages/wallet-sdk/src/core/communicator/Communicator.test.ts +++ b/packages/wallet-sdk/src/core/communicator/Communicator.test.ts @@ -1,6 +1,6 @@ import { AppMetadata, Preference } from 'src/index'; -import { LIB_VERSION } from '../../version'; +import { VERSION } from '../../sdk-info'; import { Message, MessageID } from '../message'; import { Communicator } from './Communicator'; import { CB_KEYS_URL } from ':core/constants'; @@ -113,7 +113,7 @@ describe('Communicator', () => { 1, { data: { - version: LIB_VERSION, + version: VERSION, metadata: appMetadata, preference, }, @@ -140,7 +140,7 @@ describe('Communicator', () => { 1, { data: { - version: LIB_VERSION, + version: VERSION, metadata: appMetadata, preference, }, @@ -162,7 +162,7 @@ describe('Communicator', () => { 1, { data: { - version: LIB_VERSION, + version: VERSION, metadata: appMetadata, preference, }, diff --git a/packages/wallet-sdk/src/core/communicator/Communicator.ts b/packages/wallet-sdk/src/core/communicator/Communicator.ts index 88908297f1..69beb52d78 100644 --- a/packages/wallet-sdk/src/core/communicator/Communicator.ts +++ b/packages/wallet-sdk/src/core/communicator/Communicator.ts @@ -1,4 +1,4 @@ -import { LIB_VERSION } from '../../version'; +import { VERSION } from '../../sdk-info'; import { ConfigMessage, Message, MessageID } from '../message'; import { CB_KEYS_URL } from ':core/constants'; import { standardErrors } from ':core/error'; @@ -109,7 +109,7 @@ export class Communicator { this.postMessage({ requestId: message.id, data: { - version: LIB_VERSION, + version: VERSION, metadata: this.metadata, preference: this.preference, }, diff --git a/packages/wallet-sdk/src/core/error/serialize.ts b/packages/wallet-sdk/src/core/error/serialize.ts index 2ade9e1551..1e12b82718 100644 --- a/packages/wallet-sdk/src/core/error/serialize.ts +++ b/packages/wallet-sdk/src/core/error/serialize.ts @@ -1,6 +1,6 @@ // TODO: error should not depend on walletlink. revisit this. +import { VERSION } from '../../sdk-info'; import { isErrorResponse, Web3Response } from '../../sign/walletlink/relay/type/Web3Response'; -import { LIB_VERSION } from '../../version'; import { standardErrorCodes } from './constants'; import { serialize } from './utils'; @@ -15,7 +15,7 @@ export function serializeError(error: unknown) { }); const docUrl = new URL('https://docs.cloud.coinbase.com/wallet-sdk/docs/errors'); - docUrl.searchParams.set('version', LIB_VERSION); + docUrl.searchParams.set('version', VERSION); docUrl.searchParams.set('code', serialized.code.toString()); docUrl.searchParams.set('message', serialized.message); diff --git a/packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts b/packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts index fab27c2096..bf490ac171 100644 --- a/packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts +++ b/packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts @@ -7,7 +7,7 @@ const options: CreateCoinbaseWalletSDKOptions = { preference: { options: 'all' }, }; -jest.mock('./util/crossOriginOpenerPolicy'); +jest.mock('./util/checkCrossOriginOpenerPolicy'); describe('createCoinbaseWalletSDK', () => { it('should return an object with a getProvider method', () => { diff --git a/packages/wallet-sdk/src/createCoinbaseWalletSDK.ts b/packages/wallet-sdk/src/createCoinbaseWalletSDK.ts index 45f42ddea1..e48c5726ae 100644 --- a/packages/wallet-sdk/src/createCoinbaseWalletSDK.ts +++ b/packages/wallet-sdk/src/createCoinbaseWalletSDK.ts @@ -1,5 +1,5 @@ import { createCoinbaseWalletProvider } from './createCoinbaseWalletProvider'; -import { LIB_VERSION } from './version'; +import { VERSION } from './sdk-info'; import { AppMetadata, ConstructorOptions, @@ -7,7 +7,7 @@ import { ProviderInterface, } from ':core/provider/interface'; import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; -import { checkCrossOriginOpenerPolicy } from ':util/crossOriginOpenerPolicy'; +import { checkCrossOriginOpenerPolicy } from ':util/checkCrossOriginOpenerPolicy'; import { validatePreferences } from ':util/validatePreferences'; export type CreateCoinbaseWalletSDKOptions = Partial & { @@ -25,7 +25,7 @@ const DEFAULT_PREFERENCE: Preference = { */ export function createCoinbaseWalletSDK(params: CreateCoinbaseWalletSDKOptions) { const versionStorage = new ScopedLocalStorage('CBWSDK'); - versionStorage.setItem('VERSION', LIB_VERSION); + versionStorage.setItem('VERSION', VERSION); void checkCrossOriginOpenerPolicy(); diff --git a/packages/wallet-sdk/src/sdk-info.ts b/packages/wallet-sdk/src/sdk-info.ts new file mode 100644 index 0000000000..e6a4e08a5d --- /dev/null +++ b/packages/wallet-sdk/src/sdk-info.ts @@ -0,0 +1,2 @@ +export const VERSION = '4.1.0'; +export const NAME = '@coinbase/wallet-sdk'; diff --git a/packages/wallet-sdk/src/util/crossOriginOpenerPolicy.test.ts b/packages/wallet-sdk/src/util/checkCrossOriginOpenerPolicy.test.ts similarity index 63% rename from packages/wallet-sdk/src/util/crossOriginOpenerPolicy.test.ts rename to packages/wallet-sdk/src/util/checkCrossOriginOpenerPolicy.test.ts index 6fbfee569b..467388c7d6 100644 --- a/packages/wallet-sdk/src/util/crossOriginOpenerPolicy.test.ts +++ b/packages/wallet-sdk/src/util/checkCrossOriginOpenerPolicy.test.ts @@ -1,4 +1,7 @@ -import { checkCrossOriginOpenerPolicy } from './crossOriginOpenerPolicy'; +import { + checkCrossOriginOpenerPolicy, + getCrossOriginOpenerPolicy, +} from './checkCrossOriginOpenerPolicy'; describe('checkCrossOriginOpenerPolicy', () => { beforeEach(() => { @@ -6,27 +9,33 @@ describe('checkCrossOriginOpenerPolicy', () => { jest.clearAllMocks(); }); - it('should not run if window is undefined', () => { + it('should return non-browser-env if window is undefined', async () => { const originalWindow = global.window; // @ts-expect-error delete window property delete global.window; - expect(checkCrossOriginOpenerPolicy()).toBeUndefined(); + await checkCrossOriginOpenerPolicy(); + + expect(getCrossOriginOpenerPolicy()).toBe('non-browser-env'); // Restore the original window object global.window = originalWindow; }); - it('should fetch the current origin', async () => { + it('should fetch the current origin and pathname', async () => { global.fetch = jest.fn().mockResolvedValue({ headers: { get: jest.fn().mockReturnValue(null), }, + ok: true, }); checkCrossOriginOpenerPolicy(); - expect(global.fetch).toHaveBeenCalledWith(window.location.origin, {}); + expect(global.fetch).toHaveBeenCalledWith( + `${window.location.origin}${window.location.pathname}`, + { method: 'HEAD' } + ); }); it('should log an error if Cross-Origin-Opener-Policy is same-origin', async () => { @@ -35,29 +44,35 @@ describe('checkCrossOriginOpenerPolicy', () => { headers: { get: jest.fn().mockReturnValue('same-origin'), }, + ok: true, }); await checkCrossOriginOpenerPolicy(); + const result = getCrossOriginOpenerPolicy(); expect(consoleErrorSpy).toHaveBeenCalledWith( expect.stringContaining( "Coinbase Wallet SDK requires the Cross-Origin-Opener-Policy header to not be set to 'same-origin'." ) ); + expect(result).toBe('same-origin'); consoleErrorSpy.mockRestore(); }); - it('should not log an error if Cross-Origin-Opener-Policy is not same-origin', async () => { + it('should return true and not log an error if Cross-Origin-Opener-Policy is not same-origin', async () => { const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {}); global.fetch = jest.fn().mockResolvedValue({ headers: { get: jest.fn().mockReturnValue('unsafe-none'), }, + ok: true, }); await checkCrossOriginOpenerPolicy(); + const result = getCrossOriginOpenerPolicy(); expect(consoleErrorSpy).not.toHaveBeenCalled(); + expect(result).toBe('unsafe-none'); consoleErrorSpy.mockRestore(); }); }); diff --git a/packages/wallet-sdk/src/util/checkCrossOriginOpenerPolicy.ts b/packages/wallet-sdk/src/util/checkCrossOriginOpenerPolicy.ts new file mode 100644 index 0000000000..41b4f5c957 --- /dev/null +++ b/packages/wallet-sdk/src/util/checkCrossOriginOpenerPolicy.ts @@ -0,0 +1,62 @@ +const COOP_ERROR_MESSAGE = `Coinbase Wallet SDK requires the Cross-Origin-Opener-Policy header to not be set to 'same-origin'. This is to ensure that the SDK can communicate with the Coinbase Smart Wallet app. + +Please see https://www.smartwallet.dev/guides/tips/popup-tips#cross-origin-opener-policy for more information.`; + +/** + * Creates a checker for the Cross-Origin-Opener-Policy (COOP). + * + * @returns An object with methods to get and check the Cross-Origin-Opener-Policy. + * + * @method getCrossOriginOpenerPolicy + * Retrieves current Cross-Origin-Opener-Policy. + * @throws Will throw an error if the policy has not been checked yet. + * + * @method checkCrossOriginOpenerPolicy + * Checks the Cross-Origin-Opener-Policy of the current environment. + * If in a non-browser environment, sets the policy to 'non-browser-env'. + * If in a browser environment, fetches the policy from the current origin. + * Logs an error if the policy is 'same-origin'. + */ +const createCoopChecker = () => { + let crossOriginOpenerPolicy: string | undefined; + + return { + getCrossOriginOpenerPolicy: () => { + if (crossOriginOpenerPolicy === undefined) { + return 'undefined'; + } + + return crossOriginOpenerPolicy; + }, + checkCrossOriginOpenerPolicy: async () => { + if (typeof window === 'undefined') { + // Non-browser environment + crossOriginOpenerPolicy = 'non-browser-env'; + return; + } + + try { + const url = `${window.location.origin}${window.location.pathname}`; + const response = await fetch(url, { + method: 'HEAD', + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const result = response.headers.get('Cross-Origin-Opener-Policy'); + crossOriginOpenerPolicy = result ?? 'null'; + + if (crossOriginOpenerPolicy === 'same-origin') { + console.error(COOP_ERROR_MESSAGE); + } + } catch (error) { + console.error('Error checking Cross-Origin-Opener-Policy:', (error as Error).message); + crossOriginOpenerPolicy = 'error'; + } + }, + }; +}; + +export const { checkCrossOriginOpenerPolicy, getCrossOriginOpenerPolicy } = createCoopChecker(); diff --git a/packages/wallet-sdk/src/util/crossOriginOpenerPolicy.ts b/packages/wallet-sdk/src/util/crossOriginOpenerPolicy.ts deleted file mode 100644 index 0d9e282ba0..0000000000 --- a/packages/wallet-sdk/src/util/crossOriginOpenerPolicy.ts +++ /dev/null @@ -1,15 +0,0 @@ -export function checkCrossOriginOpenerPolicy() { - if (typeof window === 'undefined') { - return; - } - - fetch(window.location.origin, {}).then((response) => { - const headers = response.headers; - const crossOriginOpenerPolicy = headers.get('Cross-Origin-Opener-Policy'); - if (crossOriginOpenerPolicy === 'same-origin') { - console.error(`Coinbase Wallet SDK requires the Cross-Origin-Opener-Policy header to not be set to 'same-origin'. This is to ensure that the SDK can communicate with the Coinbase Smart Wallet app. - -Please see https://www.smartwallet.dev/guides/tips/popup-tips#cross-origin-opener-policy for more information.`); - } - }); -} diff --git a/packages/wallet-sdk/src/util/provider.ts b/packages/wallet-sdk/src/util/provider.ts index 9ea783ac0f..ed3239cfe9 100644 --- a/packages/wallet-sdk/src/util/provider.ts +++ b/packages/wallet-sdk/src/util/provider.ts @@ -1,4 +1,4 @@ -import { LIB_VERSION } from '../version'; +import { NAME, VERSION } from '../sdk-info'; import { standardErrors } from ':core/error'; import { ConstructorOptions, ProviderInterface, RequestArguments } from ':core/provider/interface'; @@ -12,7 +12,11 @@ export async function fetchRPCRequest(request: RequestArguments, rpcUrl: string) method: 'POST', body: JSON.stringify(requestBody), mode: 'cors', - headers: { 'Content-Type': 'application/json', 'X-Cbw-Sdk-Version': LIB_VERSION }, + headers: { + 'Content-Type': 'application/json', + 'X-Cbw-Sdk-Version': VERSION, + 'X-Cbw-Sdk-Platform': NAME, + }, }); const { result, error } = await res.json(); if (error) throw error; diff --git a/packages/wallet-sdk/src/util/web.test.ts b/packages/wallet-sdk/src/util/web.test.ts index cbfd4ec40f..dacfd7a5bf 100644 --- a/packages/wallet-sdk/src/util/web.test.ts +++ b/packages/wallet-sdk/src/util/web.test.ts @@ -1,6 +1,14 @@ +import { NAME, VERSION } from 'src/sdk-info'; + +import { getCrossOriginOpenerPolicy } from './checkCrossOriginOpenerPolicy'; import { closePopup, openPopup } from './web'; import { standardErrors } from ':core/error'; +jest.mock('./checkCrossOriginOpenerPolicy'); +(getCrossOriginOpenerPolicy as jest.Mock).mockReturnValue('null'); + +const mockOrigin = 'http://localhost'; + describe('PopupManager', () => { beforeAll(() => { global.window = Object.create(window); @@ -11,6 +19,7 @@ describe('PopupManager', () => { screenY: { value: 0 }, open: { value: jest.fn() }, close: { value: jest.fn() }, + location: { value: { origin: mockOrigin } }, }); }); @@ -31,6 +40,11 @@ describe('PopupManager', () => { 'width=420, height=540, left=302, top=114' ); expect(popup.focus).toHaveBeenCalledTimes(1); + + expect(url.searchParams.get('sdkName')).toBe(NAME); + expect(url.searchParams.get('sdkVersion')).toBe(VERSION); + expect(url.searchParams.get('origin')).toBe(mockOrigin); + expect(url.searchParams.get('coop')).toBe('null'); }); it('should throw an error if popup fails to open', () => { diff --git a/packages/wallet-sdk/src/util/web.ts b/packages/wallet-sdk/src/util/web.ts index 70b8032f9e..982c121446 100644 --- a/packages/wallet-sdk/src/util/web.ts +++ b/packages/wallet-sdk/src/util/web.ts @@ -1,3 +1,5 @@ +import { NAME, VERSION } from '../sdk-info'; +import { getCrossOriginOpenerPolicy } from './checkCrossOriginOpenerPolicy'; import { standardErrors } from ':core/error'; const POPUP_WIDTH = 420; @@ -9,15 +11,20 @@ export function openPopup(url: URL): Window { const left = (window.innerWidth - POPUP_WIDTH) / 2 + window.screenX; const top = (window.innerHeight - POPUP_HEIGHT) / 2 + window.screenY; + appendAppInfoQueryParams(url); + const popup = window.open( url, 'Smart Wallet', `width=${POPUP_WIDTH}, height=${POPUP_HEIGHT}, left=${left}, top=${top}` ); + popup?.focus(); + if (!popup) { throw standardErrors.rpc.internal('Pop up window failed to open'); } + return popup; } @@ -27,8 +34,15 @@ export function closePopup(popup: Window | null) { } } -/** - * TODO: consolidate all UI related helper functions, - * ones making window.xxx() document.yyy() calls. - * e.g. WLMobileRelayUI, WalletLinkRelay, ... - */ +function appendAppInfoQueryParams(url: URL) { + const params = { + sdkName: NAME, + sdkVersion: VERSION, + origin: window.location.origin, + coop: getCrossOriginOpenerPolicy(), + }; + + for (const [key, value] of Object.entries(params)) { + url.searchParams.append(key, value.toString()); + } +} diff --git a/packages/wallet-sdk/src/version.ts b/packages/wallet-sdk/src/version.ts deleted file mode 100644 index c2a0f8b068..0000000000 --- a/packages/wallet-sdk/src/version.ts +++ /dev/null @@ -1 +0,0 @@ -export const LIB_VERSION = '4.1.0'; From bb531e34133fde40f53229966812b77a6e5a2626 Mon Sep 17 00:00:00 2001 From: cb-jake <95890768+cb-jake@users.noreply.github.com> Date: Wed, 16 Oct 2024 20:36:23 -0600 Subject: [PATCH 21/28] fix: project module resolution (#1428) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: fix nodenext module resolution; jest → vitest; remove barrel files * fix * chore: tweaks * fix * lint * fix imports * fix lint --------- Co-authored-by: jxom Co-authored-by: jxom --- .github/workflows/main.yml | 4 +- examples/testapp/.eslintrc.js | 2 +- .../{.eslintrc.js => .eslintrc.cjs} | 1 + packages/wallet-sdk/.npmignore | 9 +- packages/wallet-sdk/babel.config.js | 22 - .../{compile-assets.js => compile-assets.cjs} | 0 packages/wallet-sdk/jest.config.ts | 62 - packages/wallet-sdk/jest.setup.ts | 11 - packages/wallet-sdk/package.json | 39 +- .../src/CoinbaseWalletProvider.test.ts | 35 +- .../wallet-sdk/src/CoinbaseWalletProvider.ts | 21 +- .../wallet-sdk/src/CoinbaseWalletSDK.test.ts | 28 +- packages/wallet-sdk/src/CoinbaseWalletSDK.ts | 18 +- .../core/communicator/Communicator.test.ts | 46 +- .../src/core/communicator/Communicator.ts | 13 +- packages/wallet-sdk/src/core/error/errors.ts | 4 +- packages/wallet-sdk/src/core/error/index.ts | 3 - .../src/core/error/serialize.test.ts | 8 +- .../wallet-sdk/src/core/error/serialize.ts | 8 +- .../wallet-sdk/src/core/error/utils.test.ts | 8 +- packages/wallet-sdk/src/core/error/utils.ts | 2 +- .../src/core/message/ConfigMessage.ts | 2 +- .../wallet-sdk/src/core/message/RPCMessage.ts | 6 +- .../wallet-sdk/src/core/message/RPCRequest.ts | 2 +- .../src/core/message/RPCResponse.ts | 2 +- packages/wallet-sdk/src/core/message/index.ts | 5 - .../core/storage/ScopedLocalStorage.test.ts | 2 +- .../wallet-sdk/src/core/type/util.test.ts | 6 +- packages/wallet-sdk/src/core/type/util.ts | 4 +- .../src/createCoinbaseWalletProvider.test.ts | 6 +- .../src/createCoinbaseWalletProvider.ts | 6 +- .../src/createCoinbaseWalletSDK.test.ts | 7 +- .../wallet-sdk/src/createCoinbaseWalletSDK.ts | 12 +- packages/wallet-sdk/src/index.ts | 10 +- packages/wallet-sdk/src/sign/interface.ts | 2 +- .../src/sign/scw/SCWKeyManager.test.ts | 4 +- .../wallet-sdk/src/sign/scw/SCWKeyManager.ts | 4 +- .../wallet-sdk/src/sign/scw/SCWSigner.test.ts | 84 +- packages/wallet-sdk/src/sign/scw/SCWSigner.ts | 24 +- packages/wallet-sdk/src/sign/util.test.ts | 26 +- packages/wallet-sdk/src/sign/util.ts | 15 +- .../sign/walletlink/WalletLinkSigner.test.ts | 55 +- .../src/sign/walletlink/WalletLinkSigner.ts | 30 +- .../relay/RelayEventManager.test.ts | 2 +- .../walletlink/relay/RelayEventManager.ts | 4 +- .../walletlink/relay/WalletLinkRelay.test.ts | 34 +- .../sign/walletlink/relay/WalletLinkRelay.ts | 34 +- .../relay/connection/WalletLinkCipher.test.ts | 4 +- .../relay/connection/WalletLinkCipher.ts | 2 +- .../connection/WalletLinkConnection.test.ts | 47 +- .../relay/connection/WalletLinkConnection.ts | 20 +- .../relay/connection/WalletLinkHTTP.test.ts | 14 +- .../relay/connection/WalletLinkHTTP.ts | 2 +- .../connection/WalletLinkWebSocket.test.ts | 21 +- .../relay/connection/WalletLinkWebSocket.ts | 2 +- .../src/sign/walletlink/relay/mocks/relay.ts | 8 +- .../walletlink/relay/type/ClientMessage.ts | 2 +- .../relay/type/EthereumTransactionParams.ts | 2 +- .../walletlink/relay/type/ServerMessage.ts | 2 +- .../relay/type/WalletLinkEventData.ts | 4 +- .../relay/type/WalletLinkSession.ts | 4 +- .../sign/walletlink/relay/type/Web3Request.ts | 2 +- .../walletlink/relay/type/Web3Response.ts | 4 +- .../walletlink/relay/ui/WLMobileRelayUI.ts | 8 +- .../relay/ui/WalletLinkRelayUI.test.ts | 9 +- .../walletlink/relay/ui/WalletLinkRelayUI.ts | 6 +- .../RedirectDialog/RedirectDialog.tsx | 10 +- .../ui/components/Snackbar/Snackbar.test.tsx | 9 +- .../relay/ui/components/Snackbar/Snackbar.tsx | 6 +- .../Snackbar/SnackbarContainer.test.tsx | 15 +- .../relay/ui/components/cssReset/cssReset.ts | 2 +- .../relay/ui/components/util.test.ts | 2 +- .../util/checkCrossOriginOpenerPolicy.test.ts | 26 +- packages/wallet-sdk/src/util/cipher.test.ts | 4 +- packages/wallet-sdk/src/util/cipher.ts | 8 +- packages/wallet-sdk/src/util/provider.test.ts | 14 +- packages/wallet-sdk/src/util/provider.ts | 10 +- .../src/util/validatePreferences.test.ts | 4 +- .../src/util/validatePreferences.ts | 2 +- packages/wallet-sdk/src/util/web.test.ts | 25 +- packages/wallet-sdk/src/util/web.ts | 6 +- .../eth-eip712-util/{abi.js => abi.cjs} | 2 +- .../eth-eip712-util/{index.js => index.cjs} | 4 +- .../eth-eip712-util/{util.js => util.cjs} | 0 packages/wallet-sdk/tsconfig.base.json | 2 +- packages/wallet-sdk/tsconfig.build.json | 3 +- packages/wallet-sdk/vitest.config.ts | 13 + yarn.lock | 6022 +++++++---------- 88 files changed, 2826 insertions(+), 4258 deletions(-) rename packages/wallet-sdk/{.eslintrc.js => .eslintrc.cjs} (97%) delete mode 100644 packages/wallet-sdk/babel.config.js rename packages/wallet-sdk/{compile-assets.js => compile-assets.cjs} (100%) delete mode 100644 packages/wallet-sdk/jest.config.ts delete mode 100644 packages/wallet-sdk/jest.setup.ts delete mode 100644 packages/wallet-sdk/src/core/error/index.ts delete mode 100644 packages/wallet-sdk/src/core/message/index.ts rename packages/wallet-sdk/src/vendor-js/eth-eip712-util/{abi.js => abi.cjs} (99%) rename packages/wallet-sdk/src/vendor-js/eth-eip712-util/{index.js => index.cjs} (99%) rename packages/wallet-sdk/src/vendor-js/eth-eip712-util/{util.js => util.cjs} (100%) create mode 100644 packages/wallet-sdk/vitest.config.ts diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2984fa9149..6df40729ad 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -50,7 +50,7 @@ jobs: run: yarn install --immutable - name: Runs compile asset script - run: node ./compile-assets.js + run: node ./compile-assets.cjs - name: Check Types run: yarn typecheck @@ -80,7 +80,7 @@ jobs: run: yarn install --immutable - name: Runs compile asset script - run: node ./compile-assets.js + run: node ./compile-assets.cjs - name: Run Unit Tests run: yarn test diff --git a/examples/testapp/.eslintrc.js b/examples/testapp/.eslintrc.js index b681ca8163..3bd3c1898f 100644 --- a/examples/testapp/.eslintrc.js +++ b/examples/testapp/.eslintrc.js @@ -1,5 +1,4 @@ module.exports = { - root: true, extends: [ 'preact', 'eslint:recommended', @@ -68,6 +67,7 @@ module.exports = { // TODO: change this back to error '@typescript-eslint/no-explicit-any': 'warn', 'no-useless-constructor': 'off', + 'jest/no-deprecated-functions': 'off', 'no-restricted-globals': [ 'error', { diff --git a/packages/wallet-sdk/.eslintrc.js b/packages/wallet-sdk/.eslintrc.cjs similarity index 97% rename from packages/wallet-sdk/.eslintrc.js rename to packages/wallet-sdk/.eslintrc.cjs index b681ca8163..423ca3b6ce 100644 --- a/packages/wallet-sdk/.eslintrc.js +++ b/packages/wallet-sdk/.eslintrc.cjs @@ -68,6 +68,7 @@ module.exports = { // TODO: change this back to error '@typescript-eslint/no-explicit-any': 'warn', 'no-useless-constructor': 'off', + 'jest/no-deprecated-functions': 'off', 'no-restricted-globals': [ 'error', { diff --git a/packages/wallet-sdk/.npmignore b/packages/wallet-sdk/.npmignore index e3dd85f90a..c3c4e5489c 100644 --- a/packages/wallet-sdk/.npmignore +++ b/packages/wallet-sdk/.npmignore @@ -10,12 +10,11 @@ tsconfig.build.json .eslintignore .eslintrc.js .prettierignore -babel.config.js release.sh -# Jest -jest.setup.ts -jest.config.ts +# Vitest +vitest.setup.ts +vitest.config.ts coverage/** -compile-assets.js +compile-assets.cjs diff --git a/packages/wallet-sdk/babel.config.js b/packages/wallet-sdk/babel.config.js deleted file mode 100644 index 7361ec684d..0000000000 --- a/packages/wallet-sdk/babel.config.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - presets: [ - ['@babel/preset-env', { targets: { node: 'current' } }], - [ - '@babel/preset-typescript', - { - jsxPragma: 'h', - jsxPragmaFrag: 'Fragment', - }, - ], - ], - plugins: [ - [ - '@babel/plugin-transform-react-jsx', - { - pragma: 'h', - pragmaFrag: 'Fragment', - }, - ], - ['@babel/plugin-proposal-decorators', { legacy: true }], - ], -}; diff --git a/packages/wallet-sdk/compile-assets.js b/packages/wallet-sdk/compile-assets.cjs similarity index 100% rename from packages/wallet-sdk/compile-assets.js rename to packages/wallet-sdk/compile-assets.cjs diff --git a/packages/wallet-sdk/jest.config.ts b/packages/wallet-sdk/jest.config.ts deleted file mode 100644 index 88b727f67b..0000000000 --- a/packages/wallet-sdk/jest.config.ts +++ /dev/null @@ -1,62 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ - -export default { - // Automatically clear mock calls, instances and results before every test - clearMocks: true, - - // Indicates whether the coverage information should be collected while executing the test - collectCoverage: true, - - // An array of glob patterns indicating a set of files for which coverage information should be collected - collectCoverageFrom: ['./src/**/*.ts'], - // The directory where Jest should output its coverage files - coverageDirectory: 'coverage', - - // An array of regexp pattern strings used to skip coverage collection - coveragePathIgnorePatterns: ['/node_modules/', 'vendor-js/', 'assets/', 'walletlink/relay/'], - - // A list of reporter names that Jest uses when writing coverage reports - coverageReporters: ['json', 'text', 'text-summary', 'lcov'], - - // TODO: Increase threshold as additional tests are added - coverageThreshold: { - global: { - branches: 71, - functions: 81, - statements: 82, - }, - }, - - // An array of file extensions your modules use - moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx', 'json', 'node'], - - // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module - moduleNameMapper: { - '^src/(.*)$': '/src/$1', - '^:core/(.*)$': '/src/core/$1', - '^:util/(.*)$': '/src/util/$1', - }, - - // A list of paths to directories that Jest should use to search for files in - roots: ['/src'], - - // A list of paths to modules that run some code to configure or set up the testing framework before each test - setupFilesAfterEnv: ['/jest.setup.ts'], - - // The test environment that will be used for testing - testEnvironment: 'jsdom', - - // The glob patterns Jest uses to detect test files - testMatch: ['/src/**/*.test.[tj]s?(x)'], - - // A map from regular expressions to paths to transformers - transform: { - '^.+\\.(js|ts|tsx)$': ['babel-jest'], - }, - - // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation - testPathIgnorePatterns: ['/node_modules/', '/build/'], -}; diff --git a/packages/wallet-sdk/jest.setup.ts b/packages/wallet-sdk/jest.setup.ts deleted file mode 100644 index 96203be767..0000000000 --- a/packages/wallet-sdk/jest.setup.ts +++ /dev/null @@ -1,11 +0,0 @@ -import '@testing-library/jest-dom'; - -import { Crypto } from '@peculiar/webcrypto'; -import { TextDecoder, TextEncoder } from 'util'; - -global.crypto = new Crypto(); - -global.TextEncoder = TextEncoder; - -// @ts-expect-error Use util TextDecoder -global.TextDecoder = TextDecoder; diff --git a/packages/wallet-sdk/package.json b/packages/wallet-sdk/package.json index f4c3a02a90..fead608373 100644 --- a/packages/wallet-sdk/package.json +++ b/packages/wallet-sdk/package.json @@ -11,6 +11,7 @@ "walletlink", "web3" ], + "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", "sideEffects": false, @@ -18,35 +19,30 @@ "author": "Coinbase, Inc.", "license": "Apache-2.0", "scripts": { - "pretest": "node compile-assets.js", - "test": "jest", + "pretest": "node compile-assets.cjs", + "test": "vitest", "test:coverage": "yarn test:unit && open coverage/lcov-report/index.html", "prebuild": "rm -rf ./dist && node -p \"'export const VERSION = \\'' + require('./package.json').version + '\\';\\nexport const NAME = \\'' + require('./package.json').name + '\\';'\" > src/sdk-info.ts", - "build": "node compile-assets.js && tsc -p ./tsconfig.build.json && tsc-alias && cp -a src/vendor-js dist", + "build": "node compile-assets.cjs && tsc -p ./tsconfig.build.json && tsc-alias && cp -a src/vendor-js dist", "dev": "yarn build && tsc --watch & nodemon --watch dist --delay 1 --exec tsc-alias", "typecheck": "tsc --noEmit", - "lint": "eslint . --ext .ts,.tsx --fix" + "lint": "eslint . --ext .ts,.tsx --fix", + "size": "size-limit" }, "dependencies": { "@noble/hashes": "^1.4.0", "clsx": "^1.2.1", "eventemitter3": "^5.0.1", - "preact": "^10.16.0" + "preact": "^10.24.2", + "vitest": "^2.1.2" }, "devDependencies": { - "@babel/core": "^7.22.9", - "@babel/plugin-proposal-decorators": "^7.22.7", - "@babel/plugin-transform-react-jsx": "^7.22.5", - "@babel/preset-env": "^7.22.9", - "@babel/preset-typescript": "^7.22.5", - "@peculiar/webcrypto": "^1.4.3", + "@size-limit/preset-big-lib": "^11.1.6", "@testing-library/jest-dom": "^6.5.0", - "@testing-library/preact": "^2.0.1", - "@types/jest": "^27.5.2", + "@testing-library/preact": "^3.2.4", "@types/node": "^14.18.54", "@typescript-eslint/eslint-plugin": "^6.2.0", "@typescript-eslint/parser": "^6.2.0", - "babel-jest": "^27.5.1", "eslint": "^8.45.0", "eslint-config-preact": "^1.3.0", "eslint-config-prettier": "^8.8.0", @@ -54,16 +50,21 @@ "eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-unused-imports": "^3.0.0", "glob": "^11.0.0", - "jest": "^27.5.1", - "jest-chrome": "^0.7.2", "jest-websocket-mock": "^2.4.0", + "jsdom": "^25.0.1", "nodemon": "^3.1.0", "prettier": "^3.0.0", "sass": "^1.64.1", - "ts-jest": "^27.1.5", - "ts-node": "^10.9.1", + "size-limit": "^11.1.6", "tsc-alias": "^1.8.8", "tslib": "^2.6.0", "typescript": "^5.1.6" - } + }, + "size-limit": [ + { + "path": "./dist/index.js", + "limit": "31 KB", + "import": "*" + } + ] } diff --git a/packages/wallet-sdk/src/CoinbaseWalletProvider.test.ts b/packages/wallet-sdk/src/CoinbaseWalletProvider.test.ts index e75097ac27..23226feece 100644 --- a/packages/wallet-sdk/src/CoinbaseWalletProvider.test.ts +++ b/packages/wallet-sdk/src/CoinbaseWalletProvider.test.ts @@ -1,8 +1,9 @@ -import { CoinbaseWalletProvider } from './CoinbaseWalletProvider'; -import { standardErrorCodes, standardErrors } from './core/error'; -import * as util from './sign/util'; -import { ProviderEventCallback, RequestArguments } from ':core/provider/interface'; -import { AddressString } from ':core/type'; +import { CoinbaseWalletProvider } from './CoinbaseWalletProvider.js'; +import * as util from './sign/util.js'; +import { standardErrorCodes } from ':core/error/constants.js'; +import { standardErrors } from ':core/error/errors.js'; +import { ProviderEventCallback, RequestArguments } from ':core/provider/interface.js'; +import { AddressString } from ':core/type/index.js'; function createProvider() { return new CoinbaseWalletProvider({ @@ -11,19 +12,19 @@ function createProvider() { }); } -const mockHandshake = jest.fn(); -const mockRequest = jest.fn(); -const mockCleanup = jest.fn(); -const mockFetchSignerType = jest.spyOn(util, 'fetchSignerType'); -const mockStoreSignerType = jest.spyOn(util, 'storeSignerType'); -const mockLoadSignerType = jest.spyOn(util, 'loadSignerType'); +const mockHandshake = vi.fn(); +const mockRequest = vi.fn(); +const mockCleanup = vi.fn(); +const mockFetchSignerType = vi.spyOn(util, 'fetchSignerType'); +const mockStoreSignerType = vi.spyOn(util, 'storeSignerType'); +const mockLoadSignerType = vi.spyOn(util, 'loadSignerType'); let provider: CoinbaseWalletProvider; let callback: ProviderEventCallback; beforeEach(() => { - jest.resetAllMocks(); - jest.spyOn(util, 'createSigner').mockImplementation((params) => { + vi.resetAllMocks(); + vi.spyOn(util, 'createSigner').mockImplementation((params) => { callback = params.callback; return { accounts: [AddressString('0x123')], @@ -39,7 +40,7 @@ beforeEach(() => { describe('Event handling', () => { it('emits disconnect event on user initiated disconnection', async () => { - const disconnectListener = jest.fn(); + const disconnectListener = vi.fn(); provider.on('disconnect', disconnectListener); await provider.disconnect(); @@ -50,7 +51,7 @@ describe('Event handling', () => { }); it('should emit chainChanged event on chainId change', async () => { - const chainChangedListener = jest.fn(); + const chainChangedListener = vi.fn(); provider.on('chainChanged', chainChangedListener); await provider.request({ method: 'eth_requestAccounts' }); @@ -60,7 +61,7 @@ describe('Event handling', () => { }); it('should emit accountsChanged event on account change', async () => { - const accountsChangedListener = jest.fn(); + const accountsChangedListener = vi.fn(); provider.on('accountsChanged', accountsChangedListener); await provider.request({ method: 'eth_requestAccounts' }); @@ -106,7 +107,7 @@ describe('Signer configuration', () => { it('should support enable', async () => { mockFetchSignerType.mockResolvedValue('scw'); - jest.spyOn(console, 'warn').mockImplementation(); + vi.spyOn(console, 'warn').mockImplementation(() => {}); await provider.enable(); expect(mockHandshake).toHaveBeenCalledWith({ method: 'eth_requestAccounts' }); diff --git a/packages/wallet-sdk/src/CoinbaseWalletProvider.ts b/packages/wallet-sdk/src/CoinbaseWalletProvider.ts index 355f7ccf98..9c69649a22 100644 --- a/packages/wallet-sdk/src/CoinbaseWalletProvider.ts +++ b/packages/wallet-sdk/src/CoinbaseWalletProvider.ts @@ -1,5 +1,10 @@ -import { standardErrorCodes, standardErrors } from './core/error'; -import { serializeError } from './core/error/serialize'; +import { Signer } from './sign/interface.js'; +import { createSigner, fetchSignerType, loadSignerType, storeSignerType } from './sign/util.js'; +import { Communicator } from ':core/communicator/Communicator.js'; +import { standardErrorCodes } from ':core/error/constants.js'; +import { standardErrors } from ':core/error/errors.js'; +import { serializeError } from ':core/error/serialize.js'; +import { SignerType } from ':core/message/ConfigMessage.js'; import { AppMetadata, ConstructorOptions, @@ -7,14 +12,10 @@ import { ProviderEventEmitter, ProviderInterface, RequestArguments, -} from './core/provider/interface'; -import { Signer } from './sign/interface'; -import { createSigner, fetchSignerType, loadSignerType, storeSignerType } from './sign/util'; -import { checkErrorForInvalidRequestArgs } from './util/provider'; -import { Communicator } from ':core/communicator/Communicator'; -import { SignerType } from ':core/message'; -import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; -import { hexStringFromNumber } from ':core/type/util'; +} from ':core/provider/interface.js'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; +import { hexStringFromNumber } from ':core/type/util.js'; +import { checkErrorForInvalidRequestArgs } from ':util/provider.js'; export class CoinbaseWalletProvider extends ProviderEventEmitter implements ProviderInterface { private readonly metadata: AppMetadata; diff --git a/packages/wallet-sdk/src/CoinbaseWalletSDK.test.ts b/packages/wallet-sdk/src/CoinbaseWalletSDK.test.ts index 70bb0bba15..a9d67a6cb4 100644 --- a/packages/wallet-sdk/src/CoinbaseWalletSDK.test.ts +++ b/packages/wallet-sdk/src/CoinbaseWalletSDK.test.ts @@ -1,18 +1,20 @@ -import { CoinbaseWalletProvider } from './CoinbaseWalletProvider'; -import { CoinbaseWalletSDK } from './CoinbaseWalletSDK'; -import { ProviderInterface } from ':core/provider/interface'; -import { getFavicon } from ':core/type/util'; -import { getCoinbaseInjectedProvider } from ':util/provider'; +import { Mock } from 'vitest'; -jest.mock(':core/type/util'); -jest.mock(':util/provider'); -jest.mock('./CoinbaseWalletProvider'); -jest.mock('./util/checkCrossOriginOpenerPolicy'); +import { CoinbaseWalletProvider } from './CoinbaseWalletProvider.js'; +import { CoinbaseWalletSDK } from './CoinbaseWalletSDK.js'; +import { ProviderInterface } from ':core/provider/interface.js'; +import { getFavicon } from ':core/type/util.js'; +import { getCoinbaseInjectedProvider } from ':util/provider.js'; + +vi.mock(':core/type/util'); +vi.mock(':util/provider'); +vi.mock('./CoinbaseWalletProvider'); +vi.mock('./util/checkCrossOriginOpenerPolicy'); describe('CoinbaseWalletSDK', () => { test('@makeWeb3Provider - return Coinbase Injected Provider', () => { const injectedProvider = {} as unknown as ProviderInterface; - (getCoinbaseInjectedProvider as jest.Mock).mockReturnValue(injectedProvider); + (getCoinbaseInjectedProvider as Mock).mockReturnValue(injectedProvider); const SDK = new CoinbaseWalletSDK({ appName: 'Test', @@ -23,7 +25,7 @@ describe('CoinbaseWalletSDK', () => { }); test('@makeWeb3Provider - return new CoinbaseWalletProvider', () => { - (getCoinbaseInjectedProvider as jest.Mock).mockReturnValue(undefined); + (getCoinbaseInjectedProvider as Mock).mockReturnValue(undefined); const SDK = new CoinbaseWalletSDK({ appName: 'Test', @@ -45,8 +47,8 @@ describe('CoinbaseWalletSDK', () => { }); test('@makeWeb3Provider - default values for metadata', () => { - (getFavicon as jest.Mock).mockReturnValue('https://dapp.xyz/pic.png'); - (getCoinbaseInjectedProvider as jest.Mock).mockReturnValue(undefined); + (getFavicon as Mock).mockReturnValue('https://dapp.xyz/pic.png'); + (getCoinbaseInjectedProvider as Mock).mockReturnValue(undefined); const SDK = new CoinbaseWalletSDK({ appName: '', diff --git a/packages/wallet-sdk/src/CoinbaseWalletSDK.ts b/packages/wallet-sdk/src/CoinbaseWalletSDK.ts index 543a1f8636..f6dd39ce60 100644 --- a/packages/wallet-sdk/src/CoinbaseWalletSDK.ts +++ b/packages/wallet-sdk/src/CoinbaseWalletSDK.ts @@ -1,14 +1,14 @@ // Copyright (c) 2018-2024 Coinbase, Inc. -import { LogoType, walletLogo } from './assets/wallet-logo'; -import { CoinbaseWalletProvider } from './CoinbaseWalletProvider'; -import { AppMetadata, Preference, ProviderInterface } from './core/provider/interface'; -import { VERSION } from './sdk-info'; -import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; -import { getFavicon } from ':core/type/util'; -import { checkCrossOriginOpenerPolicy } from ':util/checkCrossOriginOpenerPolicy'; -import { getCoinbaseInjectedProvider } from ':util/provider'; -import { validatePreferences } from ':util/validatePreferences'; +import { LogoType, walletLogo } from './assets/wallet-logo.js'; +import { CoinbaseWalletProvider } from './CoinbaseWalletProvider.js'; +import { AppMetadata, Preference, ProviderInterface } from './core/provider/interface.js'; +import { VERSION } from './sdk-info.js'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; +import { getFavicon } from ':core/type/util.js'; +import { checkCrossOriginOpenerPolicy } from ':util/checkCrossOriginOpenerPolicy.js'; +import { getCoinbaseInjectedProvider } from ':util/provider.js'; +import { validatePreferences } from ':util/validatePreferences.js'; // for backwards compatibility type CoinbaseWalletSDKOptions = Partial; diff --git a/packages/wallet-sdk/src/core/communicator/Communicator.test.ts b/packages/wallet-sdk/src/core/communicator/Communicator.test.ts index 5fd91a52f2..23cd750b19 100644 --- a/packages/wallet-sdk/src/core/communicator/Communicator.test.ts +++ b/packages/wallet-sdk/src/core/communicator/Communicator.test.ts @@ -1,13 +1,15 @@ -import { AppMetadata, Preference } from 'src/index'; +import { Mock, vi } from 'vitest'; -import { VERSION } from '../../sdk-info'; -import { Message, MessageID } from '../message'; -import { Communicator } from './Communicator'; -import { CB_KEYS_URL } from ':core/constants'; -import { openPopup } from ':util/web'; +import { AppMetadata, Preference } from 'src/index.js'; -jest.mock(':util/web', () => ({ - openPopup: jest.fn(), +import { VERSION } from '../../sdk-info.js'; +import { Message, MessageID } from '../message/Message.js'; +import { Communicator } from './Communicator.js'; +import { CB_KEYS_URL } from ':core/constants.js'; +import { openPopup } from ':util/web.js'; + +vi.mock(':util/web', () => ({ + openPopup: vi.fn(), })); // Dispatches a message event to simulate postMessage calls from the popup @@ -40,8 +42,8 @@ function queueMessageEvent({ setTimeout(() => dispatchMessageEvent({ data, origin }), 200); } -const addEventListenerSpy = jest.spyOn(window, 'addEventListener'); -const removeEventListenerSpy = jest.spyOn(window, 'removeEventListener'); +const addEventListenerSpy = vi.spyOn(window, 'addEventListener'); +const removeEventListenerSpy = vi.spyOn(window, 'removeEventListener'); const appMetadata: AppMetadata = { appName: 'Test App', @@ -60,7 +62,7 @@ describe('Communicator', () => { >; beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); // url defaults to CB_KEYS_URL communicator = new Communicator({ @@ -71,12 +73,12 @@ describe('Communicator', () => { urlOrigin = new URL(CB_KEYS_URL).origin; mockPopup = { - postMessage: jest.fn(), - close: jest.fn(), + postMessage: vi.fn(), + close: vi.fn(), closed: false, - focus: jest.fn(), + focus: vi.fn(), } as unknown as Window; - (openPopup as jest.Mock).mockImplementation(() => mockPopup); + (openPopup as Mock).mockImplementation(() => mockPopup); }); describe('onMessage', () => { @@ -174,12 +176,12 @@ describe('Communicator', () => { it('should re-focus and return the existing popup window if one is already open.', async () => { mockPopup = { - postMessage: jest.fn(), - close: jest.fn(), + postMessage: vi.fn(), + close: vi.fn(), closed: false, - focus: jest.fn(), + focus: vi.fn(), } as unknown as Window; - (openPopup as jest.Mock).mockImplementationOnce(() => mockPopup); + (openPopup as Mock).mockImplementationOnce(() => mockPopup); queueMessageEvent(popupLoadedMessage); await communicator.waitForPopupLoaded(); @@ -190,12 +192,12 @@ describe('Communicator', () => { it('should open a popup window if an existing one is defined but closed', async () => { mockPopup = { - postMessage: jest.fn(), - close: jest.fn(), + postMessage: vi.fn(), + close: vi.fn(), // Simulate the popup being closed closed: true, } as unknown as Window; - (openPopup as jest.Mock).mockImplementationOnce(() => mockPopup); + (openPopup as Mock).mockImplementationOnce(() => mockPopup); queueMessageEvent(popupLoadedMessage); await communicator.waitForPopupLoaded(); diff --git a/packages/wallet-sdk/src/core/communicator/Communicator.ts b/packages/wallet-sdk/src/core/communicator/Communicator.ts index 69beb52d78..36afc16f21 100644 --- a/packages/wallet-sdk/src/core/communicator/Communicator.ts +++ b/packages/wallet-sdk/src/core/communicator/Communicator.ts @@ -1,9 +1,10 @@ -import { VERSION } from '../../sdk-info'; -import { ConfigMessage, Message, MessageID } from '../message'; -import { CB_KEYS_URL } from ':core/constants'; -import { standardErrors } from ':core/error'; -import { AppMetadata, Preference } from ':core/provider/interface'; -import { closePopup, openPopup } from ':util/web'; +import { VERSION } from '../../sdk-info.js'; +import { ConfigMessage } from '../message/ConfigMessage.js'; +import { Message, MessageID } from '../message/Message.js'; +import { CB_KEYS_URL } from ':core/constants.js'; +import { standardErrors } from ':core/error/errors.js'; +import { AppMetadata, Preference } from ':core/provider/interface.js'; +import { closePopup, openPopup } from ':util/web.js'; export type CommunicatorOptions = { url?: string; diff --git a/packages/wallet-sdk/src/core/error/errors.ts b/packages/wallet-sdk/src/core/error/errors.ts index e90d7c69fd..3152b6118a 100644 --- a/packages/wallet-sdk/src/core/error/errors.ts +++ b/packages/wallet-sdk/src/core/error/errors.ts @@ -1,5 +1,5 @@ -import { standardErrorCodes } from './constants'; -import { getMessageFromCode } from './utils'; +import { standardErrorCodes } from './constants.js'; +import { getMessageFromCode } from './utils.js'; export const standardErrors = { rpc: { diff --git a/packages/wallet-sdk/src/core/error/index.ts b/packages/wallet-sdk/src/core/error/index.ts deleted file mode 100644 index 974e4671bc..0000000000 --- a/packages/wallet-sdk/src/core/error/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { standardErrorCodes } from './constants'; -export { standardErrors } from './errors'; -export type { SerializedEthereumRpcError } from './utils'; diff --git a/packages/wallet-sdk/src/core/error/serialize.test.ts b/packages/wallet-sdk/src/core/error/serialize.test.ts index 9cbcfd6012..3ddac62944 100644 --- a/packages/wallet-sdk/src/core/error/serialize.test.ts +++ b/packages/wallet-sdk/src/core/error/serialize.test.ts @@ -1,7 +1,7 @@ -import { Web3Response } from '../../sign/walletlink/relay/type/Web3Response'; -import { standardErrorCodes } from './constants'; -import { standardErrors } from './errors'; -import { serializeError } from './serialize'; +import { Web3Response } from '../../sign/walletlink/relay/type/Web3Response.js'; +import { standardErrorCodes } from './constants.js'; +import { standardErrors } from './errors.js'; +import { serializeError } from './serialize.js'; describe('serializeError', () => { test('with ErrorResponse object', () => { diff --git a/packages/wallet-sdk/src/core/error/serialize.ts b/packages/wallet-sdk/src/core/error/serialize.ts index 1e12b82718..5e9e9825a7 100644 --- a/packages/wallet-sdk/src/core/error/serialize.ts +++ b/packages/wallet-sdk/src/core/error/serialize.ts @@ -1,8 +1,8 @@ // TODO: error should not depend on walletlink. revisit this. -import { VERSION } from '../../sdk-info'; -import { isErrorResponse, Web3Response } from '../../sign/walletlink/relay/type/Web3Response'; -import { standardErrorCodes } from './constants'; -import { serialize } from './utils'; +import { VERSION } from '../../sdk-info.js'; +import { isErrorResponse, Web3Response } from '../../sign/walletlink/relay/type/Web3Response.js'; +import { standardErrorCodes } from './constants.js'; +import { serialize } from './utils.js'; /** * Serializes an error to a format that is compatible with the Ethereum JSON RPC error format. diff --git a/packages/wallet-sdk/src/core/error/utils.test.ts b/packages/wallet-sdk/src/core/error/utils.test.ts index 84463eac68..0ac34f6a90 100644 --- a/packages/wallet-sdk/src/core/error/utils.test.ts +++ b/packages/wallet-sdk/src/core/error/utils.test.ts @@ -1,7 +1,7 @@ -import { isErrorResponse, Web3Response } from '../../sign/walletlink/relay/type/Web3Response'; -import { standardErrorCodes } from './constants'; -import { standardErrors } from './errors'; -import { getErrorCode, getMessageFromCode } from './utils'; +import { isErrorResponse, Web3Response } from '../../sign/walletlink/relay/type/Web3Response.js'; +import { standardErrorCodes } from './constants.js'; +import { standardErrors } from './errors.js'; +import { getErrorCode, getMessageFromCode } from './utils.js'; describe('errors', () => { test('getErrorCode', () => { diff --git a/packages/wallet-sdk/src/core/error/utils.ts b/packages/wallet-sdk/src/core/error/utils.ts index b6979a9e12..1cdb24e734 100644 --- a/packages/wallet-sdk/src/core/error/utils.ts +++ b/packages/wallet-sdk/src/core/error/utils.ts @@ -1,4 +1,4 @@ -import { errorValues, standardErrorCodes } from './constants'; +import { errorValues, standardErrorCodes } from './constants.js'; const FALLBACK_MESSAGE = 'Unspecified error message.'; diff --git a/packages/wallet-sdk/src/core/message/ConfigMessage.ts b/packages/wallet-sdk/src/core/message/ConfigMessage.ts index a52302f5e5..5c233e0b6b 100644 --- a/packages/wallet-sdk/src/core/message/ConfigMessage.ts +++ b/packages/wallet-sdk/src/core/message/ConfigMessage.ts @@ -1,4 +1,4 @@ -import { Message } from './Message'; +import { Message } from './Message.js'; export interface ConfigMessage extends Message { event: ConfigEvent; diff --git a/packages/wallet-sdk/src/core/message/RPCMessage.ts b/packages/wallet-sdk/src/core/message/RPCMessage.ts index dac6316dea..acc61a5e31 100644 --- a/packages/wallet-sdk/src/core/message/RPCMessage.ts +++ b/packages/wallet-sdk/src/core/message/RPCMessage.ts @@ -1,6 +1,6 @@ -import { Message, MessageID } from './Message'; -import { SerializedEthereumRpcError } from ':core/error'; -import { RequestArguments } from ':core/provider/interface'; +import { SerializedEthereumRpcError } from '../error/utils.js'; +import { Message, MessageID } from './Message.js'; +import { RequestArguments } from ':core/provider/interface.js'; interface RPCMessage extends Message { id: MessageID; diff --git a/packages/wallet-sdk/src/core/message/RPCRequest.ts b/packages/wallet-sdk/src/core/message/RPCRequest.ts index eefdc192c2..9ad26c1bfe 100644 --- a/packages/wallet-sdk/src/core/message/RPCRequest.ts +++ b/packages/wallet-sdk/src/core/message/RPCRequest.ts @@ -1,4 +1,4 @@ -import { RequestArguments } from ':core/provider/interface'; +import { RequestArguments } from ':core/provider/interface.js'; export type RPCRequest = { action: RequestArguments; // JSON-RPC call diff --git a/packages/wallet-sdk/src/core/message/RPCResponse.ts b/packages/wallet-sdk/src/core/message/RPCResponse.ts index d1a2ff4875..7dfe047392 100644 --- a/packages/wallet-sdk/src/core/message/RPCResponse.ts +++ b/packages/wallet-sdk/src/core/message/RPCResponse.ts @@ -1,4 +1,4 @@ -import { SerializedEthereumRpcError } from ':core/error'; +import { SerializedEthereumRpcError } from '../error/utils.js'; export type RPCResponse = { result: diff --git a/packages/wallet-sdk/src/core/message/index.ts b/packages/wallet-sdk/src/core/message/index.ts deleted file mode 100644 index d9ee93dcea..0000000000 --- a/packages/wallet-sdk/src/core/message/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './ConfigMessage'; -export * from './Message'; -export * from './RPCMessage'; -export * from './RPCRequest'; -export * from './RPCResponse'; diff --git a/packages/wallet-sdk/src/core/storage/ScopedLocalStorage.test.ts b/packages/wallet-sdk/src/core/storage/ScopedLocalStorage.test.ts index ea51db5d98..633bd7a8a8 100644 --- a/packages/wallet-sdk/src/core/storage/ScopedLocalStorage.test.ts +++ b/packages/wallet-sdk/src/core/storage/ScopedLocalStorage.test.ts @@ -1,4 +1,4 @@ -import { ScopedLocalStorage } from './ScopedLocalStorage'; +import { ScopedLocalStorage } from './ScopedLocalStorage.js'; describe('ScopedLocalStorage', () => { describe('public methods', () => { diff --git a/packages/wallet-sdk/src/core/type/util.test.ts b/packages/wallet-sdk/src/core/type/util.test.ts index b9ef8f230c..9cf44bad3f 100644 --- a/packages/wallet-sdk/src/core/type/util.test.ts +++ b/packages/wallet-sdk/src/core/type/util.test.ts @@ -1,4 +1,4 @@ -import { HexString } from '.'; +import { HexString } from './index.js'; import { bigIntStringFromBigInt, encodeToHexString, @@ -22,7 +22,7 @@ import { range, strip0x, uint8ArrayToHex, -} from './util'; +} from './util.js'; const uint8ArrVal = new Uint8Array(6); const hexString = 'E556B9bfEFDd5B190c67b521ED0A7d19Ab89a311'; @@ -199,7 +199,7 @@ describe('util', () => { document.head.innerHTML = ` `; - expect(getFavicon()).toEqual('http://localhost/favicon.ico'); + expect(getFavicon()).toEqual('http://localhost:3000/favicon.ico'); }); }); }); diff --git a/packages/wallet-sdk/src/core/type/util.ts b/packages/wallet-sdk/src/core/type/util.ts index 0dede56f59..e8b1b36b34 100644 --- a/packages/wallet-sdk/src/core/type/util.ts +++ b/packages/wallet-sdk/src/core/type/util.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ // Copyright (c) 2018-2023 Coinbase, Inc. -import { standardErrors } from '../error'; -import { AddressString, BigIntString, HexString, IntNumber, RegExpString } from '.'; +import { standardErrors } from '../error/errors.js'; +import { AddressString, BigIntString, HexString, IntNumber, RegExpString } from './index.js'; const INT_STRING_REGEX = /^[0-9]*$/; const HEXADECIMAL_STRING_REGEX = /^[a-f0-9]*$/; diff --git a/packages/wallet-sdk/src/createCoinbaseWalletProvider.test.ts b/packages/wallet-sdk/src/createCoinbaseWalletProvider.test.ts index 01998f2226..54738b501d 100644 --- a/packages/wallet-sdk/src/createCoinbaseWalletProvider.test.ts +++ b/packages/wallet-sdk/src/createCoinbaseWalletProvider.test.ts @@ -1,6 +1,6 @@ -import { CoinbaseWalletProvider } from './CoinbaseWalletProvider'; -import { createCoinbaseWalletProvider } from './createCoinbaseWalletProvider'; -import { ConstructorOptions } from ':core/provider/interface'; +import { CoinbaseWalletProvider } from './CoinbaseWalletProvider.js'; +import { createCoinbaseWalletProvider } from './createCoinbaseWalletProvider.js'; +import { ConstructorOptions } from ':core/provider/interface.js'; describe('createCoinbaseWalletProvider', () => { it('should return a provider', () => { diff --git a/packages/wallet-sdk/src/createCoinbaseWalletProvider.ts b/packages/wallet-sdk/src/createCoinbaseWalletProvider.ts index 61d7cd7bf0..e04887148d 100644 --- a/packages/wallet-sdk/src/createCoinbaseWalletProvider.ts +++ b/packages/wallet-sdk/src/createCoinbaseWalletProvider.ts @@ -1,6 +1,6 @@ -import { CoinbaseWalletProvider } from './CoinbaseWalletProvider'; -import { AppMetadata, ConstructorOptions, Preference } from ':core/provider/interface'; -import { getCoinbaseInjectedProvider } from ':util/provider'; +import { CoinbaseWalletProvider } from './CoinbaseWalletProvider.js'; +import { AppMetadata, ConstructorOptions, Preference } from ':core/provider/interface.js'; +import { getCoinbaseInjectedProvider } from ':util/provider.js'; export type CreateProviderOptions = { metadata: AppMetadata; diff --git a/packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts b/packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts index bf490ac171..1774a68373 100644 --- a/packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts +++ b/packages/wallet-sdk/src/createCoinbaseWalletSDK.test.ts @@ -1,4 +1,7 @@ -import { createCoinbaseWalletSDK, CreateCoinbaseWalletSDKOptions } from './createCoinbaseWalletSDK'; +import { + createCoinbaseWalletSDK, + CreateCoinbaseWalletSDKOptions, +} from './createCoinbaseWalletSDK.js'; const options: CreateCoinbaseWalletSDKOptions = { appName: 'Dapp', @@ -7,7 +10,7 @@ const options: CreateCoinbaseWalletSDKOptions = { preference: { options: 'all' }, }; -jest.mock('./util/checkCrossOriginOpenerPolicy'); +vi.mock('./util/checkCrossOriginOpenerPolicy'); describe('createCoinbaseWalletSDK', () => { it('should return an object with a getProvider method', () => { diff --git a/packages/wallet-sdk/src/createCoinbaseWalletSDK.ts b/packages/wallet-sdk/src/createCoinbaseWalletSDK.ts index e48c5726ae..5864ca5488 100644 --- a/packages/wallet-sdk/src/createCoinbaseWalletSDK.ts +++ b/packages/wallet-sdk/src/createCoinbaseWalletSDK.ts @@ -1,14 +1,14 @@ -import { createCoinbaseWalletProvider } from './createCoinbaseWalletProvider'; -import { VERSION } from './sdk-info'; +import { createCoinbaseWalletProvider } from './createCoinbaseWalletProvider.js'; +import { VERSION } from './sdk-info.js'; import { AppMetadata, ConstructorOptions, Preference, ProviderInterface, -} from ':core/provider/interface'; -import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; -import { checkCrossOriginOpenerPolicy } from ':util/checkCrossOriginOpenerPolicy'; -import { validatePreferences } from ':util/validatePreferences'; +} from ':core/provider/interface.js'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; +import { checkCrossOriginOpenerPolicy } from ':util/checkCrossOriginOpenerPolicy.js'; +import { validatePreferences } from ':util/validatePreferences.js'; export type CreateCoinbaseWalletSDKOptions = Partial & { preference?: Preference; diff --git a/packages/wallet-sdk/src/index.ts b/packages/wallet-sdk/src/index.ts index 803d82da28..8576f8f48b 100644 --- a/packages/wallet-sdk/src/index.ts +++ b/packages/wallet-sdk/src/index.ts @@ -1,8 +1,8 @@ // Copyright (c) 2018-2024 Coinbase, Inc. -import { CoinbaseWalletSDK } from './CoinbaseWalletSDK'; +import { CoinbaseWalletSDK } from './CoinbaseWalletSDK.js'; export default CoinbaseWalletSDK; -export type { CoinbaseWalletProvider } from './CoinbaseWalletProvider'; -export { CoinbaseWalletSDK } from './CoinbaseWalletSDK'; -export type { AppMetadata, Preference, ProviderInterface } from './core/provider/interface'; -export { createCoinbaseWalletSDK } from './createCoinbaseWalletSDK'; +export type { CoinbaseWalletProvider } from './CoinbaseWalletProvider.js'; +export { CoinbaseWalletSDK } from './CoinbaseWalletSDK.js'; +export { createCoinbaseWalletSDK } from './createCoinbaseWalletSDK.js'; +export type { AppMetadata, Preference, ProviderInterface } from ':core/provider/interface.js'; diff --git a/packages/wallet-sdk/src/sign/interface.ts b/packages/wallet-sdk/src/sign/interface.ts index be97b2bf5e..a5d145bd27 100644 --- a/packages/wallet-sdk/src/sign/interface.ts +++ b/packages/wallet-sdk/src/sign/interface.ts @@ -1,4 +1,4 @@ -import { RequestArguments } from ':core/provider/interface'; +import { RequestArguments } from ':core/provider/interface.js'; export interface Signer { handshake(_: RequestArguments): Promise; diff --git a/packages/wallet-sdk/src/sign/scw/SCWKeyManager.test.ts b/packages/wallet-sdk/src/sign/scw/SCWKeyManager.test.ts index 45b644fd3b..520de83a8d 100644 --- a/packages/wallet-sdk/src/sign/scw/SCWKeyManager.test.ts +++ b/packages/wallet-sdk/src/sign/scw/SCWKeyManager.test.ts @@ -1,5 +1,5 @@ -import { SCWKeyManager } from './SCWKeyManager'; -import { generateKeyPair } from ':util/cipher'; +import { SCWKeyManager } from './SCWKeyManager.js'; +import { generateKeyPair } from ':util/cipher.js'; describe('KeyStorage', () => { let keyStorage: SCWKeyManager; diff --git a/packages/wallet-sdk/src/sign/scw/SCWKeyManager.ts b/packages/wallet-sdk/src/sign/scw/SCWKeyManager.ts index c4f0362823..c116c91012 100644 --- a/packages/wallet-sdk/src/sign/scw/SCWKeyManager.ts +++ b/packages/wallet-sdk/src/sign/scw/SCWKeyManager.ts @@ -1,10 +1,10 @@ -import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; import { deriveSharedSecret, exportKeyToHexString, generateKeyPair, importKeyFromHexString, -} from ':util/cipher'; +} from ':util/cipher.js'; interface StorageItem { storageKey: string; diff --git a/packages/wallet-sdk/src/sign/scw/SCWSigner.test.ts b/packages/wallet-sdk/src/sign/scw/SCWSigner.test.ts index 0b9425ae7f..17661fb8e0 100644 --- a/packages/wallet-sdk/src/sign/scw/SCWSigner.test.ts +++ b/packages/wallet-sdk/src/sign/scw/SCWSigner.test.ts @@ -1,36 +1,38 @@ -import { SCWKeyManager } from './SCWKeyManager'; -import { SCWSigner } from './SCWSigner'; -import { Communicator } from ':core/communicator/Communicator'; -import { CB_KEYS_URL } from ':core/constants'; -import { standardErrors } from ':core/error'; -import { EncryptedData, RPCResponseMessage } from ':core/message'; -import { AppMetadata, ProviderEventCallback, RequestArguments } from ':core/provider/interface'; -import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; +import { Mock, Mocked, vi } from 'vitest'; + +import { SCWKeyManager } from './SCWKeyManager.js'; +import { SCWSigner } from './SCWSigner.js'; +import { Communicator } from ':core/communicator/Communicator.js'; +import { CB_KEYS_URL } from ':core/constants.js'; +import { standardErrors } from ':core/error/errors.js'; +import { EncryptedData, RPCResponseMessage } from ':core/message/RPCMessage.js'; +import { AppMetadata, ProviderEventCallback, RequestArguments } from ':core/provider/interface.js'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; import { decryptContent, encryptContent, exportKeyToHexString, importKeyFromHexString, -} from ':util/cipher'; -import { fetchRPCRequest } from ':util/provider'; - -jest.mock(':util/provider'); - -jest.mock('./SCWKeyManager'); -const storageStoreSpy = jest.spyOn(ScopedLocalStorage.prototype, 'storeObject'); -const storageClearSpy = jest.spyOn(ScopedLocalStorage.prototype, 'clear'); -jest.mock(':core/communicator/Communicator', () => ({ - Communicator: jest.fn(() => ({ - postRequestAndWaitForResponse: jest.fn(), - waitForPopupLoaded: jest.fn(), +} from ':util/cipher.js'; +import { fetchRPCRequest } from ':util/provider.js'; + +vi.mock(':util/provider'); + +vi.mock('./SCWKeyManager'); +const storageStoreSpy = vi.spyOn(ScopedLocalStorage.prototype, 'storeObject'); +const storageClearSpy = vi.spyOn(ScopedLocalStorage.prototype, 'clear'); +vi.mock(':core/communicator/Communicator', () => ({ + Communicator: vi.fn(() => ({ + postRequestAndWaitForResponse: vi.fn(), + waitForPopupLoaded: vi.fn(), })), })); -jest.mock(':util/cipher', () => ({ - decryptContent: jest.fn(), - encryptContent: jest.fn(), - exportKeyToHexString: jest.fn(), - importKeyFromHexString: jest.fn(), +vi.mock(':util/cipher', () => ({ + decryptContent: vi.fn(), + encryptContent: vi.fn(), + exportKeyToHexString: vi.fn(), + importKeyFromHexString: vi.fn(), })); const mockCryptoKey = {} as CryptoKey; @@ -53,9 +55,9 @@ const mockSuccessResponse: RPCResponseMessage = { describe('SCWSigner', () => { let signer: SCWSigner; let mockMetadata: AppMetadata; - let mockCommunicator: jest.Mocked; + let mockCommunicator: Mocked; let mockCallback: ProviderEventCallback; - let mockKeyManager: jest.Mocked; + let mockKeyManager: Mocked; beforeEach(() => { mockMetadata = { @@ -68,20 +70,20 @@ describe('SCWSigner', () => { url: CB_KEYS_URL, metadata: mockMetadata, preference: { keysUrl: CB_KEYS_URL, options: 'all' }, - }) as jest.Mocked; + }) as Mocked; mockCommunicator.waitForPopupLoaded.mockResolvedValue({} as Window); mockCommunicator.postRequestAndWaitForResponse.mockResolvedValue(mockSuccessResponse); - mockCallback = jest.fn(); - mockKeyManager = new SCWKeyManager() as jest.Mocked; - (SCWKeyManager as jest.Mock).mockImplementation(() => mockKeyManager); + mockCallback = vi.fn(); + mockKeyManager = new SCWKeyManager() as Mocked; + (SCWKeyManager as Mock).mockImplementation(() => mockKeyManager); storageStoreSpy.mockReset(); - (importKeyFromHexString as jest.Mock).mockResolvedValue(mockCryptoKey); - (exportKeyToHexString as jest.Mock).mockResolvedValueOnce('0xPublicKey'); + (importKeyFromHexString as Mock).mockResolvedValue(mockCryptoKey); + (exportKeyToHexString as Mock).mockResolvedValueOnce('0xPublicKey'); mockKeyManager.getSharedSecret.mockResolvedValue(mockCryptoKey); - (encryptContent as jest.Mock).mockResolvedValueOnce(encryptedData); + (encryptContent as Mock).mockResolvedValueOnce(encryptedData); signer = new SCWSigner({ metadata: mockMetadata, @@ -92,7 +94,7 @@ describe('SCWSigner', () => { describe('handshake', () => { it('should perform a successful handshake', async () => { - (decryptContent as jest.Mock).mockResolvedValueOnce({ + (decryptContent as Mock).mockResolvedValueOnce({ result: { value: ['0xAddress'], }, @@ -140,7 +142,7 @@ describe('SCWSigner', () => { describe('request', () => { beforeAll(() => { - jest.spyOn(ScopedLocalStorage.prototype, 'loadObject').mockImplementation((key) => { + vi.spyOn(ScopedLocalStorage.prototype, 'loadObject').mockImplementation((key) => { switch (key) { case 'accounts': return ['0xAddress']; @@ -153,7 +155,7 @@ describe('SCWSigner', () => { }); afterAll(() => { - jest.spyOn(ScopedLocalStorage.prototype, 'loadObject').mockRestore(); + vi.spyOn(ScopedLocalStorage.prototype, 'loadObject').mockRestore(); }); it('should perform a successful request', async () => { @@ -162,7 +164,7 @@ describe('SCWSigner', () => { params: ['0xMessage', '0xAddress'], }; - (decryptContent as jest.Mock).mockResolvedValueOnce({ + (decryptContent as Mock).mockResolvedValueOnce({ result: { value: '0xSignature', }, @@ -201,7 +203,7 @@ describe('SCWSigner', () => { params: [], }; - (decryptContent as jest.Mock).mockResolvedValueOnce({ + (decryptContent as Mock).mockResolvedValueOnce({ result: { value: '0xSignature', }, @@ -239,7 +241,7 @@ describe('SCWSigner', () => { params: ['0xMessage', '0xAddress'], }; - (decryptContent as jest.Mock).mockResolvedValueOnce({ + (decryptContent as Mock).mockResolvedValueOnce({ result: { error: mockError, }, @@ -254,7 +256,7 @@ describe('SCWSigner', () => { params: [{ chainId: '0x1' }], }; - (decryptContent as jest.Mock).mockResolvedValueOnce({ + (decryptContent as Mock).mockResolvedValueOnce({ result: { value: null, }, diff --git a/packages/wallet-sdk/src/sign/scw/SCWSigner.ts b/packages/wallet-sdk/src/sign/scw/SCWSigner.ts index 461fc3e27f..0c9ea170bf 100644 --- a/packages/wallet-sdk/src/sign/scw/SCWSigner.ts +++ b/packages/wallet-sdk/src/sign/scw/SCWSigner.ts @@ -1,19 +1,21 @@ -import { Signer } from '../interface'; -import { SCWKeyManager } from './SCWKeyManager'; -import { Communicator } from ':core/communicator/Communicator'; -import { standardErrors } from ':core/error'; -import { RPCRequestMessage, RPCResponse, RPCResponseMessage } from ':core/message'; -import { AppMetadata, ProviderEventCallback, RequestArguments } from ':core/provider/interface'; -import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; -import { AddressString } from ':core/type'; -import { ensureIntNumber, hexStringFromNumber } from ':core/type/util'; +import { Signer } from '../interface.js'; +import { SCWKeyManager } from './SCWKeyManager.js'; +import { Communicator } from ':core/communicator/Communicator.js'; +import { standardErrors } from ':core/error/errors.js'; +import { RPCRequestMessage, RPCResponseMessage } from ':core/message/RPCMessage.js'; +import { RPCResponse } from ':core/message/RPCResponse.js'; +import { AppMetadata, ProviderEventCallback, RequestArguments } from ':core/provider/interface.js'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; +import { AddressString } from ':core/type/index.js'; +import { ensureIntNumber, hexStringFromNumber } from ':core/type/util.js'; import { decryptContent, encryptContent, exportKeyToHexString, importKeyFromHexString, -} from ':util/cipher'; -import { fetchRPCRequest } from ':util/provider'; +} from ':util/cipher.js'; +import { fetchRPCRequest } from ':util/provider.js'; + const ACCOUNTS_KEY = 'accounts'; const ACTIVE_CHAIN_STORAGE_KEY = 'activeChain'; const AVAILABLE_CHAINS_STORAGE_KEY = 'availableChains'; diff --git a/packages/wallet-sdk/src/sign/util.test.ts b/packages/wallet-sdk/src/sign/util.test.ts index 0477f9e07a..ab60863f92 100644 --- a/packages/wallet-sdk/src/sign/util.test.ts +++ b/packages/wallet-sdk/src/sign/util.test.ts @@ -1,26 +1,28 @@ -import { fetchSignerType, loadSignerType, storeSignerType } from './util'; -import { Communicator } from ':core/communicator/Communicator'; -import { CB_KEYS_URL } from ':core/constants'; -import { Preference } from ':core/provider/interface'; -import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; +import { Mock, vi } from 'vitest'; -jest.mock(':core/storage/ScopedLocalStorage'); +import { fetchSignerType, loadSignerType, storeSignerType } from './util.js'; +import { Communicator } from ':core/communicator/Communicator.js'; +import { CB_KEYS_URL } from ':core/constants.js'; +import { Preference } from ':core/provider/interface.js'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; + +vi.mock(':core/storage/ScopedLocalStorage'); describe('util', () => { beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe('loadSignerType', () => { it('should load signer type from storage', () => { - (ScopedLocalStorage.prototype.getItem as jest.Mock).mockReturnValue('scw'); + (ScopedLocalStorage.prototype.getItem as Mock).mockReturnValue('scw'); const result = loadSignerType(); expect(result).toBe('scw'); expect(ScopedLocalStorage.prototype.getItem).toHaveBeenCalledWith('SignerType'); }); it('should return null if no signer type is stored', () => { - (ScopedLocalStorage.prototype.getItem as jest.Mock).mockReturnValue(null); + (ScopedLocalStorage.prototype.getItem as Mock).mockReturnValue(null); const result = loadSignerType(); expect(result).toBeNull(); }); @@ -47,8 +49,8 @@ describe('util', () => { metadata, preference: { keysUrl: CB_KEYS_URL, options: 'all' }, }); - communicator.postMessage = jest.fn(); - communicator.onMessage = jest.fn().mockResolvedValue({ + communicator.postMessage = vi.fn(); + communicator.onMessage = vi.fn().mockResolvedValue({ data: 'scw', }); const signerType = await fetchSignerType({ @@ -56,7 +58,7 @@ describe('util', () => { preference, metadata, handshakeRequest: { method: 'eth_requestAccounts' }, - callback: jest.fn(), + callback: vi.fn(), }); expect(signerType).toEqual('scw'); }); diff --git a/packages/wallet-sdk/src/sign/util.ts b/packages/wallet-sdk/src/sign/util.ts index eb25624c1a..087ad4c4df 100644 --- a/packages/wallet-sdk/src/sign/util.ts +++ b/packages/wallet-sdk/src/sign/util.ts @@ -1,15 +1,16 @@ -import { Signer } from './interface'; -import { SCWSigner } from './scw/SCWSigner'; -import { WalletLinkSigner } from './walletlink/WalletLinkSigner'; -import { Communicator } from ':core/communicator/Communicator'; -import { ConfigMessage, MessageID, SignerType } from ':core/message'; +import { Signer } from './interface.js'; +import { SCWSigner } from './scw/SCWSigner.js'; +import { WalletLinkSigner } from './walletlink/WalletLinkSigner.js'; +import { Communicator } from ':core/communicator/Communicator.js'; +import { ConfigMessage, SignerType } from ':core/message/ConfigMessage.js'; +import { MessageID } from ':core/message/Message.js'; import { AppMetadata, Preference, ProviderEventCallback, RequestArguments, -} from ':core/provider/interface'; -import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; +} from ':core/provider/interface.js'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; const SIGNER_TYPE_KEY = 'SignerType'; const storage = new ScopedLocalStorage('CBWSDK', 'SignerConfigurator'); diff --git a/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.test.ts b/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.test.ts index 04e8b3441a..c85309dc1e 100644 --- a/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.test.ts +++ b/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.test.ts @@ -1,25 +1,27 @@ import { fireEvent } from '@testing-library/preact'; - -import eip712 from '../../vendor-js/eth-eip712-util'; -import { LOCAL_STORAGE_ADDRESSES_KEY } from './relay/constants'; -import { MOCK_ADDERESS, MOCK_SIGNED_TX, MOCK_TX, MOCK_TYPED_DATA } from './relay/mocks/fixtures'; -import { mockedWalletLinkRelay } from './relay/mocks/relay'; -import { WalletLinkRelay } from './relay/WalletLinkRelay'; -import { WalletLinkSigner } from './WalletLinkSigner'; -import { WALLETLINK_URL } from ':core/constants'; -import { standardErrorCodes, standardErrors } from ':core/error'; -import { ProviderEventCallback } from ':core/provider/interface'; -import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; -import { AddressString } from ':core/type'; - -jest.mock('./relay/WalletLinkRelay', () => { +import { vi } from 'vitest'; + +import * as eip712 from '../../vendor-js/eth-eip712-util/index.cjs'; +import { LOCAL_STORAGE_ADDRESSES_KEY } from './relay/constants.js'; +import { MOCK_ADDERESS, MOCK_SIGNED_TX, MOCK_TX, MOCK_TYPED_DATA } from './relay/mocks/fixtures.js'; +import { mockedWalletLinkRelay } from './relay/mocks/relay.js'; +import { WalletLinkRelay } from './relay/WalletLinkRelay.js'; +import { WalletLinkSigner } from './WalletLinkSigner.js'; +import { WALLETLINK_URL } from ':core/constants.js'; +import { standardErrorCodes } from ':core/error/constants.js'; +import { standardErrors } from ':core/error/errors.js'; +import { ProviderEventCallback } from ':core/provider/interface.js'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; +import { AddressString } from ':core/type/index.js'; + +vi.mock('./relay/WalletLinkRelay', () => { return { WalletLinkRelay: mockedWalletLinkRelay, }; }); const testStorage = new ScopedLocalStorage('walletlink', WALLETLINK_URL); -const mockCallback: ProviderEventCallback = jest.fn(); +const mockCallback: ProviderEventCallback = vi.fn(); const createAdapter = (options?: { relay?: WalletLinkRelay }) => { const adapter = new WalletLinkSigner({ @@ -46,7 +48,7 @@ describe('LegacyProvider', () => { it('handles close', async () => { const relay = mockedWalletLinkRelay(); - const spy = jest.spyOn(relay, 'resetAndReload'); + const spy = vi.spyOn(relay, 'resetAndReload'); const provider = createAdapter({ relay }); await provider.cleanup(); @@ -122,7 +124,7 @@ describe('LegacyProvider', () => { describe('ecRecover', () => { const relay = mockedWalletLinkRelay(); - const sendRequestSpy = jest.spyOn(relay, 'sendRequest'); + const sendRequestSpy = vi.spyOn(relay, 'sendRequest'); const provider = createAdapter({ relay }); beforeEach(() => { @@ -170,7 +172,7 @@ describe('LegacyProvider', () => { const provider = createAdapter({ relay }); test('personal_sign success', async () => { - const sendRequestSpy = jest.spyOn(relay, 'sendRequest').mockResolvedValueOnce({ + const sendRequestSpy = vi.spyOn(relay, 'sendRequest').mockResolvedValueOnce({ result: 'mocked result', }); const response = await provider?.request({ @@ -205,7 +207,7 @@ describe('LegacyProvider', () => { describe('signTypedData', () => { testStorage.setItem(LOCAL_STORAGE_ADDRESSES_KEY, MOCK_ADDERESS); const relay = mockedWalletLinkRelay(); - const sendRequestSpy = jest.spyOn(relay, 'sendRequest'); + const sendRequestSpy = vi.spyOn(relay, 'sendRequest'); const provider = createAdapter({ relay }); const ENCODED_MESSAGE = '0x421b6e328c574f0ee83a68d51d01be3597d8b5391c7725dfa80247a60b5cd390'; @@ -217,9 +219,8 @@ describe('LegacyProvider', () => { }); }); - // eslint-disable-next-line jest/no-disabled-tests test.skip('eth_signTypedData_v1', async () => { - const hashSpy = jest.spyOn(eip712, 'hashForSignTypedDataLegacy'); + const hashSpy = vi.spyOn(eip712, 'hashForSignTypedDataLegacy'); const response = await provider?.request({ method: 'eth_signTypedData_v1', params: [[MOCK_TYPED_DATA], MOCK_ADDERESS], @@ -238,7 +239,7 @@ describe('LegacyProvider', () => { }); test('eth_signTypedData_v3', async () => { - const hashSpy = jest.spyOn(eip712, 'hashForSignTypedData_v3'); + const hashSpy = vi.spyOn(eip712, 'hashForSignTypedData_v3'); const response = await provider?.request({ method: 'eth_signTypedData_v3', params: [MOCK_ADDERESS, MOCK_TYPED_DATA], @@ -257,7 +258,7 @@ describe('LegacyProvider', () => { }); test('eth_signTypedData_v4', async () => { - const hashSpy = jest.spyOn(eip712, 'hashForSignTypedData_v4'); + const hashSpy = vi.spyOn(eip712, 'hashForSignTypedData_v4'); const response = await provider?.request({ method: 'eth_signTypedData_v4', params: [MOCK_ADDERESS, MOCK_TYPED_DATA], @@ -276,7 +277,7 @@ describe('LegacyProvider', () => { }); test('eth_signTypedData', async () => { - const hashSpy = jest.spyOn(eip712, 'hashForSignTypedData_v4'); + const hashSpy = vi.spyOn(eip712, 'hashForSignTypedData_v4'); const response = await provider?.request({ method: 'eth_signTypedData', params: [MOCK_ADDERESS, MOCK_TYPED_DATA], @@ -463,9 +464,9 @@ describe('LegacyProvider', () => { test('wallet_switchEthereumChain w/ error code', async () => { const relay = mockedWalletLinkRelay(); - jest - .spyOn(relay, 'switchEthereumChain') - .mockReturnValue(Promise.reject(standardErrors.provider.unsupportedChain())); + vi.spyOn(relay, 'switchEthereumChain').mockReturnValue( + Promise.reject(standardErrors.provider.unsupportedChain()) + ); const localProvider = createAdapter({ relay }); await expect(() => { diff --git a/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.ts b/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.ts index 11ed22bbe1..9efe69d84c 100644 --- a/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.ts +++ b/packages/wallet-sdk/src/sign/walletlink/WalletLinkSigner.ts @@ -1,16 +1,18 @@ // Copyright (c) 2018-2024 Coinbase, Inc. -import eip712 from '../../vendor-js/eth-eip712-util'; -import { Signer } from '../interface'; -import { LOCAL_STORAGE_ADDRESSES_KEY } from './relay/constants'; -import { EthereumTransactionParams } from './relay/type/EthereumTransactionParams'; -import { isErrorResponse } from './relay/type/Web3Response'; -import { WalletLinkRelay } from './relay/WalletLinkRelay'; -import { WALLETLINK_URL } from ':core/constants'; -import { standardErrors } from ':core/error'; -import { AppMetadata, ProviderEventCallback, RequestArguments } from ':core/provider/interface'; -import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; -import { AddressString } from ':core/type'; +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +import * as eip712 from '../../vendor-js/eth-eip712-util/index.cjs'; +import { Signer } from '../interface.js'; +import { LOCAL_STORAGE_ADDRESSES_KEY } from './relay/constants.js'; +import { EthereumTransactionParams } from './relay/type/EthereumTransactionParams.js'; +import { isErrorResponse } from './relay/type/Web3Response.js'; +import { WalletLinkRelay } from './relay/WalletLinkRelay.js'; +import { WALLETLINK_URL } from ':core/constants.js'; +import { standardErrors } from ':core/error/errors.js'; +import { AppMetadata, ProviderEventCallback, RequestArguments } from ':core/provider/interface.js'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; +import { AddressString } from ':core/type/index.js'; import { encodeToHexString, ensureAddressString, @@ -20,8 +22,8 @@ import { ensureParsedJSONObject, hexStringFromBuffer, hexStringFromNumber, -} from ':core/type/util'; -import { fetchRPCRequest } from ':util/provider'; +} from ':core/type/util.js'; +import { fetchRPCRequest } from ':util/provider.js'; const DEFAULT_CHAIN_ID_KEY = 'DefaultChainId'; const DEFAULT_JSON_RPC_URL = 'DefaultJsonRpcUrl'; @@ -442,7 +444,7 @@ export class WalletLinkSigner implements Signer { return hexStringFromBuffer( hashFuncMap[method as keyof typeof hashFuncMap]({ data: ensureParsedJSONObject(input), - }), + }) as Buffer, true ); }; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/RelayEventManager.test.ts b/packages/wallet-sdk/src/sign/walletlink/relay/RelayEventManager.test.ts index 3930a65abc..5c1ddd8bc9 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/RelayEventManager.test.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/RelayEventManager.test.ts @@ -1,4 +1,4 @@ -import { RelayEventManager } from './RelayEventManager'; +import { RelayEventManager } from './RelayEventManager.js'; describe('WalletSDKRelayEventManager', () => { test('@makeRequestId', () => { diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/RelayEventManager.ts b/packages/wallet-sdk/src/sign/walletlink/relay/RelayEventManager.ts index 56c3dd7185..6c3510ba8a 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/RelayEventManager.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/RelayEventManager.ts @@ -1,5 +1,5 @@ -import { Web3Response } from './type/Web3Response'; -import { prepend0x } from ':core/type/util'; +import { Web3Response } from './type/Web3Response.js'; +import { prepend0x } from ':core/type/util.js'; type ResponseCallback = (response: Web3Response) => void; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/WalletLinkRelay.test.ts b/packages/wallet-sdk/src/sign/walletlink/relay/WalletLinkRelay.test.ts index c04fabeee1..17415a527f 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/WalletLinkRelay.test.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/WalletLinkRelay.test.ts @@ -1,16 +1,18 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { WalletLinkCipher } from './connection/WalletLinkCipher'; -import { WalletLinkConnection } from './connection/WalletLinkConnection'; -import { WalletLinkWebSocket } from './connection/WalletLinkWebSocket'; -import { WALLET_USER_NAME_KEY } from './constants'; -import { ServerMessage } from './type/ServerMessage'; -import { WalletLinkRelay, WalletLinkRelayOptions } from './WalletLinkRelay'; -import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; +import { vi } from 'vitest'; -const decryptMock = jest.fn().mockImplementation((text) => text); +import { WalletLinkCipher } from './connection/WalletLinkCipher.js'; +import { WalletLinkConnection } from './connection/WalletLinkConnection.js'; +import { WalletLinkWebSocket } from './connection/WalletLinkWebSocket.js'; +import { WALLET_USER_NAME_KEY } from './constants.js'; +import { ServerMessage } from './type/ServerMessage.js'; +import { WalletLinkRelay, WalletLinkRelayOptions } from './WalletLinkRelay.js'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; -jest.spyOn(WalletLinkCipher.prototype, 'decrypt').mockImplementation(decryptMock); +const decryptMock = vi.fn().mockImplementation((text) => text); + +vi.spyOn(WalletLinkCipher.prototype, 'decrypt').mockImplementation(decryptMock); describe('WalletLinkRelay', () => { const options: WalletLinkRelayOptions = { @@ -21,18 +23,18 @@ describe('WalletLinkRelay', () => { appLogoUrl: '', appChainIds: [], }, - accountsCallback: jest.fn(), - chainCallback: jest.fn(), + accountsCallback: vi.fn(), + chainCallback: vi.fn(), }; beforeEach(() => { - jest.clearAllMocks(); - jest.spyOn(WalletLinkWebSocket.prototype, 'connect').mockReturnValue(Promise.resolve()); + vi.clearAllMocks(); + vi.spyOn(WalletLinkWebSocket.prototype, 'connect').mockReturnValue(Promise.resolve()); }); describe('resetAndReload', () => { it('should destroy the connection and connect again', async () => { - const destroySpy = jest.spyOn(WalletLinkConnection.prototype, 'destroy'); + const destroySpy = vi.spyOn(WalletLinkConnection.prototype, 'destroy'); const relay = new WalletLinkRelay(options); relay.resetAndReload(); @@ -57,7 +59,7 @@ describe('WalletLinkRelay', () => { const relay = new WalletLinkRelay(options); - const handleWeb3ResponseMessageSpy = jest + const handleWeb3ResponseMessageSpy = vi .spyOn(relay, 'handleWeb3ResponseMessage') .mockReturnValue(); @@ -92,7 +94,7 @@ describe('WalletLinkRelay', () => { const relay = new WalletLinkRelay(options); - const metadataUpdatedSpy = jest.spyOn(relay, 'metadataUpdated'); + const metadataUpdatedSpy = vi.spyOn(relay, 'metadataUpdated'); (relay as any).connection.ws.incomingDataListener?.({ ...sessionConfig, diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/WalletLinkRelay.ts b/packages/wallet-sdk/src/sign/walletlink/relay/WalletLinkRelay.ts index 8e6fe3bb5a..b56a6f562e 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/WalletLinkRelay.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/WalletLinkRelay.ts @@ -3,23 +3,23 @@ import { WalletLinkConnection, WalletLinkConnectionUpdateListener, -} from './connection/WalletLinkConnection'; -import { LOCAL_STORAGE_ADDRESSES_KEY } from './constants'; -import { RelayEventManager } from './RelayEventManager'; -import { EthereumTransactionParams } from './type/EthereumTransactionParams'; -import { WalletLinkEventData } from './type/WalletLinkEventData'; -import { WalletLinkSession } from './type/WalletLinkSession'; -import { Web3Method, Web3Request } from './type/Web3Request'; -import { isErrorResponse, Web3Response } from './type/Web3Response'; -import { isMobileWeb } from './ui/components/util'; -import { RelayUI } from './ui/RelayUI'; -import { WalletLinkRelayUI } from './ui/WalletLinkRelayUI'; -import { WLMobileRelayUI } from './ui/WLMobileRelayUI'; -import { standardErrors } from ':core/error'; -import { AppMetadata } from ':core/provider/interface'; -import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; -import { AddressString } from ':core/type'; -import { bigIntStringFromBigInt, hexStringFromBuffer, randomBytesHex } from ':core/type/util'; +} from './connection/WalletLinkConnection.js'; +import { LOCAL_STORAGE_ADDRESSES_KEY } from './constants.js'; +import { RelayEventManager } from './RelayEventManager.js'; +import { EthereumTransactionParams } from './type/EthereumTransactionParams.js'; +import { WalletLinkEventData } from './type/WalletLinkEventData.js'; +import { WalletLinkSession } from './type/WalletLinkSession.js'; +import { Web3Method, Web3Request } from './type/Web3Request.js'; +import { isErrorResponse, Web3Response } from './type/Web3Response.js'; +import { isMobileWeb } from './ui/components/util.js'; +import { RelayUI } from './ui/RelayUI.js'; +import { WalletLinkRelayUI } from './ui/WalletLinkRelayUI.js'; +import { WLMobileRelayUI } from './ui/WLMobileRelayUI.js'; +import { standardErrors } from ':core/error/errors.js'; +import { AppMetadata } from ':core/provider/interface.js'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; +import { AddressString } from ':core/type/index.js'; +import { bigIntStringFromBigInt, hexStringFromBuffer, randomBytesHex } from ':core/type/util.js'; export interface WalletLinkRelayOptions { linkAPIUrl: string; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkCipher.test.ts b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkCipher.test.ts index c7821c5c93..1bbb0b3b9e 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkCipher.test.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkCipher.test.ts @@ -1,5 +1,5 @@ -import { WalletLinkCipher } from './WalletLinkCipher'; -import { randomBytesHex } from ':core/type/util'; +import { WalletLinkCipher } from './WalletLinkCipher.js'; +import { randomBytesHex } from ':core/type/util.js'; const secret = 'c356fe708ea7bbf7b1cc9ff9813c32772b6e0d16332da4c031ba9ea88be9b5ed'; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkCipher.ts b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkCipher.ts index 9fb4b1b53d..66185acc17 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkCipher.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkCipher.ts @@ -1,6 +1,6 @@ // Copyright (c) 2018-2023 Coinbase, Inc. -import { hexStringToUint8Array, uint8ArrayToHex } from ':core/type/util'; +import { hexStringToUint8Array, uint8ArrayToHex } from ':core/type/util.js'; export class WalletLinkCipher { // @param secret hex representation of 32-byte secret diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.test.ts b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.test.ts index f6941ce27d..d2e06f5beb 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.test.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.test.ts @@ -1,12 +1,17 @@ -import { APP_VERSION_KEY, WALLET_USER_NAME_KEY } from '../constants'; -import { WalletLinkSession } from '../type/WalletLinkSession'; -import { WalletLinkCipher } from './WalletLinkCipher'; -import { WalletLinkConnection, WalletLinkConnectionUpdateListener } from './WalletLinkConnection'; -import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; +import { vi } from 'vitest'; -const decryptMock = jest.fn().mockImplementation((text) => Promise.resolve(`decrypted ${text}`)); +import { APP_VERSION_KEY, WALLET_USER_NAME_KEY } from '../constants.js'; +import { WalletLinkSession } from '../type/WalletLinkSession.js'; +import { WalletLinkCipher } from './WalletLinkCipher.js'; +import { + WalletLinkConnection, + WalletLinkConnectionUpdateListener, +} from './WalletLinkConnection.js'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; -jest.spyOn(WalletLinkCipher.prototype, 'decrypt').mockImplementation(decryptMock); +const decryptMock = vi.fn().mockImplementation((text) => Promise.resolve(`decrypted ${text}`)); + +vi.spyOn(WalletLinkCipher.prototype, 'decrypt').mockImplementation(decryptMock); describe('WalletLinkConnection', () => { const session = WalletLinkSession.create(new ScopedLocalStorage('walletlink', 'test')); @@ -15,18 +20,18 @@ describe('WalletLinkConnection', () => { let listener: WalletLinkConnectionUpdateListener; beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); connection = new WalletLinkConnection({ session, linkAPIUrl: 'http://link-api-url', listener: { - linkedUpdated: jest.fn(), - handleWeb3ResponseMessage: jest.fn(), - chainUpdated: jest.fn(), - accountUpdated: jest.fn(), - metadataUpdated: jest.fn(), - resetAndReload: jest.fn(), + linkedUpdated: vi.fn(), + handleWeb3ResponseMessage: vi.fn(), + chainUpdated: vi.fn(), + accountUpdated: vi.fn(), + metadataUpdated: vi.fn(), + resetAndReload: vi.fn(), }, }); listener = (connection as any).listener; @@ -34,7 +39,7 @@ describe('WalletLinkConnection', () => { describe('incomingDataListener', () => { it('should call handleSessionMetadataUpdated when session config is updated', async () => { - const handleSessionMetadataUpdatedSpy = jest.spyOn( + const handleSessionMetadataUpdatedSpy = vi.spyOn( connection as any, 'handleSessionMetadataUpdated' ); @@ -62,7 +67,7 @@ describe('WalletLinkConnection', () => { } it('should call listner.metadataUpdated when WalletUsername updated', async () => { - const listener_metadataUpdatedSpy = jest.spyOn(listener, 'metadataUpdated'); + const listener_metadataUpdatedSpy = vi.spyOn(listener, 'metadataUpdated'); const newUsername = 'new username'; @@ -75,7 +80,7 @@ describe('WalletLinkConnection', () => { }); it('should call listner.metadataUpdated when AppVersion updated', async () => { - const listener_metadataUpdatedSpy = jest.spyOn(listener, 'metadataUpdated'); + const listener_metadataUpdatedSpy = vi.spyOn(listener, 'metadataUpdated'); const newAppVersion = 'new app version'; @@ -88,7 +93,7 @@ describe('WalletLinkConnection', () => { }); it('should call listner.resetAndReload when __destroyed: 1 is received', async () => { - const listener_resetAndReloadSpy = jest.spyOn(listener, 'resetAndReload'); + const listener_resetAndReloadSpy = vi.spyOn(listener, 'resetAndReload'); invoke_handleSessionMetadataUpdated({ __destroyed: '1' }); @@ -96,7 +101,7 @@ describe('WalletLinkConnection', () => { }); it('should call listner.accountUpdated when Account updated', async () => { - const listener_accountUpdatedSpy = jest.spyOn(listener, 'accountUpdated'); + const listener_accountUpdatedSpy = vi.spyOn(listener, 'accountUpdated'); const newAccount = 'new account'; @@ -107,7 +112,7 @@ describe('WalletLinkConnection', () => { describe('chain updates', () => { it('should NOT call listner.chainUpdated when only one changed', async () => { - const listener_chainUpdatedSpy = jest.spyOn(listener, 'chainUpdated'); + const listener_chainUpdatedSpy = vi.spyOn(listener, 'chainUpdated'); const chainIdUpdate = { ChainId: 'new chain id' }; const jsonRpcUrlUpdate = { JsonRpcUrl: 'new json rpc url' }; @@ -121,7 +126,7 @@ describe('WalletLinkConnection', () => { }); it('should call listner.chainUpdated when both ChainId and JsonRpcUrl changed', async () => { - const listener_chainUpdatedSpy = jest.spyOn(listener, 'chainUpdated'); + const listener_chainUpdatedSpy = vi.spyOn(listener, 'chainUpdated'); const update = { ChainId: 'new chain id', diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.ts b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.ts index 9932beb0fa..5cde77f4ce 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.ts @@ -1,15 +1,15 @@ // Copyright (c) 2018-2023 Coinbase, Inc. -import { APP_VERSION_KEY, WALLET_USER_NAME_KEY } from '../constants'; -import { ClientMessage } from '../type/ClientMessage'; -import { ServerMessage, ServerMessageType } from '../type/ServerMessage'; -import { WalletLinkEventData } from '../type/WalletLinkEventData'; -import { WalletLinkSession } from '../type/WalletLinkSession'; -import { Web3Response } from '../type/Web3Response'; -import { WalletLinkCipher } from './WalletLinkCipher'; -import { WalletLinkHTTP } from './WalletLinkHTTP'; -import { ConnectionState, WalletLinkWebSocket } from './WalletLinkWebSocket'; -import { IntNumber } from ':core/type'; +import { APP_VERSION_KEY, WALLET_USER_NAME_KEY } from '../constants.js'; +import { ClientMessage } from '../type/ClientMessage.js'; +import { ServerMessage, ServerMessageType } from '../type/ServerMessage.js'; +import { WalletLinkEventData } from '../type/WalletLinkEventData.js'; +import { WalletLinkSession } from '../type/WalletLinkSession.js'; +import { Web3Response } from '../type/Web3Response.js'; +import { WalletLinkCipher } from './WalletLinkCipher.js'; +import { WalletLinkHTTP } from './WalletLinkHTTP.js'; +import { ConnectionState, WalletLinkWebSocket } from './WalletLinkWebSocket.js'; +import { IntNumber } from ':core/type/index.js'; const HEARTBEAT_INTERVAL = 10000; const REQUEST_TIMEOUT = 60000; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkHTTP.test.ts b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkHTTP.test.ts index 5208dd91ec..50192e05a2 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkHTTP.test.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkHTTP.test.ts @@ -1,5 +1,7 @@ -import { ServerMessage } from '../type/ServerMessage'; -import { WalletLinkHTTP } from './WalletLinkHTTP'; +import { vi } from 'vitest'; + +import { ServerMessage } from '../type/ServerMessage.js'; +import { WalletLinkHTTP } from './WalletLinkHTTP.js'; describe('WalletLinkHTTP', () => { const linkAPIUrl = 'https://example.com'; @@ -19,7 +21,7 @@ describe('WalletLinkHTTP', () => { data: string; }[]; - global.fetch = jest.fn().mockResolvedValue({ + global.fetch = vi.fn().mockResolvedValue({ ok: true, json: () => ({ events, @@ -34,7 +36,7 @@ describe('WalletLinkHTTP', () => { describe('fetchUnseenEvents', () => { it('should return an empty array if there are no unseen events', async () => { const walletLinkHTTP = new WalletLinkHTTP(linkAPIUrl, sessionId, sessionKey); - jest.spyOn(walletLinkHTTP as any, 'markUnseenEventsAsSeen').mockImplementation(() => {}); + vi.spyOn(walletLinkHTTP as any, 'markUnseenEventsAsSeen').mockImplementation(() => {}); const result = await walletLinkHTTP.fetchUnseenEvents(); @@ -56,7 +58,7 @@ describe('WalletLinkHTTP', () => { ]; const walletLinkHTTP = new WalletLinkHTTP(linkAPIUrl, sessionId, sessionKey); - jest.spyOn(walletLinkHTTP as any, 'markUnseenEventsAsSeen').mockImplementation(() => {}); + vi.spyOn(walletLinkHTTP as any, 'markUnseenEventsAsSeen').mockImplementation(() => {}); const result = await walletLinkHTTP.fetchUnseenEvents(); @@ -100,7 +102,7 @@ describe('WalletLinkHTTP', () => { ]; // spy on fetch and verify that it was called with the correct arguments - const fetchSpy = jest.spyOn(global, 'fetch'); + const fetchSpy = vi.spyOn(global, 'fetch'); (walletLinkHTTP as any).markUnseenEventsAsSeen(unseenEvents); diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkHTTP.ts b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkHTTP.ts index 25357c39ff..70a356f255 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkHTTP.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkHTTP.ts @@ -1,4 +1,4 @@ -import { ServerMessage } from '../type/ServerMessage'; +import { ServerMessage } from '../type/ServerMessage.js'; export class WalletLinkHTTP { private readonly auth: string; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkWebSocket.test.ts b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkWebSocket.test.ts index 9ec9134c20..09b65d4610 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkWebSocket.test.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkWebSocket.test.ts @@ -1,8 +1,9 @@ -import WS from 'jest-websocket-mock'; +import { WS } from 'jest-websocket-mock'; +import { vi } from 'vitest'; -import { ServerMessage } from '../type/ServerMessage'; -import { ConnectionState, WalletLinkWebSocket } from './WalletLinkWebSocket'; -import { IntNumber } from ':core/type'; +import { ServerMessage } from '../type/ServerMessage.js'; +import { ConnectionState, WalletLinkWebSocket } from './WalletLinkWebSocket.js'; +import { IntNumber } from ':core/type/index.js'; describe('WalletLinkWebSocket', () => { let server: WS; @@ -18,7 +19,7 @@ describe('WalletLinkWebSocket', () => { describe('is connected', () => { test('@connect & @disconnect', async () => { - const connectionStateListener = jest.fn(); + const connectionStateListener = vi.fn(); rxWS.setConnectionStateListener(connectionStateListener); await rxWS.connect(); @@ -27,9 +28,7 @@ describe('WalletLinkWebSocket', () => { expect(connectionStateListener).toHaveBeenCalledWith(ConnectionState.CONNECTED); // Sends data - const webSocketSendMock = jest - .spyOn(WebSocket.prototype, 'send') - .mockImplementation(() => {}); + const webSocketSendMock = vi.spyOn(WebSocket.prototype, 'send').mockImplementation(() => {}); rxWS.sendData('data'); expect(webSocketSendMock).toHaveBeenCalledWith('data'); @@ -67,7 +66,7 @@ describe('WalletLinkWebSocket', () => { }); test('onmessage event emits message', async () => { - const incomingDataListener = jest.fn(); + const incomingDataListener = vi.fn(); rxWS.setIncomingDataListener(incomingDataListener); await rxWS.connect(); @@ -84,7 +83,7 @@ describe('WalletLinkWebSocket', () => { }); test('onmessage event emits heartbeat message', async () => { - const incomingDataListener = jest.fn(); + const incomingDataListener = vi.fn(); rxWS.setIncomingDataListener(incomingDataListener); await rxWS.connect(); @@ -100,7 +99,7 @@ describe('WalletLinkWebSocket', () => { describe('is not connected', () => { test('disconnect returns', () => { - const webSocketCloseMock = jest + const webSocketCloseMock = vi .spyOn(WebSocket.prototype, 'close') .mockImplementation(() => {}); diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkWebSocket.ts b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkWebSocket.ts index f4c5ed556e..a2443abadb 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkWebSocket.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkWebSocket.ts @@ -1,6 +1,6 @@ // Copyright (c) 2018-2023 Coinbase, Inc. -import { ServerMessage } from '../type/ServerMessage'; +import { ServerMessage } from '../type/ServerMessage.js'; export enum ConnectionState { DISCONNECTED, diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/mocks/relay.ts b/packages/wallet-sdk/src/sign/walletlink/relay/mocks/relay.ts index 18ed8d6dd8..b1c91b40d2 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/mocks/relay.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/mocks/relay.ts @@ -1,7 +1,7 @@ -import { Web3Response } from '../type/Web3Response'; -import { WalletLinkRelay } from '../WalletLinkRelay'; -import { MOCK_ADDERESS, MOCK_TX } from './fixtures'; -import { AddressString, HexString } from ':core/type'; +import { Web3Response } from '../type/Web3Response.js'; +import { WalletLinkRelay } from '../WalletLinkRelay.js'; +import { MOCK_ADDERESS, MOCK_TX } from './fixtures.js'; +import { AddressString, HexString } from ':core/type/index.js'; export function mockedWalletLinkRelay(): WalletLinkRelay { return mock as unknown as WalletLinkRelay; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/type/ClientMessage.ts b/packages/wallet-sdk/src/sign/walletlink/relay/type/ClientMessage.ts index c8c13001bc..1508618c95 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/type/ClientMessage.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/type/ClientMessage.ts @@ -1,6 +1,6 @@ // Copyright (c) 2018-2023 Coinbase, Inc. -import { IntNumber } from ':core/type'; +import { IntNumber } from ':core/type/index.js'; export type ClientMessage = | { diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/type/EthereumTransactionParams.ts b/packages/wallet-sdk/src/sign/walletlink/relay/type/EthereumTransactionParams.ts index 3d89d74254..56d6555056 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/type/EthereumTransactionParams.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/type/EthereumTransactionParams.ts @@ -1,4 +1,4 @@ -import { AddressString, IntNumber } from ':core/type'; +import { AddressString, IntNumber } from ':core/type/index.js'; export interface EthereumTransactionParams { fromAddress: AddressString; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/type/ServerMessage.ts b/packages/wallet-sdk/src/sign/walletlink/relay/type/ServerMessage.ts index 54d719d9a4..3b29a642e3 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/type/ServerMessage.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/type/ServerMessage.ts @@ -1,6 +1,6 @@ // Copyright (c) 2018-2023 Coinbase, Inc. -import { IntNumber } from ':core/type'; +import { IntNumber } from ':core/type/index.js'; export type ServerMessage = Extract<_ServerMessage, { type: T }>; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/type/WalletLinkEventData.ts b/packages/wallet-sdk/src/sign/walletlink/relay/type/WalletLinkEventData.ts index cca4ec667b..1ed8f07ddf 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/type/WalletLinkEventData.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/type/WalletLinkEventData.ts @@ -1,7 +1,7 @@ // Copyright (c) 2018-2023 Coinbase, Inc. -import { Web3Request } from './Web3Request'; -import { Web3Response } from './Web3Response'; +import { Web3Request } from './Web3Request.js'; +import { Web3Response } from './Web3Response.js'; export type WalletLinkEventData = | { diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/type/WalletLinkSession.ts b/packages/wallet-sdk/src/sign/walletlink/relay/type/WalletLinkSession.ts index 808310c487..2f43d33685 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/type/WalletLinkSession.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/type/WalletLinkSession.ts @@ -3,8 +3,8 @@ import { sha256 } from '@noble/hashes/sha256'; import { bytesToHex } from '@noble/hashes/utils'; -import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage'; -import { randomBytesHex } from ':core/type/util'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; +import { randomBytesHex } from ':core/type/util.js'; const STORAGE_KEY_SESSION_ID = 'session:id'; const STORAGE_KEY_SESSION_SECRET = 'session:secret'; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/type/Web3Request.ts b/packages/wallet-sdk/src/sign/walletlink/relay/type/Web3Request.ts index 78b8c63adf..fe5489bd78 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/type/Web3Request.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/type/Web3Request.ts @@ -1,6 +1,6 @@ // Copyright (c) 2018-2023 Coinbase, Inc. -import { AddressString, BigIntString, HexString, IntNumber } from ':core/type'; +import { AddressString, BigIntString, HexString, IntNumber } from ':core/type/index.js'; export type Web3Method = _Web3Request['method']; export type Web3Request = Extract<_Web3Request, { method: M }>; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/type/Web3Response.ts b/packages/wallet-sdk/src/sign/walletlink/relay/type/Web3Response.ts index 245db8aa50..808e269a7d 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/type/Web3Response.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/type/Web3Response.ts @@ -1,7 +1,7 @@ // Copyright (c) 2018-2023 Coinbase, Inc. -import { Web3Method } from './Web3Request'; -import { AddressString, HexString } from ':core/type'; +import { Web3Method } from './Web3Request.js'; +import { AddressString, HexString } from ':core/type/index.js'; export type Web3Response = | Extract<_Web3Response, { method: M }> diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/ui/WLMobileRelayUI.ts b/packages/wallet-sdk/src/sign/walletlink/relay/ui/WLMobileRelayUI.ts index 7af10982f6..4846a4968c 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/ui/WLMobileRelayUI.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/ui/WLMobileRelayUI.ts @@ -1,7 +1,7 @@ -import { RedirectDialog } from './components/RedirectDialog/RedirectDialog'; -import { getLocation } from './components/util'; -import { RelayUI } from './RelayUI'; -import { CBW_MOBILE_DEEPLINK_URL } from ':core/constants'; +import { RedirectDialog } from './components/RedirectDialog/RedirectDialog.js'; +import { getLocation } from './components/util.js'; +import { RelayUI } from './RelayUI.js'; +import { CBW_MOBILE_DEEPLINK_URL } from ':core/constants.js'; export class WLMobileRelayUI implements RelayUI { private readonly redirectDialog: RedirectDialog; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/ui/WalletLinkRelayUI.test.ts b/packages/wallet-sdk/src/sign/walletlink/relay/ui/WalletLinkRelayUI.test.ts index 8a579d3f2f..3f65d516a8 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/ui/WalletLinkRelayUI.test.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/ui/WalletLinkRelayUI.test.ts @@ -1,7 +1,8 @@ import { render } from '@testing-library/preact'; +import { vi } from 'vitest'; -import { Snackbar } from './components/Snackbar/Snackbar'; -import { WalletLinkRelayUI } from './WalletLinkRelayUI'; +import { Snackbar } from './components/Snackbar/Snackbar.js'; +import { WalletLinkRelayUI } from './WalletLinkRelayUI.js'; describe('WalletLinkRelayUI', () => { const walletSDKUI = new WalletLinkRelayUI(); @@ -20,7 +21,7 @@ describe('WalletLinkRelayUI', () => { }); test('@showConnecting: isUnlinkedErrorState - false', () => { - const snackbarMock = jest + const snackbarMock = vi .spyOn(Snackbar.prototype, 'presentItem') .mockImplementation(() => () => {}); @@ -59,7 +60,7 @@ describe('WalletLinkRelayUI', () => { }); test('@showConnecting: isUnlinkedErrorState - true', () => { - const snackbarMock = jest.spyOn(Snackbar.prototype, 'presentItem'); + const snackbarMock = vi.spyOn(Snackbar.prototype, 'presentItem'); const onResetConnection = () => {}; const onCancel = () => {}; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/ui/WalletLinkRelayUI.ts b/packages/wallet-sdk/src/sign/walletlink/relay/ui/WalletLinkRelayUI.ts index 98bb729b86..600ca29d88 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/ui/WalletLinkRelayUI.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/ui/WalletLinkRelayUI.ts @@ -1,6 +1,6 @@ -import { injectCssReset } from './components/cssReset/cssReset'; -import { Snackbar, SnackbarInstanceProps } from './components/Snackbar/Snackbar'; -import { RelayUI } from './RelayUI'; +import { injectCssReset } from './components/cssReset/cssReset.js'; +import { Snackbar, SnackbarInstanceProps } from './components/Snackbar/Snackbar.js'; +import { RelayUI } from './RelayUI.js'; export class WalletLinkRelayUI implements RelayUI { private readonly snackbar: Snackbar; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/RedirectDialog/RedirectDialog.tsx b/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/RedirectDialog/RedirectDialog.tsx index 585e8ab9fa..c285178de3 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/RedirectDialog/RedirectDialog.tsx +++ b/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/RedirectDialog/RedirectDialog.tsx @@ -1,10 +1,10 @@ -import clsx from 'clsx'; +import { clsx } from 'clsx'; import { FunctionComponent, h, render } from 'preact'; -import { injectCssReset } from '../cssReset/cssReset'; -import { SnackbarContainer } from '../Snackbar/Snackbar'; -import { isDarkMode } from '../util'; -import css from './RedirectDialog-css'; +import { injectCssReset } from '../cssReset/cssReset.js'; +import { SnackbarContainer } from '../Snackbar/Snackbar.js'; +import { isDarkMode } from '../util.js'; +import css from './RedirectDialog-css.js'; type RedirectDialogProps = { title: string; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/Snackbar/Snackbar.test.tsx b/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/Snackbar/Snackbar.test.tsx index 94ab969762..5fc31b2b78 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/Snackbar/Snackbar.test.tsx +++ b/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/Snackbar/Snackbar.test.tsx @@ -1,7 +1,10 @@ +import '@testing-library/jest-dom'; + import { render, screen, waitFor } from '@testing-library/preact'; import { h } from 'preact'; +import { vi } from 'vitest'; -import { Snackbar } from './Snackbar'; +import { Snackbar } from './Snackbar.js'; const attachedEl = document.getElementsByClassName('-cbwsdk-snackbar-root'); @@ -33,7 +36,7 @@ describe('Snackbar', () => { path: '', defaultFillRule: 'inherit', defaultClipRule: 'inherit', - onClick: jest.fn, + onClick: vi.fn, }, { isRed: true, @@ -43,7 +46,7 @@ describe('Snackbar', () => { path: '', defaultFillRule: 'evenodd', defaultClipRule: 'evenodd', - onClick: jest.fn, + onClick: vi.fn, }, ], }); diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/Snackbar/Snackbar.tsx b/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/Snackbar/Snackbar.tsx index e991750a62..60609c36d2 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/Snackbar/Snackbar.tsx +++ b/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/Snackbar/Snackbar.tsx @@ -1,11 +1,11 @@ // Copyright (c) 2018-2023 Coinbase, Inc. -import clsx from 'clsx'; +import { clsx } from 'clsx'; import { FunctionComponent, h, render } from 'preact'; import { useEffect, useState } from 'preact/hooks'; -import { isDarkMode } from '../util'; -import css from './Snackbar-css'; +import { isDarkMode } from '../util.js'; +import css from './Snackbar-css.js'; const cblogo = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEuNDkyIDEwLjQxOWE4LjkzIDguOTMgMCAwMTguOTMtOC45M2gxMS4xNjNhOC45MyA4LjkzIDAgMDE4LjkzIDguOTN2MTEuMTYzYTguOTMgOC45MyAwIDAxLTguOTMgOC45M0gxMC40MjJhOC45MyA4LjkzIDAgMDEtOC45My04LjkzVjEwLjQxOXoiIGZpbGw9IiMxNjUyRjAiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjQxOSAwSDIxLjU4QzI3LjMzNSAwIDMyIDQuNjY1IDMyIDEwLjQxOVYyMS41OEMzMiAyNy4zMzUgMjcuMzM1IDMyIDIxLjU4MSAzMkgxMC40MkM0LjY2NSAzMiAwIDI3LjMzNSAwIDIxLjU4MVYxMC40MkMwIDQuNjY1IDQuNjY1IDAgMTAuNDE5IDB6bTAgMS40ODhhOC45MyA4LjkzIDAgMDAtOC45MyA4LjkzdjExLjE2M2E4LjkzIDguOTMgMCAwMDguOTMgOC45M0gyMS41OGE4LjkzIDguOTMgMCAwMDguOTMtOC45M1YxMC40MmE4LjkzIDguOTMgMCAwMC04LjkzLTguOTNIMTAuNDJ6IiBmaWxsPSIjZmZmIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS45OTggMjYuMDQ5Yy01LjU0OSAwLTEwLjA0Ny00LjQ5OC0xMC4wNDctMTAuMDQ3IDAtNS41NDggNC40OTgtMTAuMDQ2IDEwLjA0Ny0xMC4wNDYgNS41NDggMCAxMC4wNDYgNC40OTggMTAuMDQ2IDEwLjA0NiAwIDUuNTQ5LTQuNDk4IDEwLjA0Ny0xMC4wNDYgMTAuMDQ3eiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0xMi43NjIgMTQuMjU0YzAtLjgyMi42NjctMS40ODkgMS40ODktMS40ODloMy40OTdjLjgyMiAwIDEuNDg4LjY2NiAxLjQ4OCAxLjQ4OXYzLjQ5N2MwIC44MjItLjY2NiAxLjQ4OC0xLjQ4OCAxLjQ4OGgtMy40OTdhMS40ODggMS40ODggMCAwMS0xLjQ4OS0xLjQ4OHYtMy40OTh6IiBmaWxsPSIjMTY1MkYwIi8+PC9zdmc+`; const gearIcon = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDYuNzV2LTEuNWwtMS43Mi0uNTdjLS4wOC0uMjctLjE5LS41Mi0uMzItLjc3bC44MS0xLjYyLTEuMDYtMS4wNi0xLjYyLjgxYy0uMjQtLjEzLS41LS4yNC0uNzctLjMyTDYuNzUgMGgtMS41bC0uNTcgMS43MmMtLjI3LjA4LS41My4xOS0uNzcuMzJsLTEuNjItLjgxLTEuMDYgMS4wNi44MSAxLjYyYy0uMTMuMjQtLjI0LjUtLjMyLjc3TDAgNS4yNXYxLjVsMS43Mi41N2MuMDguMjcuMTkuNTMuMzIuNzdsLS44MSAxLjYyIDEuMDYgMS4wNiAxLjYyLS44MWMuMjQuMTMuNS4yMy43Ny4zMkw1LjI1IDEyaDEuNWwuNTctMS43MmMuMjctLjA4LjUyLS4xOS43Ny0uMzJsMS42Mi44MSAxLjA2LTEuMDYtLjgxLTEuNjJjLjEzLS4yNC4yMy0uNS4zMi0uNzdMMTIgNi43NXpNNiA4LjVhMi41IDIuNSAwIDAxMC01IDIuNSAyLjUgMCAwMTAgNXoiIGZpbGw9IiMwNTBGMTkiLz48L3N2Zz4=`; diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/Snackbar/SnackbarContainer.test.tsx b/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/Snackbar/SnackbarContainer.test.tsx index 093409d46b..d6adb02cf5 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/Snackbar/SnackbarContainer.test.tsx +++ b/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/Snackbar/SnackbarContainer.test.tsx @@ -1,7 +1,10 @@ +import '@testing-library/jest-dom'; + import { fireEvent, render, screen } from '@testing-library/preact'; import { h } from 'preact'; +import { vi } from 'vitest'; -import { SnackbarContainer, SnackbarInstance, SnackbarInstanceProps } from './Snackbar'; +import { SnackbarContainer, SnackbarInstance, SnackbarInstanceProps } from './Snackbar.js'; const renderSnackbarContainer = (props?: SnackbarInstanceProps) => render( @@ -12,8 +15,8 @@ const renderSnackbarContainer = (props?: SnackbarInstanceProps) => describe('SnackbarContainer', () => { beforeEach(() => { - jest.useFakeTimers(); - jest.spyOn(window, 'setTimeout'); + vi.useFakeTimers(); + vi.spyOn(window, 'setTimeout'); renderSnackbarContainer({ menuItems: [ { @@ -24,20 +27,20 @@ describe('SnackbarContainer', () => { path: '', defaultFillRule: 'inherit', defaultClipRule: 'inherit', - onClick: jest.fn, + onClick: vi.fn, }, ], }); }); afterEach(() => { - jest.useRealTimers(); + vi.useRealTimers(); }); test('render hidden', () => { const hiddenClass = document.getElementsByClassName('-cbwsdk-snackbar-instance-hidden'); expect(hiddenClass.length).toEqual(1); - jest.runAllTimers(); + vi.runAllTimers(); expect(setTimeout).toHaveBeenCalledTimes(2); }); diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/cssReset/cssReset.ts b/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/cssReset/cssReset.ts index af833e2a99..b8ab827a03 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/cssReset/cssReset.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/cssReset/cssReset.ts @@ -1,6 +1,6 @@ // Copyright (c) 2018-2023 Coinbase, Inc. -import css from './cssReset-css'; +import css from './cssReset-css.js'; export function injectCssReset(): void { const styleEl = document.createElement('style'); diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/util.test.ts b/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/util.test.ts index eaf3c30401..2c6639101f 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/util.test.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/ui/components/util.test.ts @@ -1,4 +1,4 @@ -import { createQrUrl, isMobileWeb } from './util'; +import { createQrUrl, isMobileWeb } from './util.js'; describe('util', () => { test('isMobileWeb', () => { diff --git a/packages/wallet-sdk/src/util/checkCrossOriginOpenerPolicy.test.ts b/packages/wallet-sdk/src/util/checkCrossOriginOpenerPolicy.test.ts index 467388c7d6..2943b5a45f 100644 --- a/packages/wallet-sdk/src/util/checkCrossOriginOpenerPolicy.test.ts +++ b/packages/wallet-sdk/src/util/checkCrossOriginOpenerPolicy.test.ts @@ -1,12 +1,14 @@ +import { vi } from 'vitest'; + import { checkCrossOriginOpenerPolicy, getCrossOriginOpenerPolicy, -} from './checkCrossOriginOpenerPolicy'; +} from './checkCrossOriginOpenerPolicy.js'; describe('checkCrossOriginOpenerPolicy', () => { beforeEach(() => { // Clear all mocks before each test - jest.clearAllMocks(); + vi.clearAllMocks(); }); it('should return non-browser-env if window is undefined', async () => { @@ -22,10 +24,10 @@ describe('checkCrossOriginOpenerPolicy', () => { global.window = originalWindow; }); - it('should fetch the current origin and pathname', async () => { - global.fetch = jest.fn().mockResolvedValue({ + it('should fetch the current origin', async () => { + global.fetch = vi.fn().mockResolvedValue({ headers: { - get: jest.fn().mockReturnValue(null), + get: vi.fn().mockReturnValue(null), }, ok: true, }); @@ -39,10 +41,10 @@ describe('checkCrossOriginOpenerPolicy', () => { }); it('should log an error if Cross-Origin-Opener-Policy is same-origin', async () => { - const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {}); - global.fetch = jest.fn().mockResolvedValue({ + const consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(() => {}); + global.fetch = vi.fn().mockResolvedValue({ headers: { - get: jest.fn().mockReturnValue('same-origin'), + get: vi.fn().mockReturnValue('same-origin'), }, ok: true, }); @@ -59,11 +61,11 @@ describe('checkCrossOriginOpenerPolicy', () => { consoleErrorSpy.mockRestore(); }); - it('should return true and not log an error if Cross-Origin-Opener-Policy is not same-origin', async () => { - const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {}); - global.fetch = jest.fn().mockResolvedValue({ + it('should not log an error if Cross-Origin-Opener-Policy is not same-origin', async () => { + const consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(() => {}); + global.fetch = vi.fn().mockResolvedValue({ headers: { - get: jest.fn().mockReturnValue('unsafe-none'), + get: vi.fn().mockReturnValue('unsafe-none'), }, ok: true, }); diff --git a/packages/wallet-sdk/src/util/cipher.test.ts b/packages/wallet-sdk/src/util/cipher.test.ts index 74b46889ab..043f2a9408 100644 --- a/packages/wallet-sdk/src/util/cipher.test.ts +++ b/packages/wallet-sdk/src/util/cipher.test.ts @@ -1,4 +1,4 @@ -import { decrypt, deriveSharedSecret, encrypt, generateKeyPair } from './cipher'; +import { decrypt, deriveSharedSecret, encrypt, generateKeyPair } from './cipher.js'; describe('Cipher', () => { describe('generateKeyPair', () => { @@ -56,7 +56,7 @@ describe('Cipher', () => { // Attempting to decrypt with a different shared secret await expect(decrypt(sharedSecretDerivedByPeer, encryptedMessage)).rejects.toThrow( - 'Unsupported state or unable to authenticate data' + 'The operation failed for an operation-specific reason' ); }); }); diff --git a/packages/wallet-sdk/src/util/cipher.ts b/packages/wallet-sdk/src/util/cipher.ts index bf34d6f7b9..99022fd634 100644 --- a/packages/wallet-sdk/src/util/cipher.ts +++ b/packages/wallet-sdk/src/util/cipher.ts @@ -1,5 +1,7 @@ -import { EncryptedData, RPCRequest, RPCResponse } from ':core/message'; -import { hexStringToUint8Array, uint8ArrayToHex } from ':core/type/util'; +import { EncryptedData } from ':core/message/RPCMessage.js'; +import { RPCRequest } from ':core/message/RPCRequest.js'; +import { RPCResponse } from ':core/message/RPCResponse.js'; +import { hexStringToUint8Array, uint8ArrayToHex } from ':core/type/util.js'; export async function generateKeyPair(): Promise { return crypto.subtle.generateKey( @@ -87,7 +89,7 @@ export async function importKeyFromHexString( const arrayBuffer = hexStringToUint8Array(hexString).buffer; return await crypto.subtle.importKey( format, - arrayBuffer, + new Uint8Array(arrayBuffer), { name: 'ECDH', namedCurve: 'P-256', diff --git a/packages/wallet-sdk/src/util/provider.test.ts b/packages/wallet-sdk/src/util/provider.test.ts index 9554c25a5c..4eecf91fbb 100644 --- a/packages/wallet-sdk/src/util/provider.test.ts +++ b/packages/wallet-sdk/src/util/provider.test.ts @@ -1,11 +1,13 @@ +import { vi } from 'vitest'; + import { CBWindow, checkErrorForInvalidRequestArgs, fetchRPCRequest, getCoinbaseInjectedProvider, -} from './provider'; -import { standardErrors } from ':core/error'; -import { ProviderInterface } from ':core/provider/interface'; +} from './provider.js'; +import { standardErrors } from ':core/error/errors.js'; +import { ProviderInterface } from ':core/provider/interface.js'; const window = globalThis as CBWindow; @@ -31,8 +33,8 @@ const invalidParamsError = (args) => describe('Utils', () => { describe('fetchRPCRequest', () => { function mockFetchResponse(response: unknown) { - global.fetch = jest.fn().mockResolvedValue({ - json: jest.fn().mockResolvedValue(response), + global.fetch = vi.fn().mockResolvedValue({ + json: vi.fn().mockResolvedValue(response), }); } @@ -66,7 +68,7 @@ describe('Utils', () => { }); it('should return extension provider', () => { - const mockSetAppInfo = jest.fn(); + const mockSetAppInfo = vi.fn(); const extensionProvider = { setAppInfo: mockSetAppInfo, } as unknown as ProviderInterface; diff --git a/packages/wallet-sdk/src/util/provider.ts b/packages/wallet-sdk/src/util/provider.ts index ed3239cfe9..43b9c656f4 100644 --- a/packages/wallet-sdk/src/util/provider.ts +++ b/packages/wallet-sdk/src/util/provider.ts @@ -1,6 +1,10 @@ -import { NAME, VERSION } from '../sdk-info'; -import { standardErrors } from ':core/error'; -import { ConstructorOptions, ProviderInterface, RequestArguments } from ':core/provider/interface'; +import { NAME, VERSION } from '../sdk-info.js'; +import { standardErrors } from ':core/error/errors.js'; +import { + ConstructorOptions, + ProviderInterface, + RequestArguments, +} from ':core/provider/interface.js'; export async function fetchRPCRequest(request: RequestArguments, rpcUrl: string) { const requestBody = { diff --git a/packages/wallet-sdk/src/util/validatePreferences.test.ts b/packages/wallet-sdk/src/util/validatePreferences.test.ts index 132fcaec39..4de09ff5b8 100644 --- a/packages/wallet-sdk/src/util/validatePreferences.test.ts +++ b/packages/wallet-sdk/src/util/validatePreferences.test.ts @@ -1,5 +1,5 @@ -import { Preference } from '../core/provider/interface'; -import { validatePreferences } from './validatePreferences'; +import { Preference } from '../core/provider/interface.js'; +import { validatePreferences } from './validatePreferences.js'; describe('validatePreferences', () => { it('should not throw an error if preference is undefined', () => { diff --git a/packages/wallet-sdk/src/util/validatePreferences.ts b/packages/wallet-sdk/src/util/validatePreferences.ts index 1bf9a45be2..4bbe5b4bb1 100644 --- a/packages/wallet-sdk/src/util/validatePreferences.ts +++ b/packages/wallet-sdk/src/util/validatePreferences.ts @@ -1,4 +1,4 @@ -import { Preference } from ':core/provider/interface'; +import { Preference } from ':core/provider/interface.js'; /** * Validates user supplied preferences. Throws if keys are not valid. diff --git a/packages/wallet-sdk/src/util/web.test.ts b/packages/wallet-sdk/src/util/web.test.ts index dacfd7a5bf..a23c92dbce 100644 --- a/packages/wallet-sdk/src/util/web.test.ts +++ b/packages/wallet-sdk/src/util/web.test.ts @@ -1,11 +1,12 @@ -import { NAME, VERSION } from 'src/sdk-info'; +import { Mock, vi } from 'vitest'; -import { getCrossOriginOpenerPolicy } from './checkCrossOriginOpenerPolicy'; -import { closePopup, openPopup } from './web'; -import { standardErrors } from ':core/error'; +import { NAME, VERSION } from '../sdk-info.js'; +import { getCrossOriginOpenerPolicy } from './checkCrossOriginOpenerPolicy.js'; +import { closePopup, openPopup } from './web.js'; +import { standardErrors } from ':core/error/errors.js'; -jest.mock('./checkCrossOriginOpenerPolicy'); -(getCrossOriginOpenerPolicy as jest.Mock).mockReturnValue('null'); +vi.mock('./checkCrossOriginOpenerPolicy'); +(getCrossOriginOpenerPolicy as Mock).mockReturnValue('null'); const mockOrigin = 'http://localhost'; @@ -17,19 +18,19 @@ describe('PopupManager', () => { innerHeight: { value: 768 }, screenX: { value: 0 }, screenY: { value: 0 }, - open: { value: jest.fn() }, - close: { value: jest.fn() }, + open: { value: vi.fn() }, + close: { value: vi.fn() }, location: { value: { origin: mockOrigin } }, }); }); afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); it('should open a popup with correct settings and focus it', () => { const url = new URL('https://example.com'); - (window.open as jest.Mock).mockReturnValue({ focus: jest.fn() }); + (window.open as Mock).mockReturnValue({ focus: vi.fn() }); const popup = openPopup(url); @@ -48,7 +49,7 @@ describe('PopupManager', () => { }); it('should throw an error if popup fails to open', () => { - (window.open as jest.Mock).mockReturnValue(null); + (window.open as Mock).mockReturnValue(null); expect(() => openPopup(new URL('https://example.com'))).toThrow( standardErrors.rpc.internal('Pop up window failed to open') @@ -56,7 +57,7 @@ describe('PopupManager', () => { }); it('should close an open popup window', () => { - const mockPopup = { close: jest.fn(), closed: false } as any as Window; + const mockPopup = { close: vi.fn(), closed: false } as any as Window; closePopup(mockPopup); diff --git a/packages/wallet-sdk/src/util/web.ts b/packages/wallet-sdk/src/util/web.ts index 982c121446..7c69208aa2 100644 --- a/packages/wallet-sdk/src/util/web.ts +++ b/packages/wallet-sdk/src/util/web.ts @@ -1,6 +1,6 @@ -import { NAME, VERSION } from '../sdk-info'; -import { getCrossOriginOpenerPolicy } from './checkCrossOriginOpenerPolicy'; -import { standardErrors } from ':core/error'; +import { NAME, VERSION } from '../sdk-info.js'; +import { getCrossOriginOpenerPolicy } from './checkCrossOriginOpenerPolicy.js'; +import { standardErrors } from ':core/error/errors.js'; const POPUP_WIDTH = 420; const POPUP_HEIGHT = 540; diff --git a/packages/wallet-sdk/src/vendor-js/eth-eip712-util/abi.js b/packages/wallet-sdk/src/vendor-js/eth-eip712-util/abi.cjs similarity index 99% rename from packages/wallet-sdk/src/vendor-js/eth-eip712-util/abi.js rename to packages/wallet-sdk/src/vendor-js/eth-eip712-util/abi.cjs index 88c8400a40..9d85693826 100644 --- a/packages/wallet-sdk/src/vendor-js/eth-eip712-util/abi.js +++ b/packages/wallet-sdk/src/vendor-js/eth-eip712-util/abi.cjs @@ -3,7 +3,7 @@ /* eslint-disable */ //prettier-ignore -const util = require('./util') +const util = require('./util.cjs') // Convert from short to canonical names // FIXME: optimise or make this nicer? diff --git a/packages/wallet-sdk/src/vendor-js/eth-eip712-util/index.js b/packages/wallet-sdk/src/vendor-js/eth-eip712-util/index.cjs similarity index 99% rename from packages/wallet-sdk/src/vendor-js/eth-eip712-util/index.js rename to packages/wallet-sdk/src/vendor-js/eth-eip712-util/index.cjs index d0a56b44d2..c40c52e5ee 100644 --- a/packages/wallet-sdk/src/vendor-js/eth-eip712-util/index.js +++ b/packages/wallet-sdk/src/vendor-js/eth-eip712-util/index.cjs @@ -1,8 +1,8 @@ /* eslint-disable */ //prettier-ignore -const util = require('./util') -const abi = require('./abi') +const util = require('./util.cjs') +const abi = require('./abi.cjs') const TYPED_MESSAGE_SCHEMA = { type: 'object', diff --git a/packages/wallet-sdk/src/vendor-js/eth-eip712-util/util.js b/packages/wallet-sdk/src/vendor-js/eth-eip712-util/util.cjs similarity index 100% rename from packages/wallet-sdk/src/vendor-js/eth-eip712-util/util.js rename to packages/wallet-sdk/src/vendor-js/eth-eip712-util/util.cjs diff --git a/packages/wallet-sdk/tsconfig.base.json b/packages/wallet-sdk/tsconfig.base.json index 57395ba790..2315bc3b82 100644 --- a/packages/wallet-sdk/tsconfig.base.json +++ b/packages/wallet-sdk/tsconfig.base.json @@ -40,6 +40,6 @@ "noImplicitReturns": true, "noUnusedLocals": true, "noUnusedParameters": true, - "types": ["node", "jest", "@testing-library/jest-dom"], + "types": ["node", "vitest/globals", "@testing-library/jest-dom"], } } diff --git a/packages/wallet-sdk/tsconfig.build.json b/packages/wallet-sdk/tsconfig.build.json index 4bccc4d3fb..0fe1f07eb0 100644 --- a/packages/wallet-sdk/tsconfig.build.json +++ b/packages/wallet-sdk/tsconfig.build.json @@ -3,7 +3,8 @@ "compilerOptions": { "allowJs": false, "declaration": true, - "sourceMap": false, + "declarationMap": true, + "sourceMap": true, }, "include": ["src"], "exclude": ["dist", "build", "**/*.test.*", "mocks"] diff --git a/packages/wallet-sdk/vitest.config.ts b/packages/wallet-sdk/vitest.config.ts new file mode 100644 index 0000000000..af6327c3c1 --- /dev/null +++ b/packages/wallet-sdk/vitest.config.ts @@ -0,0 +1,13 @@ +import path from 'node:path'; +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + alias: { + ':core': path.resolve(__dirname, 'src/core'), + ':util': path.resolve(__dirname, 'src/util'), + }, + environment: 'jsdom', + globals: true, + }, +}); diff --git a/yarn.lock b/yarn.lock index 886b7a8dd1..e6142f99d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -29,7 +29,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.24.7": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.24.7": version: 7.24.7 resolution: "@babel/code-frame@npm:7.24.7" dependencies: @@ -39,14 +39,14 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.2, @babel/compat-data@npm:^7.25.4": +"@babel/compat-data@npm:^7.25.2": version: 7.25.4 resolution: "@babel/compat-data@npm:7.25.4" checksum: b12a91d27c3731a4b0bdc9312a50b1911f41f7f728aaf0d4b32486e2257fd2cb2d3ea1a295e98449600c48f2c7883a3196ca77cda1cef7d97a10c2e83d037974 languageName: node linkType: hard -"@babel/core@npm:^7.1.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.22.9, @babel/core@npm:^7.7.2, @babel/core@npm:^7.8.0": +"@babel/core@npm:^7.13.16": version: 7.25.2 resolution: "@babel/core@npm:7.25.2" dependencies: @@ -83,7 +83,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.6, @babel/generator@npm:^7.7.2": +"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.6": version: 7.25.6 resolution: "@babel/generator@npm:7.25.6" dependencies: @@ -95,26 +95,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-annotate-as-pure@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 6178566099a6a0657db7a7fa601a54fb4731ca0b8614fbdccfd8e523c210c13963649bc8fdfd53ce7dd14d05e3dda2fb22dea5b30113c488b9eb1a906d60212e - languageName: node - linkType: hard - -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.24.7" - dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 71a6158a9fdebffb82fdc400d5555ba8f2e370cea81a0d578155877bdc4db7d5252b75c43b2fdf3f72b3f68348891f99bd35ae315542daad1b7ace8322b1abcb - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.24.7, @babel/helper-compilation-targets@npm:^7.24.8, @babel/helper-compilation-targets@npm:^7.25.2": +"@babel/helper-compilation-targets@npm:^7.25.2": version: 7.25.2 resolution: "@babel/helper-compilation-targets@npm:7.25.2" dependencies: @@ -127,61 +108,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.24.7, @babel/helper-create-class-features-plugin@npm:^7.25.0, @babel/helper-create-class-features-plugin@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/helper-create-class-features-plugin@npm:7.25.4" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-member-expression-to-functions": "npm:^7.24.8" - "@babel/helper-optimise-call-expression": "npm:^7.24.7" - "@babel/helper-replace-supers": "npm:^7.25.0" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.4" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 4544ebda4516eb25efdebd47ca024bd7bdb1eb6e7cc3ad89688c8ef8e889734c2f4411ed78981899c641394f013f246f2af63d92a0e9270f6c453309b4cb89ba - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.24.7, @babel/helper-create-regexp-features-plugin@npm:^7.25.0, @babel/helper-create-regexp-features-plugin@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.2" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - regexpu-core: "npm:^5.3.1" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: df55fdc6a1f3090dd37d91347df52d9322d52affa239543808dc142f8fe35e6787e67d8612337668198fac85826fafa9e6772e6c28b7d249ec94e6fafae5da6e - languageName: node - linkType: hard - -"@babel/helper-define-polyfill-provider@npm:^0.6.2": - version: 0.6.2 - resolution: "@babel/helper-define-polyfill-provider@npm:0.6.2" - dependencies: - "@babel/helper-compilation-targets": "npm:^7.22.6" - "@babel/helper-plugin-utils": "npm:^7.22.5" - debug: "npm:^4.1.1" - lodash.debounce: "npm:^4.0.8" - resolve: "npm:^1.14.2" - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 2bba965ea9a4887ddf9c11d51d740ab473bd7597b787d042c325f6a45912dfe908c2d6bb1d837bf82f7e9fa51e6ad5150563c58131d2bb85515e63d971414a9c - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-member-expression-to-functions@npm:7.24.8" - dependencies: - "@babel/traverse": "npm:^7.24.8" - "@babel/types": "npm:^7.24.8" - checksum: bf923d05d81b06857f4ca4fe9c528c9c447a58db5ea39595bb559eae2fce01a8266173db0fd6a2ec129d7bbbb9bb22f4e90008252f7c66b422c76630a878a4bc - languageName: node - linkType: hard - "@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-module-imports@npm:7.24.7" @@ -192,7 +118,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.24.7, @babel/helper-module-transforms@npm:^7.24.8, @babel/helper-module-transforms@npm:^7.25.0, @babel/helper-module-transforms@npm:^7.25.2": +"@babel/helper-module-transforms@npm:^7.25.2": version: 7.25.2 resolution: "@babel/helper-module-transforms@npm:7.25.2" dependencies: @@ -206,48 +132,13 @@ __metadata: languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-optimise-call-expression@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 280654eaf90e92bf383d7eed49019573fb35a98c9e992668f701ad099957246721044be2068cf6840cb2299e0ad393705a1981c88c23a1048096a8d59e5f79a3 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.24.8, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": +"@babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.24.7": version: 7.24.8 resolution: "@babel/helper-plugin-utils@npm:7.24.8" checksum: 73b1a83ba8bcee21dc94de2eb7323207391715e4369fd55844bb15cf13e3df6f3d13a40786d990e6370bf0f571d94fc31f70dec96c1d1002058258c35ca3767a languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.24.7, @babel/helper-remap-async-to-generator@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helper-remap-async-to-generator@npm:7.25.0" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-wrap-function": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 47f3065e43fe9d6128ddb4291ffb9cf031935379265fd13de972b5f241943121f7583efb69cd2e1ecf39e3d0f76f047547d56c3fcc2c853b326fad5465da0bd7 - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.24.7, @babel/helper-replace-supers@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helper-replace-supers@npm:7.25.0" - dependencies: - "@babel/helper-member-expression-to-functions": "npm:^7.24.8" - "@babel/helper-optimise-call-expression": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: f669fc2487c22d40b808f94b9c3ee41129484d5ef0ba689bdd70f216ff91e10b6b021d2f8cd37e7bdd700235a2a6ae6622526344f064528190383bf661ac65f8 - languageName: node - linkType: hard - "@babel/helper-simple-access@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-simple-access@npm:7.24.7" @@ -258,1163 +149,83 @@ __metadata: languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.24.7" - dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 11b28fe534ce2b1a67c4d8e51a7b5711a2a0a0cae802f74614eee54cca58c744d9a62f6f60103c41759e81c537d270bfd665bf368a6bea214c6052f2094f8407 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-string-parser@npm:7.24.8" - checksum: 39b03c5119216883878655b149148dc4d2e284791e969b19467a9411fccaa33f7a713add98f4db5ed519535f70ad273cdadfd2eb54d47ebbdeac5083351328ce - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-validator-identifier@npm:7.24.7" - checksum: 6799ab117cefc0ecd35cd0b40ead320c621a298ecac88686a14cffceaac89d80cdb3c178f969861bf5fa5e4f766648f9161ea0752ecfe080d8e89e3147270257 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.24.7, @babel/helper-validator-option@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-validator-option@npm:7.24.8" - checksum: a52442dfa74be6719c0608fee3225bd0493c4057459f3014681ea1a4643cd38b68ff477fe867c4b356da7330d085f247f0724d300582fa4ab9a02efaf34d107c - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helper-wrap-function@npm:7.25.0" - dependencies: - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 0095b4741704066d1687f9bbd5370bb88c733919e4275e49615f70c180208148ff5f24ab58d186ce92f8f5d28eab034ec6617e9264590cc4744c75302857629c - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.25.0": - version: 7.25.6 - resolution: "@babel/helpers@npm:7.25.6" - dependencies: - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.6" - checksum: 5a548999db82049a5f7ac6de57576b4ed0d386ce07d058151698836ed411eae6230db12535487caeebb68a2ffc964491e8aead62364a5132ab0ae20e8b68e19f - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/highlight@npm:7.24.7" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.24.7" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.0.0" - checksum: 5cd3a89f143671c4ac129960024ba678b669e6fc673ce078030f5175002d1d3d52bc10b22c5b916a6faf644b5028e9a4bd2bb264d053d9b05b6a98690f1d46f1 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6": - version: 7.25.6 - resolution: "@babel/parser@npm:7.25.6" - dependencies: - "@babel/types": "npm:^7.25.6" - bin: - parser: ./bin/babel-parser.js - checksum: 85b237ded09ee43cc984493c35f3b1ff8a83e8dbbb8026b8132e692db6567acc5a1659ec928e4baa25499ddd840d7dae9dee3062be7108fe23ec5f94a8066b1e - languageName: node - linkType: hard - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.3": - version: 7.25.3 - resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/traverse": "npm:^7.25.3" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: d3dba60f360defe70eb43e35a1b17ea9dd4a99e734249e15be3d5c288019644f96f88d7ff51990118fda0845b4ad50f6d869e0382232b1d8b054d113d4eea7e2 - languageName: node - linkType: hard - -"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: fd56d1e6435f2c008ca9050ea906ff7eedcbec43f532f2bf2e7e905d8bf75bf5e4295ea9593f060394e2c8e45737266ccbf718050bad2dd7be4e7613c60d1b5b - languageName: node - linkType: hard - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 13ed301b108d85867d64226bbc4032b07dd1a23aab68e9e32452c4fe3930f2198bb65bdae9c262c4104bd5e45647bc1830d25d43d356ee9a137edd8d5fab8350 - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" - "@babel/plugin-transform-optional-chaining": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.13.0 - checksum: 07b92878ac58a98ea1fdf6a8b4ec3413ba4fa66924e28b694d63ec5b84463123fbf4d7153b56cf3cedfef4a3482c082fe3243c04f8fb2c041b32b0e29b4a9e21 - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/traverse": "npm:^7.25.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: c8d08b8d6cc71451ad2a50cf7db72ab5b41c1e5e2e4d56cf6837a25a61270abd682c6b8881ab025f11a552d2024b3780519bb051459ebb71c27aed13d9917663 - languageName: node - linkType: hard - -"@babel/plugin-proposal-decorators@npm:^7.22.7": - version: 7.24.7 - resolution: "@babel/plugin-proposal-decorators@npm:7.24.7" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/plugin-syntax-decorators": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 75aa5ff5537d5ff77f0e52eb161a2f67c7d2bfd8f2000be710dedb1dd238b43ce53d2f734f84bda95b3f013b69de126403f84167f4eddb1d35e8f26257ee07c8 - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": - version: 7.21.0-placeholder-for-preset-env.2 - resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d97745d098b835d55033ff3a7fb2b895b9c5295b08a5759e4f20df325aa385a3e0bc9bd5ad8f2ec554a44d4e6525acfc257b8c5848a1345cb40f26a30e277e91 - languageName: node - linkType: hard - -"@babel/plugin-syntax-async-generators@npm:^7.8.4": - version: 7.8.4 - resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 - languageName: node - linkType: hard - -"@babel/plugin-syntax-bigint@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3a10849d83e47aec50f367a9e56a6b22d662ddce643334b087f9828f4c3dd73bdc5909aaeabe123fed78515767f9ca43498a0e621c438d1cd2802d7fae3c9648 - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-properties@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-static-block@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948 - languageName: node - linkType: hard - -"@babel/plugin-syntax-decorators@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-syntax-decorators@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: dc303bcc1f5df61638f1eddc69dd55e65574bd43d8a4a098d3589f5a742e93a4ca3a173967b34eb95e4eaa994799b4c72bfed8688036e43c634be7f24db01ac5 - languageName: node - linkType: hard - -"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ce307af83cf433d4ec42932329fad25fa73138ab39c7436882ea28742e1c0066626d224e0ad2988724c82644e41601cef607b36194f695cb78a1fcdc959637bd - languageName: node - linkType: hard - -"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 85740478be5b0de185228e7814451d74ab8ce0a26fcca7613955262a26e99e8e15e9da58f60c754b84515d4c679b590dbd3f2148f0f58025f4ae706f1c5a5d4a - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-assertions@npm:^7.24.7": - version: 7.25.6 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.25.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b3b251ace9f184c2d6369cde686ff01581050cb0796f2ff00ff4021f31cf86270b347df09579f2c0996e999e37e1dddafacec42ed1ef6aae21a265aff947e792 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-attributes@npm:^7.24.7": - version: 7.25.6 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3b0928e73e42346e8a65760a3ff853c87ad693cdf11bb335a23e895e0b5b1f0601118521b3aff2a6946488a580a63afb6a5b5686153a7678b4dff0e4e4604dd7 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-meta@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 166ac1125d10b9c0c430e4156249a13858c0366d38844883d75d27389621ebe651115cb2ceb6dc011534d5055719fa1727b59f39e1ab3ca97820eef3dcab5b9b - languageName: node - linkType: hard - -"@babel/plugin-syntax-json-strings@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.12.13, @babel/plugin-syntax-jsx@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-syntax-jsx@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7a5ca629d8ca1e1ee78705a78e58c12920d07ed8006d7e7232b31296a384ff5e41d7b649bde5561196041037bbb9f9715be1d1c20975df87ca204f34ad15b965 - languageName: node - linkType: hard - -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 - languageName: node - linkType: hard - -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 - languageName: node - linkType: hard - -"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.24.7, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.25.4 - resolution: "@babel/plugin-syntax-typescript@npm:7.25.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9b89b8930cd5983f64251d75c9fcdc17a8dc73837d6de12220ff972888ecff4054a6467cf0c423cad242aa96c0f0564a39a0823073728cc02239b80d13f02230 - languageName: node - linkType: hard - -"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.18.6" - "@babel/helper-plugin-utils": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: a651d700fe63ff0ddfd7186f4ebc24447ca734f114433139e3c027bc94a900d013cf1ef2e2db8430425ba542e39ae160c3b05f06b59fd4656273a3df97679e9c - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 707c209b5331c7dc79bd326128c6a6640dbd62a78da1653c844db20c4f36bf7b68454f1bc4d2d051b3fde9136fa291f276ec03a071bb00ee653069ff82f91010 - languageName: node - linkType: hard - -"@babel/plugin-transform-async-generator-functions@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/helper-remap-async-to-generator": "npm:^7.25.0" - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/traverse": "npm:^7.25.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4235444735a1946f8766fe56564a8134c2c36c73e6cf83b3f2ed5624ebc84ff5979506a6a5b39acdb23aa09d442a6af471710ed408ccce533a2c4d2990b9df6a - languageName: node - linkType: hard - -"@babel/plugin-transform-async-to-generator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.24.7" - dependencies: - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-remap-async-to-generator": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 13704fb3b83effc868db2b71bfb2c77b895c56cb891954fc362e95e200afd523313b0e7cf04ce02f45b05e76017c5b5fa8070c92613727a35131bb542c253a36 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoped-functions@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 249cdcbff4e778b177245f9652b014ea4f3cd245d83297f10a7bf6d97790074089aa62bcde8c08eb299c5e68f2faed346b587d3ebac44d625ba9a83a4ee27028 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-transform-block-scoping@npm:7.25.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b1a8f932f69ad2a47ae3e02b4cedd2a876bfc2ac9cf72a503fd706cdc87272646fe9eed81e068c0fc639647033de29f7fa0c21cddd1da0026f83dbaac97316a8 - languageName: node - linkType: hard - -"@babel/plugin-transform-class-properties@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/plugin-transform-class-properties@npm:7.25.4" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.25.4" - "@babel/helper-plugin-utils": "npm:^7.24.8" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b73f7d968639c6c2dfc13f4c5a8fe45cefd260f0faa7890ae12e65d41211072544ff5e128c8b61a86887b29ffd3df8422dbdfbf61648488e71d4bb599c41f4a5 - languageName: node - linkType: hard - -"@babel/plugin-transform-class-static-block@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-class-static-block@npm:7.24.7" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.12.0 - checksum: 324049263504f18416f1c3e24033baebfafd05480fdd885c8ebe6f2b415b0fc8e0b98d719360f9e30743cc78ac387fabc0b3c6606d2b54135756ffb92963b382 - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/plugin-transform-classes@npm:7.25.4" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-compilation-targets": "npm:^7.25.2" - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/helper-replace-supers": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.4" - globals: "npm:^11.1.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0bf20e46eeb691bd60cee5d1b01950fc37accec88018ecace25099f7c8d8509c1ac54d11b8caf9f2157c6945969520642a3bc421159c1a14e80224dc9a7611de - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-computed-properties@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/template": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0cf8c1b1e4ea57dec8d4612460d84fd4cdbf71a7499bb61ee34632cf89018a59eee818ffca88a8d99ee7057c20a4257044d7d463fda6daef9bf1db9fa81563cb - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/plugin-transform-destructuring@npm:7.24.8" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0b4bd3d608979a1e5bd97d9d42acd5ad405c7fffa61efac4c7afd8e86ea6c2d91ab2d94b6a98d63919571363fe76e0b03c4ff161f0f60241b895842596e4a999 - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.24.7" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 67b10fc6abb1f61f0e765288eb4c6d63d1d0f9fc0660e69f6f2170c56fa16bc74e49857afc644beda112b41771cd90cf52df0940d11e97e52617c77c7dcff171 - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-keys@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d1da2ff85ecb56a63f4ccfd9dc9ae69400d85f0dadf44ecddd9e71c6e5c7a9178e74e3a9637555f415a2bb14551e563f09f98534ab54f53d25e8439fdde6ba2d - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.0" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.0" - "@babel/helper-plugin-utils": "npm:^7.24.8" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 608d6b0e77341189508880fd1a9f605a38d0803dd6f678ea3920ab181b17b377f6d5221ae8cf0104c7a044d30d4ddb0366bd064447695671d78457a656bb264f - languageName: node - linkType: hard - -"@babel/plugin-transform-dynamic-import@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-dynamic-import@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 776509ff62ab40c12be814a342fc56a5cc09b91fb63032b2633414b635875fd7da03734657be0f6db2891fe6e3033b75d5ddb6f2baabd1a02e4443754a785002 - languageName: node - linkType: hard - -"@babel/plugin-transform-exponentiation-operator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.24.7" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 23c84a23eb56589fdd35a3540f9a1190615be069110a2270865223c03aee3ba4e0fc68fe14850800cf36f0712b26e4964d3026235261f58f0405a29fe8dac9b1 - languageName: node - linkType: hard - -"@babel/plugin-transform-export-namespace-from@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-export-namespace-from@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3bd3a10038f10ae0dea1ee42137f3edcf7036b5e9e570a0d1cbd0865f03658990c6c2d84fa2475f87a754e7dc5b46766c16f7ce5c9b32c3040150b6a21233a80 - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-for-of@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a53b42dc93ab4b7d1ebd3c695b52be22b3d592f6a3dbdb3dc2fea2c8e0a7e1508fe919864c455cde552aec44ce7518625fccbb70c7063373ca228d884f4f49ea - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.25.1": - version: 7.25.1 - resolution: "@babel/plugin-transform-function-name@npm:7.25.1" - dependencies: - "@babel/helper-compilation-targets": "npm:^7.24.8" - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/traverse": "npm:^7.25.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 743f3ea03bbc5a90944849d5a880b6bd9243dddbde581a46952da76e53a0b74c1e2424133fe8129d7a152c1f8c872bcd27e0b6728d7caadabd1afa7bb892e1e0 - languageName: node - linkType: hard - -"@babel/plugin-transform-json-strings@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-json-strings@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 88874d0b7a1ddea66c097fc0abb68801ffae194468aa44b828dde9a0e20ac5d8647943793de86092eabaa2911c96f67a6b373793d4bb9c932ef81b2711c06c2e - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/plugin-transform-literals@npm:7.25.2" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 70c9bb40e377a306bd8f500899fb72127e527517914466e95dc6bb53fa7a0f51479db244a54a771b5780fc1eab488fedd706669bf11097b81a23c81ab7423eb1 - languageName: node - linkType: hard - -"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3367ce0be243704dc6fce23e86a592c4380f01998ee5dd9f94c54b1ef7b971ac6f8a002901eb51599ac6cbdc0d067af8d1a720224fca1c40fde8bb8aab804aac - languageName: node - linkType: hard - -"@babel/plugin-transform-member-expression-literals@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2720c57aa3bf70576146ba7d6ea03227f4611852122d76d237924f7b008dafc952e6ae61a19e5024f26c665f44384bbd378466f01b6bd1305b3564a3b7fb1a5d - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-amd@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-modules-amd@npm:7.24.7" - dependencies: - "@babel/helper-module-transforms": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f1dd0fb2f46c0f8f21076b8c7ccd5b33a85ce6dcb31518ea4c648d9a5bb2474cd4bd87c9b1b752e68591e24b022e334ba0d07631fef2b6b4d8a4b85cf3d581f5 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.24.7, @babel/plugin-transform-modules-commonjs@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.8" - dependencies: - "@babel/helper-module-transforms": "npm:^7.24.8" - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/helper-simple-access": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a4cf95b1639c33382064b44558f73ee5fac023f2a94d16e549d2bb55ceebd5cbc10fcddd505d08cd5bc97f5a64af9fd155512358b7dcf7b1a0082e8945cf21c5 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.0" - dependencies: - "@babel/helper-module-transforms": "npm:^7.25.0" - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/helper-validator-identifier": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fe673bec08564e491847324bb80a1e6edfb229f5c37e58a094d51e95306e7b098e1d130fc43e992d22debd93b9beac74441ffc3f6ea5d78f6b2535896efa0728 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-umd@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-modules-umd@npm:7.24.7" - dependencies: - "@babel/helper-module-transforms": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9ff1c464892efe042952ba778468bda6131b196a2729615bdcc3f24cdc94014f016a4616ee5643c5845bade6ba698f386833e61056d7201314b13a7fd69fac88 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.24.7" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: f1c6c7b5d60a86b6d7e4dd098798e1d393d55e993a0b57a73b53640c7a94985b601a96bdacee063f809a9a700bcea3a2ff18e98fa561554484ac56b761d774bd - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-new-target@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3cb94cd1076b270f768f91fdcf9dd2f6d487f8dbfff3df7ca8d07b915900b86d02769a35ba1407d16fe49499012c8f055e1741299e2c880798b953d942a8fa1b - languageName: node - linkType: hard - -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4a9221356401d87762afbc37a9e8e764afc2daf09c421117537820f8cfbed6876888372ad3a7bcfae2d45c95f026651f050ab4020b777be31d3ffb00908dbdd3 - languageName: node - linkType: hard - -"@babel/plugin-transform-numeric-separator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 561b5f1d08b2c3f92ce849f092751558b5e6cfeb7eb55c79e7375c34dd9c3066dce5e630bb439affef6adcf202b6cbcaaa23870070276fa5bb429c8f5b8c7514 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-rest-spread@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.24.7" - dependencies: - "@babel/helper-compilation-targets": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-transform-parameters": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 169d257b9800c13e1feb4c37fb05dae84f702e58b342bb76e19e82e6692b7b5337c9923ee89e3916a97c0dd04a3375bdeca14f5e126f110bbacbeb46d1886ca2 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-super@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-object-super@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-replace-supers": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f71e607a830ee50a22fa1a2686524d3339440cf9dea63032f6efbd865cfe4e35000e1e3f3492459e5c986f7c0c07dc36938bf3ce61fc9ba5f8ab732d0b64ab37 - languageName: node - linkType: hard - -"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7229f3a5a4facaab40f4fdfc7faabc157dc38a67d66bed7936599f4bc509e0bff636f847ac2aa45294881fce9cf8a0a460b85d2a465b7b977de9739fce9b18f6 - languageName: node - linkType: hard - -"@babel/plugin-transform-optional-chaining@npm:^7.24.7, @babel/plugin-transform-optional-chaining@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.8" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 45e55e3a2fffb89002d3f89aef59c141610f23b60eee41e047380bffc40290b59f64fc649aa7ec5281f73d41b2065410d788acc6afaad2a9f44cad6e8af04442 - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-parameters@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ab534b03ac2eff94bc79342b8f39a4584666f5305a6c63c1964afda0b1b004e6b861e49d1683548030defe248e3590d3ff6338ee0552cb90c064f7e1479968c3 - languageName: node - linkType: hard - -"@babel/plugin-transform-private-methods@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/plugin-transform-private-methods@npm:7.25.4" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.25.4" - "@babel/helper-plugin-utils": "npm:^7.24.8" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cb1dabfc03e2977990263d65bc8f43a9037dffbb5d9a5f825c00d05447ff68015099408c1531d9dd88f18a41a90f5062dc48f3a1d52b415d2d2ee4827dedff09 - languageName: node - linkType: hard - -"@babel/plugin-transform-private-property-in-object@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.24.7" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-create-class-features-plugin": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8cee9473095305cc787bb653fd681719b49363281feabf677db8a552e8e41c94441408055d7e5fd5c7d41b315e634fa70b145ad0c7c54456216049df4ed57350 - languageName: node - linkType: hard - -"@babel/plugin-transform-property-literals@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-property-literals@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9aeefc3aab6c6bf9d1fae1cf3a2d38c7d886fd3c6c81b7c608c477f5758aee2e7abf52f32724310fe861da61af934ee2508b78a5b5f234b9740c9134e1c14437 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx@npm:^7.22.5": - version: 7.25.2 - resolution: "@babel/plugin-transform-react-jsx@npm:7.25.2" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/plugin-syntax-jsx": "npm:^7.24.7" - "@babel/types": "npm:^7.25.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 44fbde046385916de19a88d77fed9121c6cc6e25b9cdc38a43d8e514a9b18cf391ed3de25e7d6a8996d3fe4c298e395edf856ee20efffaab3b70f8ce225fffa4 - languageName: node - linkType: hard - -"@babel/plugin-transform-regenerator@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-regenerator@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - regenerator-transform: "npm:^0.15.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 20c6c3fb6fc9f407829087316653388d311e8c1816b007609bb09aeef254092a7157adace8b3aaa8f34be752503717cb85c88a5fe482180a9b11bcbd676063be - languageName: node - linkType: hard - -"@babel/plugin-transform-reserved-words@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-reserved-words@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3d5876954d5914d7270819479504f30c4bf5452a65c677f44e2dab2db50b3c9d4b47793c45dfad7abf4f377035dd79e4b3f554ae350df9f422201d370ce9f8dd - languageName: node - linkType: hard - -"@babel/plugin-transform-shorthand-properties@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7b524245814607188212b8eb86d8c850e5974203328455a30881b4a92c364b93353fae14bc2af5b614ef16300b75b8c1d3b8f3a08355985b4794a7feb240adc3 - languageName: node - linkType: hard - -"@babel/plugin-transform-spread@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-spread@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4c4254c8b9cceb1a8f975fa9b92257ddb08380a35c0a3721b8f4b9e13a3d82e403af2e0fba577b9f2452dd8f06bc3dea71cc53b1e2c6af595af5db52a13429d6 - languageName: node - linkType: hard - -"@babel/plugin-transform-sticky-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 118fc7a7ebf7c20411b670c8a030535fdfe4a88bc5643bb625a584dbc4c8a468da46430a20e6bf78914246962b0f18f1b9d6a62561a7762c4f34a038a5a77179 - languageName: node - linkType: hard - -"@babel/plugin-transform-template-literals@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-template-literals@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ad44e5826f5a98c1575832dbdbd033adfe683cdff195e178528ead62507564bf02f479b282976cfd3caebad8b06d5fd7349c1cdb880dec3c56daea4f1f179619 - languageName: node - linkType: hard - -"@babel/plugin-transform-typeof-symbol@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.24.8" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.8" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8663a8e7347cedf181001d99c88cf794b6598c3d82f324098510fe8fb8bd22113995526a77aa35a3cc5d70ffd0617a59dd0d10311a9bf0e1a3a7d3e59b900c00 - languageName: node - linkType: hard - -"@babel/plugin-transform-typescript@npm:^7.24.7": - version: 7.25.2 - resolution: "@babel/plugin-transform-typescript@npm:7.25.2" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.24.7" - "@babel/helper-create-class-features-plugin": "npm:^7.25.0" - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.24.7" - "@babel/plugin-syntax-typescript": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b0267128d93560a4350919f7230a3b497e20fb8611d9f04bb3560d6b38877305ccad4c40903160263361c6930a84dbcb5b21b8ea923531bda51f67bffdc2dd0b +"@babel/helper-string-parser@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-string-parser@npm:7.24.8" + checksum: 39b03c5119216883878655b149148dc4d2e284791e969b19467a9411fccaa33f7a713add98f4db5ed519535f70ad273cdadfd2eb54d47ebbdeac5083351328ce languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.24.7": +"@babel/helper-validator-identifier@npm:^7.24.7": version: 7.24.7 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.24.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4af0a193e1ddea6ff82b2b15cc2501b872728050bd625740b813c8062fec917d32d530ff6b41de56c15e7296becdf3336a58db81f5ca8e7c445c1306c52f3e01 + resolution: "@babel/helper-validator-identifier@npm:7.24.7" + checksum: 6799ab117cefc0ecd35cd0b40ead320c621a298ecac88686a14cffceaac89d80cdb3c178f969861bf5fa5e4f766648f9161ea0752ecfe080d8e89e3147270257 languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.24.7" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: aae13350c50973f5802ca7906d022a6a0cc0e3aebac9122d0450bbd51e78252d4c2032ad69385e2759fcbdd3aac5d571bd7e26258907f51f8e1a51b53be626c2 +"@babel/helper-validator-option@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-validator-option@npm:7.24.8" + checksum: a52442dfa74be6719c0608fee3225bd0493c4057459f3014681ea1a4643cd38b68ff477fe867c4b356da7330d085f247f0724d300582fa4ab9a02efaf34d107c languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.24.7" +"@babel/helpers@npm:^7.25.0": + version: 7.25.6 + resolution: "@babel/helpers@npm:7.25.6" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.24.7" - "@babel/helper-plugin-utils": "npm:^7.24.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1cb4e70678906e431da0a05ac3f8350025fee290304ad7482d9cfaa1ca67b2e898654de537c9268efbdad5b80d3ebadf42b4a88ea84609bd8a4cce7b11b48afd + "@babel/template": "npm:^7.25.0" + "@babel/types": "npm:^7.25.6" + checksum: 5a548999db82049a5f7ac6de57576b4ed0d386ce07d058151698836ed411eae6230db12535487caeebb68a2ffc964491e8aead62364a5132ab0ae20e8b68e19f languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.4" +"@babel/highlight@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/highlight@npm:7.24.7" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.2" - "@babel/helper-plugin-utils": "npm:^7.24.8" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 6d1a7e9fdde4ffc9a81c0e3f261b96a9a0dfe65da282ec96fe63b36c597a7389feac638f1df2a8a4f8c9128337bba8e984f934e9f19077930f33abf1926759ea + "@babel/helper-validator-identifier": "npm:^7.24.7" + chalk: "npm:^2.4.2" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.0.0" + checksum: 5cd3a89f143671c4ac129960024ba678b669e6fc673ce078030f5175002d1d3d52bc10b22c5b916a6faf644b5028e9a4bd2bb264d053d9b05b6a98690f1d46f1 languageName: node linkType: hard -"@babel/preset-env@npm:^7.22.9": - version: 7.25.4 - resolution: "@babel/preset-env@npm:7.25.4" +"@babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6": + version: 7.25.6 + resolution: "@babel/parser@npm:7.25.6" dependencies: - "@babel/compat-data": "npm:^7.25.4" - "@babel/helper-compilation-targets": "npm:^7.25.2" - "@babel/helper-plugin-utils": "npm:^7.24.8" - "@babel/helper-validator-option": "npm:^7.24.8" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.25.3" - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.25.0" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.25.0" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.24.7" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.25.0" - "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/plugin-syntax-class-properties": "npm:^7.12.13" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" - "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" - "@babel/plugin-syntax-import-assertions": "npm:^7.24.7" - "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" - "@babel/plugin-syntax-import-meta": "npm:^7.10.4" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" - "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" - "@babel/plugin-transform-arrow-functions": "npm:^7.24.7" - "@babel/plugin-transform-async-generator-functions": "npm:^7.25.4" - "@babel/plugin-transform-async-to-generator": "npm:^7.24.7" - "@babel/plugin-transform-block-scoped-functions": "npm:^7.24.7" - "@babel/plugin-transform-block-scoping": "npm:^7.25.0" - "@babel/plugin-transform-class-properties": "npm:^7.25.4" - "@babel/plugin-transform-class-static-block": "npm:^7.24.7" - "@babel/plugin-transform-classes": "npm:^7.25.4" - "@babel/plugin-transform-computed-properties": "npm:^7.24.7" - "@babel/plugin-transform-destructuring": "npm:^7.24.8" - "@babel/plugin-transform-dotall-regex": "npm:^7.24.7" - "@babel/plugin-transform-duplicate-keys": "npm:^7.24.7" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.25.0" - "@babel/plugin-transform-dynamic-import": "npm:^7.24.7" - "@babel/plugin-transform-exponentiation-operator": "npm:^7.24.7" - "@babel/plugin-transform-export-namespace-from": "npm:^7.24.7" - "@babel/plugin-transform-for-of": "npm:^7.24.7" - "@babel/plugin-transform-function-name": "npm:^7.25.1" - "@babel/plugin-transform-json-strings": "npm:^7.24.7" - "@babel/plugin-transform-literals": "npm:^7.25.2" - "@babel/plugin-transform-logical-assignment-operators": "npm:^7.24.7" - "@babel/plugin-transform-member-expression-literals": "npm:^7.24.7" - "@babel/plugin-transform-modules-amd": "npm:^7.24.7" - "@babel/plugin-transform-modules-commonjs": "npm:^7.24.8" - "@babel/plugin-transform-modules-systemjs": "npm:^7.25.0" - "@babel/plugin-transform-modules-umd": "npm:^7.24.7" - "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.24.7" - "@babel/plugin-transform-new-target": "npm:^7.24.7" - "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.24.7" - "@babel/plugin-transform-numeric-separator": "npm:^7.24.7" - "@babel/plugin-transform-object-rest-spread": "npm:^7.24.7" - "@babel/plugin-transform-object-super": "npm:^7.24.7" - "@babel/plugin-transform-optional-catch-binding": "npm:^7.24.7" - "@babel/plugin-transform-optional-chaining": "npm:^7.24.8" - "@babel/plugin-transform-parameters": "npm:^7.24.7" - "@babel/plugin-transform-private-methods": "npm:^7.25.4" - "@babel/plugin-transform-private-property-in-object": "npm:^7.24.7" - "@babel/plugin-transform-property-literals": "npm:^7.24.7" - "@babel/plugin-transform-regenerator": "npm:^7.24.7" - "@babel/plugin-transform-reserved-words": "npm:^7.24.7" - "@babel/plugin-transform-shorthand-properties": "npm:^7.24.7" - "@babel/plugin-transform-spread": "npm:^7.24.7" - "@babel/plugin-transform-sticky-regex": "npm:^7.24.7" - "@babel/plugin-transform-template-literals": "npm:^7.24.7" - "@babel/plugin-transform-typeof-symbol": "npm:^7.24.8" - "@babel/plugin-transform-unicode-escapes": "npm:^7.24.7" - "@babel/plugin-transform-unicode-property-regex": "npm:^7.24.7" - "@babel/plugin-transform-unicode-regex": "npm:^7.24.7" - "@babel/plugin-transform-unicode-sets-regex": "npm:^7.25.4" - "@babel/preset-modules": "npm:0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2: "npm:^0.4.10" - babel-plugin-polyfill-corejs3: "npm:^0.10.6" - babel-plugin-polyfill-regenerator: "npm:^0.6.1" - core-js-compat: "npm:^3.37.1" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 752be43f0b78a2eefe5007076aed3d21b505e1c09d134b61e7de8838f1bbb1e7af81023d39adb14b6eae23727fb5a9fd23f8115a44df043319be22319be17913 + "@babel/types": "npm:^7.25.6" + bin: + parser: ./bin/babel-parser.js + checksum: 85b237ded09ee43cc984493c35f3b1ff8a83e8dbbb8026b8132e692db6567acc5a1659ec928e4baa25499ddd840d7dae9dee3062be7108fe23ec5f94a8066b1e languageName: node linkType: hard -"@babel/preset-modules@npm:0.1.6-no-external-plugins": - version: 0.1.6-no-external-plugins - resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" +"@babel/plugin-syntax-class-properties@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@babel/types": "npm:^7.4.4" - esutils: "npm:^2.0.2" + "@babel/helper-plugin-utils": "npm:^7.12.13" peerDependencies: - "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 - checksum: 4855e799bc50f2449fb5210f78ea9e8fd46cf4f242243f1e2ed838e2bd702e25e73e822e7f8447722a5f4baa5e67a8f7a0e403f3e7ce04540ff743a9c411c375 + "@babel/core": ^7.0.0-0 + checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.22.5": +"@babel/plugin-syntax-jsx@npm:^7.12.13": version: 7.24.7 - resolution: "@babel/preset-typescript@npm:7.24.7" + resolution: "@babel/plugin-syntax-jsx@npm:7.24.7" dependencies: "@babel/helper-plugin-utils": "npm:^7.24.7" - "@babel/helper-validator-option": "npm:^7.24.7" - "@babel/plugin-syntax-jsx": "npm:^7.24.7" - "@babel/plugin-transform-modules-commonjs": "npm:^7.24.7" - "@babel/plugin-transform-typescript": "npm:^7.24.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 12929b24757f3bd6548103475f86478eda4c872bc7cefd920b29591eee8f4a4f350561d888e133d632d0c9402b8615fdcec9138e5127a6567dcb22f804ff207f - languageName: node - linkType: hard - -"@babel/regjsgen@npm:^0.8.0": - version: 0.8.0 - resolution: "@babel/regjsgen@npm:0.8.0" - checksum: 89c338fee774770e5a487382170711014d49a68eb281e74f2b5eac88f38300a4ad545516a7786a8dd5702e9cf009c94c2f582d200f077ac5decd74c56b973730 - languageName: node - linkType: hard - -"@babel/runtime-corejs3@npm:^7.10.2": - version: 7.25.6 - resolution: "@babel/runtime-corejs3@npm:7.25.6" - dependencies: - core-js-pure: "npm:^3.30.2" - regenerator-runtime: "npm:^0.14.0" - checksum: 54d60c4eadfb58420dc88fb5bbba97910bb08bac316085ea74ee40584b56a9d9c1fb0f608862b8fef71c05837aaac9c2ed19504adfd72011f9740fe5d57733ae + checksum: 7a5ca629d8ca1e1ee78705a78e58c12920d07ed8006d7e7232b31296a384ff5e41d7b649bde5561196041037bbb9f9715be1d1c20975df87ca204f34ad15b965 languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.25.0, @babel/runtime@npm:^7.8.4": +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.25.0": version: 7.25.6 resolution: "@babel/runtime@npm:7.25.6" dependencies: @@ -1423,7 +234,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.24.7, @babel/template@npm:^7.25.0, @babel/template@npm:^7.3.3": +"@babel/template@npm:^7.25.0": version: 7.25.0 resolution: "@babel/template@npm:7.25.0" dependencies: @@ -1434,7 +245,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.24.8, @babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.1, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.25.4, @babel/traverse@npm:^7.7.2": +"@babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.25.2": version: 7.25.6 resolution: "@babel/traverse@npm:7.25.6" dependencies: @@ -1449,7 +260,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.6, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": +"@babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.6": version: 7.25.6 resolution: "@babel/types@npm:7.25.6" dependencies: @@ -1460,13 +271,6 @@ __metadata: languageName: node linkType: hard -"@bcoe/v8-coverage@npm:^0.2.3": - version: 0.2.3 - resolution: "@bcoe/v8-coverage@npm:0.2.3" - checksum: 850f9305536d0f2bd13e9e0881cb5f02e4f93fad1189f7b2d4bebf694e3206924eadee1068130d43c11b750efcc9405f88a8e42ef098b6d75239c0f047de1a27 - languageName: node - linkType: hard - "@chakra-ui/accordion@npm:2.3.1": version: 2.3.1 resolution: "@chakra-ui/accordion@npm:2.3.1" @@ -2729,20 +1533,13 @@ __metadata: version: 0.0.0-use.local resolution: "@coinbase/wallet-sdk@workspace:packages/wallet-sdk" dependencies: - "@babel/core": ^7.22.9 - "@babel/plugin-proposal-decorators": ^7.22.7 - "@babel/plugin-transform-react-jsx": ^7.22.5 - "@babel/preset-env": ^7.22.9 - "@babel/preset-typescript": ^7.22.5 "@noble/hashes": ^1.4.0 - "@peculiar/webcrypto": ^1.4.3 + "@size-limit/preset-big-lib": ^11.1.6 "@testing-library/jest-dom": ^6.5.0 - "@testing-library/preact": ^2.0.1 - "@types/jest": ^27.5.2 + "@testing-library/preact": ^3.2.4 "@types/node": ^14.18.54 "@typescript-eslint/eslint-plugin": ^6.2.0 "@typescript-eslint/parser": ^6.2.0 - babel-jest: ^27.5.1 clsx: ^1.2.1 eslint: ^8.45.0 eslint-config-preact: ^1.3.0 @@ -2752,30 +1549,20 @@ __metadata: eslint-plugin-unused-imports: ^3.0.0 eventemitter3: ^5.0.1 glob: ^11.0.0 - jest: ^27.5.1 - jest-chrome: ^0.7.2 jest-websocket-mock: ^2.4.0 + jsdom: ^25.0.1 nodemon: ^3.1.0 - preact: ^10.16.0 + preact: ^10.24.2 prettier: ^3.0.0 sass: ^1.64.1 - ts-jest: ^27.1.5 - ts-node: ^10.9.1 + size-limit: ^11.1.6 tsc-alias: ^1.8.8 tslib: ^2.6.0 typescript: ^5.1.6 + vitest: ^2.1.2 languageName: unknown linkType: soft -"@cspotcode/source-map-support@npm:^0.8.0": - version: 0.8.1 - resolution: "@cspotcode/source-map-support@npm:0.8.1" - dependencies: - "@jridgewell/trace-mapping": "npm:0.3.9" - checksum: 5718f267085ed8edb3e7ef210137241775e607ee18b77d95aa5bd7514f47f5019aa2d82d96b3bf342ef7aa890a346fa1044532ff7cc3009e7d24fce3ce6200fa - languageName: node - linkType: hard - "@emotion/babel-plugin@npm:^11.12.0": version: 11.12.0 resolution: "@emotion/babel-plugin@npm:11.12.0" @@ -2938,369 +1725,296 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.4.0 - resolution: "@eslint-community/eslint-utils@npm:4.4.0" - dependencies: - eslint-visitor-keys: "npm:^3.3.0" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: cdfe3ae42b4f572cbfb46d20edafe6f36fc5fb52bf2d90875c58aefe226892b9677fef60820e2832caf864a326fe4fc225714c46e8389ccca04d5f9288aabd22 +"@esbuild/aix-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/aix-ppc64@npm:0.21.5" + conditions: os=aix & cpu=ppc64 languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.11.1 - resolution: "@eslint-community/regexpp@npm:4.11.1" - checksum: 6986685529d30e33c2640973c3d8e7ddd31bef3cc8cb10ad54ddc1dea12680779a2c23a45562aa1462c488137a3570e672d122fac7da22d82294382d915cec70 +"@esbuild/android-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm64@npm:0.21.5" + conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" - dependencies: - ajv: "npm:^6.12.4" - debug: "npm:^4.3.2" - espree: "npm:^9.6.0" - globals: "npm:^13.19.0" - ignore: "npm:^5.2.0" - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.0" - minimatch: "npm:^3.1.2" - strip-json-comments: "npm:^3.1.1" - checksum: 10957c7592b20ca0089262d8c2a8accbad14b4f6507e35416c32ee6b4dbf9cad67dfb77096bbd405405e9ada2b107f3797fe94362e1c55e0b09d6e90dd149127 +"@esbuild/android-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm@npm:0.21.5" + conditions: os=android & cpu=arm languageName: node linkType: hard -"@eslint/js@npm:8.57.1": - version: 8.57.1 - resolution: "@eslint/js@npm:8.57.1" - checksum: 2afb77454c06e8316793d2e8e79a0154854d35e6782a1217da274ca60b5044d2c69d6091155234ed0551a1e408f86f09dd4ece02752c59568fa403e60611e880 +"@esbuild/android-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-x64@npm:0.21.5" + conditions: os=android & cpu=x64 languageName: node linkType: hard -"@ethereumjs/common@npm:^3.2.0": - version: 3.2.0 - resolution: "@ethereumjs/common@npm:3.2.0" - dependencies: - "@ethereumjs/util": "npm:^8.1.0" - crc-32: "npm:^1.2.0" - checksum: cb9cc11f5c868cb577ba611cebf55046e509218bbb89b47ccce010776dafe8256d70f8f43fab238aec74cf71f62601cd5842bc03a83261200802de365732a14b +"@esbuild/darwin-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-arm64@npm:0.21.5" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@ethereumjs/rlp@npm:^4.0.1": - version: 4.0.1 - resolution: "@ethereumjs/rlp@npm:4.0.1" - bin: - rlp: bin/rlp - checksum: 30db19c78faa2b6ff27275ab767646929207bb207f903f09eb3e4c273ce2738b45f3c82169ddacd67468b4f063d8d96035f2bf36f02b6b7e4d928eefe2e3ecbc +"@esbuild/darwin-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-x64@npm:0.21.5" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@ethereumjs/tx@npm:^4.1.2, @ethereumjs/tx@npm:^4.2.0": - version: 4.2.0 - resolution: "@ethereumjs/tx@npm:4.2.0" - dependencies: - "@ethereumjs/common": "npm:^3.2.0" - "@ethereumjs/rlp": "npm:^4.0.1" - "@ethereumjs/util": "npm:^8.1.0" - ethereum-cryptography: "npm:^2.0.0" - checksum: 87a3f5f2452cfbf6712f8847525a80c213210ed453c211c793c5df801fe35ecef28bae17fadd222fcbdd94277478a47e52d2b916a90a6b30cda21f1e0cdaee42 +"@esbuild/freebsd-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-arm64@npm:0.21.5" + conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@ethereumjs/util@npm:^8.1.0": - version: 8.1.0 - resolution: "@ethereumjs/util@npm:8.1.0" - dependencies: - "@ethereumjs/rlp": "npm:^4.0.1" - ethereum-cryptography: "npm:^2.0.0" - micro-ftch: "npm:^0.3.1" - checksum: 9ae5dee8f12b0faf81cd83f06a41560e79b0ba96a48262771d897a510ecae605eb6d84f687da001ab8ccffd50f612ae50f988ef76e6312c752897f462f3ac08d +"@esbuild/freebsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-x64@npm:0.21.5" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.13.0": - version: 0.13.0 - resolution: "@humanwhocodes/config-array@npm:0.13.0" - dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.3" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: eae69ff9134025dd2924f0b430eb324981494be26f0fddd267a33c28711c4db643242cf9fddf7dadb9d16c96b54b2d2c073e60a56477df86e0173149313bd5d6 +"@esbuild/linux-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm64@npm:0.21.5" + conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@humanwhocodes/module-importer@npm:^1.0.1": - version: 1.0.1 - resolution: "@humanwhocodes/module-importer@npm:1.0.1" - checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61 +"@esbuild/linux-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm@npm:0.21.5" + conditions: os=linux & cpu=arm languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.3": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: d3b78f6c5831888c6ecc899df0d03bcc25d46f3ad26a11d7ea52944dc36a35ef543fad965322174238d677a43d5c694434f6607532cff7077062513ad7022631 +"@esbuild/linux-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ia32@npm:0.21.5" + conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@isaacs/cliui@npm:^8.0.2": - version: 8.0.2 - resolution: "@isaacs/cliui@npm:8.0.2" - dependencies: - string-width: "npm:^5.1.2" - string-width-cjs: "npm:string-width@^4.2.0" - strip-ansi: "npm:^7.0.1" - strip-ansi-cjs: "npm:strip-ansi@^6.0.1" - wrap-ansi: "npm:^8.1.0" - wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" - checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb +"@esbuild/linux-loong64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-loong64@npm:0.21.5" + conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@istanbuljs/load-nyc-config@npm:^1.0.0": - version: 1.1.0 - resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" - dependencies: - camelcase: "npm:^5.3.1" - find-up: "npm:^4.1.0" - get-package-type: "npm:^0.1.0" - js-yaml: "npm:^3.13.1" - resolve-from: "npm:^5.0.0" - checksum: d578da5e2e804d5c93228450a1380e1a3c691de4953acc162f387b717258512a3e07b83510a936d9fab03eac90817473917e24f5d16297af3867f59328d58568 +"@esbuild/linux-mips64el@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-mips64el@npm:0.21.5" + conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@istanbuljs/schema@npm:^0.1.2": - version: 0.1.3 - resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 +"@esbuild/linux-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ppc64@npm:0.21.5" + conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@jest/console@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/console@npm:27.5.1" - dependencies: - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - jest-message-util: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - slash: "npm:^3.0.0" - checksum: 7cb20f06a34b09734c0342685ec53aa4c401fe3757c13a9c58fce76b971a322eb884f6de1068ef96f746e5398e067371b89515a07c268d4440a867c87748a706 +"@esbuild/linux-riscv64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-riscv64@npm:0.21.5" + conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@jest/core@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/core@npm:27.5.1" +"@esbuild/linux-s390x@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-s390x@npm:0.21.5" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-x64@npm:0.21.5" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/netbsd-x64@npm:0.21.5" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/openbsd-x64@npm:0.21.5" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/sunos-x64@npm:0.21.5" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-arm64@npm:0.21.5" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-ia32@npm:0.21.5" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-x64@npm:0.21.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": + version: 4.4.0 + resolution: "@eslint-community/eslint-utils@npm:4.4.0" dependencies: - "@jest/console": "npm:^27.5.1" - "@jest/reporters": "npm:^27.5.1" - "@jest/test-result": "npm:^27.5.1" - "@jest/transform": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - emittery: "npm:^0.8.1" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.9" - jest-changed-files: "npm:^27.5.1" - jest-config: "npm:^27.5.1" - jest-haste-map: "npm:^27.5.1" - jest-message-util: "npm:^27.5.1" - jest-regex-util: "npm:^27.5.1" - jest-resolve: "npm:^27.5.1" - jest-resolve-dependencies: "npm:^27.5.1" - jest-runner: "npm:^27.5.1" - jest-runtime: "npm:^27.5.1" - jest-snapshot: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - jest-validate: "npm:^27.5.1" - jest-watcher: "npm:^27.5.1" - micromatch: "npm:^4.0.4" - rimraf: "npm:^3.0.0" - slash: "npm:^3.0.0" - strip-ansi: "npm:^6.0.0" + eslint-visitor-keys: "npm:^3.3.0" peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 904a94ad8f1b43cd6b48de3b0226659bff3696150ff8cf7680fc2faffdc8a115203bb9ab6e817c1f79f9d6a81f67953053cbc64d8a4604f2e0c42a04c28cf126 + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: cdfe3ae42b4f572cbfb46d20edafe6f36fc5fb52bf2d90875c58aefe226892b9677fef60820e2832caf864a326fe4fc225714c46e8389ccca04d5f9288aabd22 languageName: node linkType: hard -"@jest/environment@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/environment@npm:27.5.1" - dependencies: - "@jest/fake-timers": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - jest-mock: "npm:^27.5.1" - checksum: 2a9e18c35a015508dbec5b90b21c150230fa6c1c8cb8fabe029d46ee2ca4c40eb832fb636157da14c66590d0a4c8a2c053226b041f54a44507d6f6a89abefd66 +"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": + version: 4.11.1 + resolution: "@eslint-community/regexpp@npm:4.11.1" + checksum: 6986685529d30e33c2640973c3d8e7ddd31bef3cc8cb10ad54ddc1dea12680779a2c23a45562aa1462c488137a3570e672d122fac7da22d82294382d915cec70 languageName: node linkType: hard -"@jest/fake-timers@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/fake-timers@npm:27.5.1" +"@eslint/eslintrc@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" dependencies: - "@jest/types": "npm:^27.5.1" - "@sinonjs/fake-timers": "npm:^8.0.1" - "@types/node": "npm:*" - jest-message-util: "npm:^27.5.1" - jest-mock: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - checksum: 02a0561ed2f4586093facd4ae500b74694f187ac24d4a00e949a39a1c5325bca8932b4fcb0388a2c5ed0656506fc1cf51fd3e32cdd48cea7497ad9c6e028aba8 + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^9.6.0" + globals: "npm:^13.19.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10957c7592b20ca0089262d8c2a8accbad14b4f6507e35416c32ee6b4dbf9cad67dfb77096bbd405405e9ada2b107f3797fe94362e1c55e0b09d6e90dd149127 languageName: node linkType: hard -"@jest/globals@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/globals@npm:27.5.1" - dependencies: - "@jest/environment": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - expect: "npm:^27.5.1" - checksum: 087f97047e9dcf555f76fe2ce54aee681e005eaa837a0c0c2d251df6b6412c892c9df54cb871b180342114389a5ff895a4e52e6e6d3d0015bf83c02a54f64c3c +"@eslint/js@npm:8.57.1": + version: 8.57.1 + resolution: "@eslint/js@npm:8.57.1" + checksum: 2afb77454c06e8316793d2e8e79a0154854d35e6782a1217da274ca60b5044d2c69d6091155234ed0551a1e408f86f09dd4ece02752c59568fa403e60611e880 languageName: node linkType: hard -"@jest/reporters@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/reporters@npm:27.5.1" - dependencies: - "@bcoe/v8-coverage": "npm:^0.2.3" - "@jest/console": "npm:^27.5.1" - "@jest/test-result": "npm:^27.5.1" - "@jest/transform": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - collect-v8-coverage: "npm:^1.0.0" - exit: "npm:^0.1.2" - glob: "npm:^7.1.2" - graceful-fs: "npm:^4.2.9" - istanbul-lib-coverage: "npm:^3.0.0" - istanbul-lib-instrument: "npm:^5.1.0" - istanbul-lib-report: "npm:^3.0.0" - istanbul-lib-source-maps: "npm:^4.0.0" - istanbul-reports: "npm:^3.1.3" - jest-haste-map: "npm:^27.5.1" - jest-resolve: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - jest-worker: "npm:^27.5.1" - slash: "npm:^3.0.0" - source-map: "npm:^0.6.0" - string-length: "npm:^4.0.1" - terminal-link: "npm:^2.0.0" - v8-to-istanbul: "npm:^8.1.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: faba5eafb86e62b62e152cafc8812d56308f9d1e8b77f3a7dcae4a8803a20a60a0909cc43ed73363ef649bf558e4fb181c7a336d144c89f7998279d1882bb69e +"@ethereumjs/common@npm:^3.2.0": + version: 3.2.0 + resolution: "@ethereumjs/common@npm:3.2.0" + dependencies: + "@ethereumjs/util": "npm:^8.1.0" + crc-32: "npm:^1.2.0" + checksum: cb9cc11f5c868cb577ba611cebf55046e509218bbb89b47ccce010776dafe8256d70f8f43fab238aec74cf71f62601cd5842bc03a83261200802de365732a14b languageName: node linkType: hard -"@jest/schemas@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/schemas@npm:29.6.3" - dependencies: - "@sinclair/typebox": "npm:^0.27.8" - checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 +"@ethereumjs/rlp@npm:^4.0.1": + version: 4.0.1 + resolution: "@ethereumjs/rlp@npm:4.0.1" + bin: + rlp: bin/rlp + checksum: 30db19c78faa2b6ff27275ab767646929207bb207f903f09eb3e4c273ce2738b45f3c82169ddacd67468b4f063d8d96035f2bf36f02b6b7e4d928eefe2e3ecbc languageName: node linkType: hard -"@jest/source-map@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/source-map@npm:27.5.1" +"@ethereumjs/tx@npm:^4.1.2, @ethereumjs/tx@npm:^4.2.0": + version: 4.2.0 + resolution: "@ethereumjs/tx@npm:4.2.0" dependencies: - callsites: "npm:^3.0.0" - graceful-fs: "npm:^4.2.9" - source-map: "npm:^0.6.0" - checksum: 4fb1e743b602841babf7e22bd84eca34676cb05d4eb3b604cae57fc59e406099f5ac759ac1a0d04d901237d143f0f4f234417306e823bde732a1d19982230862 + "@ethereumjs/common": "npm:^3.2.0" + "@ethereumjs/rlp": "npm:^4.0.1" + "@ethereumjs/util": "npm:^8.1.0" + ethereum-cryptography: "npm:^2.0.0" + checksum: 87a3f5f2452cfbf6712f8847525a80c213210ed453c211c793c5df801fe35ecef28bae17fadd222fcbdd94277478a47e52d2b916a90a6b30cda21f1e0cdaee42 languageName: node linkType: hard -"@jest/test-result@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/test-result@npm:27.5.1" +"@ethereumjs/util@npm:^8.1.0": + version: 8.1.0 + resolution: "@ethereumjs/util@npm:8.1.0" dependencies: - "@jest/console": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - collect-v8-coverage: "npm:^1.0.0" - checksum: 338f7c509d6a3bc6d7dd7388c8f6f548b87638e171dc1fddfedcacb4e8950583288832223ba688058cbcf874b937d22bdc0fa88f79f5fc666f77957e465c06a5 + "@ethereumjs/rlp": "npm:^4.0.1" + ethereum-cryptography: "npm:^2.0.0" + micro-ftch: "npm:^0.3.1" + checksum: 9ae5dee8f12b0faf81cd83f06a41560e79b0ba96a48262771d897a510ecae605eb6d84f687da001ab8ccffd50f612ae50f988ef76e6312c752897f462f3ac08d languageName: node linkType: hard -"@jest/test-sequencer@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/test-sequencer@npm:27.5.1" +"@humanwhocodes/config-array@npm:^0.13.0": + version: 0.13.0 + resolution: "@humanwhocodes/config-array@npm:0.13.0" dependencies: - "@jest/test-result": "npm:^27.5.1" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^27.5.1" - jest-runtime: "npm:^27.5.1" - checksum: f21f9c8bb746847f7f89accfd29d6046eec1446f0b54e4694444feaa4df379791f76ef0f5a4360aafcbc73b50bc979f68b8a7620de404019d3de166be6720cb0 + "@humanwhocodes/object-schema": "npm:^2.0.3" + debug: "npm:^4.3.1" + minimatch: "npm:^3.0.5" + checksum: eae69ff9134025dd2924f0b430eb324981494be26f0fddd267a33c28711c4db643242cf9fddf7dadb9d16c96b54b2d2c073e60a56477df86e0173149313bd5d6 languageName: node linkType: hard -"@jest/transform@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/transform@npm:27.5.1" - dependencies: - "@babel/core": "npm:^7.1.0" - "@jest/types": "npm:^27.5.1" - babel-plugin-istanbul: "npm:^6.1.1" - chalk: "npm:^4.0.0" - convert-source-map: "npm:^1.4.0" - fast-json-stable-stringify: "npm:^2.0.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^27.5.1" - jest-regex-util: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - micromatch: "npm:^4.0.4" - pirates: "npm:^4.0.4" - slash: "npm:^3.0.0" - source-map: "npm:^0.6.1" - write-file-atomic: "npm:^3.0.0" - checksum: a22079121aedea0f20a03a9c026be971f7b92adbfb4d5fd1fb67be315741deac4f056936d7c72a53b24aa5a1071bc942c003925fd453bf3f6a0ae5da6384e137 +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^2.0.3": + version: 2.0.3 + resolution: "@humanwhocodes/object-schema@npm:2.0.3" + checksum: d3b78f6c5831888c6ecc899df0d03bcc25d46f3ad26a11d7ea52944dc36a35ef543fad965322174238d677a43d5c694434f6607532cff7077062513ad7022631 languageName: node linkType: hard -"@jest/types@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/types@npm:26.6.2" +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" dependencies: - "@types/istanbul-lib-coverage": "npm:^2.0.0" - "@types/istanbul-reports": "npm:^3.0.0" - "@types/node": "npm:*" - "@types/yargs": "npm:^15.0.0" - chalk: "npm:^4.0.0" - checksum: a0bd3d2f22f26ddb23f41fddf6e6a30bf4fab2ce79ec1cb6ce6fdfaf90a72e00f4c71da91ec61e13db3b10c41de22cf49d07c57ff2b59171d64b29f909c1d8d6 + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb languageName: node linkType: hard -"@jest/types@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/types@npm:27.5.1" +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" dependencies: - "@types/istanbul-lib-coverage": "npm:^2.0.0" - "@types/istanbul-reports": "npm:^3.0.0" - "@types/node": "npm:*" - "@types/yargs": "npm:^16.0.0" - chalk: "npm:^4.0.0" - checksum: d1f43cc946d87543ddd79d49547aab2399481d34025d5c5f2025d3d99c573e1d9832fa83cef25e9d9b07a8583500229d15bbb07b8e233d127d911d133e2f14b1 + "@sinclair/typebox": "npm:^0.27.8" + checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 languageName: node linkType: hard @@ -3315,7 +2029,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": +"@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" checksum: 83b85f72c59d1c080b4cbec0fef84528963a1b5db34e4370fa4bd1e3ff64a0d80e0cee7369d11d73c704e0286fb2865b530acac7a871088fbe92b5edf1000870 @@ -3329,24 +2043,24 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": - version: 1.5.0 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" - checksum: 05df4f2538b3b0f998ea4c1cd34574d0feba216fa5d4ccaef0187d12abf82eafe6021cec8b49f9bb4d90f2ba4582ccc581e72986a5fcf4176ae0cfeb04cf52ec +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.6 + resolution: "@jridgewell/source-map@npm:0.3.6" + dependencies: + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + checksum: c9dc7d899397df95e3c9ec287b93c0b56f8e4453cd20743e2b9c8e779b1949bc3cccf6c01bb302779e46560eb45f62ea38d19fedd25370d814734268450a9f30 languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:0.3.9": - version: 0.3.9 - resolution: "@jridgewell/trace-mapping@npm:0.3.9" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.0.3" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - checksum: d89597752fd88d3f3480845691a05a44bd21faac18e2185b6f436c3b0fd0c5a859fbbd9aaa92050c4052caf325ad3e10e2e1d1b64327517471b7d51babc0ddef +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 05df4f2538b3b0f998ea4c1cd34574d0feba216fa5d4ccaef0187d12abf82eafe6021cec8b49f9bb4d90f2ba4582ccc581e72986a5fcf4176ae0cfeb04cf52ec languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": +"@jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -3668,39 +2382,6 @@ __metadata: languageName: node linkType: hard -"@peculiar/asn1-schema@npm:^2.3.8": - version: 2.3.13 - resolution: "@peculiar/asn1-schema@npm:2.3.13" - dependencies: - asn1js: "npm:^3.0.5" - pvtsutils: "npm:^1.3.5" - tslib: "npm:^2.6.2" - checksum: 245cf398992788fc61c48a4e1263a47803bccd91807e7a419e3fe9ad44ede5e396a5f8d13215b0765774855b634fe10d730b08944e5dc085fc5ee121a7e0139e - languageName: node - linkType: hard - -"@peculiar/json-schema@npm:^1.1.12": - version: 1.1.12 - resolution: "@peculiar/json-schema@npm:1.1.12" - dependencies: - tslib: "npm:^2.0.0" - checksum: b26ececdc23c5ef25837f8be8d1eb5e1c8bb6e9ae7227ac59ffea57fff56bd05137734e7685e9100595d3d88d906dff638ef8d1df54264c388d3eac1b05aa060 - languageName: node - linkType: hard - -"@peculiar/webcrypto@npm:^1.4.3": - version: 1.5.0 - resolution: "@peculiar/webcrypto@npm:1.5.0" - dependencies: - "@peculiar/asn1-schema": "npm:^2.3.8" - "@peculiar/json-schema": "npm:^1.1.12" - pvtsutils: "npm:^1.3.5" - tslib: "npm:^2.6.2" - webcrypto-core: "npm:^1.8.0" - checksum: 9022d7452d564a5a26fbacf477842be34736f2d9139f2f5026adc47fdeda7033193d727491503f2a829d35ab819bbfa61c82a785c49c999eac535ecd69a3a459 - languageName: node - linkType: hard - "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -3722,6 +2403,154 @@ __metadata: languageName: node linkType: hard +"@puppeteer/browsers@npm:2.2.2": + version: 2.2.2 + resolution: "@puppeteer/browsers@npm: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 + bin: + browsers: lib/cjs/main-cli.js + checksum: 328a10ceb432784ec4cd524c461799936603b8436e50eed6a61127022f4c8a36ba31143b0d4d311190d619968f2e9db9fa7ac046757cff2c9f81d301110560be + languageName: node + linkType: hard + +"@puppeteer/browsers@npm:^2.1.0": + version: 2.4.0 + resolution: "@puppeteer/browsers@npm:2.4.0" + dependencies: + debug: ^4.3.6 + extract-zip: ^2.0.1 + progress: ^2.0.3 + proxy-agent: ^6.4.0 + semver: ^7.6.3 + tar-fs: ^3.0.6 + unbzip2-stream: ^1.4.3 + yargs: ^17.7.2 + bin: + browsers: lib/cjs/main-cli.js + checksum: c5f9890f1bf355783574c00b42e8a9bf9e4788d0dce76cc4cd50fcf80b5e5f99ae2b4325edd5350d4fb289f7dfa89f67edf8bc2da9abd53eba1f815caae97beb + languageName: node + linkType: hard + +"@rollup/rollup-android-arm-eabi@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.24.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-android-arm64@npm:4.24.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.24.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.24.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.24.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.24.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.24.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.24.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.24.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.24.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.24.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.24.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.24.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.24.0": + version: 4.24.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.24.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@scure/base@npm:^1.1.3, @scure/base@npm:~1.1.3, @scure/base@npm:~1.1.6": version: 1.1.8 resolution: "@scure/base@npm:1.1.8" @@ -3757,21 +2586,58 @@ __metadata: languageName: node linkType: hard -"@sinonjs/commons@npm:^1.7.0": - version: 1.8.6 - resolution: "@sinonjs/commons@npm:1.8.6" +"@sitespeed.io/tracium@npm:^0.3.3": + version: 0.3.3 + resolution: "@sitespeed.io/tracium@npm:0.3.3" dependencies: - type-detect: "npm:4.0.8" - checksum: 7d3f8c1e85f30cd4e83594fc19b7a657f14d49eb8d95a30095631ce15e906c869e0eff96c5b93dffea7490c00418b07f54582ba49c6560feb2a8c34c0b16832d + debug: ^4.1.1 + checksum: c71bc69e06b7d071f982e17939d2a7ac9f30a098e9e18b9c07ec1636430607ba8e196078af2e354ba49934017a3c2886618f10c60047ffa9ec8a3bfe7d79256e languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^8.0.1": - version: 8.1.0 - resolution: "@sinonjs/fake-timers@npm:8.1.0" +"@size-limit/file@npm:11.1.6": + version: 11.1.6 + resolution: "@size-limit/file@npm:11.1.6" + peerDependencies: + size-limit: 11.1.6 + checksum: 5d26178cb9488d4ec8446c4cfee770a48450755636984ce0748255e3782555cf0a7cd944f879ad3dc5e661e6b57b0996b0feead72a73596b8d13aef6d2a0bfcf + languageName: node + linkType: hard + +"@size-limit/preset-big-lib@npm:^11.1.6": + version: 11.1.6 + resolution: "@size-limit/preset-big-lib@npm:11.1.6" + dependencies: + "@size-limit/file": 11.1.6 + "@size-limit/time": 11.1.6 + "@size-limit/webpack": 11.1.6 + size-limit: 11.1.6 + peerDependencies: + size-limit: 11.1.6 + checksum: 3d14e259a6e1573b8f336dcc7168b516092a7326fe15acd50f5b4395a02996ca85285aa843f1eef09e8e6f4de64f1e0a72a4211a8b6e19a8673bac261754ffd2 + languageName: node + linkType: hard + +"@size-limit/time@npm:11.1.6": + version: 11.1.6 + resolution: "@size-limit/time@npm:11.1.6" + dependencies: + estimo: ^3.0.3 + peerDependencies: + size-limit: 11.1.6 + checksum: 240d3b2075f47fb9197c6d7e44eab16eecb646afce581f4dd5e89f09df993440407fa4612ba13ced80691ab2cadf07c84dfb6fc9c7c444e054d69ff857d71d43 + languageName: node + linkType: hard + +"@size-limit/webpack@npm:11.1.6": + version: 11.1.6 + resolution: "@size-limit/webpack@npm:11.1.6" dependencies: - "@sinonjs/commons": "npm:^1.7.0" - checksum: 09b5a158ce013a6c37613258bad79ca4efeb99b1f59c41c73cca36cac00b258aefcf46eeea970fccf06b989414d86fe9f54c1102272c0c3bdd51a313cea80949 + nanoid: ^5.0.7 + webpack: ^5.95.0 + peerDependencies: + size-limit: 11.1.6 + checksum: 01ce52004f933daf1db41ecdc5a97c707bd5533f4ded5e3df34186896818f4962b0284810e188890ea8bb5c7e2a307f0096c04382c559cf873c9b0c2e618e9ab languageName: node linkType: hard @@ -3797,166 +2663,87 @@ __metadata: bn.js: "npm:^5.2.1" borsh: "npm:^0.7.0" bs58: "npm:^4.0.1" - buffer: "npm:6.0.3" - fast-stable-stringify: "npm:^1.0.0" - jayson: "npm:^4.1.1" - node-fetch: "npm:^2.7.0" - rpc-websockets: "npm:^9.0.2" - superstruct: "npm:^2.0.2" - checksum: 6951eb12275de09ef9422fc65982b7496f3d11253b4cd1b09694dd2135d92aa272a04a7adf50ef0136a459b08ea40e07f6e7cbf1970cae44d6193d93fe6acc1f - languageName: node - linkType: hard - -"@swc/helpers@npm:0.5.2": - version: 0.5.2 - resolution: "@swc/helpers@npm:0.5.2" - dependencies: - tslib: "npm:^2.4.0" - checksum: 51d7e3d8bd56818c49d6bfbd715f0dbeedc13cf723af41166e45c03e37f109336bbcb57a1f2020f4015957721aeb21e1a7fff281233d797ff7d3dd1f447fa258 - languageName: node - linkType: hard - -"@swc/helpers@npm:^0.5.11": - version: 0.5.13 - resolution: "@swc/helpers@npm:0.5.13" - dependencies: - tslib: "npm:^2.4.0" - checksum: d50c2c10da6ef940af423c6b03ad9c3c94cf9de59314b1e921a7d1bcc081a6074481c9d67b655fc8fe66a73288f98b25950743792a63882bfb5793b362494fc0 - languageName: node - linkType: hard - -"@testing-library/dom@npm:^7.16.2": - version: 7.31.2 - resolution: "@testing-library/dom@npm:7.31.2" - dependencies: - "@babel/code-frame": "npm:^7.10.4" - "@babel/runtime": "npm:^7.12.5" - "@types/aria-query": "npm:^4.2.0" - aria-query: "npm:^4.2.2" - chalk: "npm:^4.1.0" - dom-accessibility-api: "npm:^0.5.6" - lz-string: "npm:^1.4.4" - pretty-format: "npm:^26.6.2" - checksum: 54fbedd1ecdfe1d47be2e592b98d18b2ab9d7e731f57231caf9b152593fe7329fe5ebe219e0e5d1e0df5b1ab803121cb8acd8b73bd1fb292bfdc2c55663eb01d - languageName: node - linkType: hard - -"@testing-library/jest-dom@npm:^6.5.0": - version: 6.5.0 - resolution: "@testing-library/jest-dom@npm:6.5.0" - dependencies: - "@adobe/css-tools": "npm:^4.4.0" - aria-query: "npm:^5.0.0" - chalk: "npm:^3.0.0" - css.escape: "npm:^1.5.1" - dom-accessibility-api: "npm:^0.6.3" - lodash: "npm:^4.17.21" - redent: "npm:^3.0.0" - checksum: c2d14103ebe3358852ec527ff7512f64207a39932b2f7b6dff7e73ba91296b01a71bad9a9584b6ee010681380a906c1740af50470adc6db660e1c7585d012ebf - languageName: node - linkType: hard - -"@testing-library/preact@npm:^2.0.1": - version: 2.0.1 - resolution: "@testing-library/preact@npm:2.0.1" - dependencies: - "@testing-library/dom": "npm:^7.16.2" - peerDependencies: - preact: ">=10 || ^10.0.0-alpha.0 || ^10.0.0-beta.0" - checksum: 36fae3730d43d0a9ba132d4fe7eb0b2b3006f7857e559d91c5710ac687931768c53efbd17b840b722ff1533944ec159e1a31975b967a49e4ffea47ffe1574c75 - languageName: node - linkType: hard - -"@tootallnate/once@npm:1": - version: 1.1.2 - resolution: "@tootallnate/once@npm:1.1.2" - checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 - languageName: node - linkType: hard - -"@tsconfig/node10@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node10@npm:1.0.11" - checksum: 51fe47d55fe1b80ec35e6e5ed30a13665fd3a531945350aa74a14a1e82875fb60b350c2f2a5e72a64831b1b6bc02acb6760c30b3738b54954ec2dea82db7a267 - languageName: node - linkType: hard - -"@tsconfig/node12@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node12@npm:1.0.11" - checksum: 5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a - languageName: node - linkType: hard - -"@tsconfig/node14@npm:^1.0.0": - version: 1.0.3 - resolution: "@tsconfig/node14@npm:1.0.3" - checksum: 19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d + buffer: "npm:6.0.3" + fast-stable-stringify: "npm:^1.0.0" + jayson: "npm:^4.1.1" + node-fetch: "npm:^2.7.0" + rpc-websockets: "npm:^9.0.2" + superstruct: "npm:^2.0.2" + checksum: 6951eb12275de09ef9422fc65982b7496f3d11253b4cd1b09694dd2135d92aa272a04a7adf50ef0136a459b08ea40e07f6e7cbf1970cae44d6193d93fe6acc1f languageName: node linkType: hard -"@tsconfig/node16@npm:^1.0.2": - version: 1.0.4 - resolution: "@tsconfig/node16@npm:1.0.4" - checksum: 202319785901f942a6e1e476b872d421baec20cf09f4b266a1854060efbf78cde16a4d256e8bc949d31e6cd9a90f1e8ef8fb06af96a65e98338a2b6b0de0a0ff +"@swc/helpers@npm:0.5.2": + version: 0.5.2 + resolution: "@swc/helpers@npm:0.5.2" + dependencies: + tslib: "npm:^2.4.0" + checksum: 51d7e3d8bd56818c49d6bfbd715f0dbeedc13cf723af41166e45c03e37f109336bbcb57a1f2020f4015957721aeb21e1a7fff281233d797ff7d3dd1f447fa258 languageName: node linkType: hard -"@types/aria-query@npm:^4.2.0": - version: 4.2.2 - resolution: "@types/aria-query@npm:4.2.2" - checksum: 6f2ce11d91e2d665f3873258db19da752d91d85d3679eb5efcdf9c711d14492287e1e4eb52613b28e60375841a9e428594e745b68436c963d8bad4bf72188df3 +"@swc/helpers@npm:^0.5.11": + version: 0.5.13 + resolution: "@swc/helpers@npm:0.5.13" + dependencies: + tslib: "npm:^2.4.0" + checksum: d50c2c10da6ef940af423c6b03ad9c3c94cf9de59314b1e921a7d1bcc081a6074481c9d67b655fc8fe66a73288f98b25950743792a63882bfb5793b362494fc0 languageName: node linkType: hard -"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14": - version: 7.20.5 - resolution: "@types/babel__core@npm:7.20.5" +"@testing-library/dom@npm:^8.11.1": + version: 8.20.1 + resolution: "@testing-library/dom@npm:8.20.1" dependencies: - "@babel/parser": "npm:^7.20.7" - "@babel/types": "npm:^7.20.7" - "@types/babel__generator": "npm:*" - "@types/babel__template": "npm:*" - "@types/babel__traverse": "npm:*" - checksum: a3226f7930b635ee7a5e72c8d51a357e799d19cbf9d445710fa39ab13804f79ab1a54b72ea7d8e504659c7dfc50675db974b526142c754398d7413aa4bc30845 + "@babel/code-frame": ^7.10.4 + "@babel/runtime": ^7.12.5 + "@types/aria-query": ^5.0.1 + aria-query: 5.1.3 + chalk: ^4.1.0 + dom-accessibility-api: ^0.5.9 + lz-string: ^1.5.0 + pretty-format: ^27.0.2 + checksum: 06fc8dc67849aadb726cbbad0e7546afdf8923bd39acb64c576d706249bd7d0d05f08e08a31913fb621162e3b9c2bd0dce15964437f030f9fa4476326fdd3007 languageName: node linkType: hard -"@types/babel__generator@npm:*": - version: 7.6.8 - resolution: "@types/babel__generator@npm:7.6.8" +"@testing-library/jest-dom@npm:^6.5.0": + version: 6.5.0 + resolution: "@testing-library/jest-dom@npm:6.5.0" dependencies: - "@babel/types": "npm:^7.0.0" - checksum: 5b332ea336a2efffbdeedb92b6781949b73498606ddd4205462f7d96dafd45ff3618770b41de04c4881e333dd84388bfb8afbdf6f2764cbd98be550d85c6bb48 + "@adobe/css-tools": "npm:^4.4.0" + aria-query: "npm:^5.0.0" + chalk: "npm:^3.0.0" + css.escape: "npm:^1.5.1" + dom-accessibility-api: "npm:^0.6.3" + lodash: "npm:^4.17.21" + redent: "npm:^3.0.0" + checksum: c2d14103ebe3358852ec527ff7512f64207a39932b2f7b6dff7e73ba91296b01a71bad9a9584b6ee010681380a906c1740af50470adc6db660e1c7585d012ebf languageName: node linkType: hard -"@types/babel__template@npm:*": - version: 7.4.4 - resolution: "@types/babel__template@npm:7.4.4" +"@testing-library/preact@npm:^3.2.4": + version: 3.2.4 + resolution: "@testing-library/preact@npm:3.2.4" dependencies: - "@babel/parser": "npm:^7.1.0" - "@babel/types": "npm:^7.0.0" - checksum: d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 + "@testing-library/dom": ^8.11.1 + peerDependencies: + preact: ">=10 || ^10.0.0-alpha.0 || ^10.0.0-beta.0" + checksum: 81f03ae9041c04c9738150ea7f1f5e90242ac4037a42d6ca9f9c18a35f550a9fc9de806926f906a25ca5bd722d8bde72ce0cb24ce2b291923540ad392fbad33e languageName: node linkType: hard -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.4, @types/babel__traverse@npm:^7.0.6": - version: 7.20.6 - resolution: "@types/babel__traverse@npm:7.20.6" - dependencies: - "@babel/types": "npm:^7.20.7" - checksum: 2bdc65eb62232c2d5c1086adeb0c31e7980e6fd7e50a3483b4a724a1a1029c84d9cb59749cf8de612f9afa2bc14c85b8f50e64e21f8a4398fa77eb9059a4283c +"@tootallnate/quickjs-emscripten@npm:^0.23.0": + version: 0.23.0 + resolution: "@tootallnate/quickjs-emscripten@npm:0.23.0" + checksum: c350a2947ffb80b22e14ff35099fd582d1340d65723384a0fd0515e905e2534459ad2f301a43279a37308a27c99273c932e64649abd57d0bb3ca8c557150eccc languageName: node linkType: hard -"@types/chrome@npm:^0.0.114": - version: 0.0.114 - resolution: "@types/chrome@npm:0.0.114" - dependencies: - "@types/filesystem": "npm:*" - "@types/har-format": "npm:*" - checksum: 7b7c7d7ae72e54011328709b23f6bb2b15e8626af01e7577deae34fd1a0ec52f3f911f9eb9eeb49110a6816ee993450119eb889a286e077c5ce194878415d63f +"@types/aria-query@npm:^5.0.1": + version: 5.0.4 + resolution: "@types/aria-query@npm:5.0.4" + checksum: ad8b87e4ad64255db5f0a73bc2b4da9b146c38a3a8ab4d9306154334e0fc67ae64e76bfa298eebd1e71830591fb15987e5de7111bdb36a2221bdc379e3415fb0 languageName: node linkType: hard @@ -3978,74 +2765,14 @@ __metadata: languageName: node linkType: hard -"@types/filesystem@npm:*": - version: 0.0.36 - resolution: "@types/filesystem@npm:0.0.36" - dependencies: - "@types/filewriter": "npm:*" - checksum: fad9f6b291598e65a0c5e73e685977b2c86c9bdb1ede5ce29eb35f196bbdf8d668a32bd4361624391ae1eb699362daa13442b75177dd73c6b300967fdd1ed765 - languageName: node - linkType: hard - -"@types/filewriter@npm:*": - version: 0.0.33 - resolution: "@types/filewriter@npm:0.0.33" - checksum: 56ba7f0d3c2dafbb899e7f5a9574df41d2f07494040aa09f9fd51c7004c0b255c36c554333c380b23625afb50e50cf1d13f5925d956a627d4ee6e3fbe8f3176b - languageName: node - linkType: hard - -"@types/graceful-fs@npm:^4.1.2": - version: 4.1.9 - resolution: "@types/graceful-fs@npm:4.1.9" - dependencies: - "@types/node": "npm:*" - checksum: 79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 - languageName: node - linkType: hard - -"@types/har-format@npm:*": - version: 1.2.15 - resolution: "@types/har-format@npm:1.2.15" - checksum: e3e8197e0ac74747736d13e0b54ec862e55ecf57cc962e1a24c801c7940b7b829d281dddc67f297877f1c4bc014b4ac29d35b2c6a9a1e6bc26bcff5fd7f835b0 - languageName: node - linkType: hard - -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.6 - resolution: "@types/istanbul-lib-coverage@npm:2.0.6" - checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 - languageName: node - linkType: hard - -"@types/istanbul-lib-report@npm:*": - version: 3.0.3 - resolution: "@types/istanbul-lib-report@npm:3.0.3" - dependencies: - "@types/istanbul-lib-coverage": "npm:*" - checksum: b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 - languageName: node - linkType: hard - -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.4 - resolution: "@types/istanbul-reports@npm:3.0.4" - dependencies: - "@types/istanbul-lib-report": "npm:*" - checksum: 93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 - languageName: node - linkType: hard - -"@types/jest@npm:^27.5.2": - version: 27.5.2 - resolution: "@types/jest@npm:27.5.2" - dependencies: - jest-matcher-utils: "npm:^27.0.0" - pretty-format: "npm:^27.0.0" - checksum: 7e11c6826aa429ad990dc262e4e4b54aa36573287fddf15773e4137f07d11d3105f0dd9f1baff73252160a057df23f5529bb83b1bf83cd3f45f9460a5ca5c22e +"@types/estree@npm:1.0.6, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 8825d6e729e16445d9a1dd2fb1db2edc5ed400799064cd4d028150701031af012ba30d6d03fe9df40f4d7a437d0de6d2b256020152b7b09bde9f2e420afdffd9 languageName: node linkType: hard -"@types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 @@ -4105,13 +2832,6 @@ __metadata: languageName: node linkType: hard -"@types/prettier@npm:^2.1.5": - version: 2.7.3 - resolution: "@types/prettier@npm:2.7.3" - checksum: 705384209cea6d1433ff6c187c80dcc0b95d99d5c5ce21a46a9a58060c527973506822e428789d842761e0280d25e3359300f017fbe77b9755bc772ab3dc2f83 - languageName: node - linkType: hard - "@types/prop-types@npm:*": version: 15.7.13 resolution: "@types/prop-types@npm:15.7.13" @@ -4144,13 +2864,6 @@ __metadata: languageName: node linkType: hard -"@types/stack-utils@npm:^2.0.0": - version: 2.0.3 - resolution: "@types/stack-utils@npm:2.0.3" - checksum: 72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5 - languageName: node - linkType: hard - "@types/uuid@npm:^8.3.4": version: 8.3.4 resolution: "@types/uuid@npm:8.3.4" @@ -4176,28 +2889,12 @@ __metadata: languageName: node linkType: hard -"@types/yargs-parser@npm:*": - version: 21.0.3 - resolution: "@types/yargs-parser@npm:21.0.3" - checksum: ef236c27f9432983e91432d974243e6c4cdae227cb673740320eff32d04d853eed59c92ca6f1142a335cfdc0e17cccafa62e95886a8154ca8891cc2dec4ee6fc - languageName: node - linkType: hard - -"@types/yargs@npm:^15.0.0": - version: 15.0.19 - resolution: "@types/yargs@npm:15.0.19" - dependencies: - "@types/yargs-parser": "npm:*" - checksum: 6a509db36304825674f4f00300323dce2b4d850e75819c3db87e9e9f213ac2c4c6ed3247a3e4eed6e8e45b3f191b133a356d3391dd694d9ea27a0507d914ef4c - languageName: node - linkType: hard - -"@types/yargs@npm:^16.0.0": - version: 16.0.9 - resolution: "@types/yargs@npm:16.0.9" +"@types/yauzl@npm:^2.9.1": + version: 2.10.3 + resolution: "@types/yauzl@npm:2.10.3" dependencies: - "@types/yargs-parser": "npm:*" - checksum: 00d9276ed4e0f17a78c1ed57f644a8c14061959bd5bfab113d57f082ea4b663ba97f71b89371304a34a2dba5061e9ae4523e357e577ba61834d661f82c223bf8 + "@types/node": "*" + checksum: 5ee966ea7bd6b2802f31ad4281c92c4c0b6dfa593c378a2582c58541fa113bec3d70eb0696b34ad95e8e6861a884cba6c3e351285816693ed176222f840a8c08 languageName: node linkType: hard @@ -4292,116 +2989,363 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/types@npm:5.62.0" - checksum: 48c87117383d1864766486f24de34086155532b070f6264e09d0e6139449270f8a9559cfef3c56d16e3bcfb52d83d42105d61b36743626399c7c2b5e0ac3b670 +"@typescript-eslint/types@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/types@npm:5.62.0" + checksum: 48c87117383d1864766486f24de34086155532b070f6264e09d0e6139449270f8a9559cfef3c56d16e3bcfb52d83d42105d61b36743626399c7c2b5e0ac3b670 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/types@npm:6.21.0" + checksum: 9501b47d7403417af95fc1fb72b2038c5ac46feac0e1598a46bcb43e56a606c387e9dcd8a2a0abe174c91b509f2d2a8078b093786219eb9a01ab2fbf9ee7b684 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 3624520abb5807ed8f57b1197e61c7b1ed770c56dfcaca66372d584ff50175225798bccb701f7ef129d62c5989070e1ee3a0aa2d84e56d9524dcf011a2bb1a52 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + minimatch: "npm:9.0.3" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: dec02dc107c4a541e14fb0c96148f3764b92117c3b635db3a577b5a56fc48df7a556fa853fb82b07c0663b4bf2c484c9f245c28ba3e17e5cb0918ea4cab2ea21 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/utils@npm:5.62.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@types/json-schema": "npm:^7.0.9" + "@types/semver": "npm:^7.3.12" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/typescript-estree": "npm:5.62.0" + eslint-scope: "npm:^5.1.1" + semver: "npm:^7.3.7" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: ee9398c8c5db6d1da09463ca7bf36ed134361e20131ea354b2da16a5fdb6df9ba70c62a388d19f6eebb421af1786dbbd79ba95ddd6ab287324fc171c3e28d931 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/utils@npm:6.21.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@types/json-schema": "npm:^7.0.12" + "@types/semver": "npm:^7.5.0" + "@typescript-eslint/scope-manager": "npm:6.21.0" + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/typescript-estree": "npm:6.21.0" + semver: "npm:^7.5.4" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + checksum: b129b3a4aebec8468259f4589985cb59ea808afbfdb9c54f02fad11e17d185e2bf72bb332f7c36ec3c09b31f18fc41368678b076323e6e019d06f74ee93f7bf2 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + eslint-visitor-keys: "npm:^3.3.0" + checksum: 976b05d103fe8335bef5c93ad3f76d781e3ce50329c0243ee0f00c0fcfb186c81df50e64bfdd34970148113f8ade90887f53e3c4938183afba830b4ba8e30a35 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 67c7e6003d5af042d8703d11538fca9d76899f0119130b373402819ae43f0bc90d18656aa7add25a24427ccf1a0efd0804157ba83b0d4e145f06107d7d1b7433 + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.2.0": + version: 1.2.0 + resolution: "@ungap/structured-clone@npm:1.2.0" + checksum: 4f656b7b4672f2ce6e272f2427d8b0824ed11546a601d8d5412b9d7704e83db38a8d9f402ecdf2b9063fc164af842ad0ec4a55819f621ed7e7ea4d1efcc74524 + languageName: node + linkType: hard + +"@vitest/expect@npm:2.1.2": + version: 2.1.2 + resolution: "@vitest/expect@npm:2.1.2" + dependencies: + "@vitest/spy": 2.1.2 + "@vitest/utils": 2.1.2 + chai: ^5.1.1 + tinyrainbow: ^1.2.0 + checksum: 932586ec44ebab234859ee35a8a4d2ebc3f6051a8ff3657ccac1cadd881e7c75605bcff569bbbf8620eb8ceb7197eaa1a0d341bbcb055f97bc46643561d7047a + languageName: node + linkType: hard + +"@vitest/mocker@npm:2.1.2": + version: 2.1.2 + resolution: "@vitest/mocker@npm:2.1.2" + dependencies: + "@vitest/spy": ^2.1.0-beta.1 + estree-walker: ^3.0.3 + magic-string: ^0.30.11 + peerDependencies: + "@vitest/spy": 2.1.2 + msw: ^2.3.5 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + checksum: 2af173e8762d5b36caa7a9ccb47766dcd1ab6f657a9a1278e5dbe8d542cb514f16122d5e9262e7ff35d9f5e177c840a76e43d958550a49c7c4076b22c523dfc3 + languageName: node + linkType: hard + +"@vitest/pretty-format@npm:2.1.2, @vitest/pretty-format@npm:^2.1.2": + version: 2.1.2 + resolution: "@vitest/pretty-format@npm:2.1.2" + dependencies: + tinyrainbow: ^1.2.0 + checksum: d506267895430d5ec92ff03dbc0d5e0ffab998df1a994026e4fd9f46053d73c823c4f25bc870f8cc4e86e67446a6fab3721d2f8c88e14e003c5323907bb42624 + languageName: node + linkType: hard + +"@vitest/runner@npm:2.1.2": + version: 2.1.2 + resolution: "@vitest/runner@npm:2.1.2" + dependencies: + "@vitest/utils": 2.1.2 + pathe: ^1.1.2 + checksum: 7a670b62666406550e47214b57e3dc3ad57807cc146a4b2d63b1ff19a8c3b64ca7eea44a75fc540376b2388caedae55000c0be2b7048a0d17449887d93f5a057 + languageName: node + linkType: hard + +"@vitest/snapshot@npm:2.1.2": + version: 2.1.2 + resolution: "@vitest/snapshot@npm:2.1.2" + dependencies: + "@vitest/pretty-format": 2.1.2 + magic-string: ^0.30.11 + pathe: ^1.1.2 + checksum: 6faa011ce50d692791cd287b87401cbe552a328a67f8454467007ce1dce252898cb7ad8ed1ec6fe885e65ffca12e0817e36997932c85ea8c5370df958966ba27 + languageName: node + linkType: hard + +"@vitest/spy@npm:2.1.2, @vitest/spy@npm:^2.1.0-beta.1": + version: 2.1.2 + resolution: "@vitest/spy@npm:2.1.2" + dependencies: + tinyspy: ^3.0.0 + checksum: 50cf90a848c6ac27e03a61526d9f8f333d87bfe35950fd73e37eb6d968155aa45dfbf0a2550213049c25a38b0d297939d7805df64f2ba6a51af3cf029f12b4f3 + languageName: node + linkType: hard + +"@vitest/utils@npm:2.1.2": + version: 2.1.2 + resolution: "@vitest/utils@npm:2.1.2" + dependencies: + "@vitest/pretty-format": 2.1.2 + loupe: ^3.1.1 + tinyrainbow: ^1.2.0 + checksum: a0bd57fb32390a14f07e0465525520371b0e9b138a53168090490cc055ea52d6ef17cbb40bc7fe12e225491717ea7925a9bf93ef2844989527eff89773332ea7 + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/ast@npm:1.12.1" + dependencies: + "@webassemblyjs/helper-numbers": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + checksum: 31bcc64147236bd7b1b6d29d1f419c1f5845c785e1e42dc9e3f8ca2e05a029e9393a271b84f3a5bff2a32d35f51ff59e2181a6e5f953fe88576acd6750506202 + languageName: node + linkType: hard + +"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" + checksum: 29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 + languageName: node + linkType: hard + +"@webassemblyjs/helper-api-error@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" + checksum: e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f + languageName: node + linkType: hard + +"@webassemblyjs/helper-buffer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" + checksum: c3ffb723024130308db608e86e2bdccd4868bbb62dffb0a9a1530606496f79c87f8565bd8e02805ce64912b71f1a70ee5fb00307258b0c082c3abf961d097eca + languageName: node + linkType: hard + +"@webassemblyjs/helper-numbers@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" + dependencies: + "@webassemblyjs/floating-point-hex-parser": 1.11.6 + "@webassemblyjs/helper-api-error": 1.11.6 + "@xtuc/long": 4.2.2 + checksum: f4b562fa219f84368528339e0f8d273ad44e047a07641ffcaaec6f93e5b76fd86490a009aa91a294584e1436d74b0a01fa9fde45e333a4c657b58168b04da424 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" + checksum: 3535ef4f1fba38de3475e383b3980f4bbf3de72bbb631c2b6584c7df45be4eccd62c6ff48b5edd3f1bcff275cfd605a37679ec199fc91fd0a7705d7f1e3972dc + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-wasm-section@npm: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 + checksum: c19810cdd2c90ff574139b6d8c0dda254d42d168a9e5b3d353d1bc085f1d7164ccd1b3c05592a45a939c47f7e403dc8d03572bb686642f06a3d02932f6f0bc8f languageName: node linkType: hard -"@typescript-eslint/types@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/types@npm:6.21.0" - checksum: 9501b47d7403417af95fc1fb72b2038c5ac46feac0e1598a46bcb43e56a606c387e9dcd8a2a0abe174c91b509f2d2a8078b093786219eb9a01ab2fbf9ee7b684 +"@webassemblyjs/ieee754@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/ieee754@npm:1.11.6" + dependencies: + "@xtuc/ieee754": ^1.2.0 + checksum: 13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" +"@webassemblyjs/leb128@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/leb128@npm:1.11.6" dependencies: - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/visitor-keys": "npm:5.62.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - semver: "npm:^7.3.7" - tsutils: "npm:^3.21.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 3624520abb5807ed8f57b1197e61c7b1ed770c56dfcaca66372d584ff50175225798bccb701f7ef129d62c5989070e1ee3a0aa2d84e56d9524dcf011a2bb1a52 + "@xtuc/long": 4.2.2 + checksum: 7ea942dc9777d4b18a5ebfa3a937b30ae9e1d2ce1fee637583ed7f376334dd1d4274f813d2e250056cca803e0952def4b954913f1a3c9068bcd4ab4ee5143bf0 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" +"@webassemblyjs/utf8@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/utf8@npm:1.11.6" + checksum: 807fe5b5ce10c390cfdd93e0fb92abda8aebabb5199980681e7c3743ee3306a75729bcd1e56a3903980e96c885ee53ef901fcbaac8efdfa480f9c0dae1d08713 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-edit@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - minimatch: "npm:9.0.3" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependenciesMeta: - typescript: - optional: true - checksum: dec02dc107c4a541e14fb0c96148f3764b92117c3b635db3a577b5a56fc48df7a556fa853fb82b07c0663b4bf2c484c9f245c28ba3e17e5cb0918ea4cab2ea21 + "@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 + checksum: ae23642303f030af888d30c4ef37b08dfec7eab6851a9575a616e65d1219f880d9223913a39056dd654e49049d76e97555b285d1f7e56935047abf578cce0692 languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/utils@npm:5.62.0" +"@webassemblyjs/wasm-gen@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.12.1" dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@types/json-schema": "npm:^7.0.9" - "@types/semver": "npm:^7.3.12" - "@typescript-eslint/scope-manager": "npm:5.62.0" - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/typescript-estree": "npm:5.62.0" - eslint-scope: "npm:^5.1.1" - semver: "npm:^7.3.7" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: ee9398c8c5db6d1da09463ca7bf36ed134361e20131ea354b2da16a5fdb6df9ba70c62a388d19f6eebb421af1786dbbd79ba95ddd6ab287324fc171c3e28d931 + "@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 + checksum: 5787626bb7f0b033044471ddd00ce0c9fe1ee4584e8b73e232051e3a4c99ba1a102700d75337151c8b6055bae77eefa4548960c610a5e4a504e356bd872138ff languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/utils@npm:6.21.0" +"@webassemblyjs/wasm-opt@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.12.1" dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@types/json-schema": "npm:^7.0.12" - "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/typescript-estree": "npm:6.21.0" - semver: "npm:^7.5.4" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: b129b3a4aebec8468259f4589985cb59ea808afbfdb9c54f02fad11e17d185e2bf72bb332f7c36ec3c09b31f18fc41368678b076323e6e019d06f74ee93f7bf2 + "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/helper-buffer": 1.12.1 + "@webassemblyjs/wasm-gen": 1.12.1 + "@webassemblyjs/wasm-parser": 1.12.1 + checksum: 0e8fa8a0645304a1e18ff40d3db5a2e9233ebaa169b19fcc651d6fc9fe2cac0ce092ddee927318015ae735d9cd9c5d97c0cafb6a51dcd2932ac73587b62df991 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" +"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" dependencies: - "@typescript-eslint/types": "npm:5.62.0" - eslint-visitor-keys: "npm:^3.3.0" - checksum: 976b05d103fe8335bef5c93ad3f76d781e3ce50329c0243ee0f00c0fcfb186c81df50e64bfdd34970148113f8ade90887f53e3c4938183afba830b4ba8e30a35 + "@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 + checksum: 176015de3551ac068cd4505d837414f258d9ade7442bd71efb1232fa26c9f6d7d4e11a5c816caeed389943f409af7ebff6899289a992d7a70343cb47009d21a8 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" +"@webassemblyjs/wast-printer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wast-printer@npm:1.12.1" dependencies: - "@typescript-eslint/types": "npm:6.21.0" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 67c7e6003d5af042d8703d11538fca9d76899f0119130b373402819ae43f0bc90d18656aa7add25a24427ccf1a0efd0804157ba83b0d4e145f06107d7d1b7433 + "@webassemblyjs/ast": 1.12.1 + "@xtuc/long": 4.2.2 + checksum: 2974b5dda8d769145ba0efd886ea94a601e61fb37114c14f9a9a7606afc23456799af652ac3052f284909bd42edc3665a76bc9b50f95f0794c053a8a1757b713 languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.2.0": +"@xtuc/ieee754@npm:^1.2.0": version: 1.2.0 - resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 4f656b7b4672f2ce6e272f2427d8b0824ed11546a601d8d5412b9d7704e83db38a8d9f402ecdf2b9063fc164af842ad0ec4a55819f621ed7e7ea4d1efcc74524 + resolution: "@xtuc/ieee754@npm:1.2.0" + checksum: ac56d4ca6e17790f1b1677f978c0c6808b1900a5b138885d3da21732f62e30e8f0d9120fcf8f6edfff5100ca902b46f8dd7c1e3f903728634523981e80e2885a + languageName: node + linkType: hard + +"@xtuc/long@npm:4.2.2": + version: 4.2.2 + resolution: "@xtuc/long@npm:4.2.2" + checksum: 8ed0d477ce3bc9c6fe2bf6a6a2cc316bb9c4127c5a7827bae947fa8ec34c7092395c5a283cc300c05b5fa01cbbfa1f938f410a7bf75db7c7846fea41949989ec languageName: node linkType: hard @@ -4440,13 +3384,6 @@ __metadata: languageName: node linkType: hard -"abab@npm:^2.0.3, abab@npm:^2.0.5": - version: 2.0.6 - resolution: "abab@npm:2.0.6" - checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e - languageName: node - linkType: hard - "abbrev@npm:^2.0.0": version: 2.0.0 resolution: "abbrev@npm:2.0.0" @@ -4469,13 +3406,12 @@ __metadata: languageName: node linkType: hard -"acorn-globals@npm:^6.0.0": - version: 6.0.0 - resolution: "acorn-globals@npm:6.0.0" - dependencies: - acorn: "npm:^7.1.1" - acorn-walk: "npm:^7.1.1" - checksum: 72d95e5b5e585f9acd019b993ab8bbba68bb3cbc9d9b5c1ebb3c2f1fe5981f11deababfb4949f48e6262f9c57878837f5958c0cca396f81023814680ca878042 +"acorn-import-attributes@npm:^1.9.5": + version: 1.9.5 + resolution: "acorn-import-attributes@npm:1.9.5" + peerDependencies: + acorn: ^8 + checksum: 1c0c49b6a244503964ae46ae850baccf306e84caf99bc2010ed6103c69a423987b07b520a6c619f075d215388bd4923eccac995886a54309eda049ab78a4be95 languageName: node linkType: hard @@ -4488,32 +3424,7 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^7.1.1": - version: 7.2.0 - resolution: "acorn-walk@npm:7.2.0" - checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f - languageName: node - linkType: hard - -"acorn-walk@npm:^8.1.1": - version: 8.3.4 - resolution: "acorn-walk@npm:8.3.4" - dependencies: - acorn: "npm:^8.11.0" - checksum: 4ff03f42323e7cf90f1683e08606b0f460e1e6ac263d2730e3df91c7665b6f64e696db6ea27ee4bed18c2599569be61f28a8399fa170c611161a348c402ca19c - languageName: node - linkType: hard - -"acorn@npm:^7.1.1": - version: 7.4.1 - resolution: "acorn@npm:7.4.1" - bin: - acorn: bin/acorn - checksum: 1860f23c2107c910c6177b7b7be71be350db9e1080d814493fae143ae37605189504152d1ba8743ba3178d0b37269ce1ffc42b101547fdc1827078f82671e407 - languageName: node - linkType: hard - -"acorn@npm:^8.11.0, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.9.0": +"acorn@npm:^8.7.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": version: 8.12.1 resolution: "acorn@npm:8.12.1" bin: @@ -4522,15 +3433,6 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:6": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: "npm:4" - checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d - languageName: node - linkType: hard - "agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": version: 7.1.1 resolution: "agent-base@npm:7.1.1" @@ -4559,7 +3461,16 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.12.4": +"ajv-keywords@npm:^3.5.2": + version: 3.5.2 + resolution: "ajv-keywords@npm:3.5.2" + peerDependencies: + ajv: ^6.9.1 + checksum: 7dc5e5931677a680589050f79dcbe1fefbb8fea38a955af03724229139175b433c63c68f7ae5f86cf8f65d55eb7c25f75a046723e2e58296707617ca690feae9 + languageName: node + linkType: hard + +"ajv@npm:^6.12.4, ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -4571,16 +3482,7 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.2.1": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: "npm:^0.21.3" - checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.0, ansi-regex@npm:^5.0.1": +"ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b @@ -4626,7 +3528,7 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": +"anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" dependencies: @@ -4636,22 +3538,6 @@ __metadata: languageName: node linkType: hard -"arg@npm:^4.1.0": - version: 4.1.3 - resolution: "arg@npm:4.1.3" - checksum: 544af8dd3f60546d3e4aff084d451b96961d2267d668670199692f8d054f0415d86fc5497d0e641e91546f0aa920e7c29e5250e99fc89f5552a34b5d93b77f43 - languageName: node - linkType: hard - -"argparse@npm:^1.0.7": - version: 1.0.10 - resolution: "argparse@npm:1.0.10" - dependencies: - sprintf-js: "npm:~1.0.2" - checksum: 7ca6e45583a28de7258e39e13d81e925cfa25d7d4aacbf806a382d3c02fcb13403a07fb8aeef949f10a7cfe4a62da0e2e807b348a5980554cc28ee573ef95945 - languageName: node - linkType: hard - "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" @@ -4668,13 +3554,12 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^4.2.2": - version: 4.2.2 - resolution: "aria-query@npm:4.2.2" +"aria-query@npm:5.1.3": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" dependencies: - "@babel/runtime": "npm:^7.10.2" - "@babel/runtime-corejs3": "npm:^7.10.2" - checksum: 38401a9a400f26f3dcc24b84997461a16b32869a9893d323602bed8da40a8bcc0243b8d2880e942249a1496cea7a7de769e93d21c0baa439f01e1ee936fed665 + deep-equal: ^2.0.5 + checksum: 929ff95f02857b650fb4cbcd2f41072eee2f46159a6605ea03bf63aa572e35ffdff43d69e815ddc462e16e07de8faba3978afc2813650b4448ee18c9895d982b languageName: node linkType: hard @@ -4685,7 +3570,7 @@ __metadata: languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.1": +"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1": version: 1.0.1 resolution: "array-buffer-byte-length@npm:1.0.1" dependencies: @@ -4783,14 +3668,10 @@ __metadata: languageName: node linkType: hard -"asn1js@npm:^3.0.1, asn1js@npm:^3.0.5": - version: 3.0.5 - resolution: "asn1js@npm:3.0.5" - dependencies: - pvtsutils: "npm:^1.3.2" - pvutils: "npm:^1.1.3" - tslib: "npm:^2.4.0" - checksum: 3b6af1bbadd5762ef8ead5daf2f6bda1bc9e23bc825c4dcc996aa1f9521ad7390a64028565d95d98090d69c8431f004c71cccb866004759169d7c203cf9075eb +"assertion-error@npm:^2.0.1": + version: 2.0.1 + resolution: "assertion-error@npm:2.0.1" + checksum: a0789dd882211b87116e81e2648ccb7f60340b34f19877dd020b39ebb4714e475eb943e14ba3e22201c221ef6645b7bfe10297e76b6ac95b48a9898c1211ce66 languageName: node linkType: hard @@ -4803,6 +3684,15 @@ __metadata: languageName: node linkType: hard +"ast-types@npm:^0.13.4": + version: 0.13.4 + resolution: "ast-types@npm:0.13.4" + dependencies: + tslib: ^2.0.1 + checksum: 5a51f7b70588ecced3601845a0e203279ca2f5fdc184416a0a1640c93ec0a267241d6090a328e78eebb8de81f8754754e0a4f1558ba2a3d638f8ccbd0b1f0eff + languageName: node + linkType: hard + "async-mutex@npm:^0.2.6": version: 0.2.6 resolution: "async-mutex@npm:0.2.6" @@ -4828,46 +3718,10 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^27.5.1": - version: 27.5.1 - resolution: "babel-jest@npm:27.5.1" - dependencies: - "@jest/transform": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - "@types/babel__core": "npm:^7.1.14" - babel-plugin-istanbul: "npm:^6.1.1" - babel-preset-jest: "npm:^27.5.1" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - slash: "npm:^3.0.0" - peerDependencies: - "@babel/core": ^7.8.0 - checksum: 4e93e6e9fb996cc5f1505e924eb8e8cc7b25c294ba9629762a2715390f48af6a4c14dbb84cd9730013ac0e03267a5a9aa2fb6318c544489cda7f50f4e506def4 - languageName: node - linkType: hard - -"babel-plugin-istanbul@npm:^6.1.1": - version: 6.1.1 - resolution: "babel-plugin-istanbul@npm:6.1.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@istanbuljs/load-nyc-config": "npm:^1.0.0" - "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-instrument: "npm:^5.0.4" - test-exclude: "npm:^6.0.0" - checksum: cb4fd95738219f232f0aece1116628cccff16db891713c4ccb501cddbbf9272951a5df81f2f2658dfdf4b3e7b236a9d5cbcf04d5d8c07dd5077297339598061a - languageName: node - linkType: hard - -"babel-plugin-jest-hoist@npm:^27.5.1": - version: 27.5.1 - resolution: "babel-plugin-jest-hoist@npm:27.5.1" - dependencies: - "@babel/template": "npm:^7.3.3" - "@babel/types": "npm:^7.3.3" - "@types/babel__core": "npm:^7.0.0" - "@types/babel__traverse": "npm:^7.0.6" - checksum: 709c17727aa8fd3be755d256fb514bf945a5c2ea6017f037d80280fc44ae5fe7dfeebf63d8412df53796455c2c216119d628d8cc90b099434fd819005943d058 +"b4a@npm:^1.6.4, b4a@npm:^1.6.6": + version: 1.6.7 + resolution: "b4a@npm:1.6.7" + checksum: afe4e239b49c0ef62236fe0d788ac9bd9d7eac7e9855b0d1835593cd0efcc7be394f9cc28a747a2ed2cdcb0a48c3528a551a196f472eb625457c711169c9efa2 languageName: node linkType: hard @@ -4882,83 +3736,54 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.10": - version: 0.4.11 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.11" - dependencies: - "@babel/compat-data": "npm:^7.22.6" - "@babel/helper-define-polyfill-provider": "npm:^0.6.2" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: f098353ce7c7dde1a1d2710858e01b471e85689110c9e37813e009072347eb8c55d5f84d20d3bf1cab31755f20078ba90f8855fdc4686a9daa826a95ff280bd7 +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.10.6": - version: 0.10.6 - resolution: "babel-plugin-polyfill-corejs3@npm:0.10.6" - dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.6.2" - core-js-compat: "npm:^3.38.0" - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: f762f29f7acca576897c63149c850f0a72babd3fb9ea436a2e36f0c339161c4b912a77828541d8188ce8a91e50965c6687120cf36071eabb1b7aa92f279e2164 +"bare-events@npm:^2.0.0, bare-events@npm:^2.2.0": + version: 2.5.0 + resolution: "bare-events@npm:2.5.0" + checksum: 5aa10716e7f33c5dfc471fd657eee2a33f2db0f78b3c83b5cdd1a45a7e7871114a69460ea96cd838807c55eb470b9e53dd0dfda8c83cced1352cc8253cebff48 languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.6.1": - version: 0.6.2 - resolution: "babel-plugin-polyfill-regenerator@npm:0.6.2" +"bare-fs@npm:^2.1.1": + version: 2.3.5 + resolution: "bare-fs@npm:2.3.5" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.6.2" - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 150233571072b6b3dfe946242da39cba8587b7f908d1c006f7545fc88b0e3c3018d445739beb61e7a75835f0c2751dbe884a94ff9b245ec42369d9267e0e1b3f + bare-events: ^2.0.0 + bare-path: ^2.0.0 + bare-stream: ^2.0.0 + checksum: 071b1dff94a213eaf0b41693953959bf10af2deade597a56ff206a5d833579d56bc8530aa4614bb88bf39fd6d52f2404f7c36af4695109ffa756a13837ac3d91 languageName: node linkType: hard -"babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.1.0 - resolution: "babel-preset-current-node-syntax@npm:1.1.0" - dependencies: - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/plugin-syntax-bigint": "npm:^7.8.3" - "@babel/plugin-syntax-class-properties": "npm:^7.12.13" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" - "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" - "@babel/plugin-syntax-import-meta": "npm:^7.10.4" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" - "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 9f93fac975eaba296c436feeca1031ca0539143c4066eaf5d1ba23525a31850f03b651a1049caea7287df837a409588c8252c15627ad3903f17864c8e25ed64b +"bare-os@npm:^2.1.0": + version: 2.4.4 + resolution: "bare-os@npm:2.4.4" + checksum: e90088a7dc0307c020350a28df8ec5564cae5a4b7a213d8509d70831d7064308e2ed31de801b68f474cb004ad3a0a66bd28c38374d270484d9025ee71af20396 languageName: node linkType: hard -"babel-preset-jest@npm:^27.5.1": - version: 27.5.1 - resolution: "babel-preset-jest@npm:27.5.1" +"bare-path@npm:^2.0.0, bare-path@npm:^2.1.0": + version: 2.1.3 + resolution: "bare-path@npm:2.1.3" dependencies: - babel-plugin-jest-hoist: "npm:^27.5.1" - babel-preset-current-node-syntax: "npm:^1.0.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 251bcea11c18fd9672fec104eadb45b43f117ceeb326fa7345ced778d4c1feab29343cd7a87a1dcfae4997d6c851a8b386d7f7213792da6e23b74f4443a8976d + bare-os: ^2.1.0 + checksum: 20301aeb05b735852a396515464908e51e896922c3bb353ef2a09ff54e81ced94e6ad857bb0a36d2ce659c42bd43dd5c3d5643edd8faaf910ee9950c4e137b88 languageName: node linkType: hard -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 +"bare-stream@npm:^2.0.0": + version: 2.3.0 + resolution: "bare-stream@npm:2.3.0" + dependencies: + b4a: ^1.6.6 + streamx: ^2.20.0 + checksum: 17de9dbd5a6d70863b6e55f0acdfe1cb5d2b05f22d87e79986372cc796095eb4882a868ee6ba3dc543243085d27f618b4b81ef2bf384bc1c690dd3a557b6e30d languageName: node linkType: hard @@ -4978,6 +3803,13 @@ __metadata: languageName: node linkType: hard +"basic-ftp@npm:^5.0.2": + version: 5.0.5 + resolution: "basic-ftp@npm:5.0.5" + checksum: bc82d1c1c61cd838eaca96d68ece888bacf07546642fb6b9b8328ed410756f5935f8cf43a42cb44bb343e0565e28e908adc54c298bd2f1a6e0976871fb11fec6 + languageName: node + linkType: hard + "bigint-buffer@npm:^1.1.5": version: 1.1.5 resolution: "bigint-buffer@npm:1.1.5" @@ -5057,14 +3889,7 @@ __metadata: languageName: node linkType: hard -"browser-process-hrtime@npm:^1.0.0": - version: 1.0.0 - resolution: "browser-process-hrtime@npm:1.0.0" - checksum: e30f868cdb770b1201afb714ad1575dd86366b6e861900884665fb627109b3cc757c40067d3bfee1ff2a29c835257ea30725a8018a9afd02ac1c24b408b1e45f - languageName: node - linkType: hard - -"browserslist@npm:^4.21.10, browserslist@npm:^4.23.1, browserslist@npm:^4.23.3": +"browserslist@npm:^4.21.10, browserslist@npm:^4.23.1": version: 4.23.3 resolution: "browserslist@npm:4.23.3" dependencies: @@ -5078,15 +3903,6 @@ __metadata: languageName: node linkType: hard -"bs-logger@npm:0.x": - version: 0.2.6 - resolution: "bs-logger@npm:0.2.6" - dependencies: - fast-json-stable-stringify: "npm:2.x" - checksum: d34bdaf68c64bd099ab97c3ea608c9ae7d3f5faa1178b3f3f345acd94e852e608b2d4f9103fb2e503f5e69780e98293df41691b84be909b41cf5045374d54606 - languageName: node - linkType: hard - "bs58@npm:^4.0.0, bs58@npm:^4.0.1": version: 4.0.1 resolution: "bs58@npm:4.0.1" @@ -5096,12 +3912,10 @@ __metadata: languageName: node linkType: hard -"bser@npm:2.1.1": - version: 2.1.1 - resolution: "bser@npm:2.1.1" - dependencies: - node-int64: "npm:^0.4.0" - checksum: 9ba4dc58ce86300c862bffc3ae91f00b2a03b01ee07f3564beeeaf82aa243b8b03ba53f123b0b842c190d4399b94697970c8e7cf7b1ea44b61aa28c3526a4449 +"buffer-crc32@npm:~0.2.3": + version: 0.2.13 + resolution: "buffer-crc32@npm:0.2.13" + checksum: 06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c languageName: node linkType: hard @@ -5122,6 +3936,16 @@ __metadata: languageName: node linkType: hard +"buffer@npm:^5.2.1": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: ^1.3.1 + ieee754: ^1.1.13 + checksum: e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84 + languageName: node + linkType: hard + "bufferutil@npm:^4.0.1": version: 4.0.8 resolution: "bufferutil@npm:4.0.8" @@ -5141,6 +3965,20 @@ __metadata: languageName: node linkType: hard +"bytes-iec@npm:^3.1.1": + version: 3.1.1 + resolution: "bytes-iec@npm:3.1.1" + checksum: 092a90897e938c8d28acf2b6383e5b91abc97c5d4251d9b6ebe331eb55b6064a331dcc78520efb98f90d554cfe9c7309e9138306f58d133dc0dcfa1edf38fc0a + languageName: node + linkType: hard + +"cac@npm:^6.7.14": + version: 6.7.14 + resolution: "cac@npm:6.7.14" + checksum: 45a2496a9443abbe7f52a49b22fbe51b1905eff46e03fd5e6c98e3f85077be3f8949685a1849b1a9cd2bc3e5567dfebcf64f01ce01847baf918f1b37c839791a + languageName: node + linkType: hard + "cacache@npm:^18.0.0": version: 18.0.4 resolution: "cacache@npm:18.0.4" @@ -5181,20 +4019,6 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^5.3.1": - version: 5.3.1 - resolution: "camelcase@npm:5.3.1" - checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b - languageName: node - linkType: hard - -"camelcase@npm:^6.2.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d - languageName: node - linkType: hard - "caniuse-lite@npm:^1.0.30001406, caniuse-lite@npm:^1.0.30001524, caniuse-lite@npm:^1.0.30001646": version: 1.0.30001660 resolution: "caniuse-lite@npm:1.0.30001660" @@ -5202,6 +4026,19 @@ __metadata: languageName: node linkType: hard +"chai@npm:^5.1.1": + version: 5.1.1 + resolution: "chai@npm:5.1.1" + dependencies: + assertion-error: ^2.0.1 + check-error: ^2.1.1 + deep-eql: ^5.0.1 + loupe: ^3.1.0 + pathval: ^2.0.0 + checksum: 1e0a5e1b5febdfa8ceb97b9aff608286861ecb86533863119b2f39f07c08fb59f3c1791ab554947f009b9d71d509b9e4e734fb12133cb81f231c2c2ee7c1e738 + languageName: node + linkType: hard + "chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" @@ -5233,10 +4070,10 @@ __metadata: languageName: node linkType: hard -"char-regex@npm:^1.0.2": - version: 1.0.2 - resolution: "char-regex@npm:1.0.2" - checksum: b563e4b6039b15213114626621e7a3d12f31008bdce20f9c741d69987f62aeaace7ec30f6018890ad77b2e9b4d95324c9f5acfca58a9441e3b1dcdd1e2525d17 +"check-error@npm:^2.1.1": + version: 2.1.1 + resolution: "check-error@npm:2.1.1" + checksum: d785ed17b1d4a4796b6e75c765a9a290098cf52ff9728ce0756e8ffd4293d2e419dd30c67200aee34202463b474306913f2fcfaf1890641026d9fc6966fea27a languageName: node linkType: hard @@ -5259,6 +4096,15 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:^4.0.1": + version: 4.0.1 + resolution: "chokidar@npm:4.0.1" + dependencies: + readdirp: ^4.0.1 + checksum: 193da9786b0422a895d59c7552195d15c6c636e6a2293ae43d09e34e243e24ccd02d693f007c767846a65abbeae5fea6bfacb8fc2ddec4ea4d397620d552010d + languageName: node + linkType: hard + "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -5266,17 +4112,23 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^3.2.0": - version: 3.9.0 - resolution: "ci-info@npm:3.9.0" - checksum: 6b19dc9b2966d1f8c2041a838217299718f15d6c4b63ae36e4674edd2bee48f780e94761286a56aa59eb305a85fbea4ddffb7630ec063e7ec7e7e5ad42549a87 +"chrome-trace-event@npm:^1.0.2": + version: 1.0.4 + resolution: "chrome-trace-event@npm:1.0.4" + checksum: fcbbd9dd0cd5b48444319007cc0c15870fd8612cc0df320908aa9d5e8a244084d48571eb28bf3c58c19327d2c5838f354c2d89fac3956d8e992273437401ac19 languageName: node linkType: hard -"cjs-module-lexer@npm:^1.0.0": - version: 1.4.1 - resolution: "cjs-module-lexer@npm:1.4.1" - checksum: 2556807a99aec1f9daac60741af96cd613a707f343174ae7967da46402c91dced411bf830d209f2e93be4cecea46fc75cecf1f17c799d7d8a9e1dd6204bfcd22 +"chromium-bidi@npm:0.5.17": + version: 0.5.17 + resolution: "chromium-bidi@npm:0.5.17" + dependencies: + mitt: 3.0.1 + urlpattern-polyfill: 10.0.0 + zod: 3.22.4 + peerDependencies: + devtools-protocol: "*" + checksum: 522da996ed5abfb47707583cc24785f9aa05d87bd968dbd520f245cf8972fa3ec102f8d1d72fa07558daa70495d8c6f2bf364d8599eb60b77504e528601d8a30 languageName: node linkType: hard @@ -5294,14 +4146,14 @@ __metadata: languageName: node linkType: hard -"cliui@npm:^7.0.2": - version: 7.0.4 - resolution: "cliui@npm:7.0.4" +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" dependencies: - string-width: "npm:^4.2.0" - strip-ansi: "npm:^6.0.0" - wrap-ansi: "npm:^7.0.0" - checksum: ce2e8f578a4813806788ac399b9e866297740eecd4ad1823c27fd344d78b22c5f8597d548adbcc46f0573e43e21e751f39446c5a5e804a12aace402b7a315d7f + string-width: ^4.2.0 + strip-ansi: ^6.0.1 + wrap-ansi: ^7.0.0 + checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56 languageName: node linkType: hard @@ -5312,13 +4164,6 @@ __metadata: languageName: node linkType: hard -"co@npm:^4.6.0": - version: 4.6.0 - resolution: "co@npm:4.6.0" - checksum: 5210d9223010eb95b29df06a91116f2cf7c8e0748a9013ed853b53f362ea0e822f1e5bb054fb3cefc645239a4cf966af1f6133a3b43f40d591f3b68ed6cf0510 - languageName: node - linkType: hard - "coinbase-wallet-sdk@workspace:.": version: 0.0.0-use.local resolution: "coinbase-wallet-sdk@workspace:." @@ -5335,13 +4180,6 @@ __metadata: languageName: unknown linkType: soft -"collect-v8-coverage@npm:^1.0.0": - version: 1.0.2 - resolution: "collect-v8-coverage@npm:1.0.2" - checksum: c10f41c39ab84629d16f9f6137bc8a63d332244383fc368caf2d2052b5e04c20cd1fd70f66fcf4e2422b84c8226598b776d39d5f2d2a51867cc1ed5d1982b4da - languageName: node - linkType: hard - "color-convert@npm:^1.9.0": version: 1.9.3 resolution: "color-convert@npm:1.9.3" @@ -5385,12 +4223,19 @@ __metadata: version: 1.0.8 resolution: "combined-stream@npm:1.0.8" dependencies: - delayed-stream: "npm:~1.0.0" + delayed-stream: ~1.0.0 checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c languageName: node linkType: hard -"commander@npm:^2.20.3": +"commander@npm:^12.0.0": + version: 12.1.0 + resolution: "commander@npm:12.1.0" + checksum: 68e9818b00fc1ed9cdab9eb16905551c2b768a317ae69a5e3c43924c2b20ac9bb65b27e1cab36aeda7b6496376d4da908996ba2c0b5d79463e0fb1e77935d514 + languageName: node + linkType: hard + +"commander@npm:^2.20.0, commander@npm:^2.20.3": version: 2.20.3 resolution: "commander@npm:2.20.3" checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e @@ -5418,7 +4263,7 @@ __metadata: languageName: node linkType: hard -"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.6.0": +"convert-source-map@npm:^1.5.0": version: 1.9.0 resolution: "convert-source-map@npm:1.9.0" checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 @@ -5441,22 +4286,6 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.37.1, core-js-compat@npm:^3.38.0": - version: 3.38.1 - resolution: "core-js-compat@npm:3.38.1" - dependencies: - browserslist: "npm:^4.23.3" - checksum: a0a5673bcd59f588f0cd0b59cdacd4712b82909738a87406d334dd412eb3d273ae72b275bdd8e8fef63fca9ef12b42ed651be139c7c44c8a1acb423c8906992e - languageName: node - linkType: hard - -"core-js-pure@npm:^3.30.2": - version: 3.38.1 - resolution: "core-js-pure@npm:3.38.1" - checksum: 95ca2e75df371571b0d41cba81e1f6335a2ba1f080e80f8edfa124ad3041880fe72e10f2144527a700a3d993dbf9f7cada3e04a927a66604bc49d0c4951567fb - languageName: node - linkType: hard - "cosmiconfig@npm:^7.0.0": version: 7.1.0 resolution: "cosmiconfig@npm:7.1.0" @@ -5479,14 +4308,7 @@ __metadata: languageName: node linkType: hard -"create-require@npm:^1.1.0": - version: 1.1.1 - resolution: "create-require@npm:1.1.1" - checksum: a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" dependencies: @@ -5513,26 +4335,12 @@ __metadata: languageName: node linkType: hard -"cssom@npm:^0.4.4": - version: 0.4.4 - resolution: "cssom@npm:0.4.4" - checksum: e3bc1076e7ee4213d4fef05e7ae03bfa83dc05f32611d8edc341f4ecc3d9647b89c8245474c7dd2cdcdb797a27c462e99da7ad00a34399694559f763478ff53f - languageName: node - linkType: hard - -"cssom@npm:~0.3.6": - version: 0.3.8 - resolution: "cssom@npm:0.3.8" - checksum: 24beb3087c76c0d52dd458be9ee1fbc80ac771478a9baef35dd258cdeb527c68eb43204dd439692bb2b1ae5272fa5f2946d10946edab0d04f1078f85e06bc7f6 - languageName: node - linkType: hard - -"cssstyle@npm:^2.3.0": - version: 2.3.0 - resolution: "cssstyle@npm:2.3.0" +"cssstyle@npm:^4.1.0": + version: 4.1.0 + resolution: "cssstyle@npm:4.1.0" dependencies: - cssom: "npm:~0.3.6" - checksum: 5f05e6fd2e3df0b44695c2f08b9ef38b011862b274e320665176467c0725e44a53e341bc4959a41176e83b66064ab786262e7380fd1cabeae6efee0d255bb4e3 + rrweb-cssom: ^0.7.1 + checksum: a8f5746430c42347e76dc830548f3a296882e42a90af188ae44e4c1a4131aec246b0b6c8562e3e6e4fa0ff14aeee5cd14a0e2fe5a7105dcf39f98eb70d16b634 languageName: node linkType: hard @@ -5543,14 +4351,20 @@ __metadata: languageName: node linkType: hard -"data-urls@npm:^2.0.0": - version: 2.0.0 - resolution: "data-urls@npm:2.0.0" +"data-uri-to-buffer@npm:^6.0.2": + version: 6.0.2 + resolution: "data-uri-to-buffer@npm:6.0.2" + checksum: 8b6927c33f9b54037f442856be0aa20e5fd49fa6c9c8ceece408dc306445d593ad72d207d57037c529ce65f413b421da800c6827b1dbefb607b8056f17123a61 + languageName: node + linkType: hard + +"data-urls@npm:^5.0.0": + version: 5.0.0 + resolution: "data-urls@npm:5.0.0" dependencies: - abab: "npm:^2.0.3" - whatwg-mimetype: "npm:^2.3.0" - whatwg-url: "npm:^8.0.0" - checksum: 97caf828aac25e25e04ba6869db0f99c75e6859bb5b424ada28d3e7841941ebf08ddff3c1b1bb4585986bd507a5d54c2a716853ea6cb98af877400e637393e71 + whatwg-mimetype: ^4.0.0 + whatwg-url: ^14.0.0 + checksum: 5c40568c31b02641a70204ff233bc4e42d33717485d074244a98661e5f2a1e80e38fe05a5755dfaf2ee549f2ab509d6a3af2a85f4b2ad2c984e5d176695eaf46 languageName: node linkType: hard @@ -5587,7 +4401,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:^4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.6": version: 4.3.7 resolution: "debug@npm:4.3.7" dependencies: @@ -5599,17 +4413,55 @@ __metadata: languageName: node linkType: hard -"decimal.js@npm:^10.2.1": +"debug@npm:4.3.4": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 + languageName: node + linkType: hard + +"decimal.js@npm:^10.4.3": version: 10.4.3 resolution: "decimal.js@npm:10.4.3" checksum: 796404dcfa9d1dbfdc48870229d57f788b48c21c603c3f6554a1c17c10195fc1024de338b0cf9e1efe0c7c167eeb18f04548979bcc5fdfabebb7cc0ae3287bae languageName: node linkType: hard -"dedent@npm:^0.7.0": - version: 0.7.0 - resolution: "dedent@npm:0.7.0" - checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 +"deep-eql@npm:^5.0.1": + version: 5.0.2 + resolution: "deep-eql@npm:5.0.2" + checksum: 6aaaadb4c19cbce42e26b2bbe5bd92875f599d2602635dc97f0294bae48da79e89470aedee05f449e0ca8c65e9fd7e7872624d1933a1db02713d99c2ca8d1f24 + languageName: node + linkType: hard + +"deep-equal@npm:^2.0.5": + version: 2.2.3 + resolution: "deep-equal@npm:2.2.3" + dependencies: + array-buffer-byte-length: ^1.0.0 + call-bind: ^1.0.5 + es-get-iterator: ^1.1.3 + get-intrinsic: ^1.2.2 + is-arguments: ^1.1.1 + is-array-buffer: ^3.0.2 + is-date-object: ^1.0.5 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.2 + isarray: ^2.0.5 + object-is: ^1.1.5 + object-keys: ^1.1.1 + object.assign: ^4.1.4 + regexp.prototype.flags: ^1.5.1 + side-channel: ^1.0.4 + which-boxed-primitive: ^1.0.2 + which-collection: ^1.0.1 + which-typed-array: ^1.1.13 + checksum: ee8852f23e4d20a5626c13b02f415ba443a1b30b4b3d39eaf366d59c4a85e6545d7ec917db44d476a85ae5a86064f7e5f7af7479f38f113995ba869f3a1ddc53 languageName: node linkType: hard @@ -5620,13 +4472,6 @@ __metadata: languageName: node linkType: hard -"deepmerge@npm:^4.2.2": - version: 4.3.1 - resolution: "deepmerge@npm:4.3.1" - checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052 - languageName: node - linkType: hard - "define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": version: 1.1.4 resolution: "define-data-property@npm:1.1.4" @@ -5649,6 +4494,17 @@ __metadata: languageName: node linkType: hard +"degenerator@npm:^5.0.0": + version: 5.0.1 + resolution: "degenerator@npm:5.0.1" + dependencies: + ast-types: ^0.13.4 + escodegen: ^2.1.0 + esprima: ^4.0.1 + checksum: a64fa39cdf6c2edd75188157d32338ee9de7193d7dbb2aeb4acb1eb30fa4a15ed80ba8dae9bd4d7b085472cf174a5baf81adb761aaa8e326771392c922084152 + languageName: node + linkType: hard + "delay@npm:^5.0.0": version: 5.0.0 resolution: "delay@npm:5.0.0" @@ -5663,13 +4519,6 @@ __metadata: languageName: node linkType: hard -"detect-newline@npm:^3.0.0": - version: 3.1.0 - resolution: "detect-newline@npm:3.1.0" - checksum: ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 - languageName: node - linkType: hard - "detect-node-es@npm:^1.1.0": version: 1.1.0 resolution: "detect-node-es@npm:1.1.0" @@ -5677,10 +4526,10 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^27.5.1": - version: 27.5.1 - resolution: "diff-sequences@npm:27.5.1" - checksum: a00db5554c9da7da225db2d2638d85f8e41124eccbd56cbaefb3b276dcbb1c1c2ad851c32defe2055a54a4806f030656cbf6638105fd6ce97bb87b90b32a33ca +"devtools-protocol@npm:0.0.1262051": + version: 0.0.1262051 + resolution: "devtools-protocol@npm:0.0.1262051" + checksum: beaad00059964a661ab056d5e993492742c612c0370c6f08acd91490181c4d4ecf57d316eedb5a37fb6bb59321901d09ce50762f79ea09a50751d86f601b8f8e languageName: node linkType: hard @@ -5691,13 +4540,6 @@ __metadata: languageName: node linkType: hard -"diff@npm:^4.0.1": - version: 4.0.2 - resolution: "diff@npm:4.0.2" - checksum: f2c09b0ce4e6b301c221addd83bf3f454c0bc00caa3dd837cf6c127d6edf7223aa2bbe3b688feea110b7f262adbfc845b757c44c8a9f8c0c5b15d8fa9ce9d20d - languageName: node - linkType: hard - "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -5725,7 +4567,7 @@ __metadata: languageName: node linkType: hard -"dom-accessibility-api@npm:^0.5.6": +"dom-accessibility-api@npm:^0.5.9": version: 0.5.16 resolution: "dom-accessibility-api@npm:0.5.16" checksum: 005eb283caef57fc1adec4d5df4dd49189b628f2f575af45decb210e04d634459e3f1ee64f18b41e2dcf200c844bc1d9279d80807e686a30d69a4756151ad248 @@ -5739,15 +4581,6 @@ __metadata: languageName: node linkType: hard -"domexception@npm:^2.0.1": - version: 2.0.1 - resolution: "domexception@npm:2.0.1" - dependencies: - webidl-conversions: "npm:^5.0.0" - checksum: d638e9cb05c52999f1b2eb87c374b03311ea5b1d69c2f875bc92da73e17db60c12142b45c950228642ff7f845c536b65305483350d080df59003a653da80b691 - languageName: node - linkType: hard - "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" @@ -5762,13 +4595,6 @@ __metadata: languageName: node linkType: hard -"emittery@npm:^0.8.1": - version: 0.8.1 - resolution: "emittery@npm:0.8.1" - checksum: 2457e8c7b0688bb006126f2c025b2655abe682f66b184954122a8a065b5277f9813d49d627896a10b076b81c513ec5f491fd9c14fbd42c04b95ca3c9f3c365ee - languageName: node - linkType: hard - "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -5792,6 +4618,32 @@ __metadata: languageName: node linkType: hard +"end-of-stream@npm:^1.1.0": + version: 1.4.4 + resolution: "end-of-stream@npm:1.4.4" + dependencies: + once: ^1.4.0 + checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b + languageName: node + linkType: hard + +"enhanced-resolve@npm:^5.17.1": + version: 5.17.1 + resolution: "enhanced-resolve@npm:5.17.1" + dependencies: + graceful-fs: ^4.2.4 + tapable: ^2.2.0 + checksum: 4bc38cf1cea96456f97503db7280394177d1bc46f8f87c267297d04f795ac5efa81e48115a2f5b6273c781027b5b6bfc5f62b54df629e4d25fa7001a86624f59 + languageName: node + linkType: hard + +"entities@npm:^4.4.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 + languageName: node + linkType: hard + "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -5885,6 +4737,23 @@ __metadata: languageName: node linkType: hard +"es-get-iterator@npm:^1.1.3": + version: 1.1.3 + resolution: "es-get-iterator@npm:1.1.3" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.3 + has-symbols: ^1.0.3 + is-arguments: ^1.1.1 + is-map: ^2.0.2 + is-set: ^2.0.2 + is-string: ^1.0.7 + isarray: ^2.0.5 + stop-iteration-iterator: ^1.0.0 + checksum: 8fa118da42667a01a7c7529f8a8cca514feeff243feec1ce0bb73baaa3514560bd09d2b3438873cf8a5aaec5d52da248131de153b28e2638a061b6e4df13267d + languageName: node + linkType: hard + "es-iterator-helpers@npm:^1.0.19": version: 1.0.19 resolution: "es-iterator-helpers@npm:1.0.19" @@ -5907,6 +4776,13 @@ __metadata: languageName: node linkType: hard +"es-module-lexer@npm:^1.2.1": + version: 1.5.4 + resolution: "es-module-lexer@npm:1.5.4" + checksum: a0cf04fb92d052647ac7d818d1913b98d3d3d0f5b9d88f0eafb993436e4c3e2c958599db68839d57f2dfa281fdf0f60e18d448eb78fc292c33c0f25635b6854f + languageName: node + linkType: hard + "es-object-atoms@npm:^1.0.0": version: 1.0.0 resolution: "es-object-atoms@npm:1.0.0" @@ -5963,6 +4839,86 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:^0.21.3": + version: 0.21.5 + resolution: "esbuild@npm:0.21.5" + dependencies: + "@esbuild/aix-ppc64": 0.21.5 + "@esbuild/android-arm": 0.21.5 + "@esbuild/android-arm64": 0.21.5 + "@esbuild/android-x64": 0.21.5 + "@esbuild/darwin-arm64": 0.21.5 + "@esbuild/darwin-x64": 0.21.5 + "@esbuild/freebsd-arm64": 0.21.5 + "@esbuild/freebsd-x64": 0.21.5 + "@esbuild/linux-arm": 0.21.5 + "@esbuild/linux-arm64": 0.21.5 + "@esbuild/linux-ia32": 0.21.5 + "@esbuild/linux-loong64": 0.21.5 + "@esbuild/linux-mips64el": 0.21.5 + "@esbuild/linux-ppc64": 0.21.5 + "@esbuild/linux-riscv64": 0.21.5 + "@esbuild/linux-s390x": 0.21.5 + "@esbuild/linux-x64": 0.21.5 + "@esbuild/netbsd-x64": 0.21.5 + "@esbuild/openbsd-x64": 0.21.5 + "@esbuild/sunos-x64": 0.21.5 + "@esbuild/win32-arm64": 0.21.5 + "@esbuild/win32-ia32": 0.21.5 + "@esbuild/win32-x64": 0.21.5 + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 2911c7b50b23a9df59a7d6d4cdd3a4f85855787f374dce751148dbb13305e0ce7e880dde1608c2ab7a927fc6cec3587b80995f7fc87a64b455f8b70b55fd8ec1 + languageName: node + linkType: hard + "escalade@npm:^3.1.1, escalade@npm:^3.1.2": version: 3.2.0 resolution: "escalade@npm:3.2.0" @@ -5977,13 +4933,6 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^2.0.0": - version: 2.0.0 - resolution: "escape-string-regexp@npm:2.0.0" - checksum: 9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 - languageName: node - linkType: hard - "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -5991,14 +4940,14 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^2.0.0": +"escodegen@npm:^2.1.0": version: 2.1.0 resolution: "escodegen@npm:2.1.0" dependencies: - esprima: "npm:^4.0.1" - estraverse: "npm:^5.2.0" - esutils: "npm:^2.0.2" - source-map: "npm:~0.6.1" + esprima: ^4.0.1 + estraverse: ^5.2.0 + esutils: ^2.0.2 + source-map: ~0.6.1 dependenciesMeta: source-map: optional: true @@ -6253,7 +5202,7 @@ __metadata: languageName: node linkType: hard -"esprima@npm:^4.0.0, esprima@npm:^4.0.1": +"esprima@npm:^4.0.1": version: 4.0.1 resolution: "esprima@npm:4.0.1" bin: @@ -6281,6 +5230,21 @@ __metadata: languageName: node linkType: hard +"estimo@npm:^3.0.3": + version: 3.0.3 + resolution: "estimo@npm:3.0.3" + dependencies: + "@sitespeed.io/tracium": ^0.3.3 + commander: ^12.0.0 + find-chrome-bin: 2.0.2 + nanoid: 5.0.7 + puppeteer-core: 22.6.5 + bin: + estimo: scripts/cli.js + checksum: 91d32bfd9e5c764b57b4af20aa34bca1a63c501cd3cbb61dd5dc30667febde066248b90d2c68dbb33768c4559f72325ff20278fad608bcac95fdce359788cc1c + languageName: node + linkType: hard + "estraverse@npm:^4.1.1": version: 4.3.0 resolution: "estraverse@npm:4.3.0" @@ -6295,6 +5259,15 @@ __metadata: languageName: node linkType: hard +"estree-walker@npm:^3.0.3": + version: 3.0.3 + resolution: "estree-walker@npm:3.0.3" + dependencies: + "@types/estree": ^1.0.0 + checksum: a65728d5727b71de172c5df323385755a16c0fdab8234dc756c3854cfee343261ddfbb72a809a5660fac8c75d960bb3e21aa898c2d7e9b19bb298482ca58a3af + languageName: node + linkType: hard + "esutils@npm:^2.0.2": version: 2.0.3 resolution: "esutils@npm:2.0.3" @@ -6400,39 +5373,10 @@ __metadata: languageName: node linkType: hard -"execa@npm:^5.0.0": - version: 5.1.1 - resolution: "execa@npm:5.1.1" - dependencies: - cross-spawn: "npm:^7.0.3" - get-stream: "npm:^6.0.0" - human-signals: "npm:^2.1.0" - is-stream: "npm:^2.0.0" - merge-stream: "npm:^2.0.0" - npm-run-path: "npm:^4.0.1" - onetime: "npm:^5.1.2" - signal-exit: "npm:^3.0.3" - strip-final-newline: "npm:^2.0.0" - checksum: fba9022c8c8c15ed862847e94c252b3d946036d7547af310e344a527e59021fd8b6bb0723883ea87044dc4f0201f949046993124a42ccb0855cae5bf8c786343 - languageName: node - linkType: hard - -"exit@npm:^0.1.2": - version: 0.1.2 - resolution: "exit@npm:0.1.2" - checksum: abc407f07a875c3961e4781dfcb743b58d6c93de9ab263f4f8c9d23bb6da5f9b7764fc773f86b43dd88030444d5ab8abcb611cb680fba8ca075362b77114bba3 - languageName: node - linkType: hard - -"expect@npm:^27.5.1": - version: 27.5.1 - resolution: "expect@npm:27.5.1" - dependencies: - "@jest/types": "npm:^27.5.1" - jest-get-type: "npm:^27.5.1" - jest-matcher-utils: "npm:^27.5.1" - jest-message-util: "npm:^27.5.1" - checksum: b2c66beb52de53ef1872165aace40224e722bca3c2274c54cfa74b6d617d55cf0ccdbf36783ccd64dbea501b280098ed33fd0b207d4f15bc03cd3c7a24364a6a +"events@npm:^3.2.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 languageName: node linkType: hard @@ -6443,6 +5387,23 @@ __metadata: languageName: node linkType: hard +"extract-zip@npm:2.0.1, extract-zip@npm:^2.0.1": + version: 2.0.1 + resolution: "extract-zip@npm:2.0.1" + dependencies: + "@types/yauzl": ^2.9.1 + debug: ^4.1.1 + get-stream: ^5.1.0 + yauzl: ^2.10.0 + dependenciesMeta: + "@types/yauzl": + optional: true + bin: + extract-zip: cli.js + checksum: 8cbda9debdd6d6980819cc69734d874ddd71051c9fe5bde1ef307ebcedfe949ba57b004894b585f758b7c9eeeea0e3d87f2dda89b7d25320459c2c9643ebb635 + languageName: node + linkType: hard + "eyes@npm:^0.1.8": version: 0.1.8 resolution: "eyes@npm:0.1.8" @@ -6464,6 +5425,13 @@ __metadata: languageName: node linkType: hard +"fast-fifo@npm:^1.2.0, fast-fifo@npm:^1.3.2": + version: 1.3.2 + resolution: "fast-fifo@npm:1.3.2" + checksum: 6bfcba3e4df5af7be3332703b69a7898a8ed7020837ec4395bb341bd96cc3a6d86c3f6071dd98da289618cf2234c70d84b2a6f09a33dd6f988b1ff60d8e54275 + languageName: node + linkType: hard + "fast-glob@npm:^3.2.9": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" @@ -6477,7 +5445,7 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0": +"fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb @@ -6514,12 +5482,24 @@ __metadata: languageName: node linkType: hard -"fb-watchman@npm:^2.0.0": - version: 2.0.2 - resolution: "fb-watchman@npm:2.0.2" +"fd-slicer@npm:~1.1.0": + version: 1.1.0 + resolution: "fd-slicer@npm:1.1.0" dependencies: - bser: "npm:2.1.1" - checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 + pend: ~1.2.0 + checksum: c8585fd5713f4476eb8261150900d2cb7f6ff2d87f8feb306ccc8a1122efd152f1783bdb2b8dc891395744583436bfd8081d8e63ece0ec8687eeefea394d4ff2 + languageName: node + linkType: hard + +"fdir@npm:^6.4.0": + version: 6.4.0 + resolution: "fdir@npm:6.4.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 63b4dc592c662d0c4703ffcae1e3ad15901c0b9f64e742dff1bbc74f58029b1a43f4d05b0ab75503a0b9fc7a616d8a755cd56ea680504b6a1e87249ec79b43f3 languageName: node linkType: hard @@ -6548,6 +5528,15 @@ __metadata: languageName: node linkType: hard +"find-chrome-bin@npm:2.0.2": + version: 2.0.2 + resolution: "find-chrome-bin@npm:2.0.2" + dependencies: + "@puppeteer/browsers": ^2.1.0 + checksum: 6bfcd6aff35ea13c2db2cdb90ece7f353a54b4330b5b625e959adc7aa2c68d743ffb3094cff4c7e7f5094309496ad891584011eda12fb2f4826754d413a0ea6e + languageName: node + linkType: hard + "find-root@npm:^1.1.0": version: 1.1.0 resolution: "find-root@npm:1.1.0" @@ -6555,16 +5544,6 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^4.0.0, find-up@npm:^4.1.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" - dependencies: - locate-path: "npm:^5.0.0" - path-exists: "npm:^4.0.0" - checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 - languageName: node - linkType: hard - "find-up@npm:^5.0.0": version: 5.0.0 resolution: "find-up@npm:5.0.0" @@ -6621,14 +5600,14 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^3.0.0": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.8" - mime-types: "npm:^2.1.12" - checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d + asynckit: ^0.4.0 + combined-stream: ^1.0.8 + mime-types: ^2.1.12 + checksum: 01135bf8675f9d5c61ff18e2e2932f719ca4de964e3be90ef4c36aacfc7b9cb2fceb5eca0b7e0190e3383fe51c5b37f4cb80b62ca06a99aaabfcfd6ac7c9328c languageName: node linkType: hard @@ -6662,6 +5641,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^11.2.0": + version: 11.2.0 + resolution: "fs-extra@npm:11.2.0" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: b12e42fa40ba47104202f57b8480dd098aa931c2724565e5e70779ab87605665594e76ee5fb00545f772ab9ace167fe06d2ab009c416dc8c842c5ae6df7aa7e8 + languageName: node + linkType: hard + "fs-minipass@npm:^2.0.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" @@ -6687,7 +5677,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": +"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -6697,7 +5687,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A^2.3.2#~builtin, fsevents@patch:fsevents@npm%3A~2.3.2#~builtin": +"fsevents@patch:fsevents@npm%3A~2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin, fsevents@patch:fsevents@~2.3.3#~builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -6746,7 +5736,14 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": +"get-func-name@npm:^2.0.1": + version: 2.0.2 + resolution: "get-func-name@npm:2.0.2" + checksum: 3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": version: 1.2.4 resolution: "get-intrinsic@npm:1.2.4" dependencies: @@ -6766,17 +5763,12 @@ __metadata: languageName: node linkType: hard -"get-package-type@npm:^0.1.0": - version: 0.1.0 - resolution: "get-package-type@npm:0.1.0" - checksum: bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 - languageName: node - linkType: hard - -"get-stream@npm:^6.0.0": - version: 6.0.1 - resolution: "get-stream@npm:6.0.1" - checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad +"get-stream@npm:^5.1.0": + version: 5.2.0 + resolution: "get-stream@npm:5.2.0" + dependencies: + pump: ^3.0.0 + checksum: 8bc1a23174a06b2b4ce600df38d6c98d2ef6d84e020c1ddad632ad75bac4e092eeb40e4c09e0761c35fc2dbc5e7fff5dab5e763a383582c4a167dd69a905bd12 languageName: node linkType: hard @@ -6791,6 +5783,18 @@ __metadata: languageName: node linkType: hard +"get-uri@npm:^6.0.1": + version: 6.0.3 + resolution: "get-uri@npm:6.0.3" + dependencies: + basic-ftp: ^5.0.2 + data-uri-to-buffer: ^6.0.2 + debug: ^4.3.4 + fs-extra: ^11.2.0 + checksum: 3eda448a59fa1ba82ad4f252e58490fec586b644f2dc9c98ba3ab20e801ecc8a1bc1784829c474c9d188edb633d4dfd81c33894ca6117a33a16e8e013b41b40f + languageName: node + linkType: hard + "glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" @@ -6848,7 +5852,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4": +"glob@npm:^7.1.3": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -6911,7 +5915,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -6996,19 +6000,12 @@ __metadata: languageName: node linkType: hard -"html-encoding-sniffer@npm:^2.0.1": - version: 2.0.1 - resolution: "html-encoding-sniffer@npm:2.0.1" +"html-encoding-sniffer@npm:^4.0.0": + version: 4.0.0 + resolution: "html-encoding-sniffer@npm:4.0.0" dependencies: - whatwg-encoding: "npm:^1.0.5" - checksum: bf30cce461015ed7e365736fcd6a3063c7bc016a91f74398ef6158886970a96333938f7c02417ab3c12aa82e3e53b40822145facccb9ddfbcdc15a879ae4d7ba - languageName: node - linkType: hard - -"html-escaper@npm:^2.0.0": - version: 2.0.2 - resolution: "html-escaper@npm:2.0.2" - checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 + whatwg-encoding: ^3.1.1 + checksum: 3339b71dab2723f3159a56acf541ae90a408ce2d11169f00fe7e0c4663d31d6398c8a4408b504b4eec157444e47b084df09b3cb039c816660f0dd04846b8957d languageName: node linkType: hard @@ -7019,18 +6016,7 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^4.0.1": - version: 4.0.1 - resolution: "http-proxy-agent@npm:4.0.1" - dependencies: - "@tootallnate/once": "npm:1" - agent-base: "npm:6" - debug: "npm:4" - checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^7.0.0": +"http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.1, http-proxy-agent@npm:^7.0.2": version: 7.0.2 resolution: "http-proxy-agent@npm:7.0.2" dependencies: @@ -7040,17 +6026,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^5.0.0": - version: 5.0.1 - resolution: "https-proxy-agent@npm:5.0.1" - dependencies: - agent-base: "npm:6" - debug: "npm:4" - checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^7.0.1": +"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.3, https-proxy-agent@npm:^7.0.5": version: 7.0.5 resolution: "https-proxy-agent@npm:7.0.5" dependencies: @@ -7060,13 +6036,6 @@ __metadata: languageName: node linkType: hard -"human-signals@npm:^2.1.0": - version: 2.1.0 - resolution: "human-signals@npm:2.1.0" - checksum: b87fd89fce72391625271454e70f67fe405277415b48bcc0117ca73d31fa23a4241787afdc8d67f5a116cf37258c052f59ea82daffa72364d61351423848e3b8 - languageName: node - linkType: hard - "humanize-ms@npm:^1.2.1": version: 1.2.1 resolution: "humanize-ms@npm:1.2.1" @@ -7076,16 +6045,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 - languageName: node - linkType: hard - -"iconv-lite@npm:^0.6.2": +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -7094,7 +6054,7 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.2.1": +"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e @@ -7132,18 +6092,6 @@ __metadata: languageName: node linkType: hard -"import-local@npm:^3.0.2": - version: 3.2.0 - resolution: "import-local@npm:3.2.0" - dependencies: - pkg-dir: "npm:^4.2.0" - resolve-cwd: "npm:^3.0.0" - bin: - import-local-fixture: fixtures/cli.js - checksum: 0b0b0b412b2521739fbb85eeed834a3c34de9bc67e670b3d0b86248fc460d990a7b116ad056c084b87a693ef73d1f17268d6a5be626bb43c998a8b1c8a230004 - languageName: node - linkType: hard - "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -7175,7 +6123,7 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.7": +"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.7": version: 1.0.7 resolution: "internal-slot@npm:1.0.7" dependencies: @@ -7205,7 +6153,7 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.0.4": +"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": version: 1.1.1 resolution: "is-arguments@npm:1.1.1" dependencies: @@ -7215,7 +6163,7 @@ __metadata: languageName: node linkType: hard -"is-array-buffer@npm:^3.0.4": +"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4": version: 3.0.4 resolution: "is-array-buffer@npm:3.0.4" dependencies: @@ -7326,13 +6274,6 @@ __metadata: languageName: node linkType: hard -"is-generator-fn@npm:^2.0.0": - version: 2.1.0 - resolution: "is-generator-fn@npm:2.1.0" - checksum: a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 - languageName: node - linkType: hard - "is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": version: 1.0.10 resolution: "is-generator-function@npm:1.0.10" @@ -7358,7 +6299,7 @@ __metadata: languageName: node linkType: hard -"is-map@npm:^2.0.3": +"is-map@npm:^2.0.2, is-map@npm:^2.0.3": version: 2.0.3 resolution: "is-map@npm:2.0.3" checksum: e6ce5f6380f32b141b3153e6ba9074892bbbbd655e92e7ba5ff195239777e767a976dcd4e22f864accaf30e53ebf961ab1995424aef91af68788f0591b7396cc @@ -7412,7 +6353,7 @@ __metadata: languageName: node linkType: hard -"is-set@npm:^2.0.3": +"is-set@npm:^2.0.2, is-set@npm:^2.0.3": version: 2.0.3 resolution: "is-set@npm:2.0.3" checksum: 36e3f8c44bdbe9496c9689762cc4110f6a6a12b767c5d74c0398176aa2678d4467e3bf07595556f2dba897751bde1422480212b97d973c7b08a343100b0c0dfe @@ -7428,13 +6369,6 @@ __metadata: languageName: node linkType: hard -"is-stream@npm:^2.0.0": - version: 2.0.1 - resolution: "is-stream@npm:2.0.1" - checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 - languageName: node - linkType: hard - "is-string@npm:^1.0.5, is-string@npm:^1.0.7": version: 1.0.7 resolution: "is-string@npm:1.0.7" @@ -7462,13 +6396,6 @@ __metadata: languageName: node linkType: hard -"is-typedarray@npm:^1.0.0": - version: 1.0.0 - resolution: "is-typedarray@npm:1.0.0" - checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 - languageName: node - linkType: hard - "is-weakmap@npm:^2.0.2": version: 2.0.2 resolution: "is-weakmap@npm:2.0.2" @@ -7503,86 +6430,34 @@ __metadata: linkType: hard "isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 - languageName: node - linkType: hard - -"isexe@npm:^3.1.1": - version: 3.1.1 - resolution: "isexe@npm:3.1.1" - checksum: 7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e - languageName: node - linkType: hard - -"isomorphic-ws@npm:^4.0.1": - version: 4.0.1 - resolution: "isomorphic-ws@npm:4.0.1" - peerDependencies: - ws: "*" - checksum: d7190eadefdc28bdb93d67b5f0c603385aaf87724fa2974abb382ac1ec9756ed2cfb27065cbe76122879c2d452e2982bc4314317f3d6c737ddda6c047328771a - languageName: node - linkType: hard - -"isows@npm:1.0.4": - version: 1.0.4 - resolution: "isows@npm:1.0.4" - peerDependencies: - ws: "*" - checksum: a3ee62e3d6216abb3adeeb2a551fe2e7835eac87b05a6ecc3e7739259bf5f8e83290501f49e26137390c8093f207fc3378d4a7653aab76ad7bbab4b2dba9c5b9 - languageName: node - linkType: hard - -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.2 - resolution: "istanbul-lib-coverage@npm:3.2.2" - checksum: 2367407a8d13982d8f7a859a35e7f8dd5d8f75aae4bb5484ede3a9ea1b426dc245aff28b976a2af48ee759fdd9be374ce2bd2669b644f31e76c5f46a2e29a831 - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": - version: 5.2.1 - resolution: "istanbul-lib-instrument@npm:5.2.1" - dependencies: - "@babel/core": "npm:^7.12.3" - "@babel/parser": "npm:^7.14.7" - "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-coverage: "npm:^3.2.0" - semver: "npm:^6.3.0" - checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 languageName: node linkType: hard -"istanbul-lib-report@npm:^3.0.0": - version: 3.0.1 - resolution: "istanbul-lib-report@npm:3.0.1" - dependencies: - istanbul-lib-coverage: "npm:^3.0.0" - make-dir: "npm:^4.0.0" - supports-color: "npm:^7.1.0" - checksum: fd17a1b879e7faf9bb1dc8f80b2a16e9f5b7b8498fe6ed580a618c34df0bfe53d2abd35bf8a0a00e628fb7405462576427c7df20bbe4148d19c14b431c974b21 +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e languageName: node linkType: hard -"istanbul-lib-source-maps@npm:^4.0.0": +"isomorphic-ws@npm:^4.0.1": version: 4.0.1 - resolution: "istanbul-lib-source-maps@npm:4.0.1" - dependencies: - debug: "npm:^4.1.1" - istanbul-lib-coverage: "npm:^3.0.0" - source-map: "npm:^0.6.1" - checksum: 21ad3df45db4b81852b662b8d4161f6446cd250c1ddc70ef96a585e2e85c26ed7cd9c2a396a71533cfb981d1a645508bc9618cae431e55d01a0628e7dec62ef2 + resolution: "isomorphic-ws@npm:4.0.1" + peerDependencies: + ws: "*" + checksum: d7190eadefdc28bdb93d67b5f0c603385aaf87724fa2974abb382ac1ec9756ed2cfb27065cbe76122879c2d452e2982bc4314317f3d6c737ddda6c047328771a languageName: node linkType: hard -"istanbul-reports@npm:^3.1.3": - version: 3.1.7 - resolution: "istanbul-reports@npm:3.1.7" - dependencies: - html-escaper: "npm:^2.0.0" - istanbul-lib-report: "npm:^3.0.0" - checksum: 2072db6e07bfbb4d0eb30e2700250636182398c1af811aea5032acb219d2080f7586923c09fa194029efd6b92361afb3dcbe1ebcc3ee6651d13340f7c6c4ed95 +"isows@npm:1.0.4": + version: 1.0.4 + resolution: "isows@npm:1.0.4" + peerDependencies: + ws: "*" + checksum: a3ee62e3d6216abb3adeeb2a551fe2e7835eac87b05a6ecc3e7739259bf5f8e83290501f49e26137390c8093f207fc3378d4a7653aab76ad7bbab4b2dba9c5b9 languageName: node linkType: hard @@ -7647,131 +6522,6 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-changed-files@npm:27.5.1" - dependencies: - "@jest/types": "npm:^27.5.1" - execa: "npm:^5.0.0" - throat: "npm:^6.0.1" - checksum: 95e9dc74c3ca688ef85cfeab270f43f8902721a6c8ade6ac2459459a77890c85977f537d6fb809056deaa6d9c3f075fa7d2699ff5f3bf7d3fda17c3760b79b15 - languageName: node - linkType: hard - -"jest-chrome@npm:^0.7.2": - version: 0.7.2 - resolution: "jest-chrome@npm:0.7.2" - dependencies: - "@types/chrome": "npm:^0.0.114" - peerDependencies: - jest: ^26.0.1 || ^27.0.0 - checksum: 1a7ebbe6981a7800504ab016665fc6c2ffd713b528a8d8b61664dd20406977b0b3212805cd0964ca96b870d687822c7965acf71f64991da12fc23a1733585408 - languageName: node - linkType: hard - -"jest-circus@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-circus@npm:27.5.1" - dependencies: - "@jest/environment": "npm:^27.5.1" - "@jest/test-result": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - co: "npm:^4.6.0" - dedent: "npm:^0.7.0" - expect: "npm:^27.5.1" - is-generator-fn: "npm:^2.0.0" - jest-each: "npm:^27.5.1" - jest-matcher-utils: "npm:^27.5.1" - jest-message-util: "npm:^27.5.1" - jest-runtime: "npm:^27.5.1" - jest-snapshot: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - pretty-format: "npm:^27.5.1" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - throat: "npm:^6.0.1" - checksum: 6192dccbccb3a6acfa361cbb97bdbabe94864ccf3d885932cfd41f19534329d40698078cf9be1489415e8234255d6ea9f9aff5396b79ad842a6fca6e6fc08fd0 - languageName: node - linkType: hard - -"jest-cli@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-cli@npm:27.5.1" - dependencies: - "@jest/core": "npm:^27.5.1" - "@jest/test-result": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - chalk: "npm:^4.0.0" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.9" - import-local: "npm:^3.0.2" - jest-config: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - jest-validate: "npm:^27.5.1" - prompts: "npm:^2.0.1" - yargs: "npm:^16.2.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 6c0a69fb48e500241409e09ff743ed72bc6578d7769e2c994724e7ef1e5587f6c1f85dc429e93b98ae38a365222993ee70f0acc2199358992120900984f349e5 - languageName: node - linkType: hard - -"jest-config@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-config@npm:27.5.1" - dependencies: - "@babel/core": "npm:^7.8.0" - "@jest/test-sequencer": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - babel-jest: "npm:^27.5.1" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - deepmerge: "npm:^4.2.2" - glob: "npm:^7.1.1" - graceful-fs: "npm:^4.2.9" - jest-circus: "npm:^27.5.1" - jest-environment-jsdom: "npm:^27.5.1" - jest-environment-node: "npm:^27.5.1" - jest-get-type: "npm:^27.5.1" - jest-jasmine2: "npm:^27.5.1" - jest-regex-util: "npm:^27.5.1" - jest-resolve: "npm:^27.5.1" - jest-runner: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - jest-validate: "npm:^27.5.1" - micromatch: "npm:^4.0.4" - parse-json: "npm:^5.2.0" - pretty-format: "npm:^27.5.1" - slash: "npm:^3.0.0" - strip-json-comments: "npm:^3.1.1" - peerDependencies: - ts-node: ">=9.0.0" - peerDependenciesMeta: - ts-node: - optional: true - checksum: 1188fd46c0ed78cbe3175eb9ad6712ccf74a74be33d9f0d748e147c107f0889f8b701fbff1567f31836ae18597dacdc43d6a8fc30dd34ade6c9229cc6c7cb82d - languageName: node - linkType: hard - -"jest-diff@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-diff@npm:27.5.1" - dependencies: - chalk: "npm:^4.0.0" - diff-sequences: "npm:^27.5.1" - jest-get-type: "npm:^27.5.1" - pretty-format: "npm:^27.5.1" - checksum: 8be27c1e1ee57b2bb2bef9c0b233c19621b4c43d53a3c26e2c00a4e805eb4ea11fe1694a06a9fb0e80ffdcfdc0d2b1cb0b85920b3f5c892327ecd1e7bd96b865 - languageName: node - linkType: hard - "jest-diff@npm:^29.2.0": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -7784,64 +6534,6 @@ __metadata: languageName: node linkType: hard -"jest-docblock@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-docblock@npm:27.5.1" - dependencies: - detect-newline: "npm:^3.0.0" - checksum: c0fed6d55b229d8bffdd8d03f121dd1a3be77c88f50552d374f9e1ea3bde57bf6bea017a0add04628d98abcb1bfb48b456438eeca8a74ef0053f4dae3b95d29c - languageName: node - linkType: hard - -"jest-each@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-each@npm:27.5.1" - dependencies: - "@jest/types": "npm:^27.5.1" - chalk: "npm:^4.0.0" - jest-get-type: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - pretty-format: "npm:^27.5.1" - checksum: b5a6d8730fd938982569c9e0b42bdf3c242f97b957ed8155a6473b5f7b540970f8685524e7f53963dc1805319f4b6602abfc56605590ca19d55bd7a87e467e63 - languageName: node - linkType: hard - -"jest-environment-jsdom@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-environment-jsdom@npm:27.5.1" - dependencies: - "@jest/environment": "npm:^27.5.1" - "@jest/fake-timers": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - jest-mock: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - jsdom: "npm:^16.6.0" - checksum: bc104aef7d7530d0740402aa84ac812138b6d1e51fe58adecce679f82b99340ddab73e5ec68fa079f33f50c9ddec9728fc9f0ddcca2ad6f0b351eed2762cc555 - languageName: node - linkType: hard - -"jest-environment-node@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-environment-node@npm:27.5.1" - dependencies: - "@jest/environment": "npm:^27.5.1" - "@jest/fake-timers": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - jest-mock: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - checksum: 0f988330c4f3eec092e3fb37ea753b0c6f702e83cd8f4d770af9c2bf964a70bc45fbd34ec6fdb6d71ce98a778d9f54afd673e63f222e4667fff289e8069dba39 - languageName: node - linkType: hard - -"jest-get-type@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-get-type@npm:27.5.1" - checksum: 63064ab70195c21007d897c1157bf88ff94a790824a10f8c890392e7d17eda9c3900513cb291ca1c8d5722cad79169764e9a1279f7c8a9c4cd6e9109ff04bbc0 - languageName: node - linkType: hard - "jest-get-type@npm:^29.6.3": version: 29.6.3 resolution: "jest-get-type@npm:29.6.3" @@ -7849,294 +6541,6 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-haste-map@npm:27.5.1" - dependencies: - "@jest/types": "npm:^27.5.1" - "@types/graceful-fs": "npm:^4.1.2" - "@types/node": "npm:*" - anymatch: "npm:^3.0.3" - fb-watchman: "npm:^2.0.0" - fsevents: "npm:^2.3.2" - graceful-fs: "npm:^4.2.9" - jest-regex-util: "npm:^27.5.1" - jest-serializer: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - jest-worker: "npm:^27.5.1" - micromatch: "npm:^4.0.4" - walker: "npm:^1.0.7" - dependenciesMeta: - fsevents: - optional: true - checksum: e092a1412829a9254b4725531ee72926de530f77fda7b0d9ea18008fb7623c16f72e772d8e93be71cac9e591b2c6843a669610887dd2c89bd9eb528856e3ab47 - languageName: node - linkType: hard - -"jest-jasmine2@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-jasmine2@npm:27.5.1" - dependencies: - "@jest/environment": "npm:^27.5.1" - "@jest/source-map": "npm:^27.5.1" - "@jest/test-result": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - co: "npm:^4.6.0" - expect: "npm:^27.5.1" - is-generator-fn: "npm:^2.0.0" - jest-each: "npm:^27.5.1" - jest-matcher-utils: "npm:^27.5.1" - jest-message-util: "npm:^27.5.1" - jest-runtime: "npm:^27.5.1" - jest-snapshot: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - pretty-format: "npm:^27.5.1" - throat: "npm:^6.0.1" - checksum: b716adf253ceb73db661936153394ab90d7f3a8ba56d6189b7cd4df8e4e2a4153b4e63ebb5d36e29ceb0f4c211d5a6f36ab7048c6abbd881c8646567e2ab8e6d - languageName: node - linkType: hard - -"jest-leak-detector@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-leak-detector@npm:27.5.1" - dependencies: - jest-get-type: "npm:^27.5.1" - pretty-format: "npm:^27.5.1" - checksum: 5c9689060960567ddaf16c570d87afa760a461885765d2c71ef4f4857bbc3af1482c34e3cce88e50beefde1bf35e33530b020480752057a7e3dbb1ca0bae359f - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^27.0.0, jest-matcher-utils@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-matcher-utils@npm:27.5.1" - dependencies: - chalk: "npm:^4.0.0" - jest-diff: "npm:^27.5.1" - jest-get-type: "npm:^27.5.1" - pretty-format: "npm:^27.5.1" - checksum: bb2135fc48889ff3fe73888f6cc7168ddab9de28b51b3148f820c89fdfd2effdcad005f18be67d0b9be80eda208ad47290f62f03d0a33f848db2dd0273c8217a - languageName: node - linkType: hard - -"jest-message-util@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-message-util@npm:27.5.1" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@jest/types": "npm:^27.5.1" - "@types/stack-utils": "npm:^2.0.0" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - micromatch: "npm:^4.0.4" - pretty-format: "npm:^27.5.1" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - checksum: eb6d637d1411c71646de578c49826b6da8e33dd293e501967011de9d1916d53d845afbfb52a5b661ff1c495be7c13f751c48c7f30781fd94fbd64842e8195796 - languageName: node - linkType: hard - -"jest-mock@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-mock@npm:27.5.1" - dependencies: - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - checksum: f5b5904bb1741b4a1687a5f492535b7b1758dc26534c72a5423305f8711292e96a601dec966df81bb313269fb52d47227e29f9c2e08324d79529172f67311be0 - languageName: node - linkType: hard - -"jest-pnp-resolver@npm:^1.2.2": - version: 1.2.3 - resolution: "jest-pnp-resolver@npm:1.2.3" - peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - checksum: db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 - languageName: node - linkType: hard - -"jest-regex-util@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-regex-util@npm:27.5.1" - checksum: d45ca7a9543616a34f7f3079337439cf07566e677a096472baa2810e274b9808b76767c97b0a4029b8a5b82b9d256dee28ef9ad4138b2b9e5933f6fac106c418 - languageName: node - linkType: hard - -"jest-resolve-dependencies@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-resolve-dependencies@npm:27.5.1" - dependencies: - "@jest/types": "npm:^27.5.1" - jest-regex-util: "npm:^27.5.1" - jest-snapshot: "npm:^27.5.1" - checksum: c67af97afad1da88f5530317c732bbd1262d1225f6cd7f4e4740a5db48f90ab0bd8564738ac70d1a43934894f9aef62205c1b8f8ee89e5c7a737e6a121ee4c25 - languageName: node - linkType: hard - -"jest-resolve@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-resolve@npm:27.5.1" - dependencies: - "@jest/types": "npm:^27.5.1" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^27.5.1" - jest-pnp-resolver: "npm:^1.2.2" - jest-util: "npm:^27.5.1" - jest-validate: "npm:^27.5.1" - resolve: "npm:^1.20.0" - resolve.exports: "npm:^1.1.0" - slash: "npm:^3.0.0" - checksum: 735830e7265b20a348029738680bb2f6e37f80ecea86cda869a4c318ba3a45d39c7a3a873a22f7f746d86258c50ead6e7f501de043e201c095d7ba628a1c440f - languageName: node - linkType: hard - -"jest-runner@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-runner@npm:27.5.1" - dependencies: - "@jest/console": "npm:^27.5.1" - "@jest/environment": "npm:^27.5.1" - "@jest/test-result": "npm:^27.5.1" - "@jest/transform": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - emittery: "npm:^0.8.1" - graceful-fs: "npm:^4.2.9" - jest-docblock: "npm:^27.5.1" - jest-environment-jsdom: "npm:^27.5.1" - jest-environment-node: "npm:^27.5.1" - jest-haste-map: "npm:^27.5.1" - jest-leak-detector: "npm:^27.5.1" - jest-message-util: "npm:^27.5.1" - jest-resolve: "npm:^27.5.1" - jest-runtime: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - jest-worker: "npm:^27.5.1" - source-map-support: "npm:^0.5.6" - throat: "npm:^6.0.1" - checksum: 5bbe6cf847dd322b3332ec9d6977b54f91bd5f72ff620bc1a0192f0f129deda8aa7ca74c98922187a7aa87d8e0ce4f6c50e99a7ccb2a310bf4d94be2e0c3ce8e - languageName: node - linkType: hard - -"jest-runtime@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-runtime@npm:27.5.1" - dependencies: - "@jest/environment": "npm:^27.5.1" - "@jest/fake-timers": "npm:^27.5.1" - "@jest/globals": "npm:^27.5.1" - "@jest/source-map": "npm:^27.5.1" - "@jest/test-result": "npm:^27.5.1" - "@jest/transform": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - chalk: "npm:^4.0.0" - cjs-module-lexer: "npm:^1.0.0" - collect-v8-coverage: "npm:^1.0.0" - execa: "npm:^5.0.0" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^27.5.1" - jest-message-util: "npm:^27.5.1" - jest-mock: "npm:^27.5.1" - jest-regex-util: "npm:^27.5.1" - jest-resolve: "npm:^27.5.1" - jest-snapshot: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - slash: "npm:^3.0.0" - strip-bom: "npm:^4.0.0" - checksum: 929e3df0c53dab43f831f2af4e2996b22aa8cb2d6d483919d6b0426cbc100098fd5b777b998c6568b77f8c4d860b2e83127514292ff61416064f5ef926492386 - languageName: node - linkType: hard - -"jest-serializer@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-serializer@npm:27.5.1" - dependencies: - "@types/node": "npm:*" - graceful-fs: "npm:^4.2.9" - checksum: 803e03a552278610edc6753c0dd9fa5bb5cd3ca47414a7b2918106efb62b79fd5e9ae785d0a21f12a299fa599fea8acc1fa6dd41283328cee43962cf7df9bb44 - languageName: node - linkType: hard - -"jest-snapshot@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-snapshot@npm:27.5.1" - dependencies: - "@babel/core": "npm:^7.7.2" - "@babel/generator": "npm:^7.7.2" - "@babel/plugin-syntax-typescript": "npm:^7.7.2" - "@babel/traverse": "npm:^7.7.2" - "@babel/types": "npm:^7.0.0" - "@jest/transform": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - "@types/babel__traverse": "npm:^7.0.4" - "@types/prettier": "npm:^2.1.5" - babel-preset-current-node-syntax: "npm:^1.0.0" - chalk: "npm:^4.0.0" - expect: "npm:^27.5.1" - graceful-fs: "npm:^4.2.9" - jest-diff: "npm:^27.5.1" - jest-get-type: "npm:^27.5.1" - jest-haste-map: "npm:^27.5.1" - jest-matcher-utils: "npm:^27.5.1" - jest-message-util: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - natural-compare: "npm:^1.4.0" - pretty-format: "npm:^27.5.1" - semver: "npm:^7.3.2" - checksum: a5cfadf0d21cd76063925d1434bc076443ed6d87847d0e248f0b245f11db3d98ff13e45cc03b15404027dabecd712d925f47b6eae4f64986f688640a7d362514 - languageName: node - linkType: hard - -"jest-util@npm:^27.0.0, jest-util@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-util@npm:27.5.1" - dependencies: - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - graceful-fs: "npm:^4.2.9" - picomatch: "npm:^2.2.3" - checksum: ac8d122f6daf7a035dcea156641fd3701aeba245417c40836a77e35b3341b9c02ddc5d904cfcd4ddbaa00ab854da76d3b911870cafdcdbaff90ea471de26c7d7 - languageName: node - linkType: hard - -"jest-validate@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-validate@npm:27.5.1" - dependencies: - "@jest/types": "npm:^27.5.1" - camelcase: "npm:^6.2.0" - chalk: "npm:^4.0.0" - jest-get-type: "npm:^27.5.1" - leven: "npm:^3.1.0" - pretty-format: "npm:^27.5.1" - checksum: 82e870f8ee7e4fb949652711b1567f05ae31c54be346b0899e8353e5c20fad7692b511905b37966945e90af8dc0383eb41a74f3ffefb16140ea4f9164d841412 - languageName: node - linkType: hard - -"jest-watcher@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-watcher@npm:27.5.1" - dependencies: - "@jest/test-result": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - jest-util: "npm:^27.5.1" - string-length: "npm:^4.0.1" - checksum: 191c4e9c278c0902ade1a8a80883ac244963ba3e6e78607a3d5f729ccca9c6e71fb3b316f87883658132641c5d818aa84202585c76752e03c539e6cbecb820bd - languageName: node - linkType: hard - "jest-websocket-mock@npm:^2.4.0": version: 2.5.0 resolution: "jest-websocket-mock@npm:2.5.0" @@ -8147,32 +6551,23 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^27.5.1": +"jest-worker@npm:^27.4.5": version: 27.5.1 resolution: "jest-worker@npm:27.5.1" dependencies: - "@types/node": "npm:*" - merge-stream: "npm:^2.0.0" - supports-color: "npm:^8.0.0" + "@types/node": "*" + merge-stream: ^2.0.0 + supports-color: ^8.0.0 checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 languageName: node linkType: hard -"jest@npm:^27.5.1": - version: 27.5.1 - resolution: "jest@npm:27.5.1" - dependencies: - "@jest/core": "npm:^27.5.1" - import-local: "npm:^3.0.2" - jest-cli: "npm:^27.5.1" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true +"jiti@npm:^2.0.0": + version: 2.3.1 + resolution: "jiti@npm:2.3.1" bin: - jest: bin/jest.js - checksum: 96f1d69042b3c6dfc695f2a4e4b0db38af6fb78582ad1a02beaa57cfcd77cbd31567d7d865c1c85709b7c3e176eefa3b2035ffecd646005f15d8ef528eccf205 + jiti: lib/jiti-cli.mjs + checksum: af11ffa16ec0b0ba4ecea2cdb8cc62ddeb7c18e370f7ddf1549401bde579aa8bcb7674446a5eb64f7aa9e5370d6891e8096d6485d43f5b3b66efed83daf8b8e4 languageName: node linkType: hard @@ -8183,18 +6578,6 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.13.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" - dependencies: - argparse: "npm:^1.0.7" - esprima: "npm:^4.0.0" - bin: - js-yaml: bin/js-yaml.js - checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c - languageName: node - linkType: hard - "js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" @@ -8213,43 +6596,37 @@ __metadata: languageName: node linkType: hard -"jsdom@npm:^16.6.0": - version: 16.7.0 - resolution: "jsdom@npm:16.7.0" - dependencies: - abab: "npm:^2.0.5" - acorn: "npm:^8.2.4" - acorn-globals: "npm:^6.0.0" - cssom: "npm:^0.4.4" - cssstyle: "npm:^2.3.0" - data-urls: "npm:^2.0.0" - decimal.js: "npm:^10.2.1" - domexception: "npm:^2.0.1" - escodegen: "npm:^2.0.0" - form-data: "npm:^3.0.0" - html-encoding-sniffer: "npm:^2.0.1" - http-proxy-agent: "npm:^4.0.1" - https-proxy-agent: "npm:^5.0.0" - is-potential-custom-element-name: "npm:^1.0.1" - nwsapi: "npm:^2.2.0" - parse5: "npm:6.0.1" - saxes: "npm:^5.0.1" - symbol-tree: "npm:^3.2.4" - tough-cookie: "npm:^4.0.0" - w3c-hr-time: "npm:^1.0.2" - w3c-xmlserializer: "npm:^2.0.0" - webidl-conversions: "npm:^6.1.0" - whatwg-encoding: "npm:^1.0.5" - whatwg-mimetype: "npm:^2.3.0" - whatwg-url: "npm:^8.5.0" - ws: "npm:^7.4.6" - xml-name-validator: "npm:^3.0.0" - peerDependencies: - canvas: ^2.5.0 +"jsdom@npm:^25.0.1": + version: 25.0.1 + resolution: "jsdom@npm:25.0.1" + dependencies: + cssstyle: ^4.1.0 + data-urls: ^5.0.0 + decimal.js: ^10.4.3 + form-data: ^4.0.0 + html-encoding-sniffer: ^4.0.0 + http-proxy-agent: ^7.0.2 + https-proxy-agent: ^7.0.5 + is-potential-custom-element-name: ^1.0.1 + nwsapi: ^2.2.12 + parse5: ^7.1.2 + rrweb-cssom: ^0.7.1 + saxes: ^6.0.0 + symbol-tree: ^3.2.4 + tough-cookie: ^5.0.0 + w3c-xmlserializer: ^5.0.0 + webidl-conversions: ^7.0.0 + whatwg-encoding: ^3.1.1 + whatwg-mimetype: ^4.0.0 + whatwg-url: ^14.0.0 + ws: ^8.18.0 + xml-name-validator: ^5.0.0 + peerDependencies: + canvas: ^2.11.2 peerDependenciesMeta: canvas: optional: true - checksum: 454b83371857000763ed31130a049acd1b113e3b927e6dcd75c67ddc30cdd242d7ebcac5c2294b7a1a6428155cb1398709c573b3c6d809218692ea68edd93370 + checksum: b637d28445d570014195b3c77d06e54ef69d1f807eaf61388cb470e4d9227244e7fe2e0c32b6df03ac4fe35f746d7c721672d9136ecebb49d2e61a04ab9628e0 languageName: node linkType: hard @@ -8262,15 +6639,6 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:~0.5.0": - version: 0.5.0 - resolution: "jsesc@npm:0.5.0" - bin: - jsesc: bin/jsesc - checksum: b8b44cbfc92f198ad972fba706ee6a1dfa7485321ee8c0b25f5cedd538dcb20cde3197de16a7265430fce8277a12db066219369e3d51055038946039f6e20e17 - languageName: node - linkType: hard - "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" @@ -8278,7 +6646,7 @@ __metadata: languageName: node linkType: hard -"json-parse-even-better-errors@npm:^2.3.0": +"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": version: 2.3.1 resolution: "json-parse-even-better-errors@npm:2.3.1" checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f @@ -8323,7 +6691,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:2.x, json5@npm:^2.2.3": +"json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -8332,6 +6700,19 @@ __metadata: languageName: node linkType: hard +"jsonfile@npm:^6.0.1": + version: 6.1.0 + resolution: "jsonfile@npm:6.1.0" + dependencies: + graceful-fs: ^4.1.6 + universalify: ^2.0.0 + dependenciesMeta: + graceful-fs: + optional: true + checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 + languageName: node + linkType: hard + "jsonparse@npm:^1.2.0": version: 1.3.1 resolution: "jsonparse@npm:1.3.1" @@ -8372,20 +6753,6 @@ __metadata: languageName: node linkType: hard -"kleur@npm:^3.0.3": - version: 3.0.3 - resolution: "kleur@npm:3.0.3" - checksum: df82cd1e172f957bae9c536286265a5cdbd5eeca487cb0a3b2a7b41ef959fc61f8e7c0e9aeea9c114ccf2c166b6a8dd45a46fd619c1c569d210ecd2765ad5169 - languageName: node - linkType: hard - -"leven@npm:^3.1.0": - version: 3.1.0 - resolution: "leven@npm:3.1.0" - checksum: 638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 - languageName: node - linkType: hard - "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -8396,6 +6763,13 @@ __metadata: languageName: node linkType: hard +"lilconfig@npm:^3.1.2": + version: 3.1.2 + resolution: "lilconfig@npm:3.1.2" + checksum: 4e8b83ddd1d0ad722600994e6ba5d858ddca14f0587aa6b9c8185e17548149b5e13d4d583d811e9e9323157fa8c6a527e827739794c7502b59243c58e210b8c3 + languageName: node + linkType: hard + "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" @@ -8403,12 +6777,10 @@ __metadata: languageName: node linkType: hard -"locate-path@npm:^5.0.0": - version: 5.0.0 - resolution: "locate-path@npm:5.0.0" - dependencies: - p-locate: "npm:^4.1.0" - checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 +"loader-runner@npm:^4.2.0": + version: 4.3.0 + resolution: "loader-runner@npm:4.3.0" + checksum: a90e00dee9a16be118ea43fec3192d0b491fe03a32ed48a4132eb61d498f5536a03a1315531c19d284392a8726a4ecad71d82044c28d7f22ef62e029bf761569 languageName: node linkType: hard @@ -8421,14 +6793,7 @@ __metadata: languageName: node linkType: hard -"lodash.debounce@npm:^4.0.8": - version: 4.0.8 - resolution: "lodash.debounce@npm:4.0.8" - checksum: a3f527d22c548f43ae31c861ada88b2637eb48ac6aa3eb56e82d44917971b8aa96fbb37aa60efea674dc4ee8c42074f90f7b1f772e9db375435f6c83a19b3bc6 - languageName: node - linkType: hard - -"lodash.memoize@npm:4.x, lodash.memoize@npm:^4.1.2": +"lodash.memoize@npm:^4.1.2": version: 4.1.2 resolution: "lodash.memoize@npm:4.1.2" checksum: 9ff3942feeccffa4f1fafa88d32f0d24fdc62fd15ded5a74a5f950ff5f0c6f61916157246744c620173dddf38d37095a92327d5fd3861e2063e736a5c207d089 @@ -8449,7 +6814,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.21, lodash@npm:^4.7.0": +"lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -8467,6 +6832,15 @@ __metadata: languageName: node linkType: hard +"loupe@npm:^3.1.0, loupe@npm:^3.1.1": + version: 3.1.1 + resolution: "loupe@npm:3.1.1" + dependencies: + get-func-name: ^2.0.1 + checksum: c7efa6bc6d71f25ca03eb13c9a069e35ed86799e308ca27a7a3eff8cdf9500e7c22d1f2411468d154a8e960e91e5e685e0c6c83e96db748f177c1adf30811153 + languageName: node + linkType: hard + "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" @@ -8490,7 +6864,23 @@ __metadata: languageName: node linkType: hard -"lz-string@npm:^1.4.4": +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: ^4.0.0 + checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 + languageName: node + linkType: hard + +"lru-cache@npm:^7.14.1": + version: 7.18.3 + resolution: "lru-cache@npm:7.18.3" + checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 + languageName: node + linkType: hard + +"lz-string@npm:^1.5.0": version: 1.5.0 resolution: "lz-string@npm:1.5.0" bin: @@ -8499,19 +6889,12 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^4.0.0": - version: 4.0.0 - resolution: "make-dir@npm:4.0.0" +"magic-string@npm:^0.30.11": + version: 0.30.11 + resolution: "magic-string@npm:0.30.11" dependencies: - semver: "npm:^7.5.3" - checksum: bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a - languageName: node - linkType: hard - -"make-error@npm:1.x, make-error@npm:^1.1.1": - version: 1.3.6 - resolution: "make-error@npm:1.3.6" - checksum: b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402 + "@jridgewell/sourcemap-codec": ^1.5.0 + checksum: e041649453c9a3f31d2e731fc10e38604d50e20d3585cd48bc7713a6e2e1a3ad3012105929ca15750d59d0a3f1904405e4b95a23b7e69dc256db3c277a73a3ca languageName: node linkType: hard @@ -8535,15 +6918,6 @@ __metadata: languageName: node linkType: hard -"makeerror@npm:1.0.12": - version: 1.0.12 - resolution: "makeerror@npm:1.0.12" - dependencies: - tmpl: "npm:1.0.5" - checksum: b38a025a12c8146d6eeea5a7f2bf27d51d8ad6064da8ca9405fcf7bf9b54acd43e3b30ddd7abb9b1bfa4ddb266019133313482570ddb207de568f71ecfcf6060 - languageName: node - linkType: hard - "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -8582,22 +6956,15 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12": +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: - mime-db: "npm:1.52.0" + mime-db: 1.52.0 checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 languageName: node linkType: hard -"mimic-fn@npm:^2.1.0": - version: 2.1.0 - resolution: "mimic-fn@npm:2.1.0" - checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a - languageName: node - linkType: hard - "min-indent@npm:^1.0.0": version: 1.0.1 resolution: "min-indent@npm:1.0.1" @@ -8623,7 +6990,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -8725,6 +7092,13 @@ __metadata: languageName: node linkType: hard +"mitt@npm:3.0.1": + version: 3.0.1 + resolution: "mitt@npm:3.0.1" + checksum: b55a489ac9c2949ab166b7f060601d3b6d893a852515ae9eca4e11df01c013876df777ea109317622b5c1c60e8aae252558e33c8c94e14124db38f64a39614b1 + languageName: node + linkType: hard + "mkdirp@npm:^1.0.3": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" @@ -8741,6 +7115,13 @@ __metadata: languageName: node linkType: hard +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f + languageName: node + linkType: hard + "ms@npm:^2.0.0, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" @@ -8755,7 +7136,16 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.6": +"nanoid@npm:5.0.7, nanoid@npm:^5.0.7": + version: 5.0.7 + resolution: "nanoid@npm:5.0.7" + bin: + nanoid: bin/nanoid.js + checksum: 25ab0b0cf9082ae6747f0f55cec930e6c1cc5975103aa3a5fda44be5720eff57d9b25a8a9850274bfdde8def964b49bf03def71c6aa7ad1cba32787819b79f60 + languageName: node + linkType: hard + +"nanoid@npm:^3.3.6, nanoid@npm:^3.3.7": version: 3.3.7 resolution: "nanoid@npm:3.3.7" bin: @@ -8764,6 +7154,15 @@ __metadata: languageName: node linkType: hard +"nanospinner@npm:^1.1.0": + version: 1.1.0 + resolution: "nanospinner@npm:1.1.0" + dependencies: + picocolors: ^1.0.0 + checksum: 797f0a7c8b053d6fb5188d73e63bab44dec97ff0e7b67ac3d55e9356c6fe002f5af691a9d1232ca086e1fb19301d11c979dc5b0c56e6700004a96c19dfded8f0 + languageName: node + linkType: hard + "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -8778,6 +7177,20 @@ __metadata: languageName: node linkType: hard +"neo-async@npm:^2.6.2": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 + languageName: node + linkType: hard + +"netmask@npm:^2.0.2": + version: 2.0.2 + resolution: "netmask@npm:2.0.2" + checksum: c65cb8d3f7ea5669edddb3217e4c96910a60d0d9a4b52d9847ff6b28b2d0277cd8464eee0ef85133cdee32605c57940cacdd04a9a019079b091b6bba4cb0ec22 + languageName: node + linkType: hard + "next@npm:^13.5.0": version: 13.5.6 resolution: "next@npm:13.5.6" @@ -8887,13 +7300,6 @@ __metadata: languageName: node linkType: hard -"node-int64@npm:^0.4.0": - version: 0.4.0 - resolution: "node-int64@npm:0.4.0" - checksum: d0b30b1ee6d961851c60d5eaa745d30b5c95d94bc0e74b81e5292f7c42a49e3af87f1eb9e89f59456f80645d679202537de751b7d72e9e40ceea40c5e449057e - languageName: node - linkType: hard - "node-releases@npm:^2.0.18": version: 2.0.18 resolution: "node-releases@npm:2.0.18" @@ -8939,19 +7345,10 @@ __metadata: languageName: node linkType: hard -"npm-run-path@npm:^4.0.1": - version: 4.0.1 - resolution: "npm-run-path@npm:4.0.1" - dependencies: - path-key: "npm:^3.0.0" - checksum: 5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 - languageName: node - linkType: hard - -"nwsapi@npm:^2.2.0": - version: 2.2.12 - resolution: "nwsapi@npm:2.2.12" - checksum: 4dbce7ecbcf336eef1edcbb5161cbceea95863e63a16d9bcec8e81cbb260bdab3d07e6c7b58354d465dc803eef6d0ea4fb20220a80fa148ae65f18d56df81799 +"nwsapi@npm:^2.2.12": + version: 2.2.13 + resolution: "nwsapi@npm:2.2.13" + checksum: d34fb7838517c3c7e8cc824e443275b08b57f6a025a860693d18c56ddcfd176e32df9bf0ae7f5a95c7a32981501caa1f9fda31b59f28aa72a4b9d01f573a8e6b languageName: node linkType: hard @@ -8969,6 +7366,16 @@ __metadata: languageName: node linkType: hard +"object-is@npm:^1.1.5": + version: 1.1.6 + resolution: "object-is@npm:1.1.6" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + checksum: 3ea22759967e6f2380a2cbbd0f737b42dc9ddb2dfefdb159a1b927fea57335e1b058b564bfa94417db8ad58cddab33621a035de6f5e5ad56d89f2dd03e66c6a1 + languageName: node + linkType: hard + "object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" @@ -9022,7 +7429,7 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.0": +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: @@ -9031,15 +7438,6 @@ __metadata: languageName: node linkType: hard -"onetime@npm:^5.1.2": - version: 5.1.2 - resolution: "onetime@npm:5.1.2" - dependencies: - mimic-fn: "npm:^2.1.0" - checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 - languageName: node - linkType: hard - "optionator@npm:^0.9.3": version: 0.9.4 resolution: "optionator@npm:0.9.4" @@ -9054,15 +7452,6 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^2.2.0": - version: 2.3.0 - resolution: "p-limit@npm:2.3.0" - dependencies: - p-try: "npm:^2.0.0" - checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 - languageName: node - linkType: hard - "p-limit@npm:^3.0.2": version: 3.1.0 resolution: "p-limit@npm:3.1.0" @@ -9072,15 +7461,6 @@ __metadata: languageName: node linkType: hard -"p-locate@npm:^4.1.0": - version: 4.1.0 - resolution: "p-locate@npm:4.1.0" - dependencies: - p-limit: "npm:^2.2.0" - checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 - languageName: node - linkType: hard - "p-locate@npm:^5.0.0": version: 5.0.0 resolution: "p-locate@npm:5.0.0" @@ -9099,10 +7479,29 @@ __metadata: languageName: node linkType: hard -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae +"pac-proxy-agent@npm:^7.0.1": + version: 7.0.2 + resolution: "pac-proxy-agent@npm:7.0.2" + dependencies: + "@tootallnate/quickjs-emscripten": ^0.23.0 + agent-base: ^7.0.2 + debug: ^4.3.4 + get-uri: ^6.0.1 + http-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.5 + pac-resolver: ^7.0.1 + socks-proxy-agent: ^8.0.4 + checksum: 82772aaa489a4ad6f598b75d56daf609e7ba294a05a91cfe3101b004e2df494f0a269c98452cb47aaa4a513428e248308a156e26fee67eb78a76a58e9346921e + languageName: node + linkType: hard + +"pac-resolver@npm:^7.0.1": + version: 7.0.1 + resolution: "pac-resolver@npm:7.0.1" + dependencies: + degenerator: ^5.0.0 + netmask: ^2.0.2 + checksum: 839134328781b80d49f9684eae1f5c74f50a1d4482076d44c84fc2f3ca93da66fa11245a4725a057231e06b311c20c989fd0681e662a0792d17f644d8fe62a5e languageName: node linkType: hard @@ -9122,7 +7521,7 @@ __metadata: languageName: node linkType: hard -"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": +"parse-json@npm:^5.0.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" dependencies: @@ -9134,10 +7533,12 @@ __metadata: languageName: node linkType: hard -"parse5@npm:6.0.1": - version: 6.0.1 - resolution: "parse5@npm:6.0.1" - checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd +"parse5@npm:^7.1.2": + version: 7.1.2 + resolution: "parse5@npm:7.1.2" + dependencies: + entities: ^4.4.0 + checksum: 59465dd05eb4c5ec87b76173d1c596e152a10e290b7abcda1aecf0f33be49646ea74840c69af975d7887543ea45564801736356c568d6b5e71792fd0f4055713 languageName: node linkType: hard @@ -9155,7 +7556,7 @@ __metadata: languageName: node linkType: hard -"path-key@npm:^3.0.0, path-key@npm:^3.1.0": +"path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 @@ -9196,20 +7597,48 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": +"pathe@npm:^1.1.2": + version: 1.1.2 + resolution: "pathe@npm:1.1.2" + checksum: ec5f778d9790e7b9ffc3e4c1df39a5bb1ce94657a4e3ad830c1276491ca9d79f189f47609884671db173400256b005f4955f7952f52a2aeb5834ad5fb4faf134 + languageName: node + linkType: hard + +"pathval@npm:^2.0.0": + version: 2.0.0 + resolution: "pathval@npm:2.0.0" + checksum: 682b6a6289de7990909effef7dae9aa7bb6218c0426727bccf66a35b34e7bfbc65615270c5e44e3c9557a5cb44b1b9ef47fc3cb18bce6ad3ba92bcd28467ed7d + languageName: node + linkType: hard + +"pend@npm:~1.2.0": + version: 1.2.0 + resolution: "pend@npm:1.2.0" + checksum: 6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0": version: 1.1.0 resolution: "picocolors@npm:1.1.0" checksum: a64d653d3a188119ff45781dfcdaeedd7625583f45280aea33fcb032c7a0d3959f2368f9b192ad5e8aade75b74dbd954ffe3106c158509a45e4c18ab379a2acd languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf languageName: node linkType: hard +"picomatch@npm:^4.0.2": + version: 4.0.2 + resolution: "picomatch@npm:4.0.2" + checksum: a7a5188c954f82c6585720e9143297ccd0e35ad8072231608086ca950bee672d51b0ef676254af0788205e59bd4e4deb4e7708769226bed725bf13370a7d1464 + languageName: node + linkType: hard + "pify@npm:^3.0.0": version: 3.0.0 resolution: "pify@npm:3.0.0" @@ -9224,22 +7653,6 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.4": - version: 4.0.6 - resolution: "pirates@npm:4.0.6" - checksum: 46a65fefaf19c6f57460388a5af9ab81e3d7fd0e7bc44ca59d753cb5c4d0df97c6c6e583674869762101836d68675f027d60f841c105d72734df9dfca97cbcc6 - languageName: node - linkType: hard - -"pkg-dir@npm:^4.2.0": - version: 4.2.0 - resolution: "pkg-dir@npm:4.2.0" - dependencies: - find-up: "npm:^4.0.0" - checksum: 9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 - languageName: node - linkType: hard - "plimit-lit@npm:^1.2.6": version: 1.6.1 resolution: "plimit-lit@npm:1.6.1" @@ -9274,6 +7687,17 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.4.43": + version: 8.4.47 + resolution: "postcss@npm:8.4.47" + dependencies: + nanoid: ^3.3.7 + picocolors: ^1.1.0 + source-map-js: ^1.2.1 + checksum: f78440a9d8f97431dd2ab1ab8e1de64f12f3eff38a3d8d4a33919b96c381046a314658d2de213a5fa5eb296b656de76a3ec269fdea27f16d5ab465b916a0f52c + languageName: node + linkType: hard + "preact@npm:^10.16.0, preact@npm:^10.5.9": version: 10.24.0 resolution: "preact@npm:10.24.0" @@ -9281,6 +7705,13 @@ __metadata: languageName: node linkType: hard +"preact@npm:^10.24.2": + version: 10.24.2 + resolution: "preact@npm:10.24.2" + checksum: 429584bbe65d5322b4cd449abd54d61d777f329a23badead36ad510f91d04f42d0615ad2bc4d5e80c3c531be53081932a027ee5f2d6f2805e10666f2ac3d70db + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -9306,25 +7737,13 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^26.6.2": - version: 26.6.2 - resolution: "pretty-format@npm:26.6.2" - dependencies: - "@jest/types": "npm:^26.6.2" - ansi-regex: "npm:^5.0.0" - ansi-styles: "npm:^4.0.0" - react-is: "npm:^17.0.1" - checksum: e3b808404d7e1519f0df1aa1f25cee0054ab475775c6b2b8c5568ff23194a92d54bf93274139b6f584ca70fd773be4eaa754b0e03f12bb0a8d1426b07f079976 - languageName: node - linkType: hard - -"pretty-format@npm:^27.0.0, pretty-format@npm:^27.5.1": +"pretty-format@npm:^27.0.2": version: 27.5.1 resolution: "pretty-format@npm:27.5.1" dependencies: - ansi-regex: "npm:^5.0.1" - ansi-styles: "npm:^5.0.0" - react-is: "npm:^17.0.1" + ansi-regex: ^5.0.1 + ansi-styles: ^5.0.0 + react-is: ^17.0.1 checksum: cf610cffcb793885d16f184a62162f2dd0df31642d9a18edf4ca298e909a8fe80bdbf556d5c9573992c102ce8bf948691da91bf9739bee0ffb6e79c8a8a6e088 languageName: node linkType: hard @@ -9347,6 +7766,13 @@ __metadata: languageName: node linkType: hard +"progress@npm:2.0.3, progress@npm:^2.0.3": + version: 2.0.3 + resolution: "progress@npm:2.0.3" + checksum: f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 + languageName: node + linkType: hard + "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -9357,16 +7783,6 @@ __metadata: languageName: node linkType: hard -"prompts@npm:^2.0.1": - version: 2.4.2 - resolution: "prompts@npm:2.4.2" - dependencies: - kleur: "npm:^3.0.3" - sisteransi: "npm:^1.0.5" - checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d - languageName: node - linkType: hard - "prop-types@npm:^15.6.2, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" @@ -9378,10 +7794,26 @@ __metadata: languageName: node linkType: hard -"psl@npm:^1.1.33": - version: 1.9.0 - resolution: "psl@npm:1.9.0" - checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d +"proxy-agent@npm:6.4.0, proxy-agent@npm:^6.4.0": + version: 6.4.0 + resolution: "proxy-agent@npm:6.4.0" + dependencies: + agent-base: ^7.0.2 + debug: ^4.3.4 + http-proxy-agent: ^7.0.1 + https-proxy-agent: ^7.0.3 + lru-cache: ^7.14.1 + pac-proxy-agent: ^7.0.1 + proxy-from-env: ^1.1.0 + socks-proxy-agent: ^8.0.2 + checksum: 4d3794ad5e07486298902f0a7f250d0f869fa0e92d790767ca3f793a81374ce0ab6c605f8ab8e791c4d754da96656b48d1c24cb7094bfd310a15867e4a0841d7 + languageName: node + linkType: hard + +"proxy-from-env@npm:^1.1.0": + version: 1.1.0 + resolution: "proxy-from-env@npm:1.1.0" + checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4 languageName: node linkType: hard @@ -9392,26 +7824,33 @@ __metadata: languageName: node linkType: hard -"punycode@npm:^2.1.0, punycode@npm:^2.1.1": +"pump@npm:^3.0.0": + version: 3.0.2 + resolution: "pump@npm:3.0.2" + dependencies: + end-of-stream: ^1.1.0 + once: ^1.3.1 + checksum: e0c4216874b96bd25ddf31a0b61a5613e26cc7afa32379217cf39d3915b0509def3565f5f6968fafdad2894c8bbdbd67d340e84f3634b2a29b950cffb6442d9f + languageName: node + linkType: hard + +"punycode@npm:^2.1.0, punycode@npm:^2.3.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" checksum: bb0a0ceedca4c3c57a9b981b90601579058903c62be23c5e8e843d2c2d4148a3ecf029d5133486fb0e1822b098ba8bba09e89d6b21742d02fa26bda6441a6fb2 languageName: node linkType: hard -"pvtsutils@npm:^1.3.2, pvtsutils@npm:^1.3.5": - version: 1.3.5 - resolution: "pvtsutils@npm:1.3.5" +"puppeteer-core@npm:22.6.5": + version: 22.6.5 + resolution: "puppeteer-core@npm:22.6.5" dependencies: - tslib: "npm:^2.6.1" - checksum: e734516b3cb26086c18bd9c012fefe818928a5073178842ab7e62885a090f1dd7bda9c7bb8cd317167502cb8ec86c0b1b0ccd71dac7ab469382a4518157b0d12 - languageName: node - linkType: hard - -"pvutils@npm:^1.1.3": - version: 1.1.3 - resolution: "pvutils@npm:1.1.3" - checksum: 2ee26a9e5176c348977d6ec00d8ee80bff62f51743b1c5fe8abeeb4c5d29d9959cdfe0ce146707a9e6801bce88190fed3002d720b072dc87d031c692820b44c9 + "@puppeteer/browsers": 2.2.2 + chromium-bidi: 0.5.17 + debug: 4.3.4 + devtools-protocol: 0.0.1262051 + ws: 8.16.0 + checksum: 4dc58083179eae79397d2c55c8cf12b27228278c5ab2d4928dd44a954af17f0f55be0b91e0e442fd282fa96574a2403e6397b3ae10bedf6ff2b38bffed164ff2 languageName: node linkType: hard @@ -9424,13 +7863,6 @@ __metadata: languageName: node linkType: hard -"querystringify@npm:^2.1.1": - version: 2.2.0 - resolution: "querystringify@npm:2.2.0" - checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 - languageName: node - linkType: hard - "queue-lit@npm:^1.5.1": version: 1.5.2 resolution: "queue-lit@npm:1.5.2" @@ -9445,6 +7877,22 @@ __metadata: languageName: node linkType: hard +"queue-tick@npm:^1.0.1": + version: 1.0.1 + resolution: "queue-tick@npm:1.0.1" + checksum: 57c3292814b297f87f792fbeb99ce982813e4e54d7a8bdff65cf53d5c084113913289d4a48ec8bbc964927a74b847554f9f4579df43c969a6c8e0f026457ad01 + languageName: node + linkType: hard + +"randombytes@npm:^2.1.0": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" + dependencies: + safe-buffer: ^5.1.0 + checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 + languageName: node + linkType: hard + "react-clientside-effect@npm:^1.2.6": version: 1.2.6 resolution: "react-clientside-effect@npm:1.2.6" @@ -9597,6 +8045,13 @@ __metadata: languageName: node linkType: hard +"readdirp@npm:^4.0.1": + version: 4.0.2 + resolution: "readdirp@npm:4.0.2" + checksum: 309376e717f94fb7eb61bec21e2603243a9e2420cd2e9bf94ddf026aefea0d7377ed1a62f016d33265682e44908049a55c3cfc2307450a1421654ea008489b39 + languageName: node + linkType: hard + "readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" @@ -9631,22 +8086,6 @@ __metadata: languageName: node linkType: hard -"regenerate-unicode-properties@npm:^10.1.0": - version: 10.2.0 - resolution: "regenerate-unicode-properties@npm:10.2.0" - dependencies: - regenerate: "npm:^1.4.2" - checksum: d5c5fc13f8b8d7e16e791637a4bfef741f8d70e267d51845ee7d5404a32fa14c75b181c4efba33e4bff8b0000a2f13e9773593713dfe5b66597df4259275ce63 - languageName: node - linkType: hard - -"regenerate@npm:^1.4.2": - version: 1.4.2 - resolution: "regenerate@npm:1.4.2" - checksum: 3317a09b2f802da8db09aa276e469b57a6c0dd818347e05b8862959c6193408242f150db5de83c12c3fa99091ad95fb42a6db2c3329bfaa12a0ea4cbbeb30cb0 - languageName: node - linkType: hard - "regenerator-runtime@npm:^0.14.0": version: 0.14.1 resolution: "regenerator-runtime@npm:0.14.1" @@ -9654,12 +8093,15 @@ __metadata: languageName: node linkType: hard -"regenerator-transform@npm:^0.15.2": - version: 0.15.2 - resolution: "regenerator-transform@npm:0.15.2" +"regexp.prototype.flags@npm:^1.5.1": + version: 1.5.3 + resolution: "regexp.prototype.flags@npm:1.5.3" dependencies: - "@babel/runtime": "npm:^7.8.4" - checksum: 20b6f9377d65954980fe044cfdd160de98df415b4bff38fbade67b3337efaf078308c4fed943067cd759827cc8cfeca9cb28ccda1f08333b85d6a2acbd022c27 + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-errors: ^1.3.0 + set-function-name: ^2.0.2 + checksum: 83ff0705b837f7cb6d664010a11642250f36d3f642263dd0f3bdfe8f150261aa7b26b50ee97f21c1da30ef82a580bb5afedbef5f45639d69edaafbeac9bbb0ed languageName: node linkType: hard @@ -9675,31 +8117,6 @@ __metadata: languageName: node linkType: hard -"regexpu-core@npm:^5.3.1": - version: 5.3.2 - resolution: "regexpu-core@npm:5.3.2" - dependencies: - "@babel/regjsgen": "npm:^0.8.0" - regenerate: "npm:^1.4.2" - regenerate-unicode-properties: "npm:^10.1.0" - regjsparser: "npm:^0.9.1" - unicode-match-property-ecmascript: "npm:^2.0.0" - unicode-match-property-value-ecmascript: "npm:^2.1.0" - checksum: 95bb97088419f5396e07769b7de96f995f58137ad75fac5811fb5fe53737766dfff35d66a0ee66babb1eb55386ef981feaef392f9df6d671f3c124812ba24da2 - languageName: node - linkType: hard - -"regjsparser@npm:^0.9.1": - version: 0.9.1 - resolution: "regjsparser@npm:0.9.1" - dependencies: - jsesc: "npm:~0.5.0" - bin: - regjsparser: bin/parser - checksum: 5e1b76afe8f1d03c3beaf9e0d935dd467589c3625f6d65fb8ffa14f224d783a0fed4bf49c2c1b8211043ef92b6117313419edf055a098ed8342e340586741afc - languageName: node - linkType: hard - "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -9707,22 +8124,6 @@ __metadata: languageName: node linkType: hard -"requires-port@npm:^1.0.0": - version: 1.0.0 - resolution: "requires-port@npm:1.0.0" - checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff - languageName: node - linkType: hard - -"resolve-cwd@npm:^3.0.0": - version: 3.0.0 - resolution: "resolve-cwd@npm:3.0.0" - dependencies: - resolve-from: "npm:^5.0.0" - checksum: 546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 - languageName: node - linkType: hard - "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -9730,21 +8131,7 @@ __metadata: languageName: node linkType: hard -"resolve-from@npm:^5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf - languageName: node - linkType: hard - -"resolve.exports@npm:^1.1.0": - version: 1.1.1 - resolution: "resolve.exports@npm:1.1.1" - checksum: 485aa10082eb388a569d696e17ad7b16f4186efc97dd34eadd029d95b811f21ffee13b1b733198bb4584dbb3cb296aa6f141835221fb7613b9606b84f1386655 - languageName: node - linkType: hard - -"resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0": +"resolve@npm:^1.19.0": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -9770,7 +8157,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.14.2#~builtin, resolve@patch:resolve@npm%3A^1.19.0#~builtin, resolve@patch:resolve@npm%3A^1.20.0#~builtin": +"resolve@patch:resolve@npm%3A^1.19.0#~builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -9810,7 +8197,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": +"rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: @@ -9821,6 +8208,69 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^4.20.0": + version: 4.24.0 + resolution: "rollup@npm:4.24.0" + dependencies: + "@rollup/rollup-android-arm-eabi": 4.24.0 + "@rollup/rollup-android-arm64": 4.24.0 + "@rollup/rollup-darwin-arm64": 4.24.0 + "@rollup/rollup-darwin-x64": 4.24.0 + "@rollup/rollup-linux-arm-gnueabihf": 4.24.0 + "@rollup/rollup-linux-arm-musleabihf": 4.24.0 + "@rollup/rollup-linux-arm64-gnu": 4.24.0 + "@rollup/rollup-linux-arm64-musl": 4.24.0 + "@rollup/rollup-linux-powerpc64le-gnu": 4.24.0 + "@rollup/rollup-linux-riscv64-gnu": 4.24.0 + "@rollup/rollup-linux-s390x-gnu": 4.24.0 + "@rollup/rollup-linux-x64-gnu": 4.24.0 + "@rollup/rollup-linux-x64-musl": 4.24.0 + "@rollup/rollup-win32-arm64-msvc": 4.24.0 + "@rollup/rollup-win32-ia32-msvc": 4.24.0 + "@rollup/rollup-win32-x64-msvc": 4.24.0 + "@types/estree": 1.0.6 + fsevents: ~2.3.2 + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: b7e915b0cc43749c2c71255ff58858496460b1a75148db2abecc8e9496af83f488517768593826715f610e20e480a5ae7f1132a1408eb1d364830d6b239325cf + languageName: node + linkType: hard + "rpc-websockets@npm:^9.0.2": version: 9.0.2 resolution: "rpc-websockets@npm:9.0.2" @@ -9843,6 +8293,13 @@ __metadata: languageName: node linkType: hard +"rrweb-cssom@npm:^0.7.1": + version: 0.7.1 + resolution: "rrweb-cssom@npm:0.7.1" + checksum: 62e410ddbaaba6abc196c3bbfa8de4952e0a134d9f2b454ee293039bf9931322d806e14d52ed122a5c2bd332a868b9da2e99358fb6232c33758b5ede86d992c8 + languageName: node + linkType: hard + "run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" @@ -9873,7 +8330,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:^5.0.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 @@ -9891,7 +8348,7 @@ __metadata: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": +"safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 @@ -9911,12 +8368,12 @@ __metadata: languageName: node linkType: hard -"saxes@npm:^5.0.1": - version: 5.0.1 - resolution: "saxes@npm:5.0.1" +"saxes@npm:^6.0.0": + version: 6.0.0 + resolution: "saxes@npm:6.0.0" dependencies: - xmlchars: "npm:^2.2.0" - checksum: 5636b55cf15f7cf0baa73f2797bf992bdcf75d1b39d82c0aa4608555c774368f6ac321cb641fd5f3d3ceb87805122cd47540da6a7b5960fe0dbdb8f8c263f000 + xmlchars: ^2.2.0 + checksum: d3fa3e2aaf6c65ed52ee993aff1891fc47d5e47d515164b5449cbf5da2cbdc396137e55590472e64c5c436c14ae64a8a03c29b9e7389fc6f14035cf4e982ef3b languageName: node linkType: hard @@ -9929,6 +8386,17 @@ __metadata: languageName: node linkType: hard +"schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" + dependencies: + "@types/json-schema": ^7.0.8 + ajv: ^6.12.5 + ajv-keywords: ^3.5.2 + checksum: ea56971926fac2487f0757da939a871388891bc87c6a82220d125d587b388f1704788f3706e7f63a7b70e49fc2db974c41343528caea60444afd5ce0fe4b85c0 + languageName: node + linkType: hard + "sdk-playground@workspace:examples/testapp": version: 0.0.0-use.local resolution: "sdk-playground@workspace:examples/testapp" @@ -9962,16 +8430,18 @@ __metadata: languageName: unknown linkType: soft -"semver@npm:7.x, semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4": - version: 7.6.3 - resolution: "semver@npm:7.6.3" +"semver@npm:7.6.0": + version: 7.6.0 + resolution: "semver@npm:7.6.0" + dependencies: + lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 + checksum: 7427f05b70786c696640edc29fdd4bc33b2acf3bbe1740b955029044f80575fc664e1a512e4113c3af21e767154a94b4aa214bf6cd6e42a1f6dba5914e0b208c languageName: node linkType: hard -"semver@npm:^6.3.0, semver@npm:^6.3.1": +"semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -9980,6 +8450,24 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.3": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 + languageName: node + linkType: hard + +"serialize-javascript@npm:^6.0.1": + version: 6.0.2 + resolution: "serialize-javascript@npm:6.0.2" + dependencies: + randombytes: ^2.1.0 + checksum: c4839c6206c1d143c0f80763997a361310305751171dd95e4b57efee69b8f6edd8960a0b7fbfc45042aadff98b206d55428aee0dc276efe54f100899c7fa8ab7 + languageName: node + linkType: hard + "set-function-length@npm:^1.2.1": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" @@ -10046,10 +8534,10 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": - version: 3.0.7 - resolution: "signal-exit@npm:3.0.7" - checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 +"siginfo@npm:^2.0.0": + version: 2.0.0 + resolution: "siginfo@npm:2.0.0" + checksum: 8aa5a98640ca09fe00d74416eca97551b3e42991614a3d1b824b115fc1401543650914f651ab1311518177e4d297e80b953f4cd4cd7ea1eabe824e8f2091de01 languageName: node linkType: hard @@ -10069,10 +8557,20 @@ __metadata: languageName: node linkType: hard -"sisteransi@npm:^1.0.5": - version: 1.0.5 - resolution: "sisteransi@npm:1.0.5" - checksum: aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 +"size-limit@npm:11.1.6, size-limit@npm:^11.1.6": + version: 11.1.6 + resolution: "size-limit@npm:11.1.6" + dependencies: + bytes-iec: ^3.1.1 + chokidar: ^4.0.1 + jiti: ^2.0.0 + lilconfig: ^3.1.2 + nanospinner: ^1.1.0 + picocolors: ^1.1.0 + tinyglobby: ^0.2.7 + bin: + size-limit: bin.js + checksum: b3c2bae97a955a1a7b1d28a4cedff36d054a715e2627cb895a04eed5397429a4fc4e78163c95a799b1a4e71f4ee1c1168e190e662cc99495bc03b82e9a960d6e languageName: node linkType: hard @@ -10090,7 +8588,7 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^8.0.3": +"socks-proxy-agent@npm:^8.0.2, socks-proxy-agent@npm:^8.0.3, socks-proxy-agent@npm:^8.0.4": version: 8.0.4 resolution: "socks-proxy-agent@npm:8.0.4" dependencies: @@ -10111,19 +8609,19 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.2": +"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.2, source-map-js@npm:^1.2.1": version: 1.2.1 resolution: "source-map-js@npm:1.2.1" checksum: 4eb0cd997cdf228bc253bcaff9340afeb706176e64868ecd20efbe6efea931465f43955612346d6b7318789e5265bdc419bc7669c1cebe3db0eb255f57efa76b languageName: node linkType: hard -"source-map-support@npm:^0.5.6": +"source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: - buffer-from: "npm:^1.0.0" - source-map: "npm:^0.6.0" + buffer-from: ^1.0.0 + source-map: ^0.6.0 checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 languageName: node linkType: hard @@ -10135,17 +8633,10 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": +"source-map@npm:^0.6.0, source-map@npm:~0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" - checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 - languageName: node - linkType: hard - -"source-map@npm:^0.7.3": - version: 0.7.4 - resolution: "source-map@npm:0.7.4" - checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 + checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 languageName: node linkType: hard @@ -10156,13 +8647,6 @@ __metadata: languageName: node linkType: hard -"sprintf-js@npm:~1.0.2": - version: 1.0.3 - resolution: "sprintf-js@npm:1.0.3" - checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 - languageName: node - linkType: hard - "ssri@npm:^10.0.0": version: 10.0.6 resolution: "ssri@npm:10.0.6" @@ -10172,12 +8656,26 @@ __metadata: languageName: node linkType: hard -"stack-utils@npm:^2.0.3": - version: 2.0.6 - resolution: "stack-utils@npm:2.0.6" +"stackback@npm:0.0.2": + version: 0.0.2 + resolution: "stackback@npm:0.0.2" + checksum: 2d4dc4e64e2db796de4a3c856d5943daccdfa3dd092e452a1ce059c81e9a9c29e0b9badba91b43ef0d5ff5c04ee62feb3bcc559a804e16faf447bac2d883aa99 + languageName: node + linkType: hard + +"std-env@npm:^3.7.0": + version: 3.7.0 + resolution: "std-env@npm:3.7.0" + checksum: 4f489d13ff2ab838c9acd4ed6b786b51aa52ecacdfeaefe9275fcb220ff2ac80c6e95674723508fd29850a694569563a8caaaea738eb82ca16429b3a0b50e510 + languageName: node + linkType: hard + +"stop-iteration-iterator@npm:^1.0.0": + version: 1.0.0 + resolution: "stop-iteration-iterator@npm:1.0.0" dependencies: - escape-string-regexp: "npm:^2.0.0" - checksum: 052bf4d25bbf5f78e06c1d5e67de2e088b06871fa04107ca8d3f0e9d9263326e2942c8bedee3545795fc77d787d443a538345eef74db2f8e35db3558c6f91ff7 + internal-slot: ^1.0.4 + checksum: d04173690b2efa40e24ab70e5e51a3ff31d56d699550cfad084104ab3381390daccb36652b25755e420245f3b0737de66c1879eaa2a8d4fc0a78f9bf892fcb42 languageName: node linkType: hard @@ -10198,17 +8696,22 @@ __metadata: languageName: node linkType: hard -"string-length@npm:^4.0.1": - version: 4.0.2 - resolution: "string-length@npm:4.0.2" +"streamx@npm:^2.15.0, streamx@npm:^2.20.0": + version: 2.20.1 + resolution: "streamx@npm:2.20.1" dependencies: - char-regex: "npm:^1.0.2" - strip-ansi: "npm:^6.0.0" - checksum: ce85533ef5113fcb7e522bcf9e62cb33871aa99b3729cec5595f4447f660b0cefd542ca6df4150c97a677d58b0cb727a3fe09ac1de94071d05526c73579bf505 + bare-events: ^2.2.0 + fast-fifo: ^1.3.2 + queue-tick: ^1.0.1 + text-decoder: ^1.1.0 + dependenciesMeta: + bare-events: + optional: true + checksum: 48605ddd3abdd86d2e3ee945ec7c9317f36abb5303347a8fff6e4c7926a72c33ec7ac86b50734ccd1cf65602b6a38e247966e8199b24e5a7485d9cec8f5327bd languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -10321,20 +8824,6 @@ __metadata: languageName: node linkType: hard -"strip-bom@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-bom@npm:4.0.0" - checksum: 9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 - languageName: node - linkType: hard - -"strip-final-newline@npm:^2.0.0": - version: 2.0.0 - resolution: "strip-final-newline@npm:2.0.0" - checksum: 69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 - languageName: node - linkType: hard - "strip-indent@npm:^3.0.0": version: 3.0.0 resolution: "strip-indent@npm:3.0.0" @@ -10397,7 +8886,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": +"supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" dependencies: @@ -10410,21 +8899,11 @@ __metadata: version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: - has-flag: "npm:^4.0.0" + has-flag: ^4.0.0 checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 languageName: node linkType: hard -"supports-hyperlinks@npm:^2.0.0": - version: 2.3.0 - resolution: "supports-hyperlinks@npm:2.3.0" - dependencies: - has-flag: "npm:^4.0.0" - supports-color: "npm:^7.0.0" - checksum: 9ee0de3c8ce919d453511b2b1588a8205bd429d98af94a01df87411391010fe22ca463f268c84b2ce2abad019dfff8452aa02806eeb5c905a8d7ad5c4f4c52b8 - languageName: node - linkType: hard - "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -10449,6 +8928,58 @@ __metadata: languageName: node linkType: hard +"tapable@npm:^2.1.1, tapable@npm:^2.2.0": + version: 2.2.1 + resolution: "tapable@npm:2.2.1" + checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 + languageName: node + linkType: hard + +"tar-fs@npm:3.0.5": + version: 3.0.5 + resolution: "tar-fs@npm:3.0.5" + dependencies: + bare-fs: ^2.1.1 + bare-path: ^2.1.0 + pump: ^3.0.0 + tar-stream: ^3.1.5 + dependenciesMeta: + bare-fs: + optional: true + bare-path: + optional: true + checksum: e31c7e3e525fec0afecdec1cac58071809e396187725f2eba442f08a4c5649c8cd6b7ce25982f9a91bb0f055628df47c08177dd2ea4f5dafd3c22f42f8da8f00 + languageName: node + linkType: hard + +"tar-fs@npm:^3.0.6": + version: 3.0.6 + resolution: "tar-fs@npm:3.0.6" + dependencies: + bare-fs: ^2.1.1 + bare-path: ^2.1.0 + pump: ^3.0.0 + tar-stream: ^3.1.5 + dependenciesMeta: + bare-fs: + optional: true + bare-path: + optional: true + checksum: b4fa09c70f75caf05bf5cf87369cd2862f1ac5fb75c4ddf9d25d55999f7736a94b58ad679d384196cba837c5f5ff14086e060fafccef5474a16e2d3058ffa488 + languageName: node + linkType: hard + +"tar-stream@npm:^3.1.5": + version: 3.1.7 + resolution: "tar-stream@npm:3.1.7" + dependencies: + b4a: ^1.6.4 + fast-fifo: ^1.2.0 + streamx: ^2.15.0 + checksum: 6393a6c19082b17b8dcc8e7fd349352bb29b4b8bfe1075912b91b01743ba6bb4298f5ff0b499a3bbaf82121830e96a1a59d4f21a43c0df339e54b01789cb8cc6 + languageName: node + linkType: hard + "tar@npm:^6.1.11, tar@npm:^6.2.1": version: 6.2.1 resolution: "tar@npm:6.2.1" @@ -10463,24 +8994,48 @@ __metadata: languageName: node linkType: hard -"terminal-link@npm:^2.0.0": - version: 2.1.1 - resolution: "terminal-link@npm:2.1.1" +"terser-webpack-plugin@npm:^5.3.10": + version: 5.3.10 + resolution: "terser-webpack-plugin@npm:5.3.10" + dependencies: + "@jridgewell/trace-mapping": ^0.3.20 + jest-worker: ^27.4.5 + schema-utils: ^3.1.1 + serialize-javascript: ^6.0.1 + terser: ^5.26.0 + peerDependencies: + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + checksum: bd6e7596cf815f3353e2a53e79cbdec959a1b0276f5e5d4e63e9d7c3c5bb5306df567729da287d1c7b39d79093e56863c569c42c6c24cc34c76aa313bd2cbcea + languageName: node + linkType: hard + +"terser@npm:^5.26.0": + version: 5.34.1 + resolution: "terser@npm:5.34.1" dependencies: - ansi-escapes: "npm:^4.2.1" - supports-hyperlinks: "npm:^2.0.0" - checksum: ce3d2cd3a438c4a9453947aa664581519173ea40e77e2534d08c088ee6dda449eabdbe0a76d2a516b8b73c33262fedd10d5270ccf7576ae316e3db170ce6562f + "@jridgewell/source-map": ^0.3.3 + acorn: ^8.8.2 + commander: ^2.20.0 + source-map-support: ~0.5.20 + bin: + terser: bin/terser + checksum: 19a6710e17ff3f20d3b0661090640a572ce5ff6f2e95c731bb5a9eb1dcc1fe563cd0f1e4a22cde89b2717667336252bc2adb8894bdfbec6d1996b3e70b44f365 languageName: node linkType: hard -"test-exclude@npm:^6.0.0": - version: 6.0.0 - resolution: "test-exclude@npm:6.0.0" +"text-decoder@npm:^1.1.0": + version: 1.2.0 + resolution: "text-decoder@npm:1.2.0" dependencies: - "@istanbuljs/schema": "npm:^0.1.2" - glob: "npm:^7.1.4" - minimatch: "npm:^3.0.4" - checksum: 3b34a3d77165a2cb82b34014b3aba93b1c4637a5011807557dc2f3da826c59975a5ccad765721c4648b39817e3472789f9b0fa98fc854c5c1c7a1e632aacdc28 + b4a: ^1.6.4 + checksum: 9f4c23900b42153af0e4a902577eba37cb70cd1d5b187732b81c74c705d3206952cf1dcecf97537794374f55aac6c547ac3860f1facc9560007ca9a06b0e309d languageName: node linkType: hard @@ -10498,14 +9053,7 @@ __metadata: languageName: node linkType: hard -"throat@npm:^6.0.1": - version: 6.0.2 - resolution: "throat@npm:6.0.2" - checksum: 463093768d4884772020bb18b0f33d3fec8a2b4173f7da3958dfbe88ff0f1e686ffadf0f87333bf6f6db7306b1450efc7855df69c78bf0bfa61f6d84a3361fe8 - languageName: node - linkType: hard - -"through@npm:>=2.2.7 <3": +"through@npm:>=2.2.7 <3, through@npm:^2.3.8": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd @@ -10519,10 +9067,66 @@ __metadata: languageName: node linkType: hard -"tmpl@npm:1.0.5": - version: 1.0.5 - resolution: "tmpl@npm:1.0.5" - checksum: cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 +"tinybench@npm:^2.9.0": + version: 2.9.0 + resolution: "tinybench@npm:2.9.0" + checksum: 1ab00d7dfe0d1f127cbf00822bacd9024f7a50a3ecd1f354a8168e0b7d2b53a639a24414e707c27879d1adc0f5153141d51d76ebd7b4d37fe245e742e5d91fe8 + languageName: node + linkType: hard + +"tinyexec@npm:^0.3.0": + version: 0.3.0 + resolution: "tinyexec@npm:0.3.0" + checksum: e55473d249b8fc94bc5b1461d8e368dfe0ba23dcfca4f9069fe25418b17772e50110a1d33cd7ac8ff26456e5b609e0528cce7660e35246fad9b00bd094f3f444 + languageName: node + linkType: hard + +"tinyglobby@npm:^0.2.7": + version: 0.2.9 + resolution: "tinyglobby@npm:0.2.9" + dependencies: + fdir: ^6.4.0 + picomatch: ^4.0.2 + checksum: 6fa652880c963324dbb66ee39ae9e8d809bec8d9ac4f100ee420d31df12b3d1c4bb438684ac8ade040a6916131511495db2cf3259bb067cd0af27ba1552d5efc + languageName: node + linkType: hard + +"tinypool@npm:^1.0.0": + version: 1.0.1 + resolution: "tinypool@npm:1.0.1" + checksum: 5cd6b8cbccd9b88d461f400c9599e69f66563ddf75a2b8ab6b48250481f1b254d180a68ee735f379fa6eb88f11c3b1814735bb1f3306b1a860bf6d8f08074d6b + languageName: node + linkType: hard + +"tinyrainbow@npm:^1.2.0": + version: 1.2.0 + resolution: "tinyrainbow@npm:1.2.0" + checksum: d1e2cb5400032c0092be00e4a3da5450bea8b4fad58bfb5d3c58ca37ff5c5e252f7fcfb9af247914854af79c46014add9d1042fe044358c305a129ed55c8be35 + languageName: node + linkType: hard + +"tinyspy@npm:^3.0.0": + version: 3.0.2 + resolution: "tinyspy@npm:3.0.2" + checksum: 5db671b2ff5cd309de650c8c4761ca945459d7204afb1776db9a04fb4efa28a75f08517a8620c01ee32a577748802231ad92f7d5b194dc003ee7f987a2a06337 + languageName: node + linkType: hard + +"tldts-core@npm:^6.1.50": + version: 6.1.50 + resolution: "tldts-core@npm:6.1.50" + checksum: 12c3fee026205fc4117fec82b6054fc29c7fe3d94682467b774c52d80a4b7dba384500fc10333d12cb08b124e0d70912e2c00a1cd1c5a8da2e88aa8427e6266a + languageName: node + linkType: hard + +"tldts@npm:^6.1.32": + version: 6.1.50 + resolution: "tldts@npm:6.1.50" + dependencies: + tldts-core: ^6.1.50 + bin: + tldts: bin/cli.js + checksum: 198d876a0894ab9a5d617a315b5ac7726b30b12d3a300d6714701a47dd34d5311ec409f24692bfb99ac9a80cc6d47e73ae2d2404199492f5deade0fbc91fc7cc languageName: node linkType: hard @@ -10558,24 +9162,21 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.0.0": - version: 4.1.4 - resolution: "tough-cookie@npm:4.1.4" +"tough-cookie@npm:^5.0.0": + version: 5.0.0 + resolution: "tough-cookie@npm:5.0.0" dependencies: - psl: "npm:^1.1.33" - punycode: "npm:^2.1.1" - universalify: "npm:^0.2.0" - url-parse: "npm:^1.5.3" - checksum: 5815059f014c31179a303c673f753f7899a6fce94ac93712c88ea5f3c26e0c042b5f0c7a599a00f8e0feeca4615dba75c3dffc54f3c1a489978aa8205e09307c + tldts: ^6.1.32 + checksum: 774f6c939c96f74b5847361f7e11e0d69383681d21a35a2d37a20956638e614ec521782d2d20bcb32b58638ff337bba87cc72fb72c987bd02ea0fdfc93994cdb languageName: node linkType: hard -"tr46@npm:^2.1.0": - version: 2.1.0 - resolution: "tr46@npm:2.1.0" +"tr46@npm:^5.0.0": + version: 5.0.0 + resolution: "tr46@npm:5.0.0" dependencies: - punycode: "npm:^2.1.1" - checksum: ffe6049b9dca3ae329b059aada7f515b0f0064c611b39b51ff6b53897e954650f6f63d9319c6c008d36ead477c7b55e5f64c9dc60588ddc91ff720d64eb710b3 + punycode: ^2.3.1 + checksum: 8d8b021f8e17675ebf9e672c224b6b6cfdb0d5b92141349e9665c14a2501c54a298d11264bbb0b17b447581e1e83d4fc3c038c929f3d210e3964d4be47460288 languageName: node linkType: hard @@ -10595,77 +9196,6 @@ __metadata: languageName: node linkType: hard -"ts-jest@npm:^27.1.5": - version: 27.1.5 - resolution: "ts-jest@npm:27.1.5" - dependencies: - bs-logger: "npm:0.x" - fast-json-stable-stringify: "npm:2.x" - jest-util: "npm:^27.0.0" - json5: "npm:2.x" - lodash.memoize: "npm:4.x" - make-error: "npm:1.x" - semver: "npm:7.x" - yargs-parser: "npm:20.x" - peerDependencies: - "@babel/core": ">=7.0.0-beta.0 <8" - "@types/jest": ^27.0.0 - babel-jest: ">=27.0.0 <28" - jest: ^27.0.0 - typescript: ">=3.8 <5.0" - peerDependenciesMeta: - "@babel/core": - optional: true - "@types/jest": - optional: true - babel-jest: - optional: true - esbuild: - optional: true - bin: - ts-jest: cli.js - checksum: 3ef51c538b82f49b3f529331c1a017871a2f90e7a9a6e69333304755036d121818c6b120e2ce32dd161ff8bb2487efec0c790753ecd39b46a9ed1ce0d241464c - languageName: node - linkType: hard - -"ts-node@npm:^10.9.1": - version: 10.9.2 - resolution: "ts-node@npm:10.9.2" - dependencies: - "@cspotcode/source-map-support": "npm:^0.8.0" - "@tsconfig/node10": "npm:^1.0.7" - "@tsconfig/node12": "npm:^1.0.7" - "@tsconfig/node14": "npm:^1.0.0" - "@tsconfig/node16": "npm:^1.0.2" - acorn: "npm:^8.4.1" - acorn-walk: "npm:^8.1.1" - arg: "npm:^4.1.0" - create-require: "npm:^1.1.0" - diff: "npm:^4.0.1" - make-error: "npm:^1.1.1" - v8-compile-cache-lib: "npm:^3.0.1" - yn: "npm:3.1.1" - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - bin: - ts-node: dist/bin.js - ts-node-cwd: dist/bin-cwd.js - ts-node-esm: dist/bin-esm.js - ts-node-script: dist/bin-script.js - ts-node-transpile-only: dist/bin-transpile.js - ts-script: dist/bin-script-deprecated.js - checksum: fde256c9073969e234526e2cfead42591b9a2aec5222bac154b0de2fa9e4ceb30efcd717ee8bc785a56f3a119bdd5aa27b333d9dbec94ed254bd26f8944c67ac - languageName: node - linkType: hard - "tsc-alias@npm:^1.8.8": version: 1.8.10 resolution: "tsc-alias@npm:1.8.10" @@ -10696,7 +9226,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.6.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2": +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.6.0, tslib@npm:^2.6.2": version: 2.7.0 resolution: "tslib@npm:2.7.0" checksum: 1606d5c89f88d466889def78653f3aab0f88692e80bb2066d090ca6112ae250ec1cfa9dbfaab0d17b60da15a4186e8ec4d893801c67896b277c17374e36e1d28 @@ -10730,13 +9260,6 @@ __metadata: languageName: node linkType: hard -"type-detect@npm:4.0.8": - version: 4.0.8 - resolution: "type-detect@npm:4.0.8" - checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15 - languageName: node - linkType: hard - "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" @@ -10744,13 +9267,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 - languageName: node - linkType: hard - "typed-array-buffer@npm:^1.0.2": version: 1.0.2 resolution: "typed-array-buffer@npm:1.0.2" @@ -10803,15 +9319,6 @@ __metadata: languageName: node linkType: hard -"typedarray-to-buffer@npm:^3.1.5": - version: 3.1.5 - resolution: "typedarray-to-buffer@npm:3.1.5" - dependencies: - is-typedarray: "npm:^1.0.0" - checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 - languageName: node - linkType: hard - "typescript@npm:^5.1.6": version: 5.6.2 resolution: "typescript@npm:5.6.2" @@ -10844,6 +9351,16 @@ __metadata: languageName: node linkType: hard +"unbzip2-stream@npm:1.4.3, unbzip2-stream@npm:^1.4.3": + version: 1.4.3 + resolution: "unbzip2-stream@npm:1.4.3" + dependencies: + buffer: ^5.2.1 + through: ^2.3.8 + checksum: 0e67c4a91f4fa0fc7b4045f8b914d3498c2fc2e8c39c359977708ec85ac6d6029840e97f508675fdbdf21fcb8d276ca502043406f3682b70f075e69aae626d1d + languageName: node + linkType: hard + "undefsafe@npm:^2.0.5": version: 2.0.5 resolution: "undefsafe@npm:2.0.5" @@ -10858,37 +9375,6 @@ __metadata: languageName: node linkType: hard -"unicode-canonical-property-names-ecmascript@npm:^2.0.0": - version: 2.0.1 - resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.1" - checksum: 3c3dabdb1d22aef4904399f9e810d0b71c0b12b3815169d96fac97e56d5642840c6071cf709adcace2252bc6bb80242396c2ec74b37224eb015c5f7aca40bad7 - languageName: node - linkType: hard - -"unicode-match-property-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-match-property-ecmascript@npm:2.0.0" - dependencies: - unicode-canonical-property-names-ecmascript: "npm:^2.0.0" - unicode-property-aliases-ecmascript: "npm:^2.0.0" - checksum: 1f34a7434a23df4885b5890ac36c5b2161a809887000be560f56ad4b11126d433c0c1c39baf1016bdabed4ec54829a6190ee37aa24919aa116dc1a5a8a62965a - languageName: node - linkType: hard - -"unicode-match-property-value-ecmascript@npm:^2.1.0": - version: 2.2.0 - resolution: "unicode-match-property-value-ecmascript@npm:2.2.0" - checksum: 9e3151e1d0bc6be35c4cef105e317c04090364173e8462005b5cde08a1e7c858b6586486cfebac39dc2c6c8c9ee24afb245de6d527604866edfa454fe2a35fae - languageName: node - linkType: hard - -"unicode-property-aliases-ecmascript@npm:^2.0.0": - version: 2.1.0 - resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" - checksum: 243524431893649b62cc674d877bd64ef292d6071dd2fd01ab4d5ad26efbc104ffcd064f93f8a06b7e4ec54c172bf03f6417921a0d8c3a9994161fe1f88f815b - languageName: node - linkType: hard - "unique-filename@npm:^3.0.0": version: 3.0.0 resolution: "unique-filename@npm:3.0.0" @@ -10907,10 +9393,10 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.2.0": - version: 0.2.0 - resolution: "universalify@npm:0.2.0" - checksum: e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 +"universalify@npm:^2.0.0": + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: ecd8469fe0db28e7de9e5289d32bd1b6ba8f7183db34f3bfc4ca53c49891c2d6aa05f3fb3936a81285a905cc509fb641a0c3fc131ec786167eff41236ae32e60 languageName: node linkType: hard @@ -10937,13 +9423,10 @@ __metadata: languageName: node linkType: hard -"url-parse@npm:^1.5.3": - version: 1.5.10 - resolution: "url-parse@npm:1.5.10" - dependencies: - querystringify: "npm:^2.1.1" - requires-port: "npm:^1.0.0" - checksum: fbdba6b1d83336aca2216bbdc38ba658d9cfb8fc7f665eb8b17852de638ff7d1a162c198a8e4ed66001ddbf6c9888d41e4798912c62b4fd777a31657989f7bdf +"urlpattern-polyfill@npm:10.0.0": + version: 10.0.0 + resolution: "urlpattern-polyfill@npm:10.0.0" + checksum: 61d890f151ea4ecf34a3dcab32c65ad1f3cda857c9d154af198260c6e5b2ad96d024593409baaa6d4428dd1ab206c14799bf37fe011117ac93a6a44913ac5aa4 languageName: node linkType: hard @@ -11026,24 +9509,6 @@ __metadata: languageName: node linkType: hard -"v8-compile-cache-lib@npm:^3.0.1": - version: 3.0.1 - resolution: "v8-compile-cache-lib@npm:3.0.1" - checksum: 78089ad549e21bcdbfca10c08850022b22024cdcc2da9b168bcf5a73a6ed7bf01a9cebb9eac28e03cd23a684d81e0502797e88f3ccd27a32aeab1cfc44c39da0 - languageName: node - linkType: hard - -"v8-to-istanbul@npm:^8.1.0": - version: 8.1.1 - resolution: "v8-to-istanbul@npm:8.1.1" - dependencies: - "@types/istanbul-lib-coverage": "npm:^2.0.1" - convert-source-map: "npm:^1.6.0" - source-map: "npm:^0.7.3" - checksum: 54ce92bec2727879626f623d02c8d193f0c7e919941fa373ec135189a8382265117f5316ea317a1e12a5f9c13d84d8449052a731fe3306fa4beaafbfa4cab229 - languageName: node - linkType: hard - "viem@npm:2.21.1": version: 2.21.1 resolution: "viem@npm:2.21.1" @@ -11066,30 +9531,118 @@ __metadata: languageName: node linkType: hard -"w3c-hr-time@npm:^1.0.2": - version: 1.0.2 - resolution: "w3c-hr-time@npm:1.0.2" +"vite-node@npm:2.1.2": + version: 2.1.2 + resolution: "vite-node@npm:2.1.2" dependencies: - browser-process-hrtime: "npm:^1.0.0" - checksum: ec3c2dacbf8050d917bbf89537a101a08c2e333b4c19155f7d3bedde43529d4339db6b3d049d9610789cb915f9515f8be037e0c54c079e9d4735c50b37ed52b9 + cac: ^6.7.14 + debug: ^4.3.6 + pathe: ^1.1.2 + vite: ^5.0.0 + bin: + vite-node: vite-node.mjs + checksum: 72872c6dac192348e2eb1f1818132f282422281463ade57553de8fbfa25992cb36d6727dfacd6489e83a9b8f0b4d77c9c6c3529db3955cc5d409ddb76d7e4250 languageName: node linkType: hard -"w3c-xmlserializer@npm:^2.0.0": - version: 2.0.0 - resolution: "w3c-xmlserializer@npm:2.0.0" +"vite@npm:^5.0.0": + version: 5.4.8 + resolution: "vite@npm:5.4.8" dependencies: - xml-name-validator: "npm:^3.0.0" - checksum: ae25c51cf71f1fb2516df1ab33a481f83461a117565b95e3d0927432522323f93b1b2846cbb60196d337970c421adb604fc2d0d180c6a47a839da01db5b9973b + esbuild: ^0.21.3 + fsevents: ~2.3.3 + postcss: ^8.4.43 + rollup: ^4.20.0 + peerDependencies: + "@types/node": ^18.0.0 || >=20.0.0 + less: "*" + lightningcss: ^1.21.0 + sass: "*" + sass-embedded: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: b5686ff76a60d53092dc13a5c1e5627165226b8e3da7736931adf87bbe58d383bca386383cea134750108c2d42750c916db3f2314ac90a9477d693950145f140 languageName: node linkType: hard -"walker@npm:^1.0.7": - version: 1.0.8 - resolution: "walker@npm:1.0.8" +"vitest@npm:^2.1.2": + version: 2.1.2 + resolution: "vitest@npm:2.1.2" + dependencies: + "@vitest/expect": 2.1.2 + "@vitest/mocker": 2.1.2 + "@vitest/pretty-format": ^2.1.2 + "@vitest/runner": 2.1.2 + "@vitest/snapshot": 2.1.2 + "@vitest/spy": 2.1.2 + "@vitest/utils": 2.1.2 + chai: ^5.1.1 + debug: ^4.3.6 + magic-string: ^0.30.11 + pathe: ^1.1.2 + std-env: ^3.7.0 + tinybench: ^2.9.0 + tinyexec: ^0.3.0 + tinypool: ^1.0.0 + tinyrainbow: ^1.2.0 + vite: ^5.0.0 + vite-node: 2.1.2 + why-is-node-running: ^2.3.0 + peerDependencies: + "@edge-runtime/vm": "*" + "@types/node": ^18.0.0 || >=20.0.0 + "@vitest/browser": 2.1.2 + "@vitest/ui": 2.1.2 + 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 + bin: + vitest: vitest.mjs + checksum: 3e6461649b5d1fdeca4b646ccb030af92a3a02f43f37fd237bedfc80299f1fc1101527cfffaae24febdb37cf078a5afb923f390c7d304ef6422e4fbe8b5a0d90 + languageName: node + linkType: hard + +"w3c-xmlserializer@npm:^5.0.0": + version: 5.0.0 + resolution: "w3c-xmlserializer@npm:5.0.0" dependencies: - makeerror: "npm:1.0.12" - checksum: ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c + xml-name-validator: ^5.0.0 + checksum: 593acc1fdab3f3207ec39d851e6df0f3fa41a36b5809b0ace364c7a6d92e351938c53424a7618ce8e0fbaffee8be2e8e070a5734d05ee54666a8bdf1a376cc40 languageName: node linkType: hard @@ -11103,6 +9656,16 @@ __metadata: languageName: node linkType: hard +"watchpack@npm:^2.4.1": + version: 2.4.2 + resolution: "watchpack@npm:2.4.2" + dependencies: + glob-to-regexp: ^0.4.1 + graceful-fs: ^4.1.2 + checksum: 92d9d52ce3d16fd83ed6994d1dd66a4d146998882f4c362d37adfea9ab77748a5b4d1e0c65fa104797928b2d40f635efa8f9b925a6265428a69f1e1852ca3441 + languageName: node + linkType: hard + "webauthn-p256@npm:0.0.5": version: 0.0.5 resolution: "webauthn-p256@npm:0.0.5" @@ -11113,19 +9676,6 @@ __metadata: languageName: node linkType: hard -"webcrypto-core@npm:^1.8.0": - version: 1.8.0 - resolution: "webcrypto-core@npm:1.8.0" - dependencies: - "@peculiar/asn1-schema": "npm:^2.3.8" - "@peculiar/json-schema": "npm:^1.1.12" - asn1js: "npm:^3.0.1" - pvtsutils: "npm:^1.3.5" - tslib: "npm:^2.6.2" - checksum: 4f128f5283b258eda34844ee804b7d4f102b151a7cb3ae5e722309ea7d37db704184c726afb67bf53cc9eb41279379b24626270b6f4ff08ec5be6b420ff70f18 - languageName: node - linkType: hard - "webidl-conversions@npm:^3.0.0": version: 3.0.1 resolution: "webidl-conversions@npm:3.0.1" @@ -11133,33 +9683,79 @@ __metadata: languageName: node linkType: hard -"webidl-conversions@npm:^5.0.0": - version: 5.0.0 - resolution: "webidl-conversions@npm:5.0.0" - checksum: ccf1ec2ca7c0b5671e5440ace4a66806ae09c49016ab821481bec0c05b1b82695082dc0a27d1fe9d804d475a408ba0c691e6803fd21be608e710955d4589cd69 +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: f05588567a2a76428515333eff87200fae6c83c3948a7482ebb109562971e77ef6dc49749afa58abb993391227c5697b3ecca52018793e0cb4620a48f10bd21b + languageName: node + linkType: hard + +"webpack-sources@npm:^3.2.3": + version: 3.2.3 + resolution: "webpack-sources@npm:3.2.3" + checksum: 989e401b9fe3536529e2a99dac8c1bdc50e3a0a2c8669cbafad31271eadd994bc9405f88a3039cd2e29db5e6d9d0926ceb7a1a4e7409ece021fe79c37d9c4607 + languageName: node + linkType: hard + +"webpack@npm:^5.95.0": + version: 5.95.0 + resolution: "webpack@npm:5.95.0" + dependencies: + "@types/estree": ^1.0.5 + "@webassemblyjs/ast": ^1.12.1 + "@webassemblyjs/wasm-edit": ^1.12.1 + "@webassemblyjs/wasm-parser": ^1.12.1 + acorn: ^8.7.1 + acorn-import-attributes: ^1.9.5 + browserslist: ^4.21.10 + chrome-trace-event: ^1.0.2 + enhanced-resolve: ^5.17.1 + es-module-lexer: ^1.2.1 + eslint-scope: 5.1.1 + events: ^3.2.0 + glob-to-regexp: ^0.4.1 + graceful-fs: ^4.2.11 + json-parse-even-better-errors: ^2.3.1 + loader-runner: ^4.2.0 + mime-types: ^2.1.27 + neo-async: ^2.6.2 + schema-utils: ^3.2.0 + tapable: ^2.1.1 + terser-webpack-plugin: ^5.3.10 + watchpack: ^2.4.1 + webpack-sources: ^3.2.3 + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 0c3dfe288de4d62f8f3dc25478a618894883cab739121330763b7847e43304630ea2815ae2351a5f8ff6ab7c9642caf530d503d89bda261fe2cd220e524dd5d1 languageName: node linkType: hard -"webidl-conversions@npm:^6.1.0": - version: 6.1.0 - resolution: "webidl-conversions@npm:6.1.0" - checksum: 1f526507aa491f972a0c1409d07f8444e1d28778dfa269a9971f2e157182f3d496dc33296e4ed45b157fdb3bf535bb90c90bf10c50dcf1dd6caacb2a34cc84fb +"whatwg-encoding@npm:^3.1.1": + version: 3.1.1 + resolution: "whatwg-encoding@npm:3.1.1" + dependencies: + iconv-lite: 0.6.3 + checksum: f75a61422421d991e4aec775645705beaf99a16a88294d68404866f65e92441698a4f5b9fa11dd609017b132d7b286c3c1534e2de5b3e800333856325b549e3c languageName: node linkType: hard -"whatwg-encoding@npm:^1.0.5": - version: 1.0.5 - resolution: "whatwg-encoding@npm:1.0.5" - dependencies: - iconv-lite: "npm:0.4.24" - checksum: 5be4efe111dce29ddee3448d3915477fcc3b28f991d9cf1300b4e50d6d189010d47bca2f51140a844cf9b726e8f066f4aee72a04d687bfe4f2ee2767b2f5b1e6 +"whatwg-mimetype@npm:^4.0.0": + version: 4.0.0 + resolution: "whatwg-mimetype@npm:4.0.0" + checksum: f97edd4b4ee7e46a379f3fb0e745de29fe8b839307cc774300fd49059fcdd560d38cb8fe21eae5575b8f39b022f23477cc66e40b0355c2851ce84760339cef30 languageName: node linkType: hard -"whatwg-mimetype@npm:^2.3.0": - version: 2.3.0 - resolution: "whatwg-mimetype@npm:2.3.0" - checksum: 23eb885940bcbcca4ff841c40a78e9cbb893ec42743993a42bf7aed16085b048b44b06f3402018931687153550f9a32d259dfa524e4f03577ab898b6965e5383 +"whatwg-url@npm:^14.0.0": + version: 14.0.0 + resolution: "whatwg-url@npm:14.0.0" + dependencies: + tr46: ^5.0.0 + webidl-conversions: ^7.0.0 + checksum: 4b5887e50f786583bead70916413e67a381d2126899b9eb5c67ce664bba1e7ec07cdff791404581ce73c6190d83c359c9ca1d50711631217905db3877dec075c languageName: node linkType: hard @@ -11173,17 +9769,6 @@ __metadata: languageName: node linkType: hard -"whatwg-url@npm:^8.0.0, whatwg-url@npm:^8.5.0": - version: 8.7.0 - resolution: "whatwg-url@npm:8.7.0" - dependencies: - lodash: "npm:^4.7.0" - tr46: "npm:^2.1.0" - webidl-conversions: "npm:^6.1.0" - checksum: a87abcc6cefcece5311eb642858c8fdb234e51ec74196bfacf8def2edae1bfbffdf6acb251646ed6301f8cee44262642d8769c707256125a91387e33f405dd1e - languageName: node - linkType: hard - "which-boxed-primitive@npm:^1.0.2": version: 1.0.2 resolution: "which-boxed-primitive@npm:1.0.2" @@ -11217,7 +9802,7 @@ __metadata: languageName: node linkType: hard -"which-collection@npm:^1.0.2": +"which-collection@npm:^1.0.1, which-collection@npm:^1.0.2": version: 1.0.2 resolution: "which-collection@npm:1.0.2" dependencies: @@ -11229,7 +9814,7 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.2": +"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.2": version: 1.1.15 resolution: "which-typed-array@npm:1.1.15" dependencies: @@ -11264,6 +9849,18 @@ __metadata: languageName: node linkType: hard +"why-is-node-running@npm:^2.3.0": + version: 2.3.0 + resolution: "why-is-node-running@npm:2.3.0" + dependencies: + siginfo: ^2.0.0 + stackback: 0.0.2 + bin: + why-is-node-running: cli.js + checksum: 58ebbf406e243ace97083027f0df7ff4c2108baf2595bb29317718ef207cc7a8104e41b711ff65d6fa354f25daa8756b67f2f04931a4fd6ba9d13ae8197496fb + languageName: node + linkType: hard + "word-wrap@npm:^1.2.5": version: 1.2.5 resolution: "word-wrap@npm:1.2.5" @@ -11300,15 +9897,18 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^3.0.0": - version: 3.0.3 - resolution: "write-file-atomic@npm:3.0.3" - dependencies: - imurmurhash: "npm:^0.1.4" - is-typedarray: "npm:^1.0.0" - signal-exit: "npm:^3.0.2" - typedarray-to-buffer: "npm:^3.1.5" - checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 +"ws@npm:8.16.0": + version: 8.16.0 + resolution: "ws@npm:8.16.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: feb3eecd2bae82fa8a8beef800290ce437d8b8063bdc69712725f21aef77c49cb2ff45c6e5e7fce622248f9c7abaee506bae0a9064067ffd6935460c7357321b languageName: node linkType: hard @@ -11327,7 +9927,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^7.4.6, ws@npm:^7.5.10": +"ws@npm:^7.5.10": version: 7.5.10 resolution: "ws@npm:7.5.10" peerDependencies: @@ -11342,7 +9942,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.5.0": +"ws@npm:^8.18.0, ws@npm:^8.5.0": version: 8.18.0 resolution: "ws@npm:8.18.0" peerDependencies: @@ -11357,10 +9957,10 @@ __metadata: languageName: node linkType: hard -"xml-name-validator@npm:^3.0.0": - version: 3.0.0 - resolution: "xml-name-validator@npm:3.0.0" - checksum: b3ac459afed783c285bb98e4960bd1f3ba12754fd4f2320efa0f9181ca28928c53cc75ca660d15d205e81f92304419afe94c531c7cfb3e0649aa6d140d53ecb0 +"xml-name-validator@npm:^5.0.0": + version: 5.0.0 + resolution: "xml-name-validator@npm:5.0.0" + checksum: 86effcc7026f437701252fcc308b877b4bc045989049cfc79b0cc112cb365cf7b009f4041fab9fb7cd1795498722c3e9fe9651afc66dfa794c16628a639a4c45 languageName: node linkType: hard @@ -11406,32 +10006,35 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:20.x, yargs-parser@npm:^20.2.2": - version: 20.2.9 - resolution: "yargs-parser@npm:20.2.9" - checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c languageName: node linkType: hard -"yargs@npm:^16.2.0": - version: 16.2.0 - resolution: "yargs@npm:16.2.0" +"yargs@npm:17.7.2, yargs@npm:^17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" dependencies: - cliui: "npm:^7.0.2" - escalade: "npm:^3.1.1" - get-caller-file: "npm:^2.0.5" - require-directory: "npm:^2.1.1" - string-width: "npm:^4.2.0" - y18n: "npm:^5.0.5" - yargs-parser: "npm:^20.2.2" - checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f59 + cliui: ^8.0.1 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.3 + y18n: ^5.0.5 + yargs-parser: ^21.1.1 + checksum: 73b572e863aa4a8cbef323dd911d79d193b772defd5a51aab0aca2d446655216f5002c42c5306033968193bdbf892a7a4c110b0d77954a7fdf563e653967b56a languageName: node linkType: hard -"yn@npm:3.1.1": - version: 3.1.1 - resolution: "yn@npm:3.1.1" - checksum: 2c487b0e149e746ef48cda9f8bad10fc83693cd69d7f9dcd8be4214e985de33a29c9e24f3c0d6bcf2288427040a8947406ab27f7af67ee9456e6b84854f02dd6 +"yauzl@npm:^2.10.0": + version: 2.10.0 + resolution: "yauzl@npm:2.10.0" + dependencies: + buffer-crc32: ~0.2.3 + fd-slicer: ~1.1.0 + checksum: 7f21fe0bbad6e2cb130044a5d1d0d5a0e5bf3d8d4f8c4e6ee12163ce798fee3de7388d22a7a0907f563ac5f9d40f8699a223d3d5c1718da90b0156da6904022b languageName: node linkType: hard @@ -11441,3 +10044,10 @@ __metadata: checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 languageName: node linkType: hard + +"zod@npm:3.22.4": + version: 3.22.4 + resolution: "zod@npm:3.22.4" + checksum: 80bfd7f8039b24fddeb0718a2ec7c02aa9856e4838d6aa4864335a047b6b37a3273b191ef335bf0b2002e5c514ef261ffcda5a589fb084a48c336ffc4cdbab7f + languageName: node + linkType: hard From d5a9d1816bf7b04f8cde8980b63480e3c216f0aa Mon Sep 17 00:00:00 2001 From: Spencer Stock <46308524+spencerstock@users.noreply.github.com> Date: Tue, 22 Oct 2024 06:50:29 -1000 Subject: [PATCH 22/28] make params expand when needed (#1430) --- .../components/RpcMethods/RpcMethodCard.tsx | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/examples/testapp/src/components/RpcMethods/RpcMethodCard.tsx b/examples/testapp/src/components/RpcMethods/RpcMethodCard.tsx index 2d59b154a8..0e88a0a3a5 100644 --- a/examples/testapp/src/components/RpcMethods/RpcMethodCard.tsx +++ b/examples/testapp/src/components/RpcMethods/RpcMethodCard.tsx @@ -13,10 +13,11 @@ import { FormErrorMessage, Heading, HStack, - Input, + Textarea, InputGroup, InputLeftAddon, VStack, + Text, } from '@chakra-ui/react'; import React, { useCallback } from 'react'; import { useForm } from 'react-hook-form'; @@ -125,23 +126,40 @@ export function RpcMethodCard({ format, method, params, shortcuts }) { - + {params.map((param) => { const err = errors[param.key]; return ( - - {param.key} - + + {param.key} + +