diff --git a/demos/dev-demo/.eslintrc b/demos/dev-demo/.eslintrc index 7c99408..753bea2 100644 --- a/demos/dev-demo/.eslintrc +++ b/demos/dev-demo/.eslintrc @@ -1,7 +1,18 @@ { // "extends": [], "parser": "@typescript-eslint/parser", + "env": { + "node": true + }, "rules": { "require-extensions/require-extensions": "off" - } + }, + "overrides": [ + { + "files": "./scripts/*.cjs", + "rules": { + "@typescript-eslint/no-var-requires": "off" + } + } + ] } diff --git a/demos/dev-demo/package.json b/demos/dev-demo/package.json index 105a183..4e8fb63 100644 --- a/demos/dev-demo/package.json +++ b/demos/dev-demo/package.json @@ -6,24 +6,29 @@ "scripts": { "dev": "vite", "build": "tsc && vite build", - "preview": "vite preview" + "preview": "vite preview", + "ganache": "node scripts/ganache.cjs" }, "dependencies": { "@emotion/react": "^11.10.4", "@emotion/styled": "^11.10.4", + "@metamask/eth-sig-util": "^6.0.0", "@mui/material": "^5.10.10", + "@tronweb3/abstract-adapter-evm": "^1.0.0", "@tronweb3/tronwallet-abstract-adapter": "^1.1.0", "@tronweb3/tronwallet-adapter-bitkeep": "^1.0.0", "@tronweb3/tronwallet-adapter-ledger": "^1.1.2", + "@tronweb3/tronwallet-adapter-metamask": "^1.0.0", "@tronweb3/tronwallet-adapter-okxwallet": "^1.0.0", "@tronweb3/tronwallet-adapter-react-hooks": "^1.0.0", "@tronweb3/tronwallet-adapter-react-ui": "^1.1.0", "@tronweb3/tronwallet-adapter-tokenpocket": "^1.0.0", "@tronweb3/tronwallet-adapters": "^1.1.2", "events": "^3.3.0", + "ganache": "^7.9.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "tronweb": "5.1", + "tronweb": "~5.1.0", "vconsole": "^3.15.0" }, "devDependencies": { @@ -31,6 +36,7 @@ "@types/react-dom": "^18.0.8", "@vitejs/plugin-legacy": "^2.3.0", "@vitejs/plugin-react": "^2.2.0", + "dotenv": "^16.3.1", "typescript": "^4.6.4", "vite": "3.2.3", "webpack-cli": "^5.0.2" diff --git a/demos/dev-demo/scripts/ganache.cjs b/demos/dev-demo/scripts/ganache.cjs new file mode 100644 index 0000000..11e650a --- /dev/null +++ b/demos/dev-demo/scripts/ganache.cjs @@ -0,0 +1,37 @@ +const ganache = require('ganache'); + +require('dotenv').config({}); + +const options = { + fork: process.env.INFURA_PROJECT_ID + ? { url: `https://mainnet.infura.io/v3/${process.env.INFURA_PROJECT_ID}` } + : 'mainnet', + chain: { + // hardfork: 'berlin', + }, +}; +options.wallet = { + mnemonic: + 'shove comic where catch muscle impulse that fork plunge robust noise subject', +}; +const server = ganache.server(options); +const PORT = 8545; + +server.listen(PORT, async (err) => { + if (err) throw err; + + console.log(`ganache listening on port ${PORT}...`); + console.log('accounts created'); + const provider = server.provider; + + if (process.env.MNEMONIC_PHRASE) { + const accounts = await provider.request({ + method: 'eth_accounts', + params: [], + }); + console.log(accounts); + } else { + console.log(`mnemonic used: ${provider.getOptions().wallet?.mnemonic}`); + console.log(provider.getInitialAccounts()); + } +}); diff --git a/demos/dev-demo/src/App.tsx b/demos/dev-demo/src/App.tsx index 25c8c0b..bfc1991 100644 --- a/demos/dev-demo/src/App.tsx +++ b/demos/dev-demo/src/App.tsx @@ -8,6 +8,7 @@ import { ReactHooksDemo } from './ReactHooksDemo.js'; import { TokenPocketAdapterDemo } from './TokenPocketAdapterDemo.js'; import { BitKeepAdapterDemo } from './BitKeepAdapterDemo.js'; import { OkxWalletAdapterDemo } from './OkxWalletAdapterDemo.js'; +import { MetamaskAdapterDemo } from './Metamask.js'; interface TabPanelProps { children?: React.ReactNode; index: number; @@ -45,6 +46,7 @@ function App() { + @@ -71,6 +73,9 @@ function App() { + + + ); diff --git a/demos/dev-demo/src/BitKeepAdapterDemo.tsx b/demos/dev-demo/src/BitKeepAdapterDemo.tsx index 63acc1e..ed3a5f3 100644 --- a/demos/dev-demo/src/BitKeepAdapterDemo.tsx +++ b/demos/dev-demo/src/BitKeepAdapterDemo.tsx @@ -136,11 +136,11 @@ export function BitKeepAdapterDemo() { -      + -      + @@ -149,7 +149,7 @@ export function BitKeepAdapterDemo() { -      + diff --git a/demos/dev-demo/src/LedgerAdapterDemo.tsx b/demos/dev-demo/src/LedgerAdapterDemo.tsx index 91421b0..1b6280a 100644 --- a/demos/dev-demo/src/LedgerAdapterDemo.tsx +++ b/demos/dev-demo/src/LedgerAdapterDemo.tsx @@ -116,11 +116,11 @@ export function LedgerAdapterDemo() { -      + -      + @@ -129,7 +129,7 @@ export function LedgerAdapterDemo() { -      + diff --git a/demos/dev-demo/src/LedgerDemo/ConnectedSection.tsx b/demos/dev-demo/src/LedgerDemo/ConnectedSection.tsx index 8433eb8..51e0672 100644 --- a/demos/dev-demo/src/LedgerDemo/ConnectedSection.tsx +++ b/demos/dev-demo/src/LedgerDemo/ConnectedSection.tsx @@ -41,11 +41,11 @@ export function ConnectedSection(props: { adapter: LedgerAdapter }) { -      + -      + diff --git a/demos/dev-demo/src/Metamask.tsx b/demos/dev-demo/src/Metamask.tsx new file mode 100644 index 0000000..91217b9 --- /dev/null +++ b/demos/dev-demo/src/Metamask.tsx @@ -0,0 +1,226 @@ +import type { ReactNode } from 'react'; +import { useEffect, useMemo, useState, useCallback } from 'react'; +import { Box, Button, Typography, Alert, TextField } from '@mui/material'; +import { MetaMaskAdapter } from '@tronweb3/tronwallet-adapter-metamask' +import { Detail } from './TronLinkAdapterDemo.js'; +import { recoverPersonalSignature, recoverTypedSignature, SignTypedDataVersion } from '@metamask/eth-sig-util' +function toHex(val: number): `0x${string}` { + return `0x${Number(val).toString(16)}` +} +export function MetamaskAdapterDemo() { + const [isConnected, setIsConnected] = useState(false); + const [account, setAccount] = useState(''); + const [readyState, setReadyState] = useState(''); + const [chainId, setChainId] = useState(''); + const [messageToSign, setMessageToSign] = useState('Hello, Adapter'); + const [signedHash, setSignedHash] = useState(''); + const adapter = useMemo(() => new MetaMaskAdapter(), []); + const [lastSignType, setLastSignType] = useState('') + + useEffect(() => { + setAccount(adapter.address || ''); + setReadyState(adapter.readyState); + + adapter.on('readyStateChanged', () => { + console.log('readyState Changed:', adapter.readyState) + setReadyState(adapter.readyState) + }) + adapter.on('connect', () => { + console.log('connect: ', adapter.address); + setAccount(adapter.address || ''); + + }); + adapter.on('accountsChanged', (data) => { + console.log('accountsChanged: current', data); + setAccount(data[0]); + setIsConnected(!!(data?.[0])) + }); + + adapter.on('chainChanged', (chainId) => { + console.log('chainChanged: ', chainId); + setChainId(chainId); + }); + + adapter.on('disconnect', () => { + console.log('disconnect'); + }); + + return () => { + adapter.removeAllListeners(); + }; + }, [adapter]); + + async function handleConnect() { + await adapter.connect(); + setIsConnected(true) + setAccount(adapter.address || '') + } + + async function handleAddChain() { + await adapter.addChain({ + chainId: toHex(1337), + chainName: 'Localhost', + nativeCurrency: { + name: 'Ethereum Token', + symbol: 'ETH', + decimals: 18, + }, + rpcUrls: ['http://localhost:8545'] + }); + alert('Add chain successfully.') + } + + async function handleSwitchChain() { + console.log('switch chain to: ', toHex(1337)) + try { + await adapter.switchChain(toHex(1337)); + alert('Switch chain successfully.') + } catch(e) { + console.log('switchChain error: ', e); + } + } + + async function handleWatchAsset() { + await adapter.watchAsset({ + type: 'ERC20', + options: { + address: '0x3883f5e181fccaF8410FA61e12b59BAd963fb645', + symbol: 'THETA', + decimals: 18 + } + }); + alert('watch asset successfully.') + } + async function sendTransaction() { + const transaction = { + value: toHex(0.01 * Math.pow(10, 18)), // 0.01 is 0.01ETH + to: '0x18B0FDE2FEA85E960677C2a41b80e7557AdcbAE0', + from: adapter.address, + } + console.log('sendTransaction: ', transaction); + await adapter.sendTransaction(transaction); + alert('send transaction successfully.') + } + + async function signMessage() { + try { + const res = await adapter.signMessage({ message: messageToSign }); + setSignedHash(res) + setLastSignType('personalMessage') + } catch(e) { + console.log('signMessage error', e) + } + } + + async function verifyHash() { + let valid; + if (lastSignType === 'personalMessage') { + const address = recoverPersonalSignature({ + data: messageToSign, + signature: signedHash + }); + valid = address === adapter.address; + } else { + const address = recoverTypedSignature({ + version: SignTypedDataVersion.V4, + data: typedData as any, + signature: signedHash + }); + valid = address === adapter.address; + } + + alert(valid ? 'The signature is valid' : 'The signature is invalid'); + } + + async function signTypedData() { + try { + + const signedHash = await adapter.signTypedData({ typedData: typedData }); + setSignedHash(signedHash) + setLastSignType('typedData') + } catch (e) { + console.error('sign typed data error: ', e); + } + } + return ( + +

MetaMaskAdapter Demo

+ + Your account address: + + {account} + + + Current network you choose: {chainId} + + + + ReadyState: {readyState} + + + + + + + + + + + + setMessageToSign(e.target.value)}> + + + + + + + + + + + Signed Hash: {signedHash} + + + + +
+ ); +} + +const typedData = { + domain: { + chainId: 1, + name: 'Ether Mail', + verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', + version: '1', + }, + primaryType: 'Mail', + types: { + Mail: [ + { name: 'from', type: 'string' }, + { name: 'to', type: 'string' }, + { name: 'contents', type: 'string' }, + ], + }, + message: { + from: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', + to: '0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57', + contents: 'Hello', + }, +}; \ No newline at end of file diff --git a/demos/dev-demo/src/OkxWalletAdapterDemo.tsx b/demos/dev-demo/src/OkxWalletAdapterDemo.tsx index c888c2b..21ace7b 100644 --- a/demos/dev-demo/src/OkxWalletAdapterDemo.tsx +++ b/demos/dev-demo/src/OkxWalletAdapterDemo.tsx @@ -136,11 +136,11 @@ export function OkxWalletAdapterDemo() { -      + -      + @@ -149,7 +149,7 @@ export function OkxWalletAdapterDemo() { -      + diff --git a/demos/dev-demo/src/ReactHooksDemo.tsx b/demos/dev-demo/src/ReactHooksDemo.tsx index f730380..47f833d 100644 --- a/demos/dev-demo/src/ReactHooksDemo.tsx +++ b/demos/dev-demo/src/ReactHooksDemo.tsx @@ -107,7 +107,7 @@ function _ReactHooksDemo() { -      + @@ -116,7 +116,7 @@ function _ReactHooksDemo() { -      + diff --git a/demos/dev-demo/src/TokenPocketAdapterDemo.tsx b/demos/dev-demo/src/TokenPocketAdapterDemo.tsx index f66eee2..415ee6c 100644 --- a/demos/dev-demo/src/TokenPocketAdapterDemo.tsx +++ b/demos/dev-demo/src/TokenPocketAdapterDemo.tsx @@ -135,11 +135,11 @@ export function TokenPocketAdapterDemo() { -      + -      + @@ -148,7 +148,7 @@ export function TokenPocketAdapterDemo() { -      + diff --git a/demos/dev-demo/src/TronLinkAdapterDemo.tsx b/demos/dev-demo/src/TronLinkAdapterDemo.tsx index 668baf2..95d311e 100644 --- a/demos/dev-demo/src/TronLinkAdapterDemo.tsx +++ b/demos/dev-demo/src/TronLinkAdapterDemo.tsx @@ -18,7 +18,7 @@ export function TronLinkAdapterDemo() { const [signMessage, setSignMessage] = useState('Hello, Adapter'); const [signedMessage, setSignedMessage] = useState(''); const adapter = useMemo(() => new TronLinkAdapter({ - openTronLinkAppOnMobile: false, + openTronLinkAppOnMobile: true, openUrlWhenWalletNotFound: false, checkTimeout: 3000 }), []); @@ -41,7 +41,7 @@ export function TronLinkAdapterDemo() { setReadyState(adapter.readyState) }) adapter.on('connect', () => { - console.log('connect: ', adapter.address); + console.log('connect2222: ', adapter.address); setAccount(adapter.address || ''); adapter.network().then((res) => { console.log(res); @@ -136,11 +136,11 @@ export function TronLinkAdapterDemo() { -      + -      + @@ -149,7 +149,7 @@ export function TronLinkAdapterDemo() { -      + diff --git a/demos/dev-demo/src/theme.ts b/demos/dev-demo/src/theme.ts index 72fa069..7d89c40 100644 --- a/demos/dev-demo/src/theme.ts +++ b/demos/dev-demo/src/theme.ts @@ -14,6 +14,15 @@ const theme = createTheme({ main: red.A400, }, }, + components: { + MuiButton: { + styleOverrides: { + root: { + margin: '0 10px' + } + } + } + } }); export default theme; diff --git a/demos/dev-demo/tsconfig.json b/demos/dev-demo/tsconfig.json index 3038fcb..45ae69a 100644 --- a/demos/dev-demo/tsconfig.json +++ b/demos/dev-demo/tsconfig.json @@ -14,7 +14,10 @@ "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "types": [ + "@types/node" + ] }, "include": ["src"], "references": [{ "path": "./tsconfig.node.json" }] diff --git a/package.json b/package.json index 1cf3532..503b45e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "tronwallet-adapter", "description": "wallet adapters for TRON blockchain", - "version": "1.1.8", + "version": "1.1.9", "main": "index.js", "sideEffects": false, "private": true, diff --git a/packages/adapters/abstract-adapter-evm/LICENSE b/packages/adapters/abstract-adapter-evm/LICENSE new file mode 100644 index 0000000..f8c1348 --- /dev/null +++ b/packages/adapters/abstract-adapter-evm/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) +Copyright (c) 2022-Present, tronprotocol + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/adapters/abstract-adapter-evm/README.md b/packages/adapters/abstract-adapter-evm/README.md new file mode 100644 index 0000000..9b7a508 --- /dev/null +++ b/packages/adapters/abstract-adapter-evm/README.md @@ -0,0 +1,225 @@ +# `@tronweb3/tronwallet-abstract-evm-adapter` + +This is the abstract interface definition of Evm Wallet Adapters. All wallet adapters implement abstract interface to provide unified interface. + +## API Reference + +### Adapter + +The `Adapter` class defines the common interface for all adapters of specified wallets. + +#### Constructor + +- `constructor(options)`: adapter constructor method, an optional config is valid. For detailed options type, refer to the specified adapter. +- [MetaMask Adapter](https://github.com/tronprotocol/tronwallet-adapter/blob/main/packages/adapters/metamask/README.md) + +#### Properties + +- `name`: The name of the adapter. +- `url`: The website of the adapter's wallet. +- `icon`: The icon of the adapter's wallet. +- `readyState`: The wallet's state, which includes three value: + - `Loading`: When adapter is checking if the wallet is available or not. + - `NotFound`: The wallet is not detected in current browser. + - `Found`: The wallet is detected in current browser. +- `address`: The address of current account when the adapter is connected. +- `connecting`: Whether the adapter is trying to connect to the wallet. +- `connected`: Whether the adapter is connected to the wallet. + +#### Methods + +- `connect(): Promise`: connect to the wallet. If the wallet is not avaliable, this method will throw an `WalletNotFoundError`. + +- `signMessage(params: { message: string, address?: string }): Promise`: Sign a string, return the signature. If `address` is omitted, the default is `adapter.address`. + + ```typescript + const message = 'Hello Web3!'; + const signature = await adapter.signMessage({ message }); + ``` + +- `signTypedData(params: { typedData: Object, address?: string }): Promise`: Sign a typed data, return the signature. If `address` is omitted, the default is `adapter.address`. + + It follows the [EIP-712](https://eips.ethereum.org/EIPS/eip-712) specification to allow users to sign typed structured data that can be verified on-chain + + ```typescript + const typedData = { + domain: { + chainId: 1, + name: 'Ether Mail', + verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', + version: '1', + }, + primaryType: 'Mail', + types: { + Mail: [ + { name: 'from', type: 'string' }, + { name: 'to', type: 'string' }, + { name: 'contents', type: 'string' }, + ], + }, + message: { + from: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', + to: '0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57', + contents: 'Hello', + }, + }; + const signature = await adapter.signTypedData({ typedData: typedData }); + ``` + +- `sendTransaction(transaction?)`: Sign and send a transaction, return the signature. The parameter is the same as `eth_sendTransaction` JSON-RPC request. + + ```javascript + const transaction = { + from: adapter.address, // The user's active address. + to: 'address', // Required except during contract publications. + value: 1000, // Only required to send ether to the recipient from the initiating external account. + gasLimit: '0x5028', // Customizable by the user during MetaMask confirmation. + maxPriorityFeePerGas: '0x3b9aca00', // Customizable by the user during MetaMask confirmation. + maxFeePerGas: '0x2540be400', // Customizable by the user during MetaMask confirmation. + }; + const signature = await adapter.sendTransaction(transaction); + ``` + +- `addChain(chainInfo: Chain): Promise`: Add the specified chain to wallet using `wallet_addEthereumChain` request. This method is specified by [EIP-3085](https://eips.ethereum.org/EIPS/eip-3085). + + ```typescript + const chainInfo = { + chainId: '0x539', + chainName: 'Localhost', + nativeCurrency: { + name: 'Ethereum Token', + symbol: 'ETH', + decimals: 18, + }, + rpcUrls: ['http://localhost:8545'], + }; + await adapter.addChain(chainInfo); + ``` + +- `switchChain(chainId: string): Promise;`: request wallet to switch chain by `chainId`, the chain ID as a 0x-prefixed hexadecimal string. This method is specified by [EIP-3326](https://ethereum-magicians.org/t/eip-3326-wallet-switchethereumchain). + + ```typescript + await adapter.switchChain('0x539'); + ``` + +- `watchAsset(asset: Asset): Promise`: Requests that the user track the specified ERC-20 token or NFT(s) in the wallet. This method is specified by [EIP-747](https://eips.ethereum.org/EIPS/eip-747). + + ```typescript + const assetInfo = { + type: 'ERC20', + options: { + address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155', + symbol: 'FOO', + decimals: 18, + image: 'https://foo.io/token-image.svg', + }, + }; + await adapter.watchAsset(assetInfo); + ``` + + The parameter is an object containing the following metadata of the token to watch: + + - type - Supports ERC-20, ERC-721, and ERC-1155 tokens. Support for ERC-721 and ERC-1155 tokens is experimental and currently only available on the extension (not on mobile). + - options - An object containing: + - address - The address of the token contract. + - symbol - The symbol of the token, up to 11 characters (optional for ERC-20 tokens). + - decimals - The number of token decimals (optional for ERC-20 tokens). + - image - A URL string of the token logo (optional for ERC-20 tokens). + - tokenId - The unique identifier of the NFT (required for ERC-721 and ERC-1155 tokens). + +#### Events + +`Adapter` extends the `EventEmitter` class in `eventemitter3` package. So you can listen to the events by `adapter.on('connect', function() {})`. + +Events are as follows: + +- `readyStateChanged(state: WalletReadyState)`: Emit when wallet's readyState is changed. The parameter is the state of wallet: + ```typescript + enum WalletReadyState { + /** + * Adapter will start to check if wallet exists after adapter instance is created. + */ + Loading = 'Loading', + /** + * When checking ends and wallet is not found, readyState will be NotFound. + */ + NotFound = 'NotFound', + /** + * When checking ends and wallet is found, readyState will be Found. + */ + Found = 'Found', + } + ``` +- `accountsChanged(address: string, preAddress: string)`: Emit when the user's exposed account address changes. + +```typescript +adapter.on('accountsChanged', (accounts: Array) => { + if (accounts.length > 0) { + // the wallet connected and you can call adapter.signMessage() or adapter.sendTransaction() + } else { + // the wallet is disconnected + } +}); +``` + +- `chainChanged(chainId: number)`: Emit when users change the current selected chain in wallet. The parameter is the new network infomation: + +```typescript +adapter.on('chainChanged', handler: (chainId: string) => void); +``` + +- `connect(address)`: Emit when the wallet is first able to submit RPC requests to a chain. + +```typescript +interface ConnectInfo { + chainId: string; +} + +adapter.on('connect', handler: (connectInfo: ConnectInfo) => void); +``` + +- `disconnect()`: Emit if it becomes unable to submit RPC requests to a chain. In general, this only happens due to network connectivity issues or some unforeseen error. + +```typescript +interface ProviderRpcError extends Error { + message: string; + code: number; + data?: unknown; +} +adapter.on('disconnect', handler: (error: ProviderRpcError) => void); +``` + +The more detailed information for `connect/disconnect/accountsChanged/chainChanged` is specified in [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193#events-1). + +### WalletError + +`WalletError` is a superclass which defines the error when using adapter. +All error types are extended from this class. +Developers can check the error type according to the error instance. + +```typescript +try { + // do something here +} catch (error: WalletError) { + if (error instanceof WalletNotFoundError) { + console.log('Wallet is not found'); + } +} +``` + +All errors are as follows: + +- `WalletNotFoundError`: Occurs when wallet is not installed. +- `WalletDisconnectedError`: Occurs when wallet is disconnected. Used by some wallets which won't connect automatically when call `signMessage()` or `signTransaction()`. +- `WalletConnectionError`: Occurs when try to connect a wallet. + +Following exmaple shows how to get original error info with `WalletError`: + +```js +const adapter = new TronLinkAdapter(); +try { + await adapter.connect(); +} catch (e: any) { + const originalError = e.error; +} +``` diff --git a/packages/adapters/abstract-adapter-evm/jest.config.js b/packages/adapters/abstract-adapter-evm/jest.config.js new file mode 100644 index 0000000..2a76755 --- /dev/null +++ b/packages/adapters/abstract-adapter-evm/jest.config.js @@ -0,0 +1,17 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +export default { + preset: 'ts-jest', + testEnvironment: 'jsdom', + transform: { + '\\.tsx?$': [ + 'ts-jest', + { + useESM: true, + }, + ], + }, + moduleNameMapper: { + '(.+)\\.js': '$1', + }, + extensionsToTreatAsEsm: ['.ts'], +}; diff --git a/packages/adapters/abstract-adapter-evm/package.json b/packages/adapters/abstract-adapter-evm/package.json new file mode 100644 index 0000000..3e17be4 --- /dev/null +++ b/packages/adapters/abstract-adapter-evm/package.json @@ -0,0 +1,48 @@ +{ + "name": "@tronweb3/abstract-adapter-evm", + "version": "1.0.0", + "description": "Abstract interface definition of Evm Wallet Adapters.", + "author": "tronprotocol", + "repository": { + "type": "git", + "url": "https://github.com/tronprotocol/tronwallet-adapter" + }, + "license": "MIT", + "type": "module", + "sideEffects": false, + "engines": { + "node": ">=16", + "pnpm": ">=7" + }, + "main": "./lib/cjs/index.js", + "module": "./lib/esm/index.js", + "types": "./lib/types/index.d.ts", + "exports": { + "require": "./lib/cjs/index.js", + "import": "./lib/esm/index.js", + "types": "./lib/types/index.d.ts" + }, + "files": [ + "lib", + "src", + "LICENSE" + ], + "publishConfig": { + "access": "public" + }, + "scripts": { + "clean": "shx mkdir -p lib && shx rm -rf lib", + "package": "shx echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", + "test": "jest", + "test:coverage": "jest --coverage" + }, + "dependencies": { + "eventemitter3": "^4.0.0", + "jest": "^29.6.2", + "jest-environment-jsdom": "^29.6.2" + }, + "devDependencies": { + "shx": "^0.3.4", + "tronweb": "^4.4.0" + } +} diff --git a/packages/adapters/abstract-adapter-evm/src/adapter.ts b/packages/adapters/abstract-adapter-evm/src/adapter.ts new file mode 100644 index 0000000..362ab03 --- /dev/null +++ b/packages/adapters/abstract-adapter-evm/src/adapter.ts @@ -0,0 +1,171 @@ +import EventEmitter from 'eventemitter3'; +import type { EIP1193Provider, ProviderEvents } from './eip1193-provider.js'; +import { WalletDisconnectedError } from './errors.js'; + +export { EventEmitter }; + +export interface EIP712Domain { + name?: string; + version?: string; + chainId?: number; + verifyingContract?: string; + salt?: string; +} +export interface TypedData { + domain: EIP712Domain; + primaryType: string; + types: { + [k: string]: { name: string; type: string }[]; + }; + message: Record; +} + +export interface Chain { + chainId: `0x${string}`; + chainName: string; + nativeCurrency: { + /** + * The name of the currency. + */ + name: string; + /** + * The symbol of the currency, as a 2-6 character string. + */ + symbol: string; + /** + * The number of decimals of the currency. Currently only accepts 18 + */ + decimals: 18; + }; + rpcUrls: [string]; + blockExplorerUrls?: [string]; + iconUrls?: string[]; +} + +export interface Asset { + type: 'ERC20' | 'ERC721' | 'ERC1155'; + options: { + address: `0x${string}`; + symbol?: string; + decimals?: number; + image?: string; + tokenId?: string; + }; +} +export interface AdapterEvents extends ProviderEvents { + /** + * Emitted when wallet's readyState changes. + * The initial readyState is Loading. + * If the wallet is ready, it will be Found. + * If the wallet is unavaliable after checking for a while, it will be NotFound. + * @param readyState + */ + readyStateChanged(readyState: WalletReadyState): void; +} + +export type AdapterName = T & { __brand__: 'AdapterName' }; + +export interface AdapterProps { + name: AdapterName; + url: string; + icon: string; + readyState: WalletReadyState; + address: string | null; + connecting: boolean; + connected: boolean; + + connect(options?: Record): Promise; + getProvider(): Promise; + signMessage(params: { message: string; address?: string }): Promise; + signTypedData(params: { typedData: TypedData; address?: string }): Promise; + sendTransaction(transaction: any): Promise; + + /** + * Wallet api + */ + switchChain(chainId: `0x${string}`): Promise; + addChain(chainInfo: Chain): Promise; + watchAsset(assetInfo: Asset): Promise; +} +/** + * Wallet ready state. + */ +export enum WalletReadyState { + /** + * Adapter will start to check if wallet exists after adapter instance is created. + */ + Loading = 'Loading', + /** + * When checking ends and wallet is not found, readyState will be NotFound. + */ + NotFound = 'NotFound', + /** + * When checking ends and wallet is found, readyState will be Found. + */ + Found = 'Found', +} + +export abstract class Adapter + extends EventEmitter + implements AdapterProps +{ + abstract name: AdapterName; + abstract url: string; + abstract icon: string; + abstract readyState: WalletReadyState; + abstract address: string | null; + connecting = false; + + get connected() { + return !!this.address; + } + + abstract connect(options?: Record): Promise; + abstract getProvider(): Promise; + async signMessage({ message, address }: { message: string; address?: string }): Promise { + const provider = await this.prepareProvider(); + if (!this.connected) { + throw new WalletDisconnectedError(); + } + return provider.request({ + method: 'personal_sign', + params: [message, address || this.address], + }); + } + abstract signTypedData(params: { typedData: TypedData; address?: string }): Promise; + async sendTransaction(transaction: any): Promise { + const provider = await this.prepareProvider(); + if (!this.connected) { + throw new WalletDisconnectedError(); + } + return provider.request({ + method: 'eth_sendTransaction', + params: [transaction], + }); + } + async addChain(chainInfo: Chain): Promise { + const provider = await this.prepareProvider(); + return provider.request({ + method: 'wallet_addEthereumChain', + params: [chainInfo], + }); + } + async switchChain(chainId: `0x${string}`): Promise { + const provider = await this.prepareProvider(); + return provider.request({ + method: 'wallet_switchEthereumChain', + params: [{ chainId }], + }); + } + async watchAsset(asset: Asset): Promise { + const provider = await this.prepareProvider(); + return provider.request({ + method: 'wallet_watchAsset', + params: asset, + }); + } + + protected async prepareProvider() { + return (await this.getProvider()) as EIP1193Provider; + } +} diff --git a/packages/adapters/abstract-adapter-evm/src/eip1193-provider.ts b/packages/adapters/abstract-adapter-evm/src/eip1193-provider.ts new file mode 100644 index 0000000..c28b20a --- /dev/null +++ b/packages/adapters/abstract-adapter-evm/src/eip1193-provider.ts @@ -0,0 +1,46 @@ +export interface RequestArguments { + readonly method: string; + readonly params?: readonly unknown[] | object; +} + +export interface ProviderRpcError extends Error { + code: number; + data?: unknown; +} + +export interface ProviderMessage { + readonly type: string; + readonly data: unknown; +} + +export interface ProviderConnectInfo { + readonly chainId: string; +} +export interface ProviderEvents { + /** + * Emitted when wallet is connected to RPC server. + */ + connect(connectInfo: ProviderConnectInfo): void; + /** + * Emitted when wallet is disconnected from RPC server. + */ + disconnect(error: ProviderRpcError): void; + /** + * Emitted when wallet is disconnected from RPC server. + */ + accountsChanged(accounts: string[]): void; + /** + * Emitted when the currently connected chain changes. + */ + chainChanged(chainId: string): void; +} + +export interface EIP1193Provider { + on(event: TEvent, listener: ProviderEvents[TEvent]): this; + removeListener(event: TEvent, listener: ProviderEvents[TEvent]): this; + removeAllListeners(event?: string | symbol): this; + request

(params: { method: string; params?: P }): Promise; + + /** Used to identity wallet */ + isMetaMask: boolean; +} diff --git a/packages/adapters/abstract-adapter-evm/src/errors.ts b/packages/adapters/abstract-adapter-evm/src/errors.ts new file mode 100644 index 0000000..73b1b1b --- /dev/null +++ b/packages/adapters/abstract-adapter-evm/src/errors.ts @@ -0,0 +1,31 @@ +export class WalletError extends Error { + error: any; + + constructor(message?: string, error?: any) { + super(message); + this.error = error; + } +} + +/** + * Occurs when wallet is not installed. + */ +export class WalletNotFoundError extends WalletError { + name = 'WalletNotFoundError'; + message = 'The wallet is not found.'; +} + +/** + * Occurs when try to sign but is not connected to wallet. + */ +export class WalletDisconnectedError extends WalletError { + name = 'WalletDisconnectedError'; + message = 'The wallet is disconnected. Please connect the wallet first.'; +} + +/** + * Occurs when try to connect a wallet. + */ +export class WalletConnectionError extends WalletError { + name = 'WalletConnectionError'; +} diff --git a/packages/adapters/abstract-adapter-evm/src/index.ts b/packages/adapters/abstract-adapter-evm/src/index.ts new file mode 100644 index 0000000..7671c2d --- /dev/null +++ b/packages/adapters/abstract-adapter-evm/src/index.ts @@ -0,0 +1,4 @@ +export * from './adapter.js'; +export * from './errors.js'; +export * from './utils.js'; +export * from './eip1193-provider.js'; diff --git a/packages/adapters/abstract-adapter-evm/src/utils.ts b/packages/adapters/abstract-adapter-evm/src/utils.ts new file mode 100644 index 0000000..817916c --- /dev/null +++ b/packages/adapters/abstract-adapter-evm/src/utils.ts @@ -0,0 +1,17 @@ +/** + * check simply if current environment is browser or not + * @returns boolean + */ +export function isInBrowser() { + return typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined'; +} + +/** + * Simplily detect mobile device + */ +export function isInMobileBrowser() { + return ( + typeof navigator !== 'undefined' && + !!navigator.userAgent.match(/Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone/i) + ); +} diff --git a/packages/adapters/abstract-adapter-evm/tests/units/adapter.test.ts b/packages/adapters/abstract-adapter-evm/tests/units/adapter.test.ts new file mode 100644 index 0000000..cc8c1e5 --- /dev/null +++ b/packages/adapters/abstract-adapter-evm/tests/units/adapter.test.ts @@ -0,0 +1,107 @@ +import { Adapter, WalletReadyState } from '../../src/adapter.js'; +import type { Asset, Chain, AdapterName, TypedData } from '../../src/adapter.js'; +import type { EIP1193Provider } from '../../src/eip1193-provider.js'; + +const provider = { + request: jest.fn(), +} as unknown as EIP1193Provider; + +class TestAdapter extends Adapter { + name = 'Test' as AdapterName<'Test'>; + icon = 'https://icon.com/test-icon.png'; + url = 'https://test-wallet.com'; + address: null | string = null; + readyState = WalletReadyState.Found; + + constructor() { + super(); + } + + getProvider = jest.fn(() => Promise.resolve(provider)); + async connect() { + return Promise.resolve('address1'); + } + async signTypedData(): Promise { + return Promise.resolve('signature'); + } +} + +let adapter: TestAdapter; +beforeEach(() => { + adapter = new TestAdapter(); + adapter.address = '0xsome address'; + provider.request = jest.fn(); +}); +describe('#AbstractAdapter', () => { + test('#connected should be correct', () => { + expect(adapter.connected).toEqual(true); + adapter.address = ''; + expect(adapter.connected).toEqual(false); + }); + test('#signMessage() should work fine', async () => { + const message = 'Hello'; + await adapter.signMessage({ message }); + expect(adapter.getProvider).toBeCalledTimes(1); + expect(provider.request).toBeCalledWith({ method: 'personal_sign', params: [message, adapter.address] }); + }); + test('#signMessage() with address should work fine', async () => { + const message = 'Hello'; + const address = 'address'; + await adapter.signMessage({ message, address }); + expect(adapter.getProvider).toBeCalledTimes(1); + expect(provider.request).toBeCalledWith({ method: 'personal_sign', params: [message, address] }); + }); + test('#signMessage() should throw error when provider.request throw error', async () => { + const error: any = new Error('user rejected'); + error.code = '30003'; + error.data = 'some data'; + provider.request = jest.fn(() => { + throw error; + }); + await expect(adapter.signMessage({ message: 'hello' })).rejects.toEqual(error); + }); + test('#sendTransaction() should work fine', async () => { + const transaction = { + from: 'address from', + to: 'address to', + value: '0x03', + }; + await adapter.sendTransaction(transaction); + expect(adapter.getProvider).toBeCalledTimes(1); + expect(provider.request).toBeCalledWith({ method: 'eth_sendTransaction', params: [transaction] }); + }); + test('#addChain() should work fine', async () => { + const chainInfo: Chain = { + chainId: '0x539', + chainName: 'Localhost', + nativeCurrency: { + name: 'Ethereum Token', + symbol: 'ETH', + decimals: 18, + }, + rpcUrls: ['https://rpc-url.com'], + }; + await adapter.addChain(chainInfo); + expect(adapter.getProvider).toBeCalledTimes(1); + expect(provider.request).toBeCalledWith({ method: 'wallet_addEthereumChain', params: [chainInfo] }); + }); + test('#addChain() should work fine', async () => { + const chainId = '0x539'; + await adapter.switchChain(chainId); + expect(adapter.getProvider).toBeCalledTimes(1); + expect(provider.request).toBeCalledWith({ method: 'wallet_switchEthereumChain', params: [{ chainId }] }); + }); + test('#watchAsset() should work fine', async () => { + const asset: Asset = { + type: 'ERC20', + options: { + address: '0xtoken address', + symbol: 'USDT', + decimals: 18, + }, + }; + await adapter.watchAsset(asset); + expect(adapter.getProvider).toBeCalledTimes(1); + expect(provider.request).toBeCalledWith({ method: 'wallet_watchAsset', params: asset }); + }); +}); diff --git a/packages/adapters/abstract-adapter-evm/tests/units/errors.test.ts b/packages/adapters/abstract-adapter-evm/tests/units/errors.test.ts new file mode 100644 index 0000000..c3b8c11 --- /dev/null +++ b/packages/adapters/abstract-adapter-evm/tests/units/errors.test.ts @@ -0,0 +1,9 @@ +import { WalletConnectionError, WalletDisconnectedError, WalletNotFoundError } from '../../src/errors.js'; + +describe('errors', () => { + test('WalletError should be exported', () => { + expect(WalletNotFoundError).toBeDefined(); + expect(WalletDisconnectedError).toBeDefined(); + expect(WalletConnectionError).toBeDefined(); + }); +}); diff --git a/packages/adapters/abstract-adapter-evm/tests/units/utils.test.ts b/packages/adapters/abstract-adapter-evm/tests/units/utils.test.ts new file mode 100644 index 0000000..4481d61 --- /dev/null +++ b/packages/adapters/abstract-adapter-evm/tests/units/utils.test.ts @@ -0,0 +1,8 @@ +import { isInBrowser, isInMobileBrowser } from '../../src/utils.js'; + +describe('utils', () => { + test('utils function should be exported', () => { + expect(isInBrowser).toBeDefined(); + expect(isInMobileBrowser).toBeDefined(); + }); +}); diff --git a/packages/adapters/abstract-adapter-evm/tsconfig.all.json b/packages/adapters/abstract-adapter-evm/tsconfig.all.json new file mode 100644 index 0000000..c2bd381 --- /dev/null +++ b/packages/adapters/abstract-adapter-evm/tsconfig.all.json @@ -0,0 +1,11 @@ +{ + "extends": "../../../tsconfig.root.json", + "references": [ + { + "path": "./tsconfig.cjs.json" + }, + { + "path": "./tsconfig.esm.json" + } + ] +} diff --git a/packages/adapters/abstract-adapter-evm/tsconfig.cjs.json b/packages/adapters/abstract-adapter-evm/tsconfig.cjs.json new file mode 100644 index 0000000..099b9aa --- /dev/null +++ b/packages/adapters/abstract-adapter-evm/tsconfig.cjs.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.cjs.json", + "include": ["src"], + "compilerOptions": { + "outDir": "lib/cjs" + } +} diff --git a/packages/adapters/abstract-adapter-evm/tsconfig.esm.json b/packages/adapters/abstract-adapter-evm/tsconfig.esm.json new file mode 100644 index 0000000..4900d2f --- /dev/null +++ b/packages/adapters/abstract-adapter-evm/tsconfig.esm.json @@ -0,0 +1,8 @@ +{ + "extends": "../../../tsconfig.esm.json", + "include": ["src"], + "compilerOptions": { + "outDir": "lib/esm", + "declarationDir": "lib/types" + } +} diff --git a/packages/adapters/abstract-adapter/src/utils.ts b/packages/adapters/abstract-adapter/src/utils.ts index fe4a245..f570fe3 100644 --- a/packages/adapters/abstract-adapter/src/utils.ts +++ b/packages/adapters/abstract-adapter/src/utils.ts @@ -8,7 +8,7 @@ export function isInBrowser() { /** * - * @param {Function} check funcion to check if adapter is installed. return true if + * @param {Function} check funcion to check if wallet is installed. return true if wallet is detected. * @returns */ export function checkAdapterState(check: () => boolean): void { diff --git a/packages/adapters/adapters/package.json b/packages/adapters/adapters/package.json index 6ca06cb..e04a9f5 100644 --- a/packages/adapters/adapters/package.json +++ b/packages/adapters/adapters/package.json @@ -1,6 +1,6 @@ { "name": "@tronweb3/tronwallet-adapters", - "version": "1.1.7", + "version": "1.1.8", "description": "Wallet adapters to help developers interact with Tron wallets using consistent API.", "keywords": [ "TRON", diff --git a/packages/adapters/metamask/LICENSE b/packages/adapters/metamask/LICENSE new file mode 100644 index 0000000..f8c1348 --- /dev/null +++ b/packages/adapters/metamask/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) +Copyright (c) 2022-Present, tronprotocol + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/adapters/metamask/README.md b/packages/adapters/metamask/README.md new file mode 100644 index 0000000..c08691c --- /dev/null +++ b/packages/adapters/metamask/README.md @@ -0,0 +1,44 @@ +# `@tronweb3/tronwallet-adapter-metamask` + +This package provides an adapter to enable TRON DApps to connect to the [MetaMask Wallet extension](https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn) and [MetaMask Wallet App](https://metamask.io/). + +## Demo + +```typescript +import { MetaMaskAdapter } from '@tronweb3/tronwallet-adapter-metamask'; + +const adapter = new MetaMaskAdapter(); +// connect +await adapter.connect(); + +// then you can get address +console.log(adapter.address); + +// just use the sendTransaction method to send a transfer transaction. +const transaction = { + value: '0x' + Number(0.01 * Math.pow(10, 18)).toString(16), // 0.01 is 0.01ETH + to: 'your target address', + from: adapter.address, +}; +await adapter.sendTransaction(transaction); +``` + +## Documentation + +### API + +- `Constructor(config: MetaMaskAdapterOptions)` + + ```typescript + import { MetaMaskAdapter } from '@tronweb3/tronwallet-adapter-metamask'; + interface MetaMaskAdapterOptions { + /** + * Set if open MetaMask app when in mobile device. + * Default is true. + */ + useDeeplink?: boolean; + } + const metaMaskAdapter = new MetaMaskAdapter({ useDeeplink: false }); + ``` + +More detailed API can be found in [Abstract Adapter](https://github.com/tronprotocol/tronwallet-adapter/blob/main/packages/adapters/abstract-adapter-evm/README.md). diff --git a/packages/adapters/metamask/jest.config.js b/packages/adapters/metamask/jest.config.js new file mode 100644 index 0000000..2a76755 --- /dev/null +++ b/packages/adapters/metamask/jest.config.js @@ -0,0 +1,17 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +export default { + preset: 'ts-jest', + testEnvironment: 'jsdom', + transform: { + '\\.tsx?$': [ + 'ts-jest', + { + useESM: true, + }, + ], + }, + moduleNameMapper: { + '(.+)\\.js': '$1', + }, + extensionsToTreatAsEsm: ['.ts'], +}; diff --git a/packages/adapters/metamask/package.json b/packages/adapters/metamask/package.json new file mode 100644 index 0000000..57ef3f4 --- /dev/null +++ b/packages/adapters/metamask/package.json @@ -0,0 +1,53 @@ +{ + "name": "@tronweb3/tronwallet-adapter-metamask", + "version": "1.0.0", + "description": "Wallet adapter for Metamask wallet extension and app.", + "keywords": [ + "EVM", + "Ethereum Wallet", + "Metamask wallet" + ], + "author": "tronprotocol", + "repository": { + "type": "git", + "url": "https://github.com/tronprotocol/tronwallet-adapter" + }, + "license": "MIT", + "type": "module", + "sideEffects": false, + "engines": { + "node": ">=16", + "pnpm": ">=7" + }, + "main": "./lib/cjs/index.js", + "module": "./lib/esm/index.js", + "types": "./lib/types/index.d.ts", + "exports": { + "require": "./lib/cjs/index.js", + "import": "./lib/esm/index.js", + "types": "./lib/types/index.d.ts" + }, + "files": [ + "lib", + "src", + "LICENSE" + ], + "publishConfig": { + "access": "public" + }, + "scripts": { + "clean": "shx mkdir -p lib && shx rm -rf lib", + "package": "shx echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", + "test": "jest", + "test:coverage": "jest --coverage" + }, + "dependencies": { + "@tronweb3/abstract-adapter-evm": "workspace:^" + }, + "devDependencies": { + "@testing-library/dom": "^8.20.0", + "jest": "28", + "jest-environment-jsdom": "28", + "shx": "^0.3.4" + } +} diff --git a/packages/adapters/metamask/src/adapter.ts b/packages/adapters/metamask/src/adapter.ts new file mode 100644 index 0000000..deb0a21 --- /dev/null +++ b/packages/adapters/metamask/src/adapter.ts @@ -0,0 +1,159 @@ +import type { AdapterName, EIP1193Provider, TypedData } from '@tronweb3/abstract-adapter-evm'; +import { + Adapter, + WalletReadyState, + WalletNotFoundError, + WalletConnectionError, + isInMobileBrowser, + WalletDisconnectedError, +} from '@tronweb3/abstract-adapter-evm'; +import { getMetaMaskProvider, isMetaMaskMobileWebView, openMetaMaskWithDeeplink } from './utils.js'; +declare global { + interface Window { + ethereum: EIP1193Provider; + } +} + +export interface MetaMaskAdapterOptions { + useDeeplink?: boolean; +} + +export const MetaMaskAdapterName = 'MetaMask' as AdapterName<'MetaMask'>; +export class MetaMaskAdapter extends Adapter { + name = MetaMaskAdapterName; + // @prettier-ignore + icon = + 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIGlkPSJMYXllcl8xIiB4PSIwIiB5PSIwIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAzMTguNiAzMTguNiI+CiAgPHN0eWxlPgogICAgLnN0MSwuc3Q2e2ZpbGw6I2U0NzYxYjtzdHJva2U6I2U0NzYxYjtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmR9LnN0NntmaWxsOiNmNjg1MWI7c3Ryb2tlOiNmNjg1MWJ9CiAgPC9zdHlsZT4KICA8cGF0aCBmaWxsPSIjZTI3NjFiIiBzdHJva2U9IiNlMjc2MWIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0ibTI3NC4xIDM1LjUtOTkuNSA3My45TDE5MyA2NS44eiIvPgogIDxwYXRoIGQ9Im00NC40IDM1LjUgOTguNyA3NC42LTE3LjUtNDQuM3ptMTkzLjkgMTcxLjMtMjYuNSA0MC42IDU2LjcgMTUuNiAxNi4zLTU1LjN6bS0yMDQuNC45TDUwLjEgMjYzbDU2LjctMTUuNi0yNi41LTQwLjZ6IiBjbGFzcz0ic3QxIi8+CiAgPHBhdGggZD0ibTEwMy42IDEzOC4yLTE1LjggMjMuOSA1Ni4zIDIuNS0yLTYwLjV6bTExMS4zIDAtMzktMzQuOC0xLjMgNjEuMiA1Ni4yLTIuNXpNMTA2LjggMjQ3LjRsMzMuOC0xNi41LTI5LjItMjIuOHptNzEuMS0xNi41IDMzLjkgMTYuNS00LjctMzkuM3oiIGNsYXNzPSJzdDEiLz4KICA8cGF0aCBmaWxsPSIjZDdjMWIzIiBzdHJva2U9IiNkN2MxYjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0ibTIxMS44IDI0Ny40LTMzLjktMTYuNSAyLjcgMjIuMS0uMyA5LjN6bS0xMDUgMCAzMS41IDE0LjktLjItOS4zIDIuNS0yMi4xeiIvPgogIDxwYXRoIGZpbGw9IiMyMzM0NDciIHN0cm9rZT0iIzIzMzQ0NyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBkPSJtMTM4LjggMTkzLjUtMjguMi04LjMgMTkuOS05LjF6bTQwLjkgMCA4LjMtMTcuNCAyMCA5LjF6Ii8+CiAgPHBhdGggZmlsbD0iI2NkNjExNiIgc3Ryb2tlPSIjY2Q2MTE2IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Im0xMDYuOCAyNDcuNCA0LjgtNDAuNi0zMS4zLjl6TTIwNyAyMDYuOGw0LjggNDAuNiAyNi41LTM5Ljd6bTIzLjgtNDQuNy01Ni4yIDIuNSA1LjIgMjguOSA4LjMtMTcuNCAyMCA5LjF6bS0xMjAuMiAyMy4xIDIwLTkuMSA4LjIgMTcuNCA1LjMtMjguOS01Ni4zLTIuNXoiLz4KICA8cGF0aCBmaWxsPSIjZTQ3NTFmIiBzdHJva2U9IiNlNDc1MWYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0ibTg3LjggMTYyLjEgMjMuNiA0Ni0uOC0yMi45em0xMjAuMyAyMy4xLTEgMjIuOSAyMy43LTQ2em0tNjQtMjAuNi01LjMgMjguOSA2LjYgMzQuMSAxLjUtNDQuOXptMzAuNSAwLTIuNyAxOCAxLjIgNDUgNi43LTM0LjF6Ii8+CiAgPHBhdGggZD0ibTE3OS44IDE5My41LTYuNyAzNC4xIDQuOCAzLjMgMjkuMi0yMi44IDEtMjIuOXptLTY5LjItOC4zLjggMjIuOSAyOS4yIDIyLjggNC44LTMuMy02LjYtMzQuMXoiIGNsYXNzPSJzdDYiLz4KICA8cGF0aCBmaWxsPSIjYzBhZDllIiBzdHJva2U9IiNjMGFkOWUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0ibTE4MC4zIDI2Mi4zLjMtOS4zLTIuNS0yLjJoLTM3LjdsLTIuMyAyLjIuMiA5LjMtMzEuNS0xNC45IDExIDkgMjIuMyAxNS41aDM4LjNsMjIuNC0xNS41IDExLTl6Ii8+CiAgPHBhdGggZmlsbD0iIzE2MTYxNiIgc3Ryb2tlPSIjMTYxNjE2IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Im0xNzcuOSAyMzAuOS00LjgtMy4zaC0yNy43bC00LjggMy4zLTIuNSAyMi4xIDIuMy0yLjJoMzcuN2wyLjUgMi4yeiIvPgogIDxwYXRoIGZpbGw9IiM3NjNkMTYiIHN0cm9rZT0iIzc2M2QxNiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBkPSJtMjc4LjMgMTE0LjIgOC41LTQwLjgtMTIuNy0zNy45LTk2LjIgNzEuNCAzNyAzMS4zIDUyLjMgMTUuMyAxMS42LTEzLjUtNS0zLjYgOC03LjMtNi4yLTQuOCA4LTYuMXpNMzEuOCA3My40bDguNSA0MC44LTUuNCA0IDggNi4xLTYuMSA0LjggOCA3LjMtNSAzLjYgMTEuNSAxMy41IDUyLjMtMTUuMyAzNy0zMS4zLTk2LjItNzEuNHoiLz4KICA8cGF0aCBkPSJtMjY3LjIgMTUzLjUtNTIuMy0xNS4zIDE1LjkgMjMuOS0yMy43IDQ2IDMxLjItLjRoNDYuNXptLTE2My42LTE1LjMtNTIuMyAxNS4zLTE3LjQgNTQuMmg0Ni40bDMxLjEuNC0yMy42LTQ2em03MSAyNi40IDMuMy01Ny43IDE1LjItNDEuMWgtNjcuNWwxNSA0MS4xIDMuNSA1Ny43IDEuMiAxOC4yLjEgNDQuOGgyNy43bC4yLTQ0Ljh6IiBjbGFzcz0ic3Q2Ii8+Cjwvc3ZnPg=='; + url = 'https://metamask.io'; + readyState = WalletReadyState.Loading; + address: string | null = null; + connecting = false; + options: MetaMaskAdapterOptions; + + constructor(options: MetaMaskAdapterOptions = { useDeeplink: true }) { + super(); + this.options = options; + const provider = getMetaMaskProvider(); + if (provider) { + this.readyState = WalletReadyState.Found; + this.listenEvents(provider); + this.autoConnect(provider); + } else { + this.getProvider().then((res) => { + console.log('contructor getProvider then', res); + if (res) { + this.readyState = WalletReadyState.Found; + console.log('readyState', this.readyState); + this.listenEvents(res); + this.autoConnect(res); + } else { + this.readyState = WalletReadyState.NotFound; + } + this.emit('readyStateChanged', this.readyState); + }); + } + } + + async connect() { + if (this.options.useDeeplink !== false) { + if (isInMobileBrowser() && !isMetaMaskMobileWebView()) { + openMetaMaskWithDeeplink(); + return ''; + } + } + this.connecting = true; + + const provider = await this.getProvider(); + if (!provider) { + throw new WalletNotFoundError(); + } + const accounts = await provider.request({ method: 'eth_requestAccounts' }); + if (!accounts.length) { + throw new WalletConnectionError('No accounts is avaliable.'); + } + this.address = accounts[0]; + this.connecting = false; + return this.address as string; + } + + async signTypedData({ + typedData, + address = this.address as string, + }: { + typedData: TypedData; + address?: string; + }): Promise { + const provider = await this.prepareProvider(); + if (!this.connected) { + throw new WalletDisconnectedError(); + } + return provider.request<[string, string], string>({ + method: 'eth_signTypedData_v4', + params: [address, typeof typedData === 'string' ? typedData : JSON.stringify(typedData)], + }); + } + + private getProviderPromise: Promise | null = null; + async getProvider(): Promise { + if (isInMobileBrowser() && !isMetaMaskMobileWebView()) { + return null; + } + if (this.getProviderPromise !== null) { + return this.getProviderPromise; + } + this.getProviderPromise = new Promise((resolve) => { + const provider = getMetaMaskProvider(); + if (provider) { + return resolve(provider); + } + let handled = false; + const handleEthereum = () => { + if (handled) { + return; + } + handled = true; + window.removeEventListener('ethereum#initialized', handleEthereum); + const provider = getMetaMaskProvider(); + if (provider) { + resolve(provider); + } else { + console.error('MetaMaskAdapter: Unable to detect window.ethereum.'); + resolve(null); + } + }; + window.addEventListener('ethereum#initialized', handleEthereum, { once: true }); + setTimeout(() => { + handleEthereum(); + }, 3000); + }); + return this.getProviderPromise; + } + private listenEvents(provider: EIP1193Provider) { + provider.on('connect', (connectInfo) => { + this.emit('connect', connectInfo); + }); + provider.on('disconnect', (error) => { + this.emit('disconnect', error); + }); + provider.on('accountsChanged', this.onAccountsChanged); + provider.on('chainChanged', (chainId) => { + this.emit('chainChanged', chainId); + }); + } + private onAccountsChanged = (accounts: string[]) => { + if (accounts.length === 0) { + this.address = null; + } else { + this.address = accounts[0]; + } + this.emit('accountsChanged', accounts); + }; + private async autoConnect(provider: EIP1193Provider) { + const accounts = await provider.request({ method: 'eth_accounts' }); + + this.address = accounts?.[0] || null; + if (this.address) { + this.emit('accountsChanged', [...(accounts || null)]); + } + } +} diff --git a/packages/adapters/metamask/src/index.ts b/packages/adapters/metamask/src/index.ts new file mode 100644 index 0000000..ddec7b5 --- /dev/null +++ b/packages/adapters/metamask/src/index.ts @@ -0,0 +1 @@ +export * from './adapter.js'; diff --git a/packages/adapters/metamask/src/utils.ts b/packages/adapters/metamask/src/utils.ts new file mode 100644 index 0000000..42de4cb --- /dev/null +++ b/packages/adapters/metamask/src/utils.ts @@ -0,0 +1,37 @@ +import type { EIP1193Provider } from '@tronweb3/abstract-adapter-evm'; + +export function getMetaMaskProvider(): null | EIP1193Provider { + if (!window.ethereum) { + return null; + } + if (window.ethereum.isMetaMask && !(window.ethereum as any).overrideIsMetaMask) { + return window.ethereum as EIP1193Provider; + } + /** + * When install CoinBase Wallet and MetaMask Wallet, ethereum will be override by CoinBase. + */ + // @ts-ignore + return window.ethereum.providers?.find((item: EIP1193Provider) => item.isMetaMask) || null; +} + +export function isMetaMaskMobileWebView() { + if (typeof window === 'undefined') { + return false; + } + + // @ts-ignore + return Boolean(window.ReactNativeWebView) && Boolean(navigator.userAgent.endsWith('MetaMaskMobile')); +} + +export function openMetaMaskWithDeeplink() { + const { href, protocol } = window.location; + const originLink = href.replace(protocol, '').slice(2); + const link = `https://metamask.app.link/dapp/${originLink}`; + const dappLink = `dapp://${originLink}`; + const userAgent = window?.navigator?.userAgent || ''; + if (/\bAndroid(?:.+)Mobile\b/i.test(userAgent)) { + window.location.href = dappLink; + } else { + window.open(link, '_blank'); + } +} diff --git a/packages/adapters/metamask/tests/units/adapter.test.ts b/packages/adapters/metamask/tests/units/adapter.test.ts new file mode 100644 index 0000000..2094ff4 --- /dev/null +++ b/packages/adapters/metamask/tests/units/adapter.test.ts @@ -0,0 +1,148 @@ +import { WalletNotFoundError } from '@tronweb3/abstract-adapter-evm'; +import { MetaMaskAdapter } from '../../src/adapter.js'; +import { MetaMaskProvider } from './metamask-provider.js'; + +let provider: MetaMaskProvider; +jest.useFakeTimers(); + +beforeEach(() => { + jest.useFakeTimers(); + provider = new MetaMaskProvider(); + window.ethereum = provider; +}); +const typedData = { + domain: { + chainId: 1, + name: 'Ether Mail', + verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', + version: '1', + }, + primaryType: 'Mail', + types: { + Mail: [ + { name: 'from', type: 'string' }, + { name: 'to', type: 'string' }, + { name: 'contents', type: 'string' }, + ], + }, + message: { + from: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', + to: '0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57', + contents: 'Hello', + }, +}; + +describe('MetaMaskAdapter', () => { + test('base props should be valid', () => { + // @ts-ignore + window.ethereum = null; + const adapter = new MetaMaskAdapter(); + expect(adapter.name).toEqual('MetaMask'); + expect(adapter.url).toEqual('https://metamask.io'); + expect(adapter.readyState).toEqual('Loading'); + expect(adapter.address).toEqual(null); + expect(adapter.connected).toEqual(false); + jest.advanceTimersByTime(4000); + expect(adapter.readyState).toEqual('Loading'); + }); + + describe('provider detection should work fine', () => { + test('adapter should be ready when window.ethereum.isMetaMask is true', () => { + const adapter = new MetaMaskAdapter(); + expect(adapter.readyState).toEqual('Found'); + }); + test('adapter should be ready when window.ethereum.providers has MetaMaskProvider', () => { + // @ts-ignore + window.ethereum.providers = [{}, window.ethereum]; + const adapter = new MetaMaskAdapter(); + expect(adapter.readyState).toEqual('Found'); + }); + test('adapter should be ready when window.ethereum is injected asynchronously', async () => { + // @ts-ignore + window.ethereum = null; + const cb: any = {}; + window.addEventListener = function (event: string, listener: any) { + cb[event] = listener; + }; + const adapter = new MetaMaskAdapter(); + expect(adapter.readyState).toEqual('Loading'); + setTimeout(() => { + window.ethereum = new MetaMaskProvider(); + cb['ethereum#initialized']?.(); + }, 2000); + jest.advanceTimersByTime(3000); + for (const i of [1, 2, 3]) { + await Promise.resolve(i); + } + + expect(adapter.readyState).toEqual('Found'); + }); + /** + * @jest-environment-options {"userAgent": "Android/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 MetaMaskMobile"} + */ + test.skip('adapter should be not ready when window.ethereum is undefined and is not in MetaMask app', async () => { + window.ethereum = null as any; + const adapter = new MetaMaskAdapter(); + await Promise.resolve(); + expect(adapter.readyState).toEqual('NotFound'); + }); + }); + + describe('#signTypedData()', () => { + test('should work fine', async () => { + provider._setAccountsRes(['address']); + const adapter = new MetaMaskAdapter(); + await Promise.resolve(); + const request = jest.spyOn(provider, 'request'); + const getProvider = jest.spyOn(adapter, 'getProvider'); + await adapter.signTypedData({ typedData }); + expect(getProvider).toBeCalledTimes(1); + expect(request).toHaveBeenLastCalledWith({ + method: 'eth_signTypedData_v4', + params: [adapter.address, JSON.stringify(typedData)], + }); + request.mockReset(); + request.mockRestore(); + }); + test('should throw error when ethereum.request throw error', async () => { + provider._setAccountsRes(['address']); + const adapter = new MetaMaskAdapter(); + await Promise.resolve(); + const oldRequest = provider.request; + const error = new Error(); + provider.request = jest.fn(() => { + throw error; + }); + await expect(adapter.signTypedData({ typedData })).rejects.toEqual(error); + provider.request = oldRequest; + }); + }); + + describe('#connect()', () => { + test('should work fine when provider.request return account list', async () => { + provider._setRequestAccountsRes(['address']); + const adapter = new MetaMaskAdapter(); + const res = await adapter.connect(); + expect(res).toEqual('address'); + }); + test('should throw WalletNotFoundError when there is no ethereum provider', async () => { + window.ethereum = null as any; + const adapter = new MetaMaskAdapter(); + const res = adapter.connect(); + jest.advanceTimersByTime(5000); + await expect(res).rejects.toBeInstanceOf(WalletNotFoundError); + }); + test('should throw WalletConnectionError when provider.request throw error', async () => { + provider._setAccountsRes(['address']); + const adapter = new MetaMaskAdapter(); + await Promise.resolve(); + const oldRequest = provider.request; + const error = new Error(); + provider.request = jest.fn(() => { + throw error; + }); + await expect(adapter.connect()).rejects.toThrow(); + provider.request = oldRequest; + }); + }); +}); diff --git a/packages/adapters/metamask/tests/units/metamask-provider.ts b/packages/adapters/metamask/tests/units/metamask-provider.ts new file mode 100644 index 0000000..3c9e17c --- /dev/null +++ b/packages/adapters/metamask/tests/units/metamask-provider.ts @@ -0,0 +1,45 @@ +import { EventEmitter } from '@tronweb3/abstract-adapter-evm'; + +jest.useFakeTimers(); +export class MetaMaskProvider extends EventEmitter { + isMetaMask = true; + providers = [MetaMaskProvider]; + constructor() { + super(); + } + + request({ method }: { method: string }): Promise { + if (method === 'eth_accounts') { + return new Promise((resolve) => { + resolve(this._accountsRes); + }); + } + if (method === 'eth_requestAccounts') { + return new Promise((resolve) => { + resolve(this._requestAccountsRes); + this.emit('accountsChanged', this._requestAccountsRes); + }); + } + if (method === 'personal_sign') { + return new Promise((resolve) => { + resolve(this._personalSignRes); + }); + } + return new Promise((resolve) => { + resolve(null); + }); + } + + _accountsRes: string[] = []; + _requestAccountsRes: string[] = []; + _personalSignRes = ''; + _setAccountsRes(accounts: string[]) { + this._accountsRes = accounts; + } + _setRequestAccountsRes(accounts: string[]) { + this._requestAccountsRes = accounts; + } + _setPersonalSignRes(res: string) { + this._personalSignRes = res; + } +} diff --git a/packages/adapters/metamask/tsconfig.all.json b/packages/adapters/metamask/tsconfig.all.json new file mode 100644 index 0000000..2f57563 --- /dev/null +++ b/packages/adapters/metamask/tsconfig.all.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../tsconfig.root.json", + "references": [ + { + "path": "../abstract-adapter/tsconfig.all.json" + }, + { + "path": "./tsconfig.cjs.json" + }, + { + "path": "./tsconfig.esm.json" + } + ] +} diff --git a/packages/adapters/metamask/tsconfig.cjs.json b/packages/adapters/metamask/tsconfig.cjs.json new file mode 100644 index 0000000..099b9aa --- /dev/null +++ b/packages/adapters/metamask/tsconfig.cjs.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.cjs.json", + "include": ["src"], + "compilerOptions": { + "outDir": "lib/cjs" + } +} diff --git a/packages/adapters/metamask/tsconfig.esm.json b/packages/adapters/metamask/tsconfig.esm.json new file mode 100644 index 0000000..4900d2f --- /dev/null +++ b/packages/adapters/metamask/tsconfig.esm.json @@ -0,0 +1,8 @@ +{ + "extends": "../../../tsconfig.esm.json", + "include": ["src"], + "compilerOptions": { + "outDir": "lib/esm", + "declarationDir": "lib/types" + } +} diff --git a/packages/adapters/tronlink/package.json b/packages/adapters/tronlink/package.json index c6ada57..7dc8ed4 100644 --- a/packages/adapters/tronlink/package.json +++ b/packages/adapters/tronlink/package.json @@ -1,6 +1,6 @@ { "name": "@tronweb3/tronwallet-adapter-tronlink", - "version": "1.1.7", + "version": "1.1.8", "description": "Wallet adapter for TronLink Wallet extension and TronLink app.", "keywords": [ "TRON", diff --git a/packages/adapters/tronlink/src/adapter.ts b/packages/adapters/tronlink/src/adapter.ts index 7714e18..43cf2ce 100644 --- a/packages/adapters/tronlink/src/adapter.ts +++ b/packages/adapters/tronlink/src/adapter.ts @@ -500,13 +500,17 @@ export class TronLinkAdapter extends Adapter { let state = this.state; let address = this.address; if (isInMobileBrowser()) { - this._wallet = { - ready: !!window.tronWeb?.defaultAddress, - tronWeb: window.tronWeb, - request: () => Promise.resolve(true) as any, - } as TronLinkWallet; - address = this._wallet.tronWeb.defaultAddress?.base58 || null; - state = window.tronWeb?.defaultAddress ? AdapterState.Connected : AdapterState.Disconnect; + if (window.tronLink) { + this._wallet = window.tronLink; + } else { + this._wallet = { + ready: !!window.tronWeb?.defaultAddress, + tronWeb: window.tronWeb, + request: () => Promise.resolve(true) as any, + } as TronLinkWallet; + } + address = this._wallet.tronWeb?.defaultAddress?.base58 || null; + state = address ? AdapterState.Connected : AdapterState.Disconnect; } else if (window.tron && window.tron.isTronLink) { this._supportNewTronProtocol = true; this._wallet = window.tron; @@ -535,21 +539,21 @@ export class TronLinkAdapter extends Adapter { } // In TronLink App, account should be connected if (isInMobileBrowser() && state === AdapterState.Disconnect) { - this.checkForWalletReady(); + this.checkForWalletReadyForApp(); } this.setAddress(address); this.setState(state); }; private checkReadyInterval: ReturnType | null = null; - private checkForWalletReady() { + private checkForWalletReadyForApp() { if (this.checkReadyInterval) { return; } let times = 0; const maxTimes = Math.floor(this.config.checkTimeout / 200); const check = () => { - if (window.tronWeb?.defaultAddress) { + if (window.tronLink ? window.tronLink.tronWeb?.defaultAddress : window.tronWeb?.defaultAddress) { this.checkReadyInterval && clearInterval(this.checkReadyInterval); this.checkReadyInterval = null; this._updateWallet(); diff --git a/packages/react/react-hooks/package.json b/packages/react/react-hooks/package.json index af340e8..d4d4833 100644 --- a/packages/react/react-hooks/package.json +++ b/packages/react/react-hooks/package.json @@ -1,6 +1,6 @@ { "name": "@tronweb3/tronwallet-adapter-react-hooks", - "version": "1.1.5", + "version": "1.1.6", "description": "A `useWallet()` hook to make it easy to interact with Tron wallets.", "keywords": [ "TRON", diff --git a/packages/react/react-ui/package.json b/packages/react/react-ui/package.json index 2223ed4..b1e28d7 100644 --- a/packages/react/react-ui/package.json +++ b/packages/react/react-ui/package.json @@ -1,6 +1,6 @@ { "name": "@tronweb3/tronwallet-adapter-react-ui", - "version": "1.1.5", + "version": "1.1.7", "description": "A set of out-of-the-box components to make it easy to interact with Tron wallets.", "keywords": [ "TRON", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bafd79c..4474298 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -67,10 +67,13 @@ importers: specifiers: '@emotion/react': ^11.10.4 '@emotion/styled': ^11.10.4 + '@metamask/eth-sig-util': ^6.0.0 '@mui/material': ^5.10.10 + '@tronweb3/abstract-adapter-evm': ^1.0.0 '@tronweb3/tronwallet-abstract-adapter': ^1.1.0 '@tronweb3/tronwallet-adapter-bitkeep': ^1.0.0 '@tronweb3/tronwallet-adapter-ledger': ^1.1.2 + '@tronweb3/tronwallet-adapter-metamask': ^1.0.0 '@tronweb3/tronwallet-adapter-okxwallet': ^1.0.0 '@tronweb3/tronwallet-adapter-react-hooks': ^1.0.0 '@tronweb3/tronwallet-adapter-react-ui': ^1.1.0 @@ -80,10 +83,12 @@ importers: '@types/react-dom': ^18.0.8 '@vitejs/plugin-legacy': ^2.3.0 '@vitejs/plugin-react': ^2.2.0 + dotenv: ^16.3.1 events: ^3.3.0 + ganache: ^7.9.0 react: ^18.2.0 react-dom: ^18.2.0 - tronweb: '5.1' + tronweb: ~5.1.0 typescript: ^4.6.4 vconsole: ^3.15.0 vite: 3.2.3 @@ -91,16 +96,20 @@ importers: dependencies: '@emotion/react': 11.10.5_3stiutgnnbnfnf3uowm5cip22i '@emotion/styled': 11.10.5_jrh5enlbqfbnumycmktdqgd6se + '@metamask/eth-sig-util': 6.0.0 '@mui/material': 5.11.8_rqh7qj4464ntrqrt6banhaqg4q + '@tronweb3/abstract-adapter-evm': link:../../packages/adapters/abstract-adapter-evm '@tronweb3/tronwallet-abstract-adapter': link:../../packages/adapters/abstract-adapter '@tronweb3/tronwallet-adapter-bitkeep': link:../../packages/adapters/bitkeep '@tronweb3/tronwallet-adapter-ledger': link:../../packages/adapters/ledger + '@tronweb3/tronwallet-adapter-metamask': link:../../packages/adapters/metamask '@tronweb3/tronwallet-adapter-okxwallet': link:../../packages/adapters/okxwallet - '@tronweb3/tronwallet-adapter-react-hooks': link:../../packages/react/react-hooks - '@tronweb3/tronwallet-adapter-react-ui': link:../../packages/react/react-ui + '@tronweb3/tronwallet-adapter-react-hooks': 1.1.5_biqbaboplfbrettd7655fr4n2y + '@tronweb3/tronwallet-adapter-react-ui': 1.1.6_biqbaboplfbrettd7655fr4n2y '@tronweb3/tronwallet-adapter-tokenpocket': link:../../packages/adapters/tokenpocket - '@tronweb3/tronwallet-adapters': link:../../packages/adapters/adapters + '@tronweb3/tronwallet-adapters': 1.1.7_j5ip3o3v6sktjzl5cxtjyfbuo4 events: 3.3.0 + ganache: 7.9.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 tronweb: 5.1.0 @@ -110,6 +119,7 @@ importers: '@types/react-dom': 18.0.10 '@vitejs/plugin-legacy': 2.3.1_vite@3.2.3 '@vitejs/plugin-react': 2.2.0_vite@3.2.3 + dotenv: 16.3.1 typescript: 4.9.5 vite: 3.2.3 webpack-cli: 5.1.0 @@ -161,10 +171,10 @@ importers: '@testing-library/user-event': 13.5.0 '@tronweb3/tronwallet-abstract-adapter': link:../../../packages/adapters/abstract-adapter '@tronweb3/tronwallet-adapter-ledger': link:../../../packages/adapters/ledger - '@tronweb3/tronwallet-adapter-react-hooks': link:../../../packages/react/react-hooks - '@tronweb3/tronwallet-adapter-react-ui': link:../../../packages/react/react-ui + '@tronweb3/tronwallet-adapter-react-hooks': 1.1.5_biqbaboplfbrettd7655fr4n2y + '@tronweb3/tronwallet-adapter-react-ui': 1.1.6_biqbaboplfbrettd7655fr4n2y '@tronweb3/tronwallet-adapter-walletconnect': link:../../../packages/adapters/walletconnect - '@tronweb3/tronwallet-adapters': link:../../../packages/adapters/adapters + '@tronweb3/tronwallet-adapters': 1.1.7_j5ip3o3v6sktjzl5cxtjyfbuo4 '@types/jest': 27.5.2 '@types/node': 16.18.12 '@types/react': 18.0.27 @@ -224,10 +234,10 @@ importers: '@tronweb3/tronwallet-abstract-adapter': link:../../../packages/adapters/abstract-adapter '@tronweb3/tronwallet-adapter-bitkeep': link:../../../packages/adapters/bitkeep '@tronweb3/tronwallet-adapter-ledger': link:../../../packages/adapters/ledger - '@tronweb3/tronwallet-adapter-react-hooks': link:../../../packages/react/react-hooks - '@tronweb3/tronwallet-adapter-react-ui': link:../../../packages/react/react-ui + '@tronweb3/tronwallet-adapter-react-hooks': 1.1.5_biqbaboplfbrettd7655fr4n2y + '@tronweb3/tronwallet-adapter-react-ui': 1.1.6_biqbaboplfbrettd7655fr4n2y '@tronweb3/tronwallet-adapter-tokenpocket': link:../../../packages/adapters/tokenpocket - '@tronweb3/tronwallet-adapters': link:../../../packages/adapters/adapters + '@tronweb3/tronwallet-adapters': 1.1.7_gs54vy7ddzyteyvodybdnk6y7e '@types/node': 18.11.9 '@types/react': 18.0.26 '@types/react-dom': 18.0.9 @@ -275,10 +285,10 @@ importers: '@mui/material': 5.11.8_rqh7qj4464ntrqrt6banhaqg4q '@tronweb3/tronwallet-abstract-adapter': link:../../../packages/adapters/abstract-adapter '@tronweb3/tronwallet-adapter-ledger': link:../../../packages/adapters/ledger - '@tronweb3/tronwallet-adapter-react-hooks': link:../../../packages/react/react-hooks - '@tronweb3/tronwallet-adapter-react-ui': link:../../../packages/react/react-ui + '@tronweb3/tronwallet-adapter-react-hooks': 1.1.5_biqbaboplfbrettd7655fr4n2y + '@tronweb3/tronwallet-adapter-react-ui': 1.1.6_biqbaboplfbrettd7655fr4n2y '@tronweb3/tronwallet-adapter-walletconnect': link:../../../packages/adapters/walletconnect - '@tronweb3/tronwallet-adapters': link:../../../packages/adapters/adapters + '@tronweb3/tronwallet-adapters': 1.1.7_j5ip3o3v6sktjzl5cxtjyfbuo4 buffer: 6.0.3 events: 3.3.0 react: 18.2.0 @@ -306,6 +316,21 @@ importers: shx: 0.3.4 tronweb: 4.4.0 + packages/adapters/abstract-adapter-evm: + specifiers: + eventemitter3: ^4.0.0 + jest: ^29.6.2 + jest-environment-jsdom: ^29.6.2 + shx: ^0.3.4 + tronweb: ^4.4.0 + dependencies: + eventemitter3: 4.0.7 + jest: 29.6.2 + jest-environment-jsdom: 29.6.2 + devDependencies: + shx: 0.3.4 + tronweb: 4.4.0 + packages/adapters/adapters: specifiers: '@tronweb3/tronwallet-adapter-bitkeep': workspace:^ @@ -365,6 +390,21 @@ importers: jest-environment-jsdom: 29.4.2 shx: 0.3.4 + packages/adapters/metamask: + specifiers: + '@testing-library/dom': ^8.20.0 + '@tronweb3/abstract-adapter-evm': workspace:^ + jest: '28' + jest-environment-jsdom: '28' + shx: ^0.3.4 + dependencies: + '@tronweb3/abstract-adapter-evm': link:../abstract-adapter-evm + devDependencies: + '@testing-library/dom': 8.20.0 + jest: 28.1.3 + jest-environment-jsdom: 28.1.3 + shx: 0.3.4 + packages/adapters/okxwallet: specifiers: '@testing-library/dom': ^8.20.0 @@ -501,7 +541,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.19 /@apideck/better-ajv-errors/0.3.6_ajv@8.12.0: resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} @@ -516,7 +556,7 @@ packages: dev: false /@babel/code-frame/7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz} + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 @@ -788,7 +828,7 @@ packages: - supports-color /@babel/highlight/7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz} + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.19.1 @@ -2744,6 +2784,21 @@ packages: transitivePeerDependencies: - supports-color + /@ethereumjs/rlp/4.0.1: + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + dev: false + + /@ethereumjs/util/8.1.0: + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.1.2 + micro-ftch: 0.3.1 + dev: false + /@ethersproject/abi/5.7.0: resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} dependencies: @@ -3065,7 +3120,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 16.18.12 + '@types/node': 18.13.0 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 @@ -3077,12 +3132,11 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 - '@types/node': 16.18.12 + '@types/node': 18.13.0 chalk: 4.1.2 jest-message-util: 28.1.3 jest-util: 28.1.3 slash: 3.0.0 - dev: false /@jest/console/29.4.2: resolution: {integrity: sha512-0I/rEJwMpV9iwi9cDEnT71a5nNGK9lj8Z4+1pRAU2x/thVXCDnaTGrvxyK+cAqZTFVFCiR+hfVrP4l2m+dCmQg==} @@ -3096,6 +3150,18 @@ packages: slash: 3.0.0 dev: true + /@jest/console/29.6.2: + resolution: {integrity: sha512-0N0yZof5hi44HAR2pPS+ikJ3nzKNoZdVu8FffRf3wy47I7Dm7etk/3KetMdRUqzVd16V4O2m2ISpNTbnIuqy1w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.1 + '@types/node': 18.13.0 + chalk: 4.1.2 + jest-message-util: 29.6.2 + jest-util: 29.6.2 + slash: 3.0.0 + dev: false + /@jest/core/27.5.1: resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -3110,7 +3176,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 16.18.12 + '@types/node': 18.13.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 @@ -3141,6 +3207,49 @@ packages: - utf-8-validate dev: false + /@jest/core/28.1.3: + resolution: {integrity: sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 28.1.3 + '@jest/reporters': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.13.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.7.1 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-changed-files: 28.1.3 + jest-config: 28.1.3_@types+node@18.13.0 + jest-haste-map: 28.1.3 + jest-message-util: 28.1.3 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-resolve-dependencies: 28.1.3 + jest-runner: 28.1.3 + jest-runtime: 28.1.3 + jest-snapshot: 28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 + jest-watcher: 28.1.3 + micromatch: 4.0.5 + pretty-format: 28.1.3 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + /@jest/core/29.4.2: resolution: {integrity: sha512-KGuoQah0P3vGNlaS/l9/wQENZGNKGoWb+OPxh3gz+YzG7/XExvYu34MzikRndQCdM2S0tzExN4+FL37i6gZmCQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3183,6 +3292,49 @@ packages: - ts-node dev: true + /@jest/core/29.6.2: + resolution: {integrity: sha512-Oj+5B+sDMiMWLhPFF+4/DvHOf+U10rgvCLGPHP8Xlsy/7QxS51aU/eBngudHlJXnaWD5EohAgJ4js+T6pa+zOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.6.2 + '@jest/reporters': 29.6.2 + '@jest/test-result': 29.6.2 + '@jest/transform': 29.6.2 + '@jest/types': 29.6.1 + '@types/node': 18.13.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.7.1 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-changed-files: 29.5.0 + jest-config: 29.6.2_@types+node@18.13.0 + jest-haste-map: 29.6.2 + jest-message-util: 29.6.2 + jest-regex-util: 29.4.3 + jest-resolve: 29.6.2 + jest-resolve-dependencies: 29.6.2 + jest-runner: 29.6.2 + jest-runtime: 29.6.2 + jest-snapshot: 29.6.2 + jest-util: 29.6.2 + jest-validate: 29.6.2 + jest-watcher: 29.6.2 + micromatch: 4.0.5 + pretty-format: 29.6.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + dev: false + /@jest/environment/27.5.1: resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -3193,6 +3345,16 @@ packages: jest-mock: 27.5.1 dev: false + /@jest/environment/28.1.3: + resolution: {integrity: sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/fake-timers': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.13.0 + jest-mock: 28.1.3 + dev: true + /@jest/environment/29.4.2: resolution: {integrity: sha512-JKs3VUtse0vQfCaFGJRX1bir9yBdtasxziSyu+pIiEllAQOe4oQhdCYIf3+Lx+nGglFktSKToBnRJfD5QKp+NQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@jest/environment/-/environment-29.4.2.tgz} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3203,6 +3365,23 @@ packages: jest-mock: 29.4.2 dev: true + /@jest/environment/29.6.2: + resolution: {integrity: sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.6.2 + '@jest/types': 29.6.1 + '@types/node': 18.13.0 + jest-mock: 29.6.2 + dev: false + + /@jest/expect-utils/28.1.3: + resolution: {integrity: sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + jest-get-type: 28.0.2 + dev: true + /@jest/expect-utils/29.4.2: resolution: {integrity: sha512-Dd3ilDJpBnqa0GiPN7QrudVs0cczMMHtehSo2CSTjm3zdHx0RcpmhFNVEltuEFeqfLIyWKFI224FsMSQ/nsJQA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3210,6 +3389,23 @@ packages: jest-get-type: 29.4.2 dev: true + /@jest/expect-utils/29.6.2: + resolution: {integrity: sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.3 + dev: false + + /@jest/expect/28.1.3: + resolution: {integrity: sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + expect: 28.1.3 + jest-snapshot: 28.1.3 + transitivePeerDependencies: + - supports-color + dev: true + /@jest/expect/29.4.2: resolution: {integrity: sha512-NUAeZVApzyaeLjfWIV/64zXjA2SS+NuUPHpAlO7IwVMGd5Vf9szTl9KEDlxY3B4liwLO31os88tYNHl6cpjtKQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3220,18 +3416,40 @@ packages: - supports-color dev: true + /@jest/expect/29.6.2: + resolution: {integrity: sha512-m6DrEJxVKjkELTVAztTLyS/7C92Y2b0VYqmDROYKLLALHn8T/04yPs70NADUYPrV3ruI+H3J0iUIuhkjp7vkfg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.6.2 + jest-snapshot: 29.6.2 + transitivePeerDependencies: + - supports-color + dev: false + /@jest/fake-timers/27.5.1: resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 16.18.12 + '@types/node': 18.13.0 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 dev: false + /@jest/fake-timers/28.1.3: + resolution: {integrity: sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@sinonjs/fake-timers': 9.1.2 + '@types/node': 18.13.0 + jest-message-util: 28.1.3 + jest-mock: 28.1.3 + jest-util: 28.1.3 + dev: true + /@jest/fake-timers/29.4.2: resolution: {integrity: sha512-Ny1u0Wg6kCsHFWq7A/rW/tMhIedq2siiyHyLpHCmIhP7WmcAmd2cx95P+0xtTZlj5ZbJxIRQi4OPydZZUoiSQQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.4.2.tgz} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3244,6 +3462,18 @@ packages: jest-util: 29.4.2 dev: true + /@jest/fake-timers/29.6.2: + resolution: {integrity: sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.1 + '@sinonjs/fake-timers': 10.0.2 + '@types/node': 18.13.0 + jest-message-util: 29.6.2 + jest-mock: 29.6.2 + jest-util: 29.6.2 + dev: false + /@jest/globals/27.5.1: resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -3253,6 +3483,17 @@ packages: expect: 27.5.1 dev: false + /@jest/globals/28.1.3: + resolution: {integrity: sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/environment': 28.1.3 + '@jest/expect': 28.1.3 + '@jest/types': 28.1.3 + transitivePeerDependencies: + - supports-color + dev: true + /@jest/globals/29.4.2: resolution: {integrity: sha512-zCk70YGPzKnz/I9BNFDPlK+EuJLk21ur/NozVh6JVM86/YYZtZHqxFFQ62O9MWq7uf3vIZnvNA0BzzrtxD9iyg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3265,6 +3506,18 @@ packages: - supports-color dev: true + /@jest/globals/29.6.2: + resolution: {integrity: sha512-cjuJmNDjs6aMijCmSa1g2TNG4Lby/AeU7/02VtpW+SLcZXzOLK2GpN2nLqcFjmhy3B3AoPeQVx7BnyOf681bAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.6.2 + '@jest/expect': 29.6.2 + '@jest/types': 29.6.1 + jest-mock: 29.6.2 + transitivePeerDependencies: + - supports-color + dev: false + /@jest/reporters/27.5.1: resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -3279,7 +3532,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 16.18.12 + '@types/node': 18.13.0 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3303,6 +3556,44 @@ packages: - supports-color dev: false + /@jest/reporters/28.1.3: + resolution: {integrity: sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@jridgewell/trace-mapping': 0.3.17 + '@types/node': 18.13.0 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + jest-worker: 28.1.3 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + terminal-link: 2.1.1 + v8-to-istanbul: 9.0.1 + transitivePeerDependencies: + - supports-color + dev: true + /@jest/reporters/29.4.2: resolution: {integrity: sha512-10yw6YQe75zCgYcXgEND9kw3UZZH5tJeLzWv4vTk/2mrS1aY50A37F+XT2hPO5OqQFFnUWizXD8k1BMiATNfUw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3340,12 +3631,48 @@ packages: - supports-color dev: true + /@jest/reporters/29.6.2: + resolution: {integrity: sha512-sWtijrvIav8LgfJZlrGCdN0nP2EWbakglJY49J1Y5QihcQLfy7ovyxxjJBRXMNltgt4uPtEcFmIMbVshEDfFWw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.6.2 + '@jest/test-result': 29.6.2 + '@jest/transform': 29.6.2 + '@jest/types': 29.6.1 + '@jridgewell/trace-mapping': 0.3.19 + '@types/node': 18.13.0 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + jest-message-util: 29.6.2 + jest-util: 29.6.2 + jest-worker: 29.6.2 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.0.1 + transitivePeerDependencies: + - supports-color + dev: false + /@jest/schemas/28.1.3: resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@sinclair/typebox': 0.24.51 - dev: false /@jest/schemas/29.4.2: resolution: {integrity: sha512-ZrGzGfh31NtdVH8tn0mgJw4khQuNHiKqdzJAFbCaERbyCP9tHlxWuL/mnMu8P7e/+k4puWjI1NOzi/sFsjce/g==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.2.tgz} @@ -3354,6 +3681,13 @@ packages: '@sinclair/typebox': 0.25.21 dev: true + /@jest/schemas/29.6.0: + resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: false + /@jest/source-map/27.5.1: resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -3363,6 +3697,15 @@ packages: source-map: 0.6.1 dev: false + /@jest/source-map/28.1.2: + resolution: {integrity: sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.17 + callsites: 3.1.0 + graceful-fs: 4.2.10 + dev: true + /@jest/source-map/29.4.2: resolution: {integrity: sha512-tIoqV5ZNgYI9XCKXMqbYe5JbumcvyTgNN+V5QW4My033lanijvCD0D4PI9tBw4pRTqWOc00/7X3KVvUh+qnF4Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3372,6 +3715,15 @@ packages: graceful-fs: 4.2.10 dev: true + /@jest/source-map/29.6.0: + resolution: {integrity: sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.19 + callsites: 3.1.0 + graceful-fs: 4.2.10 + dev: false + /@jest/test-result/27.5.1: resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -3390,7 +3742,6 @@ packages: '@jest/types': 28.1.3 '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 - dev: false /@jest/test-result/29.4.2: resolution: {integrity: sha512-HZsC3shhiHVvMtP+i55MGR5bPcc3obCFbA5bzIOb8pCjwBZf11cZliJncCgaVUbC5yoQNuGqCkC0Q3t6EItxZA==} @@ -3402,6 +3753,16 @@ packages: collect-v8-coverage: 1.0.1 dev: true + /@jest/test-result/29.6.2: + resolution: {integrity: sha512-3VKFXzcV42EYhMCsJQURptSqnyjqCGbtLuX5Xxb6Pm6gUf1wIRIl+mandIRGJyWKgNKYF9cnstti6Ls5ekduqw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.6.2 + '@jest/types': 29.6.1 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 + dev: false + /@jest/test-sequencer/27.5.1: resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -3414,6 +3775,16 @@ packages: - supports-color dev: false + /@jest/test-sequencer/28.1.3: + resolution: {integrity: sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/test-result': 28.1.3 + graceful-fs: 4.2.10 + jest-haste-map: 28.1.3 + slash: 3.0.0 + dev: true + /@jest/test-sequencer/29.4.2: resolution: {integrity: sha512-9Z2cVsD6CcObIVrWigHp2McRJhvCxL27xHtrZFgNC1RwnoSpDx6fZo8QYjJmziFlW9/hr78/3sxF54S8B6v8rg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3424,6 +3795,16 @@ packages: slash: 3.0.0 dev: true + /@jest/test-sequencer/29.6.2: + resolution: {integrity: sha512-GVYi6PfPwVejO7slw6IDO0qKVum5jtrJ3KoLGbgBWyr2qr4GaxFV6su+ZAjdTX75Sr1DkMFRk09r2ZVa+wtCGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.6.2 + graceful-fs: 4.2.10 + jest-haste-map: 29.6.2 + slash: 3.0.0 + dev: false + /@jest/transform/27.5.1: resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -3447,7 +3828,30 @@ packages: - supports-color dev: false - /@jest/transform/29.4.2: + /@jest/transform/28.1.3: + resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@babel/core': 7.20.12 + '@jest/types': 28.1.3 + '@jridgewell/trace-mapping': 0.3.17 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.10 + jest-haste-map: 28.1.3 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/transform/29.4.2: resolution: {integrity: sha512-kf1v5iTJHn7p9RbOsBuc/lcwyPtJaZJt5885C98omWz79NIeD3PfoiiaPSu7JyCyFzNOIzKhmMhQLUhlTL9BvQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3470,13 +3874,36 @@ packages: - supports-color dev: true + /@jest/transform/29.6.2: + resolution: {integrity: sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.20.12 + '@jest/types': 29.6.1 + '@jridgewell/trace-mapping': 0.3.19 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.10 + jest-haste-map: 29.6.2 + jest-regex-util: 29.4.3 + jest-util: 29.6.2 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /@jest/types/27.5.1: resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 16.18.12 + '@types/node': 18.13.0 '@types/yargs': 16.0.5 chalk: 4.1.2 dev: false @@ -3488,10 +3915,9 @@ packages: '@jest/schemas': 28.1.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 16.18.12 + '@types/node': 18.13.0 '@types/yargs': 17.0.22 chalk: 4.1.2 - dev: false /@jest/types/29.4.2: resolution: {integrity: sha512-CKlngyGP0fwlgC1BRUtPZSiWLBhyS9dKwKmyGxk8Z6M82LBEGB2aLQSg+U1MyLsU+M7UjnlLllBM2BLWKVm/Uw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@jest/types/-/types-29.4.2.tgz} @@ -3505,6 +3931,18 @@ packages: chalk: 4.1.2 dev: true + /@jest/types/29.6.1: + resolution: {integrity: sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.0 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.13.0 + '@types/yargs': 17.0.22 + chalk: 4.1.2 + dev: false + /@jridgewell/gen-mapping/0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} @@ -3518,10 +3956,10 @@ packages: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.19 /@jridgewell/resolve-uri/3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz} + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} /@jridgewell/set-array/1.1.2: @@ -3535,10 +3973,16 @@ packages: '@jridgewell/trace-mapping': 0.3.17 /@jridgewell/sourcemap-codec/1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz} + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} /@jridgewell/trace-mapping/0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz} + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + + /@jridgewell/trace-mapping/0.3.19: + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 @@ -3657,6 +4101,18 @@ packages: read-yaml-file: 1.1.0 dev: true + /@metamask/eth-sig-util/6.0.0: + resolution: {integrity: sha512-M0ezVz8lirXG1P6rHPzx+9i4zfhebCgVHE8XQT8VWxy/eUWllHQGcBcE8QmOusC7su55M4CMr9AyMIu0lx452g==} + engines: {node: '>=14.0.0'} + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 4.12.0 + ethereum-cryptography: 2.1.2 + ethjs-util: 0.1.6 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + dev: false + /@metamask/safe-event-emitter/2.0.0: resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} dev: false @@ -3667,7 +4123,7 @@ packages: dependencies: '@types/debug': 4.1.8 debug: 4.3.4 - semver: 7.3.8 + semver: 7.5.4 superstruct: 1.0.3 transitivePeerDependencies: - supports-color @@ -4469,6 +4925,14 @@ packages: '@scure/base': 1.1.1 dev: false + /@scure/bip32/1.3.1: + resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/base': 1.1.1 + dev: false + /@scure/bip39/1.2.0: resolution: {integrity: sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==} dependencies: @@ -4476,31 +4940,38 @@ packages: '@scure/base': 1.1.1 dev: false + /@scure/bip39/1.2.1: + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + dependencies: + '@noble/hashes': 1.3.1 + '@scure/base': 1.1.1 + dev: false + /@sinclair/typebox/0.24.51: resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} - dev: false /@sinclair/typebox/0.25.21: resolution: {integrity: sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.21.tgz} dev: true + /@sinclair/typebox/0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: false + /@sinonjs/commons/1.8.6: resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} dependencies: type-detect: 4.0.8 - dev: false /@sinonjs/commons/2.0.0: - resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz} + resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} dependencies: type-detect: 4.0.8 - dev: true /@sinonjs/fake-timers/10.0.2: - resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz} + resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} dependencies: '@sinonjs/commons': 2.0.0 - dev: true /@sinonjs/fake-timers/8.1.0: resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} @@ -4508,6 +4979,12 @@ packages: '@sinonjs/commons': 1.8.6 dev: false + /@sinonjs/fake-timers/9.1.2: + resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} + dependencies: + '@sinonjs/commons': 1.8.6 + dev: true + /@solana/buffer-layout/4.0.1: resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} engines: {node: '>=5.10'} @@ -4846,12 +5323,186 @@ packages: dev: false /@tootallnate/once/2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz} + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} - dev: true /@tronweb3/google-protobuf/3.21.2: - resolution: {integrity: sha512-IVcT2GfWX3K6tHUVhs14NP5uzKhQt4KeDya1g9ACxuZsUzsaoGUIGzceK2Ltu7xp1YV94AaHOf4yxLAivlvEkQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@tronweb3/google-protobuf/-/google-protobuf-3.21.2.tgz} + resolution: {integrity: sha512-IVcT2GfWX3K6tHUVhs14NP5uzKhQt4KeDya1g9ACxuZsUzsaoGUIGzceK2Ltu7xp1YV94AaHOf4yxLAivlvEkQ==} + dev: false + + /@tronweb3/tronwallet-abstract-adapter/1.1.5: + resolution: {integrity: sha512-hkZPlvv1ZemzNZ0kLR+isooaqLbOpG2JI+l/my+Io1ZOF0lh5hu6AVtCV7/OkkekX4qRH5jZ20GlSSkvQ4kchg==} + engines: {node: '>=16', pnpm: '>=7'} + dependencies: + eventemitter3: 4.0.7 + dev: false + + /@tronweb3/tronwallet-adapter-bitkeep/1.0.1: + resolution: {integrity: sha512-Es8KkoZ9amSQZB3EjxAULCsUxyingdqziJNdzH1bGS7H0NpNnmj7dhul/2C1pXFKMY7DwRPrUpDxfotIZ57wKg==} + engines: {node: '>=16', pnpm: '>=7'} + dependencies: + '@tronweb3/tronwallet-abstract-adapter': 1.1.5 + '@tronweb3/tronwallet-adapter-tronlink': 1.1.7 + dev: false + + /@tronweb3/tronwallet-adapter-ledger/1.1.7: + resolution: {integrity: sha512-xBr8IX6XAzd3qEmpzPiuFQ8F1G0LpkxnZMCPMCQkzhbBFVEfj6dIrzG7n8S58CareniqZtAmEwYhUaCPtozhHg==} + engines: {node: '>=16', pnpm: '>=7'} + dependencies: + '@ledgerhq/hw-app-trx': 6.27.11 + '@ledgerhq/hw-transport': 6.27.1 + '@ledgerhq/hw-transport-webhid': 6.27.1 + '@tronweb3/tronwallet-abstract-adapter': 1.1.5 + buffer: 6.0.3 + eventemitter3: 4.0.7 + preact: 10.12.1 + dev: false + + /@tronweb3/tronwallet-adapter-okxwallet/1.0.1: + resolution: {integrity: sha512-Sch5VVXYoEe21abWniFpou15oU4fLL4nrYPAVlowZ3h8aHJCMsTuQRh5ASS9PG8zRwnw3SxwPtFEtWjSRE/rOQ==} + engines: {node: '>=16', pnpm: '>=7'} + dependencies: + '@tronweb3/tronwallet-abstract-adapter': 1.1.5 + '@tronweb3/tronwallet-adapter-tronlink': 1.1.7 + dev: false + + /@tronweb3/tronwallet-adapter-react-hooks/1.1.5_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-o+KeVatg2NcP1QCXmY797QkDNMeXw+p2Fs60WkJR6oswv6PHp5y5wW2zAD1zIDfQ/ffCQUN/8i8BsE2txL/FqQ==} + engines: {node: '>=16', pnpm: '>=7'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@tronweb3/tronwallet-abstract-adapter': 1.1.5 + '@tronweb3/tronwallet-adapter-tronlink': 1.1.7 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@tronweb3/tronwallet-adapter-react-ui/1.1.6_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-1Cs+WM+FuuId8ctmvCTrGDKxgNZhJMFn8K1Z7Y5+dwIUKt6YfsflMeHROhhGqAZgBlr1xnxmsEVPuXJ7xyKWag==} + engines: {node: '>=16', pnpm: '>=7'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@tronweb3/tronwallet-abstract-adapter': 1.1.5 + '@tronweb3/tronwallet-adapter-react-hooks': 1.1.5_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@tronweb3/tronwallet-adapter-tokenpocket/1.0.1: + resolution: {integrity: sha512-fz8aBLd6NTBLWZfrN6xnVDClKJxwsEj7VkokghL5EmdUnwH8RSHFWNSuQ7ECiVDO3eKJtM6FHh4+PTEPw14fyg==} + engines: {node: '>=16', pnpm: '>=7'} + dependencies: + '@tronweb3/tronwallet-abstract-adapter': 1.1.5 + '@tronweb3/tronwallet-adapter-tronlink': 1.1.7 + dev: false + + /@tronweb3/tronwallet-adapter-tronlink/1.1.7: + resolution: {integrity: sha512-tIIAGqPBm4O+dx51/p/8RIIf1XiSrspOuakijW5CgYztQpfa/lXPrObTbns/MhuyY/R/blJR4WDSLtGsBQ/5xg==} + engines: {node: '>=16', pnpm: '>=7'} + dependencies: + '@tronweb3/tronwallet-abstract-adapter': 1.1.5 + dev: false + + /@tronweb3/tronwallet-adapter-walletconnect/1.0.4_gs54vy7ddzyteyvodybdnk6y7e: + resolution: {integrity: sha512-ryGItC8qMHjSTNXfrAkxQ4U5oxr0jx9zjBqUtfc+AGtBF05bSqVVosE5CL1ug90u0CXtsGUejgH5WbPBBZrf2w==} + engines: {node: '>=16', pnpm: '>=7'} + dependencies: + '@tronweb3/tronwallet-abstract-adapter': 1.1.5 + '@tronweb3/walletconnect-tron': 2.0.0_lokijs@1.5.12+react@18.2.0 + '@wagmi/core': 1.1.0_kcw4xzi5p6fmxdxkxcyd7hvevi + '@walletconnect/sign-client': 2.7.7_lokijs@1.5.12 + '@walletconnect/types': 2.7.7_lokijs@1.5.12 + '@web3modal/ethereum': 2.4.2_4yqj3wxh7itmwcbsrv43ezfuau + viem: 0.3.50_typescript@4.9.3 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - debug + - encoding + - immer + - lokijs + - react + - supports-color + - typescript + - utf-8-validate + - zod + dev: false + + /@tronweb3/tronwallet-adapter-walletconnect/1.0.4_j5ip3o3v6sktjzl5cxtjyfbuo4: + resolution: {integrity: sha512-ryGItC8qMHjSTNXfrAkxQ4U5oxr0jx9zjBqUtfc+AGtBF05bSqVVosE5CL1ug90u0CXtsGUejgH5WbPBBZrf2w==} + engines: {node: '>=16', pnpm: '>=7'} + dependencies: + '@tronweb3/tronwallet-abstract-adapter': 1.1.5 + '@tronweb3/walletconnect-tron': 2.0.0_react@18.2.0 + '@wagmi/core': 1.1.0_fivdkur5hwgpp45yi65gbqhb5i + '@walletconnect/sign-client': 2.7.7 + '@walletconnect/types': 2.7.7 + '@web3modal/ethereum': 2.4.2_4yqj3wxh7itmwcbsrv43ezfuau + viem: 0.3.50_typescript@4.9.5 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - debug + - encoding + - immer + - lokijs + - react + - supports-color + - typescript + - utf-8-validate + - zod + dev: false + + /@tronweb3/tronwallet-adapters/1.1.7_gs54vy7ddzyteyvodybdnk6y7e: + resolution: {integrity: sha512-QFhoA7AOdhzyJaJC7CVpmf/wtrx42GGOkzWT+VoSJugL4hBUJ884GhRMzrIR6HjW155npkYr0mFjMJkTOf/eyQ==} + engines: {node: '>=16', pnpm: '>=7'} + dependencies: + '@tronweb3/tronwallet-adapter-bitkeep': 1.0.1 + '@tronweb3/tronwallet-adapter-ledger': 1.1.7 + '@tronweb3/tronwallet-adapter-okxwallet': 1.0.1 + '@tronweb3/tronwallet-adapter-tokenpocket': 1.0.1 + '@tronweb3/tronwallet-adapter-tronlink': 1.1.7 + '@tronweb3/tronwallet-adapter-walletconnect': 1.0.4_gs54vy7ddzyteyvodybdnk6y7e + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - debug + - encoding + - immer + - lokijs + - react + - supports-color + - typescript + - utf-8-validate + - zod + dev: false + + /@tronweb3/tronwallet-adapters/1.1.7_j5ip3o3v6sktjzl5cxtjyfbuo4: + resolution: {integrity: sha512-QFhoA7AOdhzyJaJC7CVpmf/wtrx42GGOkzWT+VoSJugL4hBUJ884GhRMzrIR6HjW155npkYr0mFjMJkTOf/eyQ==} + engines: {node: '>=16', pnpm: '>=7'} + dependencies: + '@tronweb3/tronwallet-adapter-bitkeep': 1.0.1 + '@tronweb3/tronwallet-adapter-ledger': 1.1.7 + '@tronweb3/tronwallet-adapter-okxwallet': 1.0.1 + '@tronweb3/tronwallet-adapter-tokenpocket': 1.0.1 + '@tronweb3/tronwallet-adapter-tronlink': 1.1.7 + '@tronweb3/tronwallet-adapter-walletconnect': 1.0.4_j5ip3o3v6sktjzl5cxtjyfbuo4 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - debug + - encoding + - immer + - lokijs + - react + - supports-color + - typescript + - utf-8-validate + - zod dev: false /@tronweb3/walletconnect-tron/2.0.0: @@ -4868,6 +5519,43 @@ packages: - utf-8-validate dev: false + /@tronweb3/walletconnect-tron/2.0.0_lokijs@1.5.12+react@18.2.0: + resolution: {integrity: sha512-COAm1zOnCUHKU+rMFsTDYn5PX9fD8z1/QItHNpWo33BBDPk+nZfz0mK7orGpVOpO5IcOG33AsyGxqv/C/gJnTQ==} + dependencies: + '@walletconnect/sign-client': 2.7.7_lokijs@1.5.12 + '@walletconnect/utils': 2.7.7_lokijs@1.5.12 + '@web3modal/standalone': 2.4.2_react@18.2.0 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - lokijs + - react + - utf-8-validate + dev: false + + /@tronweb3/walletconnect-tron/2.0.0_react@18.2.0: + resolution: {integrity: sha512-COAm1zOnCUHKU+rMFsTDYn5PX9fD8z1/QItHNpWo33BBDPk+nZfz0mK7orGpVOpO5IcOG33AsyGxqv/C/gJnTQ==} + dependencies: + '@walletconnect/sign-client': 2.7.7 + '@walletconnect/utils': 2.7.7 + '@web3modal/standalone': 2.4.2_react@18.2.0 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - lokijs + - react + - utf-8-validate + dev: false + + /@trufflesuite/uws-js-unofficial/20.10.0-unofficial.2: + resolution: {integrity: sha512-oQQlnS3oNeGsgS4K3KCSSavJgSb0W9D5ktZs4FacX9VbM7b+NlhjH96d6/G4fMrz+bc5MXRyco419on0X0dvRA==} + dependencies: + ws: 8.2.3_lfy3lj2jvemch5kgpjwtdixywm + optionalDependencies: + bufferutil: 4.0.5 + utf-8-validate: 5.0.7 + dev: false + /@trysound/sax/0.2.0: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} @@ -4913,24 +5601,30 @@ packages: dependencies: '@babel/types': 7.20.7 + /@types/bn.js/5.1.1: + resolution: {integrity: sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==} + dependencies: + '@types/node': 18.13.0 + dev: false + /@types/body-parser/1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 16.18.12 + '@types/node': 18.13.0 dev: false /@types/bonjour/3.5.10: resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==} dependencies: - '@types/node': 16.18.12 + '@types/node': 18.13.0 dev: false /@types/connect-history-api-fallback/1.3.5: resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==} dependencies: '@types/express-serve-static-core': 4.17.33 - '@types/node': 16.18.12 + '@types/node': 18.13.0 dev: false /@types/connect/3.4.35: @@ -4970,7 +5664,7 @@ packages: /@types/express-serve-static-core/4.17.33: resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: - '@types/node': 16.18.12 + '@types/node': 18.13.0 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: false @@ -4996,7 +5690,7 @@ packages: /@types/http-proxy/1.17.9: resolution: {integrity: sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==} dependencies: - '@types/node': 16.18.12 + '@types/node': 18.13.0 dev: false /@types/is-ci/3.0.0: @@ -5006,15 +5700,15 @@ packages: dev: true /@types/istanbul-lib-coverage/2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz} + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} /@types/istanbul-lib-report/3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz} + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 /@types/istanbul-reports/3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz} + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 @@ -5024,13 +5718,20 @@ packages: jest-matcher-utils: 27.5.1 pretty-format: 27.5.1 + /@types/jsdom/16.2.15: + resolution: {integrity: sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==} + dependencies: + '@types/node': 18.13.0 + '@types/parse5': 6.0.3 + '@types/tough-cookie': 4.0.2 + dev: true + /@types/jsdom/20.0.1: - resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz} + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: '@types/node': 18.13.0 '@types/tough-cookie': 4.0.2 parse5: 7.1.2 - dev: true /@types/json-schema/7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz} @@ -5039,6 +5740,10 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: false + /@types/lru-cache/5.1.1: + resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} + dev: false + /@types/mime/3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} dev: false @@ -5073,6 +5778,10 @@ packages: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: false + /@types/parse5/6.0.3: + resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} + dev: true + /@types/prettier/2.7.2: resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} @@ -5132,7 +5841,7 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 16.18.12 + '@types/node': 18.13.0 dev: false /@types/retry/0.12.0: @@ -5142,6 +5851,10 @@ packages: /@types/scheduler/0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + /@types/seedrandom/3.0.1: + resolution: {integrity: sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw==} + dev: false + /@types/semver/6.2.3: resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} dev: true @@ -5159,17 +5872,17 @@ packages: resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: '@types/mime': 3.0.1 - '@types/node': 16.18.12 + '@types/node': 18.13.0 dev: false /@types/sockjs/0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: - '@types/node': 16.18.12 + '@types/node': 18.13.0 dev: false /@types/stack-utils/2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz} + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} /@types/testing-library__jest-dom/5.14.5: resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} @@ -5177,8 +5890,7 @@ packages: '@types/jest': 27.5.2 /@types/tough-cookie/4.0.2: - resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz} - dev: true + resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} /@types/trusted-types/2.0.2: resolution: {integrity: sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==} @@ -5193,11 +5905,11 @@ packages: /@types/ws/8.5.4: resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} dependencies: - '@types/node': 16.18.12 + '@types/node': 18.13.0 dev: false /@types/yargs-parser/21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz} + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} /@types/yargs/16.0.5: resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} @@ -5206,7 +5918,7 @@ packages: dev: false /@types/yargs/17.0.22: - resolution: {integrity: sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.22.tgz} + resolution: {integrity: sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==} dependencies: '@types/yargs-parser': 21.0.0 @@ -5461,21 +6173,43 @@ packages: optional: true dev: false - /@wagmi/connectors/2.1.0_ci2f4e66izr4onw4rlqk6h23fy: - resolution: {integrity: sha512-bmBMHOEeLQsv9YedDkZwbmYIh82x9CsvSUjD7kAHeSHLOO8Fod6/sBuVKMrAAjoTOaCpliTqKit6TUlZxw8yOg==} + /@wagmi/chains/1.0.0_typescript@4.9.3: + resolution: {integrity: sha512-eNbqRWyHbivcMNq5tbXJks4NaOzVLHnNQauHPeE/EDT9AlpqzcrMc+v2T1/2Iw8zN4zgqB86NCsxeJHJs7+xng==} peerDependencies: - '@wagmi/chains': '>=1.0.0' typescript: '>=5.0.4' - viem: ~0.3.35 peerDependenciesMeta: - '@wagmi/chains': - optional: true typescript: optional: true dependencies: - '@coinbase/wallet-sdk': 3.6.6 - '@ledgerhq/connect-kit-loader': 1.0.2 - '@safe-global/safe-apps-provider': 0.15.2 + typescript: 4.9.3 + dev: false + + /@wagmi/chains/1.0.0_typescript@4.9.5: + resolution: {integrity: sha512-eNbqRWyHbivcMNq5tbXJks4NaOzVLHnNQauHPeE/EDT9AlpqzcrMc+v2T1/2Iw8zN4zgqB86NCsxeJHJs7+xng==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 4.9.5 + dev: false + + /@wagmi/connectors/2.1.0_ci2f4e66izr4onw4rlqk6h23fy: + resolution: {integrity: sha512-bmBMHOEeLQsv9YedDkZwbmYIh82x9CsvSUjD7kAHeSHLOO8Fod6/sBuVKMrAAjoTOaCpliTqKit6TUlZxw8yOg==} + peerDependencies: + '@wagmi/chains': '>=1.0.0' + typescript: '>=5.0.4' + viem: ~0.3.35 + peerDependenciesMeta: + '@wagmi/chains': + optional: true + typescript: + optional: true + dependencies: + '@coinbase/wallet-sdk': 3.6.6 + '@ledgerhq/connect-kit-loader': 1.0.2 + '@safe-global/safe-apps-provider': 0.15.2 '@safe-global/safe-apps-sdk': 7.11.0 '@wagmi/chains': 1.0.0 '@walletconnect/ethereum-provider': 2.7.7_5jpohlzmviehayqpe253dhbiw4 @@ -5496,6 +6230,136 @@ packages: - zod dev: false + /@wagmi/connectors/2.1.0_ilqczmunl2chnoqfmaulxgqaqu: + resolution: {integrity: sha512-bmBMHOEeLQsv9YedDkZwbmYIh82x9CsvSUjD7kAHeSHLOO8Fod6/sBuVKMrAAjoTOaCpliTqKit6TUlZxw8yOg==} + peerDependencies: + '@wagmi/chains': '>=1.0.0' + typescript: '>=5.0.4' + viem: ~0.3.35 + peerDependenciesMeta: + '@wagmi/chains': + optional: true + typescript: + optional: true + dependencies: + '@coinbase/wallet-sdk': 3.6.6 + '@ledgerhq/connect-kit-loader': 1.0.2 + '@safe-global/safe-apps-provider': 0.15.2 + '@safe-global/safe-apps-sdk': 7.11.0 + '@wagmi/chains': 1.0.0_typescript@4.9.3 + '@walletconnect/ethereum-provider': 2.7.7_6mu4bj3zn4mzkqhhaiv4y7kvee + '@walletconnect/legacy-provider': 2.0.0 + '@web3modal/standalone': 2.4.2_react@18.2.0 + abitype: 0.8.7_typescript@4.9.3 + eventemitter3: 4.0.7 + typescript: 4.9.3 + viem: 0.3.50_typescript@4.9.3 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - debug + - encoding + - lokijs + - react + - supports-color + - utf-8-validate + - zod + dev: false + + /@wagmi/connectors/2.1.0_lql7xgplfpy4emqajl2zhm3pta: + resolution: {integrity: sha512-bmBMHOEeLQsv9YedDkZwbmYIh82x9CsvSUjD7kAHeSHLOO8Fod6/sBuVKMrAAjoTOaCpliTqKit6TUlZxw8yOg==} + peerDependencies: + '@wagmi/chains': '>=1.0.0' + typescript: '>=5.0.4' + viem: ~0.3.35 + peerDependenciesMeta: + '@wagmi/chains': + optional: true + typescript: + optional: true + dependencies: + '@coinbase/wallet-sdk': 3.6.6 + '@ledgerhq/connect-kit-loader': 1.0.2 + '@safe-global/safe-apps-provider': 0.15.2 + '@safe-global/safe-apps-sdk': 7.11.0 + '@wagmi/chains': 1.0.0_typescript@4.9.5 + '@walletconnect/ethereum-provider': 2.7.7_5jpohlzmviehayqpe253dhbiw4 + '@walletconnect/legacy-provider': 2.0.0 + '@web3modal/standalone': 2.4.2_react@18.2.0 + abitype: 0.8.7_typescript@4.9.5 + eventemitter3: 4.0.7 + typescript: 4.9.5 + viem: 0.3.50_typescript@4.9.5 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - debug + - encoding + - lokijs + - react + - supports-color + - utf-8-validate + - zod + dev: false + + /@wagmi/core/1.1.0_fivdkur5hwgpp45yi65gbqhb5i: + resolution: {integrity: sha512-4EB/Huw4SEXZk45IypPlTj1b7g48fFHk9C5bipdtgD14EwMTdk+z774ViWAI8C+MHPsGBE1rrGMxlDZohdAmPA==} + peerDependencies: + typescript: '>=5.0.4' + viem: ~0.3.35 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@wagmi/chains': 1.0.0_typescript@4.9.5 + '@wagmi/connectors': 2.1.0_lql7xgplfpy4emqajl2zhm3pta + abitype: 0.8.7_typescript@4.9.5 + eventemitter3: 4.0.7 + typescript: 4.9.5 + viem: 0.3.50_typescript@4.9.5 + zustand: 4.3.8_react@18.2.0 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - debug + - encoding + - immer + - lokijs + - react + - supports-color + - utf-8-validate + - zod + dev: false + + /@wagmi/core/1.1.0_kcw4xzi5p6fmxdxkxcyd7hvevi: + resolution: {integrity: sha512-4EB/Huw4SEXZk45IypPlTj1b7g48fFHk9C5bipdtgD14EwMTdk+z774ViWAI8C+MHPsGBE1rrGMxlDZohdAmPA==} + peerDependencies: + typescript: '>=5.0.4' + viem: ~0.3.35 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@wagmi/chains': 1.0.0_typescript@4.9.3 + '@wagmi/connectors': 2.1.0_ilqczmunl2chnoqfmaulxgqaqu + abitype: 0.8.7_typescript@4.9.3 + eventemitter3: 4.0.7 + typescript: 4.9.3 + viem: 0.3.50_typescript@4.9.3 + zustand: 4.3.8_react@18.2.0 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - debug + - encoding + - immer + - lokijs + - react + - supports-color + - utf-8-validate + - zod + dev: false + /@wagmi/core/1.1.0_viem@0.3.50: resolution: {integrity: sha512-4EB/Huw4SEXZk45IypPlTj1b7g48fFHk9C5bipdtgD14EwMTdk+z774ViWAI8C+MHPsGBE1rrGMxlDZohdAmPA==} peerDependencies: @@ -5580,6 +6444,32 @@ packages: - utf-8-validate dev: false + /@walletconnect/core/2.7.7_lokijs@1.5.12: + resolution: {integrity: sha512-/Tmrjx9XDG8qylsUFU2fWvMoxlDwW+zzUcCgTaebMAmssCZ8NSknbBdjAdAKiey1TaLEgFkaCxXgXfioinWNYg==} + dependencies: + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.11 + '@walletconnect/keyvaluestorage': 1.0.2_lokijs@1.5.12 + '@walletconnect/logger': 2.0.1 + '@walletconnect/relay-api': 1.0.9 + '@walletconnect/relay-auth': 1.0.4 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.7.7_lokijs@1.5.12 + '@walletconnect/utils': 2.7.7_lokijs@1.5.12 + events: 3.3.0 + lodash.isequal: 4.5.0 + uint8arrays: 3.1.0 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - lokijs + - utf-8-validate + dev: false + /@walletconnect/crypto/1.0.3: resolution: {integrity: sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g==} dependencies: @@ -5632,6 +6522,33 @@ packages: - utf-8-validate dev: false + /@walletconnect/ethereum-provider/2.7.7_6mu4bj3zn4mzkqhhaiv4y7kvee: + resolution: {integrity: sha512-wVVMgpMMcPySBKHAPu7QfL18TMrjAgOePz/mfuOjWal+vT9yVSPA34oFyHlzJKvcQ/abP7Zj3AzDtZbyXWRxwQ==} + peerDependencies: + '@web3modal/standalone': '>=2' + peerDependenciesMeta: + '@web3modal/standalone': + optional: true + dependencies: + '@walletconnect/jsonrpc-http-connection': 1.0.7 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/sign-client': 2.7.7_lokijs@1.5.12 + '@walletconnect/types': 2.7.7_lokijs@1.5.12 + '@walletconnect/universal-provider': 2.7.7_lokijs@1.5.12 + '@walletconnect/utils': 2.7.7_lokijs@1.5.12 + '@web3modal/standalone': 2.4.2_react@18.2.0 + events: 3.3.0 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - debug + - encoding + - lokijs + - utf-8-validate + dev: false + /@walletconnect/events/1.0.1: resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} dependencies: @@ -5759,6 +6676,22 @@ packages: tslib: 1.14.1 dev: false + /@walletconnect/keyvaluestorage/1.0.2_lokijs@1.5.12: + resolution: {integrity: sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ==} + peerDependencies: + '@react-native-async-storage/async-storage': 1.x + lokijs: 1.x + peerDependenciesMeta: + '@react-native-async-storage/async-storage': + optional: true + lokijs: + optional: true + dependencies: + lokijs: 1.5.12 + safe-json-utils: 1.1.1 + tslib: 1.14.1 + dev: false + /@walletconnect/legacy-client/2.0.0: resolution: {integrity: sha512-v5L7rYk9loVnfvUf0mF+76bUPFaU5/Vh7mzL6/950CD/yoGdzYZ3Kj+L7mkC6HPMEGeQsBP1+sqBuiVGZ/aODA==} dependencies: @@ -5913,6 +6846,25 @@ packages: - utf-8-validate dev: false + /@walletconnect/sign-client/2.7.7_lokijs@1.5.12: + resolution: {integrity: sha512-lTyF8ZEp+HwPNBW/Fw5iWnMm9O5tC1qwf5YfhNczZ7+q6+UUopOoRrsAvwqftJIkgKmfC8lHT52G/XM2JGVjbQ==} + dependencies: + '@walletconnect/core': 2.7.7_lokijs@1.5.12 + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.0.1 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.7.7_lokijs@1.5.12 + '@walletconnect/utils': 2.7.7_lokijs@1.5.12 + events: 3.3.0 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - lokijs + - utf-8-validate + dev: false + /@walletconnect/time/1.0.2: resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} dependencies: @@ -5951,6 +6903,20 @@ packages: - lokijs dev: false + /@walletconnect/types/2.7.7_lokijs@1.5.12: + resolution: {integrity: sha512-Z4Y+BKPX7X1UBCf7QV35mVy2QU9CS+5G+EthCaJwpieirZNHamHEwNXUjuUUb3PrYOLwlfRYUT5edeFW9wvoeQ==} + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/keyvaluestorage': 1.0.2_lokijs@1.5.12 + '@walletconnect/logger': 2.0.1 + events: 3.3.0 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - lokijs + dev: false + /@walletconnect/universal-provider/2.7.7: resolution: {integrity: sha512-MY+R1sLmIKjFYjanWUM6bOM077+SnShSUfSjCTrsoZE2RDddcSz9EtcATovBSPfzPwUTS20mgcgrkRT4zrFRyQ==} dependencies: @@ -5973,6 +6939,28 @@ packages: - utf-8-validate dev: false + /@walletconnect/universal-provider/2.7.7_lokijs@1.5.12: + resolution: {integrity: sha512-MY+R1sLmIKjFYjanWUM6bOM077+SnShSUfSjCTrsoZE2RDddcSz9EtcATovBSPfzPwUTS20mgcgrkRT4zrFRyQ==} + dependencies: + '@walletconnect/jsonrpc-http-connection': 1.0.7 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.0.1 + '@walletconnect/sign-client': 2.7.7_lokijs@1.5.12 + '@walletconnect/types': 2.7.7_lokijs@1.5.12 + '@walletconnect/utils': 2.7.7_lokijs@1.5.12 + eip1193-provider: 1.0.1 + events: 3.3.0 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - debug + - encoding + - lokijs + - utf-8-validate + dev: false + /@walletconnect/utils/2.4.0: resolution: {integrity: sha512-wXmy35hCpCNQLr21uFYM0+Wu1ON5J8bKTZ5x4FKaaw5qL24gjHridqUwdepjjkMpU1l3JX2OJGpmmKMyCBSu0g==} dependencies: @@ -6022,17 +7010,39 @@ packages: - lokijs dev: false - /@walletconnect/window-getters/1.0.1: - resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} - dependencies: - tslib: 1.14.1 - dev: false - - /@walletconnect/window-metadata/1.0.1: - resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + /@walletconnect/utils/2.7.7_lokijs@1.5.12: + resolution: {integrity: sha512-ozh9gvRAdXkiu+6nOAkoDCokDVPXK/tNATrrYuOhhR+EmGDjlZU2d27HT+HiGREdza0b1HdZN4XneGm0gERV5w==} dependencies: + '@stablelib/chacha20poly1305': 1.0.1 + '@stablelib/hkdf': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/sha256': 1.0.1 + '@stablelib/x25519': 1.0.3 + '@walletconnect/relay-api': 1.0.9 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.7.7_lokijs@1.5.12 '@walletconnect/window-getters': 1.0.1 - tslib: 1.14.1 + '@walletconnect/window-metadata': 1.0.1 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.0 + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - lokijs + dev: false + + /@walletconnect/window-getters/1.0.1: + resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} + dependencies: + tslib: 1.14.1 + dev: false + + /@walletconnect/window-metadata/1.0.1: + resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + dependencies: + '@walletconnect/window-getters': 1.0.1 + tslib: 1.14.1 dev: false /@web3modal/core/2.4.2: @@ -6044,6 +7054,15 @@ packages: - react dev: false + /@web3modal/core/2.4.2_react@18.2.0: + resolution: {integrity: sha512-/pQjARcyaGsGuYWDa+1Pygk0T52mweyrmkL9WAbBtB9eY40sYg5Xg46dn77Nvr8lf+dwJyDrv5hKMe7Ya6mu0g==} + dependencies: + buffer: 6.0.3 + valtio: 1.10.5_react@18.2.0 + transitivePeerDependencies: + - react + dev: false + /@web3modal/ethereum/2.4.2_4yqj3wxh7itmwcbsrv43ezfuau: resolution: {integrity: sha512-+Az66aERwJNTFKg1HDl/QW2c0i9zL+7pUDuycKwCNTnMcrotRKBYwIMdUFr3ff02+nFQtexHX/Bj9JOX5LhPbA==} peerDependencies: @@ -6063,6 +7082,15 @@ packages: - react dev: false + /@web3modal/standalone/2.4.2_react@18.2.0: + resolution: {integrity: sha512-0j6MfI4jHdJ7w3WrwVJLPuFH9sIwFg+Qwj6GYtU8xdL/IyHxlkkzYzTbZTneuk3XIK1ZZFkMxx5pa947Arm+PQ==} + dependencies: + '@web3modal/core': 2.4.2_react@18.2.0 + '@web3modal/ui': 2.4.2_react@18.2.0 + transitivePeerDependencies: + - react + dev: false + /@web3modal/ui/2.4.2: resolution: {integrity: sha512-35USuKCSXVIdQqn83/MBq8cpcjD3kCxPUOeQmX9MVDJUCbz3l3AX+Iimf2hBe5comoxkVUjlKT1cx4y184/aOA==} dependencies: @@ -6074,6 +7102,17 @@ packages: - react dev: false + /@web3modal/ui/2.4.2_react@18.2.0: + resolution: {integrity: sha512-35USuKCSXVIdQqn83/MBq8cpcjD3kCxPUOeQmX9MVDJUCbz3l3AX+Iimf2hBe5comoxkVUjlKT1cx4y184/aOA==} + dependencies: + '@web3modal/core': 2.4.2_react@18.2.0 + lit: 2.7.4 + motion: 10.16.2 + qrcode: 1.5.3 + transitivePeerDependencies: + - react + dev: false + /@webassemblyjs/ast/1.11.1: resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz} dependencies: @@ -6213,7 +7252,7 @@ packages: through: 2.3.8 /abab/2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz} + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} /abitype/0.8.7: resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} @@ -6225,6 +7264,30 @@ packages: optional: true dev: false + /abitype/0.8.7_typescript@4.9.3: + resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.19.1 + peerDependenciesMeta: + zod: + optional: true + dependencies: + typescript: 4.9.3 + dev: false + + /abitype/0.8.7_typescript@4.9.5: + resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.19.1 + peerDependenciesMeta: + zod: + optional: true + dependencies: + typescript: 4.9.5 + dev: false + /abort-controller/3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -6232,6 +7295,31 @@ packages: event-target-shim: 5.0.1 dev: true + /abstract-level/1.0.3: + resolution: {integrity: sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==} + engines: {node: '>=12'} + dependencies: + buffer: 6.0.3 + catering: 2.1.1 + is-buffer: 2.0.5 + level-supports: 4.0.1 + level-transcoder: 1.0.1 + module-error: 1.0.2 + queue-microtask: 1.2.3 + dev: false + + /abstract-leveldown/7.2.0: + resolution: {integrity: sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==} + engines: {node: '>=10'} + dependencies: + buffer: 6.0.3 + catering: 2.1.1 + is-buffer: 2.0.5 + level-concat-iterator: 3.1.0 + level-supports: 2.1.0 + queue-microtask: 1.2.3 + dev: false + /accepts/1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -6241,18 +7329,16 @@ packages: dev: false /acorn-globals/6.0.0: - resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz} + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} dependencies: acorn: 7.4.1 acorn-walk: 7.2.0 - dev: false /acorn-globals/7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz} + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: acorn: 8.8.2 acorn-walk: 8.2.0 - dev: true /acorn-import-assertions/1.8.0_acorn@8.8.2: resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz} @@ -6279,17 +7365,15 @@ packages: /acorn-walk/7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} - dev: false /acorn-walk/8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz} + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} /acorn/7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz} + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true - dev: false /acorn/8.8.2: resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} @@ -6317,7 +7401,7 @@ packages: dev: false /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz} + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: debug: 4.3.4 @@ -6569,6 +7653,12 @@ packages: engines: {node: '>=8'} dev: true + /async-eventemitter/0.2.4: + resolution: {integrity: sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==} + dependencies: + async: 2.6.4 + dev: false + /async-mutex/0.2.6: resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} dependencies: @@ -6579,14 +7669,13 @@ packages: resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} dependencies: lodash: 4.17.21 - dev: true /async/3.2.4: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} dev: false /asynckit/0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz} + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} /at-least-node/1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} @@ -6662,6 +7751,24 @@ packages: - supports-color dev: false + /babel-jest/28.1.3_@babel+core@7.20.12: + resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.20.12 + '@jest/transform': 28.1.3 + '@types/babel__core': 7.20.0 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 28.1.3_@babel+core@7.20.12 + chalk: 4.1.2 + graceful-fs: 4.2.10 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /babel-jest/29.4.2_@babel+core@7.20.12: resolution: {integrity: sha512-vcghSqhtowXPG84posYkkkzcZsdayFkubUgbE3/1tuGbX7AQtwCkkNA/wIbB0BMjuCPoqTkiDyKN7Ty7d3uwNQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6680,6 +7787,24 @@ packages: - supports-color dev: true + /babel-jest/29.6.2_@babel+core@7.20.12: + resolution: {integrity: sha512-BYCzImLos6J3BH/+HvUCHG1dTf2MzmAB4jaVxHV+29RZLjR29XuYTmsf2sdDwkrb+FczkGo3kOhE7ga6sI0P4A==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.20.12 + '@jest/transform': 29.6.2 + '@types/babel__core': 7.20.0 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.5.0_@babel+core@7.20.12 + chalk: 4.1.2 + graceful-fs: 4.2.10 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /babel-loader/8.3.0_ricsl3eq2klmpdpfimb5xusm5y: resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} engines: {node: '>= 8.9'} @@ -6717,6 +7842,16 @@ packages: '@types/babel__traverse': 7.18.3 dev: false + /babel-plugin-jest-hoist/28.1.3: + resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.20.7 + '@types/babel__core': 7.20.0 + '@types/babel__traverse': 7.18.3 + dev: true + /babel-plugin-jest-hoist/29.4.2: resolution: {integrity: sha512-5HZRCfMeWypFEonRbEkwWXtNS1sQK159LhRVyRuLzyfVBxDy/34Tr/rg4YVi0SScSJ4fqeaR/OIeceJ/LaQ0pQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6727,6 +7862,16 @@ packages: '@types/babel__traverse': 7.18.3 dev: true + /babel-plugin-jest-hoist/29.5.0: + resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.20.7 + '@types/babel__core': 7.20.0 + '@types/babel__traverse': 7.18.3 + dev: false + /babel-plugin-macros/3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} @@ -6814,6 +7959,17 @@ packages: babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 dev: false + /babel-preset-jest/28.1.3_@babel+core@7.20.12: + resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + babel-plugin-jest-hoist: 28.1.3 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + dev: true + /babel-preset-jest/29.4.2_@babel+core@7.20.12: resolution: {integrity: sha512-ecWdaLY/8JyfUDr0oELBMpj3R5I1L6ZqG+kRJmwqfHtLWuPrJStR0LUkvUhfykJWTsXXMnohsayN/twltBbDrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6825,6 +7981,17 @@ packages: babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 dev: true + /babel-preset-jest/29.5.0_@babel+core@7.20.12: + resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + babel-plugin-jest-hoist: 29.5.0 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + dev: false + /babel-preset-react-app/10.0.1: resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} dependencies: @@ -6994,7 +8161,6 @@ packages: /browser-process-hrtime/1.0.0: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - dev: false /browser-stdout/1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} @@ -7056,7 +8222,7 @@ packages: dev: false /browserslist/4.21.5: - resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz} + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: @@ -7096,6 +8262,14 @@ packages: base64-js: 1.5.1 ieee754: 1.2.1 + /bufferutil/4.0.5: + resolution: {integrity: sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.6.0 + dev: false + /bufferutil/4.0.7: resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} engines: {node: '>=6.14.2'} @@ -7172,13 +8346,18 @@ packages: dev: false /caniuse-lite/1.0.30001451: - resolution: {integrity: sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz} + resolution: {integrity: sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==} /case-sensitive-paths-webpack-plugin/2.4.0: resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} engines: {node: '>=4'} dev: false + /catering/2.1.1: + resolution: {integrity: sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==} + engines: {node: '>=6'} + dev: false + /chai/4.3.7: resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} @@ -7255,7 +8434,7 @@ packages: engines: {node: '>=6.0'} /ci-info/3.7.1: - resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.1.tgz} + resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} engines: {node: '>=8'} /cipher-base/1.0.4: @@ -7329,7 +8508,6 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true /clone-deep/4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} @@ -7391,7 +8569,7 @@ packages: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} /combined-stream/1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz} + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 @@ -7519,7 +8697,6 @@ packages: /convert-source-map/2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true /cookie-signature/1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} @@ -7898,18 +9075,17 @@ packages: dev: false /cssom/0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz} + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} /cssom/0.4.4: resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz} dev: false /cssom/0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz} - dev: true + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} /cssstyle/2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz} + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} dependencies: cssom: 0.3.8 @@ -7958,13 +9134,12 @@ packages: dev: false /data-urls/3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz} + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} dependencies: abab: 2.0.6 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - dev: true /dateformat/4.6.3: resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} @@ -8034,7 +9209,7 @@ packages: dev: false /decimal.js/10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz} + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} /decode-uri-component/0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} @@ -8044,6 +9219,15 @@ packages: /dedent/0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + /dedent/1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: false + /deep-eql/4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} @@ -8114,7 +9298,7 @@ packages: dev: false /delayed-stream/1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz} + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} /depd/1.1.2: @@ -8185,11 +9369,21 @@ packages: resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /diff-sequences/28.1.1: + resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true + /diff-sequences/29.4.2: resolution: {integrity: sha512-R6P0Y6PrsH3n4hUXxL3nns0rbRk6Q33js3ygJBeEpbzLzgcNuJ61+u0RXasFpTKISw99TxUzFnumSnRLsjhLaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true + /diff-sequences/29.4.3: + resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: false + /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -8291,11 +9485,10 @@ packages: dev: false /domexception/4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz} + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} dependencies: webidl-conversions: 7.0.0 - dev: true /domhandler/4.3.1: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} @@ -8342,6 +9535,11 @@ packages: engines: {node: '>=10'} dev: false + /dotenv/16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + engines: {node: '>=12'} + dev: true + /duplexer/0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: false @@ -8382,7 +9580,7 @@ packages: dev: false /electron-to-chromium/1.4.294: - resolution: {integrity: sha512-PuHZB3jEN7D8WPPjLmBQAsqQz8tWHlkkB4n0E2OYw8RwVdmBYV0Wn+rUFH8JqYyIRb4HQhhedgxlZL163wqLrQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.294.tgz} + resolution: {integrity: sha512-PuHZB3jEN7D8WPPjLmBQAsqQz8tWHlkkB4n0E2OYw8RwVdmBYV0Wn+rUFH8JqYyIRb4HQhhedgxlZL163wqLrQ==} /elliptic/6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -8399,15 +9597,18 @@ packages: resolution: {integrity: sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==} dev: true + /emittery/0.10.0: + resolution: {integrity: sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ==} + engines: {node: '>=12'} + dev: false + /emittery/0.10.2: resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} engines: {node: '>=12'} - dev: false /emittery/0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} - dev: true /emittery/0.8.1: resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} @@ -8458,9 +9659,8 @@ packages: dev: false /entities/4.4.0: - resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz} + resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} engines: {node: '>=0.12'} - dev: true /envinfo/7.8.1: resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} @@ -8779,7 +9979,7 @@ packages: dev: true /escalade/3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz} + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} /escape-html/1.0.3: @@ -8791,7 +9991,7 @@ packages: engines: {node: '>=0.8.0'} /escape-string-regexp/2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz} + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} /escape-string-regexp/4.0.0: @@ -8799,7 +9999,7 @@ packages: engines: {node: '>=10'} /escodegen/2.0.0: - resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz} + resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} engines: {node: '>=6.0'} hasBin: true dependencies: @@ -9267,7 +10467,7 @@ packages: eslint-visitor-keys: 3.3.0 /esprima/4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz} + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true @@ -9344,6 +10544,15 @@ packages: fast-safe-stringify: 2.1.1 dev: false + /ethereum-cryptography/2.1.2: + resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/bip32': 1.3.1 + '@scure/bip39': 1.2.1 + dev: false + /ethers/5.7.2: resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} dependencies: @@ -9381,13 +10590,21 @@ packages: - bufferutil - utf-8-validate + /ethjs-util/0.1.6: + resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + strip-hex-prefix: 1.0.0 + dev: false + /event-target-shim/5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} dev: true /eventemitter3/3.1.2: - resolution: {integrity: sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz} + resolution: {integrity: sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==} /eventemitter3/4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -9447,6 +10664,17 @@ packages: jest-message-util: 27.5.1 dev: false + /expect/28.1.3: + resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/expect-utils': 28.1.3 + jest-get-type: 28.0.2 + jest-matcher-utils: 28.1.3 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + dev: true + /expect/29.4.2: resolution: {integrity: sha512-+JHYg9O3hd3RlICG90OPVjRkPBoiUH7PxvDVMnRiaq1g6JUgZStX514erMl0v2Dc5SkfVbm7ztqbd6qHHPn+mQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9458,6 +10686,18 @@ packages: jest-util: 29.4.2 dev: true + /expect/29.6.2: + resolution: {integrity: sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.6.2 + '@types/node': 18.13.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.6.2 + jest-message-util: 29.6.2 + jest-util: 29.6.2 + dev: false + /express/4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} @@ -9743,7 +10983,7 @@ packages: memfs: 3.4.13 minimatch: 3.1.2 schema-utils: 2.7.0 - semver: 7.3.8 + semver: 7.5.4 tapable: 1.1.3 typescript: 4.9.5 webpack: 5.78.0 @@ -9759,13 +10999,12 @@ packages: dev: false /form-data/4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz} + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: true /forwarded/0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} @@ -9856,6 +11095,28 @@ packages: /functions-have-names/1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + /ganache/7.9.0: + resolution: {integrity: sha512-KdsTZaAKqDXTNDMKnLzg0ngX8wnZKyVGm7HD03GIyUMVRuXI83s0CUEaGIDWRUWTQP7BE8sDh7QtbW+NoX4zrQ==} + hasBin: true + dependencies: + '@trufflesuite/uws-js-unofficial': 20.10.0-unofficial.2 + '@types/bn.js': 5.1.1 + '@types/lru-cache': 5.1.1 + '@types/seedrandom': 3.0.1 + abstract-level: 1.0.3 + abstract-leveldown: 7.2.0 + async-eventemitter: 0.2.4 + emittery: 0.10.0 + optionalDependencies: + bufferutil: 4.0.5 + utf-8-validate: 5.0.7 + dev: false + bundledDependencies: + - '@trufflesuite/bigint-buffer' + - keccak + - leveldown + - secp256k1 + /gensync/1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -10212,11 +11473,10 @@ packages: dev: false /html-encoding-sniffer/3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz} + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 - dev: true /html-entities/2.3.3: resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} @@ -10303,7 +11563,7 @@ packages: dev: false /http-proxy-agent/5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz} + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: '@tootallnate/once': 2.0.0 @@ -10311,7 +11571,6 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true /http-proxy-middleware/2.0.6_@types+express@4.17.17: resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} @@ -10348,7 +11607,7 @@ packages: dev: false /https-proxy-agent/5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz} + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 @@ -10388,7 +11647,7 @@ packages: safer-buffer: 2.1.2 /iconv-lite/0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz} + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 @@ -10530,6 +11789,11 @@ packages: call-bind: 1.0.2 has-tostringtag: 1.0.0 + /is-buffer/2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: false + /is-callable/1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -10588,6 +11852,11 @@ packages: dependencies: is-extglob: 2.1.1 + /is-hex-prefixed/1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + dev: false + /is-map/2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} @@ -10646,7 +11915,7 @@ packages: dev: true /is-potential-custom-element-name/1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz} + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} /is-regex/1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} @@ -10867,6 +12136,14 @@ packages: throat: 6.0.2 dev: false + /jest-changed-files/28.1.3: + resolution: {integrity: sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + execa: 5.1.1 + p-limit: 3.1.0 + dev: true + /jest-changed-files/29.4.2: resolution: {integrity: sha512-Qdd+AXdqD16PQa+VsWJpxR3kN0JyOCX1iugQfx5nUgAsI4gwsKviXkpclxOK9ZnwaY2IQVHz+771eAvqeOlfuw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10875,6 +12152,14 @@ packages: p-limit: 3.1.0 dev: true + /jest-changed-files/29.5.0: + resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + p-limit: 3.1.0 + dev: false + /jest-circus/27.5.1: resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -10902,6 +12187,33 @@ packages: - supports-color dev: false + /jest-circus/28.1.3: + resolution: {integrity: sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/environment': 28.1.3 + '@jest/expect': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.13.0 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + is-generator-fn: 2.1.0 + jest-each: 28.1.3 + jest-matcher-utils: 28.1.3 + jest-message-util: 28.1.3 + jest-runtime: 28.1.3 + jest-snapshot: 28.1.3 + jest-util: 28.1.3 + p-limit: 3.1.0 + pretty-format: 28.1.3 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - supports-color + dev: true + /jest-circus/29.4.2: resolution: {integrity: sha512-wW3ztp6a2P5c1yOc1Cfrt5ozJ7neWmqeXm/4SYiqcSriyisgq63bwFj1NuRdSR5iqS0CMEYwSZd89ZA47W9zUg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10929,17 +12241,46 @@ packages: - supports-color dev: true - /jest-cli/27.5.1: - resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + /jest-circus/29.6.2: + resolution: {integrity: sha512-G9mN+KOYIUe2sB9kpJkO9Bk18J4dTDArNFPwoZ7WKHKel55eKIS/u2bLthxgojwlf9NLCVQfgzM/WsOVvoC6Fw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/core': 27.5.1 + '@jest/environment': 29.6.2 + '@jest/expect': 29.6.2 + '@jest/test-result': 29.6.2 + '@jest/types': 29.6.1 + '@types/node': 18.13.0 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.1 + is-generator-fn: 2.1.0 + jest-each: 29.6.2 + jest-matcher-utils: 29.6.2 + jest-message-util: 29.6.2 + jest-runtime: 29.6.2 + jest-snapshot: 29.6.2 + jest-util: 29.6.2 + p-limit: 3.1.0 + pretty-format: 29.6.2 + pure-rand: 6.0.2 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: false + + /jest-cli/27.5.1: + resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 chalk: 4.1.2 @@ -10959,6 +12300,34 @@ packages: - utf-8-validate dev: false + /jest-cli/28.1.3: + resolution: {integrity: sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + import-local: 3.1.0 + jest-config: 28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 + prompts: 2.4.2 + yargs: 17.6.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + /jest-cli/29.4.2: resolution: {integrity: sha512-b+eGUtXq/K2v7SH3QcJvFvaUaCDS1/YAZBYz0m28Q/Ppyr+1qNaHmVYikOrbHVbZqYQs2IeI3p76uy6BWbXq8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11015,6 +12384,35 @@ packages: - ts-node dev: true + /jest-cli/29.6.2: + resolution: {integrity: sha512-TT6O247v6dCEX2UGHGyflMpxhnrL0DNqP2fRTKYm3nJJpCTfXX3GCMQPGFjXDoj0i5/Blp3jriKXFgdfmbYB6Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.6.2 + '@jest/test-result': 29.6.2 + '@jest/types': 29.6.1 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + import-local: 3.1.0 + jest-config: 29.6.2 + jest-util: 29.6.2 + jest-validate: 29.6.2 + prompts: 2.4.2 + yargs: 17.6.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: false + /jest-config/27.5.1: resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11055,6 +12453,83 @@ packages: - utf-8-validate dev: false + /jest-config/28.1.3: + resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.20.12 + '@jest/test-sequencer': 28.1.3 + '@jest/types': 28.1.3 + babel-jest: 28.1.3_@babel+core@7.20.12 + chalk: 4.1.2 + ci-info: 3.7.1 + deepmerge: 4.3.0 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-circus: 28.1.3 + jest-environment-node: 28.1.3 + jest-get-type: 28.0.2 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-runner: 28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 28.1.3 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-config/28.1.3_@types+node@18.13.0: + resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.20.12 + '@jest/test-sequencer': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.13.0 + babel-jest: 28.1.3_@babel+core@7.20.12 + chalk: 4.1.2 + ci-info: 3.7.1 + deepmerge: 4.3.0 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-circus: 28.1.3 + jest-environment-node: 28.1.3 + jest-get-type: 28.0.2 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-runner: 28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 28.1.3 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /jest-config/29.4.2: resolution: {integrity: sha512-919CtnXic52YM0zW4C1QxjG6aNueX1kBGthuMtvFtRTAxhKfJmiXC9qwHmi6o2josjbDz8QlWyY55F1SIVmCWA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11132,6 +12607,85 @@ packages: - supports-color dev: true + /jest-config/29.6.2: + resolution: {integrity: sha512-VxwFOC8gkiJbuodG9CPtMRjBUNZEHxwfQXmIudSTzFWxaci3Qub1ddTRbFNQlD/zUeaifLndh/eDccFX4wCMQw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.20.12 + '@jest/test-sequencer': 29.6.2 + '@jest/types': 29.6.1 + babel-jest: 29.6.2_@babel+core@7.20.12 + chalk: 4.1.2 + ci-info: 3.7.1 + deepmerge: 4.3.0 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-circus: 29.6.2 + jest-environment-node: 29.6.2 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.6.2 + jest-runner: 29.6.2 + jest-util: 29.6.2 + jest-validate: 29.6.2 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.6.2 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: false + + /jest-config/29.6.2_@types+node@18.13.0: + resolution: {integrity: sha512-VxwFOC8gkiJbuodG9CPtMRjBUNZEHxwfQXmIudSTzFWxaci3Qub1ddTRbFNQlD/zUeaifLndh/eDccFX4wCMQw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.20.12 + '@jest/test-sequencer': 29.6.2 + '@jest/types': 29.6.1 + '@types/node': 18.13.0 + babel-jest: 29.6.2_@babel+core@7.20.12 + chalk: 4.1.2 + ci-info: 3.7.1 + deepmerge: 4.3.0 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-circus: 29.6.2 + jest-environment-node: 29.6.2 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.6.2 + jest-runner: 29.6.2 + jest-util: 29.6.2 + jest-validate: 29.6.2 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.6.2 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: false + /jest-diff/27.5.1: resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11141,6 +12695,16 @@ packages: jest-get-type: 27.5.1 pretty-format: 27.5.1 + /jest-diff/28.1.3: + resolution: {integrity: sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 28.1.1 + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + dev: true + /jest-diff/29.4.2: resolution: {integrity: sha512-EK8DSajVtnjx9sa1BkjZq3mqChm2Cd8rIzdXkQMA8e0wuXq53ypz6s5o5V8HRZkoEt2ywJ3eeNWFKWeYr8HK4g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11151,6 +12715,16 @@ packages: pretty-format: 29.4.2 dev: true + /jest-diff/29.6.2: + resolution: {integrity: sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.6.2 + dev: false + /jest-docblock/27.5.1: resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11158,6 +12732,13 @@ packages: detect-newline: 3.1.0 dev: false + /jest-docblock/28.1.1: + resolution: {integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + /jest-docblock/29.4.2: resolution: {integrity: sha512-dV2JdahgClL34Y5vLrAHde3nF3yo2jKRH+GIYJuCpfqwEJZcikzeafVTGAjbOfKPG17ez9iWXwUYp7yefeCRag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11165,6 +12746,13 @@ packages: detect-newline: 3.1.0 dev: true + /jest-docblock/29.4.3: + resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: false + /jest-each/27.5.1: resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11176,6 +12764,17 @@ packages: pretty-format: 27.5.1 dev: false + /jest-each/28.1.3: + resolution: {integrity: sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + chalk: 4.1.2 + jest-get-type: 28.0.2 + jest-util: 28.1.3 + pretty-format: 28.1.3 + dev: true + /jest-each/29.4.2: resolution: {integrity: sha512-trvKZb0JYiCndc55V1Yh0Luqi7AsAdDWpV+mKT/5vkpnnFQfuQACV72IoRV161aAr6kAVIBpmYzwhBzm34vQkA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11187,8 +12786,19 @@ packages: pretty-format: 29.4.2 dev: true + /jest-each/29.6.2: + resolution: {integrity: sha512-MsrsqA0Ia99cIpABBc3izS1ZYoYfhIy0NNWqPSE0YXbQjwchyt6B1HD2khzyPe1WiJA7hbxXy77ZoUQxn8UlSw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.1 + chalk: 4.1.2 + jest-get-type: 29.4.3 + jest-util: 29.6.2 + pretty-format: 29.6.2 + dev: false + /jest-environment-jsdom/27.5.1: - resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz} + resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/environment': 27.5.1 @@ -11205,6 +12815,25 @@ packages: - utf-8-validate dev: false + /jest-environment-jsdom/28.1.3: + resolution: {integrity: sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/environment': 28.1.3 + '@jest/fake-timers': 28.1.3 + '@jest/types': 28.1.3 + '@types/jsdom': 16.2.15 + '@types/node': 18.13.0 + jest-mock: 28.1.3 + jest-util: 28.1.3 + jsdom: 19.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: true + /jest-environment-jsdom/29.4.2: resolution: {integrity: sha512-v1sH4Q0JGM+LPEGqHNM+m+uTMf3vpXpKiuDYqWUAh+0c9+nc7scGE+qTR5JuE+OOTDnwfzPgcv9sMq6zWAOaVg==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.4.2.tgz} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11228,6 +12857,29 @@ packages: - utf-8-validate dev: true + /jest-environment-jsdom/29.6.2: + resolution: {integrity: sha512-7oa/+266AAEgkzae8i1awNEfTfjwawWKLpiw2XesZmaoVVj9u9t8JOYx18cG29rbPNtkUlZ8V4b5Jb36y/VxoQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + '@jest/environment': 29.6.2 + '@jest/fake-timers': 29.6.2 + '@jest/types': 29.6.1 + '@types/jsdom': 20.0.1 + '@types/node': 18.13.0 + jest-mock: 29.6.2 + jest-util: 29.6.2 + jsdom: 20.0.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + /jest-environment-node/27.5.1: resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11240,6 +12892,18 @@ packages: jest-util: 27.5.1 dev: false + /jest-environment-node/28.1.3: + resolution: {integrity: sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/environment': 28.1.3 + '@jest/fake-timers': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.13.0 + jest-mock: 28.1.3 + jest-util: 28.1.3 + dev: true + /jest-environment-node/29.4.2: resolution: {integrity: sha512-MLPrqUcOnNBc8zTOfqBbxtoa8/Ee8tZ7UFW7hRDQSUT+NGsvS96wlbHGTf+EFAT9KC3VNb7fWEM6oyvmxtE/9w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11252,34 +12916,75 @@ packages: jest-util: 29.4.2 dev: true + /jest-environment-node/29.6.2: + resolution: {integrity: sha512-YGdFeZ3T9a+/612c5mTQIllvWkddPbYcN2v95ZH24oWMbGA4GGS2XdIF92QMhUhvrjjuQWYgUGW2zawOyH63MQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.6.2 + '@jest/fake-timers': 29.6.2 + '@jest/types': 29.6.1 + '@types/node': 18.13.0 + jest-mock: 29.6.2 + jest-util: 29.6.2 + dev: false + /jest-get-type/27.5.1: resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-get-type/28.0.2: + resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true + /jest-get-type/29.4.2: resolution: {integrity: sha512-vERN30V5i2N6lqlFu4ljdTqQAgrkTFMC9xaIIfOPYBw04pufjXRty5RuXBiB1d72tGbURa/UgoiHB90ruOSivg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true + /jest-get-type/29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: false + /jest-haste-map/27.5.1: resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.6 - '@types/node': 16.18.12 + '@types/node': 18.13.0 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.10 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: false + + /jest-haste-map/28.1.3: + resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@types/graceful-fs': 4.1.6 + '@types/node': 18.13.0 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.10 - jest-regex-util: 27.5.1 - jest-serializer: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 + jest-worker: 28.1.3 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 - dev: false + dev: true /jest-haste-map/29.4.2: resolution: {integrity: sha512-WkUgo26LN5UHPknkezrBzr7lUtV1OpGsp+NfXbBwHztsFruS3gz+AMTTBcEklvi8uPzpISzYjdKXYZQJXBnfvw==} @@ -11300,6 +13005,25 @@ packages: fsevents: 2.3.2 dev: true + /jest-haste-map/29.6.2: + resolution: {integrity: sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.1 + '@types/graceful-fs': 4.1.6 + '@types/node': 18.13.0 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.10 + jest-regex-util: 29.4.3 + jest-util: 29.6.2 + jest-worker: 29.6.2 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: false + /jest-jasmine2/27.5.1: resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11333,6 +13057,14 @@ packages: pretty-format: 27.5.1 dev: false + /jest-leak-detector/28.1.3: + resolution: {integrity: sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + dev: true + /jest-leak-detector/29.4.2: resolution: {integrity: sha512-Wa62HuRJmWXtX9F00nUpWlrbaH5axeYCdyRsOs/+Rb1Vb6+qWTlB5rKwCCRKtorM7owNwKsyJ8NRDUcZ8ghYUA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11341,6 +13073,14 @@ packages: pretty-format: 29.4.2 dev: true + /jest-leak-detector/29.6.2: + resolution: {integrity: sha512-aNqYhfp5uYEO3tdWMb2bfWv6f0b4I0LOxVRpnRLAeque2uqOVVMLh6khnTcE2qJ5wAKop0HcreM1btoysD6bPQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.3 + pretty-format: 29.6.2 + dev: false + /jest-localstorage-mock/2.4.26: resolution: {integrity: sha512-owAJrYnjulVlMIXOYQIPRCCn3MmqI3GzgfZCXdD3/pmwrIvFMXcKVWZ+aMc44IzaASapg0Z4SEFxR+v5qxDA2w==} engines: {node: '>=6.16.0'} @@ -11355,6 +13095,16 @@ packages: jest-get-type: 27.5.1 pretty-format: 27.5.1 + /jest-matcher-utils/28.1.3: + resolution: {integrity: sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 28.1.3 + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + dev: true + /jest-matcher-utils/29.4.2: resolution: {integrity: sha512-EZaAQy2je6Uqkrm6frnxBIdaWtSYFoR8SVb2sNLAtldswlR/29JAgx+hy67llT3+hXBaLB0zAm5UfeqerioZyg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11365,6 +13115,16 @@ packages: pretty-format: 29.4.2 dev: true + /jest-matcher-utils/29.6.2: + resolution: {integrity: sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.6.2 + jest-get-type: 29.4.3 + pretty-format: 29.6.2 + dev: false + /jest-message-util/27.5.1: resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11393,7 +13153,6 @@ packages: pretty-format: 28.1.3 slash: 3.0.0 stack-utils: 2.0.6 - dev: false /jest-message-util/29.4.2: resolution: {integrity: sha512-SElcuN4s6PNKpOEtTInjOAA8QvItu0iugkXqhYyguRvQoXapg5gN+9RQxLAkakChZA7Y26j6yUCsFWN+hlKD6g==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.4.2.tgz} @@ -11410,14 +13169,37 @@ packages: stack-utils: 2.0.6 dev: true + /jest-message-util/29.6.2: + resolution: {integrity: sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.18.6 + '@jest/types': 29.6.1 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 29.6.2 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: false + /jest-mock/27.5.1: resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 16.18.12 + '@types/node': 18.13.0 dev: false + /jest-mock/28.1.3: + resolution: {integrity: sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@types/node': 18.13.0 + dev: true + /jest-mock/29.4.2: resolution: {integrity: sha512-x1FSd4Gvx2yIahdaIKoBjwji6XpboDunSJ95RpntGrYulI1ByuYQCKN/P7hvk09JB74IonU3IPLdkutEWYt++g==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.4.2.tgz} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11427,6 +13209,15 @@ packages: jest-util: 29.4.2 dev: true + /jest-mock/29.6.2: + resolution: {integrity: sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.1 + '@types/node': 18.13.0 + jest-util: 29.6.2 + dev: false + /jest-pnp-resolver/1.2.3_jest-resolve@27.5.1: resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} @@ -11439,6 +13230,18 @@ packages: jest-resolve: 27.5.1 dev: false + /jest-pnp-resolver/1.2.3_jest-resolve@28.1.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 28.1.3 + dev: true + /jest-pnp-resolver/1.2.3_jest-resolve@29.4.2: resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} @@ -11451,6 +13254,18 @@ packages: jest-resolve: 29.4.2 dev: true + /jest-pnp-resolver/1.2.3_jest-resolve@29.6.2: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.6.2 + dev: false + /jest-regex-util/27.5.1: resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11459,13 +13274,17 @@ packages: /jest-regex-util/28.0.2: resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dev: false /jest-regex-util/29.4.2: resolution: {integrity: sha512-XYZXOqUl1y31H6VLMrrUL1ZhXuiymLKPz0BO1kEeR5xER9Tv86RZrjTm74g5l9bPJQXA/hyLdaVPN/sdqfteig==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true + /jest-regex-util/29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: false + /jest-resolve-dependencies/27.5.1: resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11477,6 +13296,16 @@ packages: - supports-color dev: false + /jest-resolve-dependencies/28.1.3: + resolution: {integrity: sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + jest-regex-util: 28.0.2 + jest-snapshot: 28.1.3 + transitivePeerDependencies: + - supports-color + dev: true + /jest-resolve-dependencies/29.4.2: resolution: {integrity: sha512-6pL4ptFw62rjdrPk7rRpzJYgcRqRZNsZTF1VxVTZMishbO6ObyWvX57yHOaNGgKoADtAHRFYdHQUEvYMJATbDg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11487,6 +13316,16 @@ packages: - supports-color dev: true + /jest-resolve-dependencies/29.6.2: + resolution: {integrity: sha512-LGqjDWxg2fuQQm7ypDxduLu/m4+4Lb4gczc13v51VMZbVP5tSBILqVx8qfWcsdP8f0G7aIqByIALDB0R93yL+w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.4.3 + jest-snapshot: 29.6.2 + transitivePeerDependencies: + - supports-color + dev: false + /jest-resolve/27.5.1: resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11503,6 +13342,21 @@ packages: slash: 3.0.0 dev: false + /jest-resolve/28.1.3: + resolution: {integrity: sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.10 + jest-haste-map: 28.1.3 + jest-pnp-resolver: 1.2.3_jest-resolve@28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 + resolve: 1.22.1 + resolve.exports: 1.1.1 + slash: 3.0.0 + dev: true + /jest-resolve/29.4.2: resolution: {integrity: sha512-RtKWW0mbR3I4UdkOrW7552IFGLYQ5AF9YrzD0FnIOkDu0rAMlA5/Y1+r7lhCAP4nXSBTaE7ueeqj6IOwZpgoqw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11518,6 +13372,21 @@ packages: slash: 3.0.0 dev: true + /jest-resolve/29.6.2: + resolution: {integrity: sha512-G/iQUvZWI5e3SMFssc4ug4dH0aZiZpsDq9o1PtXTV1210Ztyb2+w+ZgQkB3iOiC5SmAEzJBOHWz6Hvrd+QnNPw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.10 + jest-haste-map: 29.6.2 + jest-pnp-resolver: 1.2.3_jest-resolve@29.6.2 + jest-util: 29.6.2 + jest-validate: 29.6.2 + resolve: 1.22.1 + resolve.exports: 2.0.0 + slash: 3.0.0 + dev: false + /jest-runner/27.5.1: resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11527,7 +13396,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 16.18.12 + '@types/node': 18.13.0 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.10 @@ -11550,6 +13419,35 @@ packages: - utf-8-validate dev: false + /jest-runner/28.1.3: + resolution: {integrity: sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/console': 28.1.3 + '@jest/environment': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.13.0 + chalk: 4.1.2 + emittery: 0.10.2 + graceful-fs: 4.2.10 + jest-docblock: 28.1.1 + jest-environment-node: 28.1.3 + jest-haste-map: 28.1.3 + jest-leak-detector: 28.1.3 + jest-message-util: 28.1.3 + jest-resolve: 28.1.3 + jest-runtime: 28.1.3 + jest-util: 28.1.3 + jest-watcher: 28.1.3 + jest-worker: 28.1.3 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + /jest-runner/29.4.2: resolution: {integrity: sha512-wqwt0drm7JGjwdH+x1XgAl+TFPH7poowMguPQINYxaukCqlczAcNLJiK+OLxUxQAEWMdy+e6nHZlFHO5s7EuRg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11579,6 +13477,35 @@ packages: - supports-color dev: true + /jest-runner/29.6.2: + resolution: {integrity: sha512-wXOT/a0EspYgfMiYHxwGLPCZfC0c38MivAlb2lMEAlwHINKemrttu1uSbcGbfDV31sFaPWnWJPmb2qXM8pqZ4w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.6.2 + '@jest/environment': 29.6.2 + '@jest/test-result': 29.6.2 + '@jest/transform': 29.6.2 + '@jest/types': 29.6.1 + '@types/node': 18.13.0 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.10 + jest-docblock: 29.4.3 + jest-environment-node: 29.6.2 + jest-haste-map: 29.6.2 + jest-leak-detector: 29.6.2 + jest-message-util: 29.6.2 + jest-resolve: 29.6.2 + jest-runtime: 29.6.2 + jest-util: 29.6.2 + jest-watcher: 29.6.2 + jest-worker: 29.6.2 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: false + /jest-runtime/27.5.1: resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11609,6 +13536,36 @@ packages: - supports-color dev: false + /jest-runtime/28.1.3: + resolution: {integrity: sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/environment': 28.1.3 + '@jest/fake-timers': 28.1.3 + '@jest/globals': 28.1.3 + '@jest/source-map': 28.1.2 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + chalk: 4.1.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 + execa: 5.1.1 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-haste-map: 28.1.3 + jest-message-util: 28.1.3 + jest-mock: 28.1.3 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-snapshot: 28.1.3 + jest-util: 28.1.3 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /jest-runtime/29.4.2: resolution: {integrity: sha512-3fque9vtpLzGuxT9eZqhxi+9EylKK/ESfhClv4P7Y9sqJPs58LjVhTt8jaMp/pRO38agll1CkSu9z9ieTQeRrw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11640,6 +13597,36 @@ packages: - supports-color dev: true + /jest-runtime/29.6.2: + resolution: {integrity: sha512-2X9dqK768KufGJyIeLmIzToDmsN0m7Iek8QNxRSI/2+iPFYHF0jTwlO3ftn7gdKd98G/VQw9XJCk77rbTGZnJg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.6.2 + '@jest/fake-timers': 29.6.2 + '@jest/globals': 29.6.2 + '@jest/source-map': 29.6.0 + '@jest/test-result': 29.6.2 + '@jest/transform': 29.6.2 + '@jest/types': 29.6.1 + '@types/node': 18.13.0 + chalk: 4.1.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-haste-map: 29.6.2 + jest-message-util: 29.6.2 + jest-mock: 29.6.2 + jest-regex-util: 29.4.3 + jest-resolve: 29.6.2 + jest-snapshot: 29.6.2 + jest-util: 29.6.2 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /jest-serializer/27.5.1: resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11673,11 +13660,42 @@ packages: jest-util: 27.5.1 natural-compare: 1.4.0 pretty-format: 27.5.1 - semver: 7.3.8 + semver: 7.5.4 transitivePeerDependencies: - supports-color dev: false + /jest-snapshot/28.1.3: + resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@babel/core': 7.20.12 + '@babel/generator': 7.20.14 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 + '@jest/expect-utils': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@types/babel__traverse': 7.18.3 + '@types/prettier': 2.7.2 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + chalk: 4.1.2 + expect: 28.1.3 + graceful-fs: 4.2.10 + jest-diff: 28.1.3 + jest-get-type: 28.0.2 + jest-haste-map: 28.1.3 + jest-matcher-utils: 28.1.3 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + natural-compare: 1.4.0 + pretty-format: 28.1.3 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + dev: true + /jest-snapshot/29.4.2: resolution: {integrity: sha512-PdfubrSNN5KwroyMH158R23tWcAXJyx4pvSvWls1dHoLCaUhGul9rsL3uVjtqzRpkxlkMavQjGuWG1newPgmkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11710,12 +13728,40 @@ packages: - supports-color dev: true + /jest-snapshot/29.6.2: + resolution: {integrity: sha512-1OdjqvqmRdGNvWXr/YZHuyhh5DeaLp1p/F8Tht/MrMw4Kr1Uu/j4lRG+iKl1DAqUJDWxtQBMk41Lnf/JETYBRA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.20.12 + '@babel/generator': 7.20.14 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 + '@babel/types': 7.20.7 + '@jest/expect-utils': 29.6.2 + '@jest/transform': 29.6.2 + '@jest/types': 29.6.1 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + chalk: 4.1.2 + expect: 29.6.2 + graceful-fs: 4.2.10 + jest-diff: 29.6.2 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.6.2 + jest-message-util: 29.6.2 + jest-util: 29.6.2 + natural-compare: 1.4.0 + pretty-format: 29.6.2 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: false + /jest-util/27.5.1: resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 16.18.12 + '@types/node': 18.13.0 chalk: 4.1.2 ci-info: 3.7.1 graceful-fs: 4.2.10 @@ -11727,12 +13773,11 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 - '@types/node': 16.18.12 + '@types/node': 18.13.0 chalk: 4.1.2 ci-info: 3.7.1 graceful-fs: 4.2.10 picomatch: 2.3.1 - dev: false /jest-util/29.4.2: resolution: {integrity: sha512-wKnm6XpJgzMUSRFB7YF48CuwdzuDIHenVuoIb1PLuJ6F+uErZsuDkU+EiExkChf6473XcawBrSfDSnXl+/YG4g==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/jest-util/-/jest-util-29.4.2.tgz} @@ -11746,6 +13791,18 @@ packages: picomatch: 2.3.1 dev: true + /jest-util/29.6.2: + resolution: {integrity: sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.1 + '@types/node': 18.13.0 + chalk: 4.1.2 + ci-info: 3.7.1 + graceful-fs: 4.2.10 + picomatch: 2.3.1 + dev: false + /jest-validate/27.5.1: resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11758,6 +13815,18 @@ packages: pretty-format: 27.5.1 dev: false + /jest-validate/28.1.3: + resolution: {integrity: sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 28.0.2 + leven: 3.1.0 + pretty-format: 28.1.3 + dev: true + /jest-validate/29.4.2: resolution: {integrity: sha512-tto7YKGPJyFbhcKhIDFq8B5od+eVWD/ySZ9Tvcp/NGCvYA4RQbuzhbwYWtIjMT5W5zA2W0eBJwu4HVw34d5G6Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11770,6 +13839,18 @@ packages: pretty-format: 29.4.2 dev: true + /jest-validate/29.6.2: + resolution: {integrity: sha512-vGz0yMN5fUFRRbpJDPwxMpgSXW1LDKROHfBopAvDcmD6s+B/s8WJrwi+4bfH4SdInBA5C3P3BI19dBtKzx1Arg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.1 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.4.3 + leven: 3.1.0 + pretty-format: 29.6.2 + dev: false + /jest-watch-typeahead/1.1.0_jest@27.5.1: resolution: {integrity: sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -11792,7 +13873,7 @@ packages: dependencies: '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 16.18.12 + '@types/node': 18.13.0 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.5.1 @@ -11805,13 +13886,12 @@ packages: dependencies: '@jest/test-result': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.12 + '@types/node': 18.13.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.10.2 jest-util: 28.1.3 string-length: 4.0.2 - dev: false /jest-watcher/29.4.2: resolution: {integrity: sha512-onddLujSoGiMJt+tKutehIidABa175i/Ays+QvKxCqBwp7fvxP3ZhKsrIdOodt71dKxqk4sc0LN41mWLGIK44w==} @@ -11827,11 +13907,25 @@ packages: string-length: 4.0.2 dev: true + /jest-watcher/29.6.2: + resolution: {integrity: sha512-GZitlqkMkhkefjfN/p3SJjrDaxPflqxEAv3/ik10OirZqJGYH5rPiIsgVcfof0Tdqg3shQGdEIxDBx+B4tuLzA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.6.2 + '@jest/types': 29.6.1 + '@types/node': 18.13.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.6.2 + string-length: 4.0.2 + dev: false + /jest-worker/26.6.2: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 16.18.12 + '@types/node': 18.13.0 merge-stream: 2.0.0 supports-color: 7.2.0 dev: false @@ -11848,10 +13942,9 @@ packages: resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@types/node': 16.18.12 + '@types/node': 18.13.0 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: false /jest-worker/29.4.2: resolution: {integrity: sha512-VIuZA2hZmFyRbchsUCHEehoSf2HEl0YVF8SDJqtPnKorAaBuh42V8QsLnde0XP5F6TyCynGPEGgBOn3Fc+wZGw==} @@ -11863,6 +13956,16 @@ packages: supports-color: 8.1.1 dev: true + /jest-worker/29.6.2: + resolution: {integrity: sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 18.13.0 + jest-util: 29.6.2 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: false + /jest/27.5.1: resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11884,6 +13987,26 @@ packages: - utf-8-validate dev: false + /jest/28.1.3: + resolution: {integrity: sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 28.1.3 + '@jest/types': 28.1.3 + import-local: 3.1.0 + jest-cli: 28.1.3 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + /jest/29.4.2: resolution: {integrity: sha512-+5hLd260vNIHu+7ZgMIooSpKl7Jp5pHKb51e73AJU3owd5dEo/RfVwHbA/na3C/eozrt3hJOLGf96c7EWwIAzg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11924,6 +14047,27 @@ packages: - ts-node dev: true + /jest/29.6.2: + resolution: {integrity: sha512-8eQg2mqFbaP7CwfsTpCxQ+sHzw1WuNWL5UUvjnWP4hx2riGz9fPSzYOaU5q8/GqWn1TfgZIVTqYJygbGbWAANg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.6.2 + '@jest/types': 29.6.1 + import-local: 3.1.0 + jest-cli: 29.6.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: false + /joycon/3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -11993,8 +14137,50 @@ packages: - utf-8-validate dev: false + /jsdom/19.0.0: + resolution: {integrity: sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==} + engines: {node: '>=12'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.8.2 + acorn-globals: 6.0.0 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.4.3 + domexception: 4.0.0 + escodegen: 2.0.0 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.2 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.1.2 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 3.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 10.0.0 + ws: 8.12.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + /jsdom/20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz} + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} engines: {node: '>=14'} peerDependencies: canvas: ^2.5.0 @@ -12032,7 +14218,6 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: true /jsesc/0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} @@ -12045,7 +14230,7 @@ packages: hasBin: true /json-parse-even-better-errors/2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz} + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} /json-rpc-engine/6.1.0: resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} @@ -12163,12 +14348,37 @@ packages: language-subtag-registry: 0.3.22 dev: false + /level-concat-iterator/3.1.0: + resolution: {integrity: sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==} + engines: {node: '>=10'} + dependencies: + catering: 2.1.1 + dev: false + + /level-supports/2.1.0: + resolution: {integrity: sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==} + engines: {node: '>=10'} + dev: false + + /level-supports/4.0.1: + resolution: {integrity: sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==} + engines: {node: '>=12'} + dev: false + + /level-transcoder/1.0.1: + resolution: {integrity: sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==} + engines: {node: '>=12'} + dependencies: + buffer: 6.0.3 + module-error: 1.0.2 + dev: false + /leven/3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} /levn/0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz} + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 @@ -12376,7 +14586,6 @@ packages: /lokijs/1.5.12: resolution: {integrity: sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==} - dev: true /loose-envify/1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} @@ -12539,7 +14748,7 @@ packages: dev: false /merge-stream/2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz} + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} @@ -12550,6 +14759,10 @@ packages: engines: {node: '>= 0.6'} dev: false + /micro-ftch/0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + dev: false + /micromatch/4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -12680,6 +14893,11 @@ packages: yargs-unparser: 2.0.0 dev: false + /module-error/1.0.2: + resolution: {integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==} + engines: {node: '>=10'} + dev: false + /motion/10.16.2: resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} dependencies: @@ -12824,7 +15042,7 @@ packages: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} /node-releases/2.0.10: - resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz} + resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -12841,7 +15059,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.11.0 - semver: 7.3.8 + semver: 7.5.4 validate-npm-package-license: 3.0.4 dev: true @@ -12885,7 +15103,7 @@ packages: dev: false /nwsapi/2.2.2: - resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz} + resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -13011,7 +15229,7 @@ packages: dev: false /optionator/0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz} + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} dependencies: deep-is: 0.1.4 @@ -13140,14 +15358,12 @@ packages: lines-and-columns: 1.2.4 /parse5/6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz} - dev: false + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} /parse5/7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz} + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.4.0 - dev: true /parseurl/1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} @@ -13225,7 +15441,7 @@ packages: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} /picomatch/2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz} + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} /pidtree/0.6.0: @@ -14148,7 +16364,7 @@ packages: dev: true /prelude-ls/1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz} + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} /prelude-ls/1.2.1: @@ -14189,14 +16405,13 @@ packages: react-is: 17.0.2 /pretty-format/28.1.3: - resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz} + resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/schemas': 28.1.3 ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 18.2.0 - dev: false /pretty-format/29.4.2: resolution: {integrity: sha512-qKlHR8yFVCbcEWba0H0TOC8dnLlO4vPlyEjRPw31FZ2Rupy9nLa8ZLbYny8gWEl8CkEhJqAE6IzdNELTBVcBEg==} @@ -14207,6 +16422,15 @@ packages: react-is: 18.2.0 dev: true + /pretty-format/29.6.2: + resolution: {integrity: sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.0 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: false + /process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: false @@ -14256,7 +16480,7 @@ packages: dev: true /psl/1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz} + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} /public-encrypt/4.0.3: resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} @@ -14280,6 +16504,10 @@ packages: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} + /pure-rand/6.0.2: + resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} + dev: false + /q/1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} @@ -14339,7 +16567,7 @@ packages: dev: false /querystringify/2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz} + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -14804,7 +17032,7 @@ packages: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} /requires-port/1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz} + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} /resolve-cwd/3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} @@ -14849,12 +17077,10 @@ packages: /resolve.exports/1.1.1: resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} engines: {node: '>=10'} - dev: false /resolve.exports/2.0.0: resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} engines: {node: '>=10'} - dev: true /resolve/1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} @@ -15031,18 +17257,16 @@ packages: dev: false /saxes/5.0.1: - resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz} + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} engines: {node: '>=10'} dependencies: xmlchars: 2.2.0 - dev: false /saxes/6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz} + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 - dev: true /scheduler/0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} @@ -15118,6 +17342,13 @@ packages: dependencies: lru-cache: 6.0.0 + /semver/7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + /send/0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} @@ -15368,7 +17599,6 @@ packages: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz} @@ -15481,7 +17711,7 @@ packages: dev: false /stack-utils/2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz} + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 @@ -15658,6 +17888,13 @@ packages: engines: {node: '>=12'} dev: true + /strip-hex-prefix/1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + dev: false + /strip-indent/3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -15742,7 +17979,7 @@ packages: has-flag: 4.0.0 /supports-color/8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz} + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} dependencies: has-flag: 4.0.0 @@ -15753,7 +17990,6 @@ packages: dependencies: has-flag: 4.0.0 supports-color: 7.2.0 - dev: false /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -15799,7 +18035,7 @@ packages: dev: false /symbol-tree/3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz} + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} /synckit/0.8.5: resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} @@ -15880,7 +18116,6 @@ packages: dependencies: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - dev: false /terser-webpack-plugin/5.3.6_webpack@5.78.0: resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz} @@ -15995,7 +18230,7 @@ packages: dev: false /tough-cookie/4.1.2: - resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz} + resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} engines: {node: '>=6'} dependencies: psl: 1.9.0 @@ -16021,11 +18256,10 @@ packages: dev: false /tr46/3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz} + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} dependencies: punycode: 2.3.0 - dev: true /trim-newlines/3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} @@ -16058,7 +18292,7 @@ packages: - utf-8-validate /tronweb/5.1.0: - resolution: {integrity: sha512-8a+mYKVUzsUWjeTHSAKcxAp82FseFTLlNLoLQ0KIL1rIt6Dy5whcyJwYatxUktbaztl55lnImHbupkKqMdIj1w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/tronweb/-/tronweb-5.1.0.tgz} + resolution: {integrity: sha512-8a+mYKVUzsUWjeTHSAKcxAp82FseFTLlNLoLQ0KIL1rIt6Dy5whcyJwYatxUktbaztl55lnImHbupkKqMdIj1w==} dependencies: '@babel/runtime': 7.20.13 '@tronweb3/google-protobuf': 3.21.2 @@ -16222,8 +18456,16 @@ packages: yargs: 17.6.2 dev: true + /tweetnacl-util/0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + dev: false + + /tweetnacl/1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + dev: false + /type-check/0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz} + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 @@ -16367,7 +18609,7 @@ packages: dev: true /universalify/0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz} + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} /universalify/2.0.0: @@ -16389,7 +18631,7 @@ packages: dev: false /update-browserslist-db/1.0.10_browserslist@4.21.5: - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz} + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -16404,7 +18646,7 @@ packages: punycode: 2.3.0 /url-parse/1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz} + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 @@ -16415,6 +18657,14 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dev: false + /use-sync-external-store/1.2.0_react@18.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + /utf-8-validate/5.0.10: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} @@ -16423,6 +18673,14 @@ packages: node-gyp-build: 4.6.0 dev: false + /utf-8-validate/5.0.7: + resolution: {integrity: sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.6.0 + dev: false + /util-deprecate/1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -16475,10 +18733,9 @@ packages: resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.19 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 - dev: true /validate-npm-package-license/3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -16504,6 +18761,20 @@ packages: use-sync-external-store: 1.2.0 dev: false + /valtio/1.10.5_react@18.2.0: + resolution: {integrity: sha512-jTp0k63VXf4r5hPoaC6a6LCG4POkVSh629WLi1+d5PlajLsbynTMd7qAgEiOSPxzoX5iNvbN7iZ/k/g29wrNiQ==} + engines: {node: '>=12.20.0'} + peerDependencies: + react: '>=16.8' + peerDependenciesMeta: + react: + optional: true + dependencies: + proxy-compare: 2.5.1 + react: 18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 + dev: false + /vary/1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -16537,6 +18808,44 @@ packages: - zod dev: false + /viem/0.3.50_typescript@4.9.3: + resolution: {integrity: sha512-s+LxCYZTR9F/qPk1/n1YDVAX9vSeVz7GraqBZWGrDuenCJxo9ArCoIceJ6ksI0WwSeNzcZ0VVbD/kWRzTxkipw==} + dependencies: + '@adraffy/ens-normalize': 1.9.0 + '@noble/curves': 1.0.0 + '@noble/hashes': 1.3.0 + '@scure/bip32': 1.3.0 + '@scure/bip39': 1.2.0 + '@wagmi/chains': 1.0.0_typescript@4.9.3 + abitype: 0.8.7_typescript@4.9.3 + isomorphic-ws: 5.0.0_ws@8.12.0 + ws: 8.12.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + dev: false + + /viem/0.3.50_typescript@4.9.5: + resolution: {integrity: sha512-s+LxCYZTR9F/qPk1/n1YDVAX9vSeVz7GraqBZWGrDuenCJxo9ArCoIceJ6ksI0WwSeNzcZ0VVbD/kWRzTxkipw==} + dependencies: + '@adraffy/ens-normalize': 1.9.0 + '@noble/curves': 1.0.0 + '@noble/hashes': 1.3.0 + '@scure/bip32': 1.3.0 + '@scure/bip39': 1.2.0 + '@wagmi/chains': 1.0.0_typescript@4.9.5 + abitype: 0.8.7_typescript@4.9.5 + isomorphic-ws: 5.0.0_ws@8.12.0 + ws: 8.12.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + dev: false + /vite/3.1.0: resolution: {integrity: sha512-YBg3dUicDpDWFCGttmvMbVyS9ydjntwEjwXRj2KBFwSB8SxmGcudo1yb8FW5+M/G86aS8x828ujnzUVdsLjs9g==} engines: {node: ^14.18.0 || >=16.0.0} @@ -16610,7 +18919,6 @@ packages: deprecated: Use your platform's native performance.now() and performance.timeOrigin. dependencies: browser-process-hrtime: 1.0.0 - dev: false /w3c-xmlserializer/2.0.0: resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz} @@ -16619,12 +18927,18 @@ packages: xml-name-validator: 3.0.0 dev: false + /w3c-xmlserializer/3.0.0: + resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} + engines: {node: '>=12'} + dependencies: + xml-name-validator: 4.0.0 + dev: true + /w3c-xmlserializer/4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz} + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} dependencies: xml-name-validator: 4.0.0 - dev: true /walker/1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -16673,9 +18987,8 @@ packages: dev: false /webidl-conversions/7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz} + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} - dev: true /webpack-cli/5.1.0: resolution: {integrity: sha512-a7KRJnCxejFoDpYTOwzm5o21ZXMaNqtRlvS183XzGDUPRdVEzJNImcQokqYZ8BNTnk9DkKiuWxw75+DCCoZ26w==} @@ -16869,11 +19182,10 @@ packages: dev: false /whatwg-encoding/2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz} + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 - dev: true /whatwg-fetch/3.6.2: resolution: {integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==} @@ -16884,17 +19196,23 @@ packages: dev: false /whatwg-mimetype/3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz} + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} + + /whatwg-url/10.0.0: + resolution: {integrity: sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==} + engines: {node: '>=12'} + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 dev: true /whatwg-url/11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz} + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} dependencies: tr46: 3.0.0 webidl-conversions: 7.0.0 - dev: true /whatwg-url/5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -17181,7 +19499,6 @@ packages: dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 - dev: true /ws/7.4.6: resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} @@ -17236,17 +19553,32 @@ packages: utf-8-validate: 5.0.10 dev: false + /ws/8.2.3_lfy3lj2jvemch5kgpjwtdixywm: + resolution: {integrity: sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + bufferutil: 4.0.5 + utf-8-validate: 5.0.7 + dev: false + /xml-name-validator/3.0.0: resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz} dev: false /xml-name-validator/4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz} + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} - dev: true /xmlchars/2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz} + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} /xtend/4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} @@ -17299,7 +19631,6 @@ packages: /yargs-parser/21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - dev: true /yargs-unparser/2.0.0: resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} @@ -17351,7 +19682,6 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: true /yn/3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} @@ -17375,3 +19705,19 @@ packages: dependencies: use-sync-external-store: 1.2.0 dev: false + + /zustand/4.3.8_react@18.2.0: + resolution: {integrity: sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==} + engines: {node: '>=12.7.0'} + peerDependencies: + immer: '>=9.0' + react: '>=16.8' + peerDependenciesMeta: + immer: + optional: true + react: + optional: true + dependencies: + react: 18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 + dev: false diff --git a/scripts/list-pkg-versions.js b/scripts/list-pkg-versions.js new file mode 100644 index 0000000..5b82f6c --- /dev/null +++ b/scripts/list-pkg-versions.js @@ -0,0 +1,36 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable no-undef */ +const { execSync } = require('child_process'); +const fs = require('fs'); +const path = require('path'); + +const DIRS = [path.resolve(__dirname, '../packages/adapters'), path.resolve(__dirname, '../packages/react')]; +const pkgVersions = []; +DIRS.forEach((dir) => { + const subDirs = fs.readdirSync(dir); + subDirs.forEach((pkg) => { + try { + const { name, version } = JSON.parse(fs.readFileSync(path.resolve(dir, pkg, 'package.json'))); + pkgVersions.push({ + name, + version, + }); + } catch (e) { + console.error(e); + } + }); +}); + +pkgVersions.forEach(({ name, version }) => { + try { + const oldVersion = execSync(`npm view ${name} version`); + console.log(`${name}: ${oldVersion.toString().trim()} -> ${version}`); + } catch (e) { + // ignore + } +}); + +console.log('Tag Content: '); +pkgVersions.forEach(({ name, version }) => { + console.log(`- [${name}@${version}](https://www.npmjs.com/package/${name})`); +}); diff --git a/tsconfig.all.json b/tsconfig.all.json index 69dc82c..1173cd0 100644 --- a/tsconfig.all.json +++ b/tsconfig.all.json @@ -25,6 +25,12 @@ { "path": "./packages/adapters/okxwallet/tsconfig.all.json" }, + { + "path": "./packages/adapters/abstract-adapter-evm/tsconfig.all.json" + }, + { + "path": "./packages/adapters/metamask/tsconfig.all.json" + }, { "path": "./packages/react/react-hooks/tsconfig.all.json" },