From 856c2315fda53176c562215c0a9c9ede5f593a57 Mon Sep 17 00:00:00 2001 From: Nikolay Topkaridi Date: Wed, 1 Mar 2023 12:27:46 +0300 Subject: [PATCH] feat: substrate support to SDK (#154) * added draft for node example substrate * added runtime calls and substrate react example * updated jest and jest setup * updated substrateSocketConnect function * remove comment * temrorary disabled eslint for substrate example * tests for substrateSocketConnect * added block comments * remove unused code * removed comment * renamed for compatibility with esmodules * added Event type to err * removed tabs * extracted functions and added tests, added deposit function draft * add deposit function and tests * Add form and deposit function * extracted throwError function and added tests * added tests for deposit function * fix test for signAndSend * update types for native balance func * 100% lines of code covered by unit tests * replace react dispatch with callbacks * update substrate with callbacks * move types inside substrate dir * substrate example is updated * added resolutions for polkadot * added listenForEvent function and tests * get rid of @ts-ignore-line in tests for substrate * update deposit method and test to be compatible with latest substrate pallet * change name of the type to EvmBridgeSetup * renamed type * updated substrate functions and tests * added evm functions and tests * updated exports * upated example for Substrate -> Evm * updated test scripts * cleanup * changed any to unknown * extracted type creation out of function * deleted .eslintignore from substrate example * changed to vite-plugin-node-polyfills in substrate example --- .eslintrc.js => .eslintrc.cjs | 0 examples/erc20-react-example/src/App.tsx | 4 +- examples/erc721-react-example/src/App.tsx | 4 +- examples/generic-colors/src/bridgeSetup.ts | 4 +- .../node-example/local-setup-example/index.ts | 4 +- examples/substrate-react-example/.eslintrc.js | 2 + examples/substrate-react-example/.gitignore | 24 + examples/substrate-react-example/index.html | 13 + examples/substrate-react-example/package.json | 32 + .../public/favicon.svg | 5 + examples/substrate-react-example/src/App.css | 59 + examples/substrate-react-example/src/App.tsx | 68 + .../src/components/Form.tsx | 94 + .../src/components/TransferStatus.tsx | 18 + .../src/components/UserInfo.tsx | 112 + .../src/config/index.ts | 82 + .../substrate-react-example/src/index.css | 70 + examples/substrate-react-example/src/main.tsx | 10 + .../src/substrate-lib/SubstrateContext.tsx | 210 ++ .../src/substrate-lib/index.ts | 7 + .../src/substrate-lib/state.ts | 108 + .../substrate-react-example/src/vite-env.d.ts | 1 + .../substrate-react-example/tsconfig.json | 26 + .../tsconfig.node.json | 9 + .../substrate-react-example/vite.config.ts | 19 + package.json | 33 + packages/sdk/.eslintrc.cjs | 13 + packages/sdk/.eslintrc.js | 7 - packages/sdk/jest.config.cjs | 27 +- packages/sdk/package.json | 31 +- packages/sdk/src/Sygma.ts | 20 +- .../sdk/src/chains/EVM/__test__/utils.test.ts | 105 + packages/sdk/src/chains/EVM/index.ts | 3 +- packages/sdk/src/chains/EVM/utils.ts | 90 + .../__test__/calculateBigNumber.test.ts | 31 + .../chains/Substrate/__test__/deposit.test.ts | 213 ++ .../__test__/getAssetBalance.test.ts | 44 + .../Substrate/__test__/getBasicFee.test.ts | 48 + .../__test__/getNativeTokenBalance.test.ts | 37 + .../__test__/handleTxExtrinsicResult.test.ts | 91 + .../Substrate/__test__/listenForEvent.test.ts | 47 + .../Substrate/__test__/loadAccounts.test.ts | 148 + .../__test__/retriveChaininfo.test.ts | 45 + .../__test__/substrateSocketConnect.test.ts | 86 + .../__test__/throwErrorIfAny.test.ts | 74 + packages/sdk/src/chains/Substrate/index.ts | 8 + .../sdk/src/chains/Substrate/types/index.ts | 19 + .../src/chains/Substrate/utils/depositFns.ts | 177 ++ .../chains/Substrate/utils/getAssetBalance.ts | 25 + .../src/chains/Substrate/utils/getBasicFee.ts | 22 + .../Substrate/utils/getNativeTokenBalance.ts | 20 + .../sdk/src/chains/Substrate/utils/index.ts | 14 + .../chains/Substrate/utils/listenForEvent.ts | 33 + .../chains/Substrate/utils/loadAccounts.ts | 65 + .../Substrate/utils/retrieveChainInfo.ts | 28 + .../Substrate/utils/substrateSocketConnect.ts | 60 + packages/sdk/src/chains/index.ts | 3 +- packages/sdk/src/index.ts | 1 + packages/sdk/src/types/types.ts | 11 +- packages/sdk/tsconfig.json | 11 +- yarn.lock | 2757 +++++++++++++++-- 61 files changed, 5175 insertions(+), 257 deletions(-) rename .eslintrc.js => .eslintrc.cjs (100%) create mode 100644 examples/substrate-react-example/.eslintrc.js create mode 100644 examples/substrate-react-example/.gitignore create mode 100644 examples/substrate-react-example/index.html create mode 100644 examples/substrate-react-example/package.json create mode 100644 examples/substrate-react-example/public/favicon.svg create mode 100644 examples/substrate-react-example/src/App.css create mode 100644 examples/substrate-react-example/src/App.tsx create mode 100644 examples/substrate-react-example/src/components/Form.tsx create mode 100644 examples/substrate-react-example/src/components/TransferStatus.tsx create mode 100644 examples/substrate-react-example/src/components/UserInfo.tsx create mode 100644 examples/substrate-react-example/src/config/index.ts create mode 100644 examples/substrate-react-example/src/index.css create mode 100644 examples/substrate-react-example/src/main.tsx create mode 100644 examples/substrate-react-example/src/substrate-lib/SubstrateContext.tsx create mode 100644 examples/substrate-react-example/src/substrate-lib/index.ts create mode 100644 examples/substrate-react-example/src/substrate-lib/state.ts create mode 100644 examples/substrate-react-example/src/vite-env.d.ts create mode 100644 examples/substrate-react-example/tsconfig.json create mode 100644 examples/substrate-react-example/tsconfig.node.json create mode 100644 examples/substrate-react-example/vite.config.ts create mode 100644 packages/sdk/.eslintrc.cjs delete mode 100644 packages/sdk/.eslintrc.js create mode 100644 packages/sdk/src/chains/EVM/__test__/utils.test.ts create mode 100644 packages/sdk/src/chains/EVM/utils.ts create mode 100644 packages/sdk/src/chains/Substrate/__test__/calculateBigNumber.test.ts create mode 100644 packages/sdk/src/chains/Substrate/__test__/deposit.test.ts create mode 100644 packages/sdk/src/chains/Substrate/__test__/getAssetBalance.test.ts create mode 100644 packages/sdk/src/chains/Substrate/__test__/getBasicFee.test.ts create mode 100644 packages/sdk/src/chains/Substrate/__test__/getNativeTokenBalance.test.ts create mode 100644 packages/sdk/src/chains/Substrate/__test__/handleTxExtrinsicResult.test.ts create mode 100644 packages/sdk/src/chains/Substrate/__test__/listenForEvent.test.ts create mode 100644 packages/sdk/src/chains/Substrate/__test__/loadAccounts.test.ts create mode 100644 packages/sdk/src/chains/Substrate/__test__/retriveChaininfo.test.ts create mode 100644 packages/sdk/src/chains/Substrate/__test__/substrateSocketConnect.test.ts create mode 100644 packages/sdk/src/chains/Substrate/__test__/throwErrorIfAny.test.ts create mode 100644 packages/sdk/src/chains/Substrate/index.ts create mode 100644 packages/sdk/src/chains/Substrate/types/index.ts create mode 100644 packages/sdk/src/chains/Substrate/utils/depositFns.ts create mode 100644 packages/sdk/src/chains/Substrate/utils/getAssetBalance.ts create mode 100644 packages/sdk/src/chains/Substrate/utils/getBasicFee.ts create mode 100644 packages/sdk/src/chains/Substrate/utils/getNativeTokenBalance.ts create mode 100644 packages/sdk/src/chains/Substrate/utils/index.ts create mode 100644 packages/sdk/src/chains/Substrate/utils/listenForEvent.ts create mode 100644 packages/sdk/src/chains/Substrate/utils/loadAccounts.ts create mode 100644 packages/sdk/src/chains/Substrate/utils/retrieveChainInfo.ts create mode 100644 packages/sdk/src/chains/Substrate/utils/substrateSocketConnect.ts diff --git a/.eslintrc.js b/.eslintrc.cjs similarity index 100% rename from .eslintrc.js rename to .eslintrc.cjs diff --git a/examples/erc20-react-example/src/App.tsx b/examples/erc20-react-example/src/App.tsx index baaae04e3..c683a7dda 100644 --- a/examples/erc20-react-example/src/App.tsx +++ b/examples/erc20-react-example/src/App.tsx @@ -4,11 +4,11 @@ import { BigNumber, utils, constants, Event, providers } from "ethers"; import { useForm } from "react-hook-form"; import { Sygma, - SygmaBridgeSetupList, + EvmBridgeSetupList, BridgeEvents, } from "@buildwithsygma/sygma-sdk-core"; -const bridgeSetupList: SygmaBridgeSetupList = [ +const bridgeSetupList: EvmBridgeSetupList = [ { domainId: "1", networkId: 1337, diff --git a/examples/erc721-react-example/src/App.tsx b/examples/erc721-react-example/src/App.tsx index a6d648762..91d7f13b2 100644 --- a/examples/erc721-react-example/src/App.tsx +++ b/examples/erc721-react-example/src/App.tsx @@ -3,11 +3,11 @@ import { BigNumber, utils, constants, Event, providers } from "ethers"; import { useForm } from "react-hook-form"; import { Sygma, - SygmaBridgeSetupList, + EvmBridgeSetupList, BridgeEvents, } from "@buildwithsygma/sygma-sdk-core"; -const bridgeSetupList: SygmaBridgeSetupList = [ +const bridgeSetupList: EvmBridgeSetupList = [ { domainId: "1", networkId: 1337, diff --git a/examples/generic-colors/src/bridgeSetup.ts b/examples/generic-colors/src/bridgeSetup.ts index bc20ef37f..33a188f42 100644 --- a/examples/generic-colors/src/bridgeSetup.ts +++ b/examples/generic-colors/src/bridgeSetup.ts @@ -1,4 +1,4 @@ -import { SygmaBridgeSetupList } from "@buildwithsygma/sygma-sdk-core"; +import { EvmBridgeSetupList } from "@buildwithsygma/sygma-sdk-core"; const bridgeAddress = "0x6CdE2Cd82a4F8B74693Ff5e194c19CA08c2d1c68"; const genericAddress = "0x783BB8123b8532CC85C8D2deF2f47C55D1e46b46"; @@ -8,7 +8,7 @@ const colorsAddress = "0xE54Dc792c226AEF99D6086527b98b36a4ADDe56a"; const erc20HandlerAddress = "0x1ED1d77911944622FCcDDEad8A731fd77E94173e"; const erc721HandlerAddress = "0x481f97f9C82a971B3844a422936a4d3c4082bF84"; -const bridgeSetupList: SygmaBridgeSetupList = [ +const bridgeSetupList: EvmBridgeSetupList = [ { domainId: "1", networkId: 1337, diff --git a/examples/node-example/local-setup-example/index.ts b/examples/node-example/local-setup-example/index.ts index 024576f8e..b634b3b85 100644 --- a/examples/node-example/local-setup-example/index.ts +++ b/examples/node-example/local-setup-example/index.ts @@ -1,5 +1,5 @@ import { BigNumber, Event } from "ethers"; -import { Sygma, SygmaBridgeSetupList } from "@buildwithsygma/sygma-sdk-core"; +import { Sygma, EvmBridgeSetupList } from "@buildwithsygma/sygma-sdk-core"; const depositEventLogs = ( destinationDomainId: number, @@ -30,7 +30,7 @@ const proposalExecutionEventsLogs = ( void (async () => { // CHAIN 1 ADRESSES - const bridgeSetupList: SygmaBridgeSetupList = [ + const bridgeSetupList: EvmBridgeSetupList = [ { domainId: "1", networkId: 1337, diff --git a/examples/substrate-react-example/.eslintrc.js b/examples/substrate-react-example/.eslintrc.js new file mode 100644 index 000000000..3b02ec9a8 --- /dev/null +++ b/examples/substrate-react-example/.eslintrc.js @@ -0,0 +1,2 @@ +module.exports = { +} \ No newline at end of file diff --git a/examples/substrate-react-example/.gitignore b/examples/substrate-react-example/.gitignore new file mode 100644 index 000000000..a547bf36d --- /dev/null +++ b/examples/substrate-react-example/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/examples/substrate-react-example/index.html b/examples/substrate-react-example/index.html new file mode 100644 index 000000000..53bb6d981 --- /dev/null +++ b/examples/substrate-react-example/index.html @@ -0,0 +1,13 @@ + + + + + + + Minimal example Polkadot + + +
+ + + diff --git a/examples/substrate-react-example/package.json b/examples/substrate-react-example/package.json new file mode 100644 index 000000000..211592948 --- /dev/null +++ b/examples/substrate-react-example/package.json @@ -0,0 +1,32 @@ +{ + "name": "@buildwithsygma/sygma-sdk-substrate-react-example", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview", + "lint": "tsc -p ./tsconfig.json --noEmit --pretty" + }, + "dependencies": { + "@buildwithsygma/sygma-sdk-core": "*", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "@polkadot/util": "^10.1.13", + "bn.js": "^5.2.1", + "dotenv": "^16.0.3" + }, + "devDependencies": { + "@polkadot/api": "^9.9.1", + "@types/react": "^18.0.26", + "@types/react-dom": "^18.0.9", + "@polkadot/types": "^9.9.1", + "@polkadot/ui-keyring": "^2.10.1", + "@vitejs/plugin-react": "^3.0.0", + "ts-node": "^10.9.1", + "typescript": "^4.9.3", + "vite": "^4.0.0", + "vite-plugin-node-polyfills": "^0.7.0" + } +} \ No newline at end of file diff --git a/examples/substrate-react-example/public/favicon.svg b/examples/substrate-react-example/public/favicon.svg new file mode 100644 index 000000000..12c1488d4 --- /dev/null +++ b/examples/substrate-react-example/public/favicon.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/examples/substrate-react-example/src/App.css b/examples/substrate-react-example/src/App.css new file mode 100644 index 000000000..580bae7b0 --- /dev/null +++ b/examples/substrate-react-example/src/App.css @@ -0,0 +1,59 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} +.App { + min-width: 712px; +} + +.mainTitle { + display: "flex"; + justify-content: "center" +} + +.formFieldset { + display: flex; + flex-direction: column; + border: none; +} + +.input { + display: flex; + align-self: center; + width: 56%; + padding: 10px; + border: 1px solid grey; + text-align: start; + font-size: 15px; + border-radius: 5px; + margin-bottom: 5px; + box-sizing: border-box; +} + +.label { + display: flex; + align-self: center; + width: 56%; + padding: 5px 10px; + text-align: start; + font-size: 15px; + border-radius: 5px; + margin-bottom: 5px; + box-sizing: border-box; +} + +.button { + display: flex; + align-self: center; + width: 33%; + padding: 10px; + margin-top: 15px; + justify-content: center; + background: white; + color: green; + border: 1px solid green; + font-weight: 800; + border-radius: 5px; +} \ No newline at end of file diff --git a/examples/substrate-react-example/src/App.tsx b/examples/substrate-react-example/src/App.tsx new file mode 100644 index 000000000..23811b315 --- /dev/null +++ b/examples/substrate-react-example/src/App.tsx @@ -0,0 +1,68 @@ +import { + JSXElementConstructor, + ReactElement, + ReactFragment, +} from "react"; +import "./App.css"; + +import { SubstrateContextProvider, useSubstrateState } from "./substrate-lib"; + +import UserInfo from "./components/UserInfo"; +import Form from "./components/Form"; +import TransferStatus from "./components/TransferStatus" + +const Loader = ( + text: + | string + | number + | boolean + | ReactElement> + | ReactFragment + | null + | undefined +) =>
{text}
; + +const Message = (errObj: { target: { url: string } }) => ( +
{`Connection to websocket '${errObj.target.url}' failed.`}
+); + +function Main() { + const { apiState, apiError, keyringState, keyring } = useSubstrateState()!; + + if (apiState === "ERROR") return Message(apiError as { target: { url: string } }); + if (apiState !== "READY") return Loader("Connecting to Substrate"); + + if (keyringState === "ERROR" && !keyring) { + return Loader( + "Can't get access to etensions accounts. Please authorize in extension" + ); + } + + if (keyringState !== "READY") { + return Loader( + "Loading accounts (please review any extension's authorization)" + ); + } + + return ( +
+
+

+ Minimal example Polkadot +

+ +
+
+ +
+
+ ); +} + +export default function App(): JSX.Element { + return ( + +
+ + ); +} diff --git a/examples/substrate-react-example/src/components/Form.tsx b/examples/substrate-react-example/src/components/Form.tsx new file mode 100644 index 000000000..ff007637a --- /dev/null +++ b/examples/substrate-react-example/src/components/Form.tsx @@ -0,0 +1,94 @@ +import React, {useState} from "react"; +import { useForm } from "react-hook-form"; + +import { useSubstrateState, useSubstrate } from "../substrate-lib"; +import { substrateConfig, evmSetupList } from "../config"; + +function Main(): JSX.Element { + const [isLoading, setIsLoading] = useState(false); + const { currentAccount, destinationDomainId } = useSubstrateState(); + const { makeDeposit } = useSubstrate(); + const { register, handleSubmit, watch, setValue } = useForm({ + defaultValues: { + amount: "11", + address: "0x5C1F5961696BaD2e73f73417f07EF55C62a2dC5b", + from: "3", + to: "2", + }, + }); + + const submit = async (values: { + amount: string; + address: string; + from: string; + to: string; + }): Promise => { + console.log('form data', values); + if (values.amount && values.address) { + setIsLoading(true) + makeDeposit(values.amount, values.address, values.to).finally(() => { + setIsLoading(false) + }); + } + }; + + if (!currentAccount) { + return
Please create accounts
; + } + + return ( + void handleSubmit(submit)(...args)} + > +
+ + + + + + + +
+ +
+
+ + ); +} +export default Main; diff --git a/examples/substrate-react-example/src/components/TransferStatus.tsx b/examples/substrate-react-example/src/components/TransferStatus.tsx new file mode 100644 index 000000000..5cbbcba80 --- /dev/null +++ b/examples/substrate-react-example/src/components/TransferStatus.tsx @@ -0,0 +1,18 @@ +import React from "react"; +import { useSubstrateState } from "../substrate-lib"; + +function TransferStatus() { + const { transferStatus, transferStatusBlock, evmStatus, proposalExecution } = + useSubstrateState(); + return ( +
+ {transferStatus &&
Substrate transfer status: {transferStatus}
} + {transferStatusBlock &&
Block: {transferStatusBlock}
} + {evmStatus &&
EVM transfer status: {evmStatus}
} + {proposalExecution && ( +
ProposalExecution tx: {proposalExecution}
+ )} +
+ ); +} +export default TransferStatus; diff --git a/examples/substrate-react-example/src/components/UserInfo.tsx b/examples/substrate-react-example/src/components/UserInfo.tsx new file mode 100644 index 000000000..96fdfe0fe --- /dev/null +++ b/examples/substrate-react-example/src/components/UserInfo.tsx @@ -0,0 +1,112 @@ +import React, { useEffect, useState } from "react"; +import { formatBalance } from "@polkadot/util"; +import { useSubstrateState, useSubstrate } from "../substrate-lib"; +import { substrateConfig } from "../config"; + +function Main(): JSX.Element { + const { api } = useSubstrateState()!; + + const { + setCurrentAccount, + state: { + keyring, + currentAccount, + currentAccountData, + selectedAssetBalance, + selectedAssetFee, + }, + } = useSubstrate()!; + + const keyringOptions = keyring?.getPairs().map((account) => ({ + key: account.address, + value: account.address, + text: (account.meta.name as String).toUpperCase(), + icon: "user", + })); + const initialAddress = + keyringOptions!.length > 0 + ? keyringOptions![keyringOptions!.length - 1].value + : ""; + // Set the initial address + useEffect(() => { + !currentAccount && + initialAddress.length > 0 && + setCurrentAccount(keyring?.getPair(initialAddress)); + }, [currentAccount, setCurrentAccount, keyring]); + + return ( +
+ {currentAccount ? ( +
+

Account data

+

+ {"Account name: "} + {keyring && keyringOptions && ( + + )} +
+ Account address: {currentAccount.address} +
+ NATIVE TOKENS(gas):{" "} + + {currentAccountData && + formatBalance(currentAccountData.free, { + decimals: api?.registry.chainDecimals[0], + withSiFull: true, + withZero: false, + })} + +
+ Balance of custom tokens(assets):{" "} + + {selectedAssetBalance && + formatBalance(selectedAssetBalance.balance, { + decimals: api?.registry.chainDecimals[0], + withSi: true, + withUnit: substrateConfig.assets[0].assetName, + withZero: false, + })} + +
+ Basic fee:{" "} + + {!selectedAssetFee?.isEmpty + ? formatBalance(selectedAssetFee?.unwrap(), { + decimals: api?.registry.chainDecimals[0], + withSi: true, + withUnit: substrateConfig.assets[0].assetName, + withZero: false, + }) + : "None"} + +

+
+ ) : ( + "No accounts found" + )} +
+ ); +} + +export default function Metadata(props: any) { + const state = useSubstrateState(); + const api = state?.api; + return api?.rpc && api.rpc.state ?
: null; +} diff --git a/examples/substrate-react-example/src/config/index.ts b/examples/substrate-react-example/src/config/index.ts new file mode 100644 index 000000000..915c70a31 --- /dev/null +++ b/examples/substrate-react-example/src/config/index.ts @@ -0,0 +1,82 @@ +import { + SubstrateConfigType, + EvmBridgeSetupList, +} from "@buildwithsygma/sygma-sdk-core"; + +export const substrateConfig: SubstrateConfigType = { + domainId: "3", + appName: "sygma-sdk-substrate-react-example", + provider_socket: "ws://127.0.0.1:9944", + assets: [ + { + assetName: "USDC", + assetId: 2000, + xsmMultiAssetId: { + concrete: { + parents: 1, + interior: { + x3: [ + { parachain: 2004 }, + { generalKey: "0x7379676d61" }, + { generalKey: "0x75736463" }, + ], + }, + }, + }, + }, + ], +}; +export const evmSetupList: EvmBridgeSetupList = [ + { + domainId: "1", + networkId: 1337, + name: "Local EVM 1", + decimals: 18, + bridgeAddress: "0x6CdE2Cd82a4F8B74693Ff5e194c19CA08c2d1c68", + erc20HandlerAddress: "0x02091EefF969b33A5CE8A729DaE325879bf76f90", + erc721HandlerAddress: "0xC2D334e2f27A9dB2Ed8C4561De86C1A00EBf6760", + rpcUrl: "http://localhost:8545", + tokens: [ + { + type: "erc20", + address: "0x78E5b9cEC9aEA29071f070C8cC561F692B3511A6", + name: "ERC20LRTST", + symbol: "ETHIcon", + imageUri: "ETHIcon", + decimals: 18, + resourceId: + "0x0000000000000000000000000000000000000000000000000000000000000300", + feeSettings: { + type: "basic", + address: "0x8dA96a8C2b2d3e5ae7e668d0C94393aa8D5D3B94", + }, + }, + ], + }, + { + domainId: "2", + networkId: 1338, + name: "Local EVM 2", + decimals: 18, + bridgeAddress: "0x6CdE2Cd82a4F8B74693Ff5e194c19CA08c2d1c68", + erc20HandlerAddress: "0x02091EefF969b33A5CE8A729DaE325879bf76f90", + erc721HandlerAddress: "0x481f97f9C82a971B3844a422936a4d3c4082bF84", + rpcUrl: "http://localhost:8547", + tokens: [ + { + type: "erc20", + address: "0x78E5b9cEC9aEA29071f070C8cC561F692B3511A6", + name: "ERC20LRTST", + symbol: "ETHIcon", + imageUri: "ETHIcon", + decimals: 18, + resourceId: + "0x0000000000000000000000000000000000000000000000000000000000000300", + feeSettings: { + type: "basic", + address: "0x8dA96a8C2b2d3e5ae7e668d0C94393aa8D5D3B94", + }, + }, + ], + }, +]; diff --git a/examples/substrate-react-example/src/index.css b/examples/substrate-react-example/src/index.css new file mode 100644 index 000000000..917888c1d --- /dev/null +++ b/examples/substrate-react-example/src/index.css @@ -0,0 +1,70 @@ +:root { + font-family: Inter, Avenir, Helvetica, Arial, sans-serif; + font-size: 16px; + line-height: 24px; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/examples/substrate-react-example/src/main.tsx b/examples/substrate-react-example/src/main.tsx new file mode 100644 index 000000000..791f139e2 --- /dev/null +++ b/examples/substrate-react-example/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( + + + , +) diff --git a/examples/substrate-react-example/src/substrate-lib/SubstrateContext.tsx b/examples/substrate-react-example/src/substrate-lib/SubstrateContext.tsx new file mode 100644 index 000000000..6c6ef045d --- /dev/null +++ b/examples/substrate-react-example/src/substrate-lib/SubstrateContext.tsx @@ -0,0 +1,210 @@ +import React, { useReducer, useContext, useEffect } from "react"; +import { Substrate, EVM } from "@buildwithsygma/sygma-sdk-core"; +import type { InjectedAccountWithMeta } from '@polkadot/extension-inject/types'; + +import { substrateConfig, evmSetupList } from "../config"; +import { reducer, initialState, StateType } from './state'; + +const { + substrateSocketConnect, + loadAccounts, + getNativeTokenBalance, + getAssetBalance, + getBasicFee, + deposit, +} = Substrate; + +const { + createProposalExecutionEventListener, + removeProposalExecutionEventListener, + connectToBridge, + getProviderByRpcUrl, +} = EVM; + +export type SubstrateContextType = { + state: StateType; + setCurrentAccount: (acct: unknown) => void; + makeDeposit: ( + amount: string, + address: string, + destinationDomainId: string + ) => Promise; +}; +const SubstrateContext = React.createContext({ + state: initialState, + setCurrentAccount: (acct) => {}, + makeDeposit: async (...args) => {}, +}); + +let keyringLoadAll = false; + +const SubstrateContextProvider = (props: { + children: + | string + | number + | boolean + | React.ReactElement> + | React.ReactFragment + | React.ReactPortal + | null + | undefined; +}) => { + const [state, dispatch] = useReducer(reducer, initialState); + substrateSocketConnect(state, { + onConnectInit: () => dispatch({ type: "CONNECT_INIT", payload: undefined }), + onConnect: (_api) => dispatch({ type: "CONNECT", payload: _api }), + onConnectSucccess: () => + dispatch({ type: "CONNECT_SUCCESS", payload: undefined }), + onConnectError: (err) => dispatch({ type: "CONNECT_ERROR", payload: err }), + }); + + useEffect(() => { + const { apiState, keyringState, api } = state; + if (apiState === "READY" && api && !keyringState && !keyringLoadAll) { + console.log("load"); + keyringLoadAll = true; + loadAccounts(substrateConfig, api, { + onLoadKeyring: () => + dispatch({ type: "LOAD_KEYRING", payload: undefined }), + onSetKeyring: (_keyring) => + dispatch({ type: "SET_KEYRING", payload: _keyring }), + onErrorKeyring: () => { + dispatch({ type: "KEYRING_ERROR", payload: undefined }); + }, + }); + setSelectedAsset(substrateConfig.assets[0].assetId); + } + }, [state.apiState, state.api, dispatch]); + + useEffect(() => { + if (state.currentAccount && state.api) { + getNativeTokenBalance(state.api, state.currentAccount).then( + (accountData) => { + dispatch({ type: "SET_CURRENT_ACCOUNT_DATA", payload: accountData }); + } + ); + } + }, [state.currentAccount, state.api]); + + useEffect(() => { + if (state.selectedAsset && state.api && state.currentAccount) { + getAssetBalance( + state.api, + state.selectedAsset.assetId, + state.currentAccount + ).then((assetBalance) => { + dispatch({ type: "SET_SELECTED_ASSET_BALANCE", payload: assetBalance }); + }); + } + }, [state.selectedAsset, state.api, state.currentAccount]); + + useEffect(() => { + if (state.selectedAsset && state.api && state.destinationDomainId) { + getBasicFee( + state.api, + state.destinationDomainId, + state.selectedAsset.xsmMultiAssetId + ).then((feeData) => { + dispatch({ type: "SET_ASSET_FEE", payload: feeData }); + }); + } + }, [state.selectedAsset, state.api, state.destinationDomainId]); + + function setCurrentAccount(acct: unknown) { + dispatch({ type: "SET_CURRENT_ACCOUNT", payload: (acct as InjectedAccountWithMeta) }); + } + + function setSelectedAsset(assetId: number) { + const asset = substrateConfig.assets.find((el) => el.assetId === assetId); + dispatch({ type: "SET_SELECTED_ASSET", payload: asset }); + } + + useEffect(() => { + if (state.depositNonce !== null) { + const evmBridgeConfig = evmSetupList.find( + (el) => el.domainId === state.destinationDomainId.toString() + ); + if (evmBridgeConfig) { + const evmProvider = getProviderByRpcUrl(evmBridgeConfig.rpcUrl); + const evmBridgeContract = connectToBridge( + evmBridgeConfig.bridgeAddress, + evmProvider + ); + console.log("Set listener for ProposalExecution event"); + createProposalExecutionEventListener( + state.depositNonce, + evmBridgeContract, + + (originDomainId, depositNonce, dataHash, tx) => { + console.log( + "execution events callback", + originDomainId, + depositNonce, + dataHash, + tx + ); + dispatch({ + type: "SET_PROPOSAL_EXECUTION_BLOCK", + payload: tx.transactionHash, + }); + removeProposalExecutionEventListener(evmBridgeContract); + } + ); + } + } + }, [state.depositNonce]); + + function makeDeposit( + amount: string, + address: string, + destinationDomainId: string + ) { + return deposit( + state.api!, + state.currentAccount!, + state.selectedAsset!.xsmMultiAssetId, + amount, + destinationDomainId, + address, + { + onInBlock: (extrensicStatus) => { + dispatch({ type: "SET_TRANSFER_STATUS", payload: "In block" }); + dispatch({ + type: "SET_TRANSFER_STATUS_BLOCK", + payload: extrensicStatus.asInBlock.toString(), + }); + }, + onFinalized: (extrensicStatus) => { + dispatch({ type: "SET_TRANSFER_STATUS", payload: "Finalized" }); + dispatch({ + type: "SET_TRANSFER_STATUS_BLOCK", + payload: extrensicStatus.asFinalized.toString(), + }); + }, + onDepositEvent: (depositData) => { + dispatch({ + type: "SET_DEPOSIT_NONCE", + payload: Number(depositData.depositNonce), + }); + dispatch({ + type: "SET_EVM_STATUS", + payload: `Awaiting for ProposalExecution event for depositNonce: ${depositData.depositNonce}`, + }); + }, + } + ); + } + + return ( + + {props.children} + + ); +}; + +const useSubstrate = () => useContext(SubstrateContext); +const useSubstrateState = () => useContext(SubstrateContext).state; + +export { SubstrateContextProvider, useSubstrate, useSubstrateState }; diff --git a/examples/substrate-react-example/src/substrate-lib/index.ts b/examples/substrate-react-example/src/substrate-lib/index.ts new file mode 100644 index 000000000..227de68d2 --- /dev/null +++ b/examples/substrate-react-example/src/substrate-lib/index.ts @@ -0,0 +1,7 @@ +import { + SubstrateContextProvider, + useSubstrate, + useSubstrateState, +} from "./SubstrateContext"; + +export { SubstrateContextProvider, useSubstrate, useSubstrateState }; diff --git a/examples/substrate-react-example/src/substrate-lib/state.ts b/examples/substrate-react-example/src/substrate-lib/state.ts new file mode 100644 index 000000000..d94f88371 --- /dev/null +++ b/examples/substrate-react-example/src/substrate-lib/state.ts @@ -0,0 +1,108 @@ +import jsonrpc from "@polkadot/types/interfaces/jsonrpc"; +import { DefinitionRpcExt } from '@polkadot/types/types'; +import type { SubstrateConfigAssetType } from "@buildwithsygma/sygma-sdk-core"; +import type {AssetBalance, AccountData} from "@polkadot/types/interfaces"; +import type { Option, u128, } from '@polkadot/types'; +import { substrateConfig, evmSetupList } from "../config"; +import { ApiPromise } from '@polkadot/api'; +import { Keyring} from '@polkadot/ui-keyring'; +import type { InjectedAccountWithMeta } from '@polkadot/extension-inject/types'; + + +const connectedSocket = substrateConfig.provider_socket; + +export type StateType = { + socket: string; + jsonrpc: { + [x: string]: Record; +}; + keyring: Keyring | null; + keyringState: string | null; + api: ApiPromise | null; + apiError: unknown; + apiState: string | null; + currentAccount: InjectedAccountWithMeta | null; + currentAccountData: AccountData | null; + selectedAsset: SubstrateConfigAssetType | null; + selectedAssetBalance: AssetBalance | null; + selectedAssetFee: Option | null; + destinationDomainId: number; + homeChainId: number; + transferStatus: string | null; + transferStatusBlock: string | null; + depositNonce: number | null; + evmStatus: string | null, + proposalExecution: string | null; +}; +type ActionType = { type: string; payload?: unknown }; + +/** + * Initial state for `useReducer` + */ +export const initialState: StateType = { + // These are the states + socket: connectedSocket, + jsonrpc: { ...jsonrpc }, + keyring: null, + keyringState: null, + api: null, + apiError: null, + apiState: null, + currentAccount: null, + currentAccountData: null, + selectedAsset: null, + selectedAssetBalance: null, + selectedAssetFee: null, + destinationDomainId: 2, + homeChainId: 3, + transferStatus: "Init", + transferStatusBlock: null, + depositNonce: null, + evmStatus: "Init", + proposalExecution: null, +}; + +/** + * + * Reducer function for `useReducer` + */ +export const reducer = (state: StateType, action: ActionType): StateType => { + switch (action.type) { + case "CONNECT_INIT": + return { ...state, apiState: "CONNECT_INIT" }; + case "CONNECT": + return { ...state, api: action.payload as ApiPromise, apiState: "CONNECTING" }; + case "CONNECT_SUCCESS": + return { ...state, apiState: "READY" }; + case "CONNECT_ERROR": + return { ...state, apiState: "ERROR", apiError: action.payload }; + case "LOAD_KEYRING": + return { ...state, keyringState: "LOADING" }; + case "SET_KEYRING": + return { ...state, keyring: action.payload as Keyring, keyringState: "READY" }; + case "KEYRING_ERROR": + return { ...state, keyring: null, keyringState: "ERROR" }; + case "SET_CURRENT_ACCOUNT": + return { ...state, currentAccount: action.payload as InjectedAccountWithMeta }; + case "SET_SELECTED_ASSET": + return { ...state, selectedAsset: action.payload as SubstrateConfigAssetType }; + case "SET_CURRENT_ACCOUNT_DATA": + return { ...state, currentAccountData: action.payload as AccountData }; + case "SET_SELECTED_ASSET_BALANCE": + return { ...state, selectedAssetBalance: action.payload as AssetBalance }; + case "SET_ASSET_FEE": + return { ...state, selectedAssetFee: action.payload as Option }; + case "SET_TRANSFER_STATUS": + return { ...state, transferStatus: action.payload as string}; + case "SET_TRANSFER_STATUS_BLOCK": + return { ...state, transferStatusBlock: action.payload as string }; + case "SET_DEPOSIT_NONCE": + return { ...state, depositNonce: action.payload as number}; + case "SET_EVM_STATUS": + return { ...state, evmStatus: action.payload as string} + case "SET_PROPOSAL_EXECUTION_BLOCK": + return { ...state, evmStatus: "ProposalExecution event has found. Tranfer finished", proposalExecution: action.payload as string }; + default: + throw new Error(`Unknown type: ${action.type}`); + } +}; \ No newline at end of file diff --git a/examples/substrate-react-example/src/vite-env.d.ts b/examples/substrate-react-example/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/examples/substrate-react-example/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/examples/substrate-react-example/tsconfig.json b/examples/substrate-react-example/tsconfig.json new file mode 100644 index 000000000..77d6de5ad --- /dev/null +++ b/examples/substrate-react-example/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "paths": { + "sample-polkadotjs-typegen/*": ["./src/*"], + "@polkadot/api/augment": ["./src/interfaces/augment-api.ts"], + "@polkadot/types/augment": ["./src/interfaces/augment-types.ts"] + }, + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/examples/substrate-react-example/tsconfig.node.json b/examples/substrate-react-example/tsconfig.node.json new file mode 100644 index 000000000..9d31e2aed --- /dev/null +++ b/examples/substrate-react-example/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/examples/substrate-react-example/vite.config.ts b/examples/substrate-react-example/vite.config.ts new file mode 100644 index 000000000..3b23ba339 --- /dev/null +++ b/examples/substrate-react-example/vite.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; +import { nodePolyfills } from "vite-plugin-node-polyfills"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + react(), + nodePolyfills({ + // Whether to polyfill `node:` protocol imports. + protocolImports: true, + }), + ], + build: { + commonjsOptions: { + include: [/node_modules/], + }, + }, +}); diff --git a/package.json b/package.json index 832ace069..38ad9553d 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "description": "Sygma SDK", "main": "index.js", "private": true, + "type": "module", "repository": { "type": "git", "url": "https://github.com/sygmaprotocol/sygma-sdk" @@ -44,5 +45,37 @@ "ts-jest": "^27.1.4", "ts-node": "^10.7.0", "typescript": "^4.6.3" + }, + "resolutions": { + "@polkadot/api": "^9.13.6", + "@polkadot/api-augment": "^9.13.6", + "@polkadot/api-base": "^9.13.6", + "@polkadot/api-contract": "^9.13.6", + "@polkadot/api-derive": "^9.13.6", + "@polkadot/hw-ledger": "^10.3.1", + "@polkadot/keyring": "^10.3.1", + "@polkadot/networks": "^10.3.1", + "@polkadot/phishing": "^0.19.1", + "@polkadot/rpc-augment": "^9.13.6", + "@polkadot/rpc-core": "^9.13.6", + "@polkadot/rpc-provider": "^9.13.6", + "@polkadot/types": "^9.13.6", + "@polkadot/types-augment": "^9.13.6", + "@polkadot/types-codec": "^9.13.6", + "@polkadot/types-create": "^9.13.6", + "@polkadot/types-known": "^9.13.6", + "@polkadot/types-support": "^9.13.6", + "@polkadot/util": "^10.3.1", + "@polkadot/util-crypto": "^10.3.1", + "@polkadot/wasm-crypto": "^6.4.1", + "@polkadot/x-bigint": "^10.3.1", + "@polkadot/x-fetch": "^10.3.1", + "@polkadot/x-global": "^10.3.1", + "@polkadot/x-randomvalues": "^10.3.1", + "@polkadot/x-textdecoder": "^10.3.1", + "@polkadot/x-textencoder": "^10.3.1", + "@polkadot/x-ws": "^10.3.1", + "babel-core": "^7.0.0-bridge.0", + "typescript": "^4.9.5" } } diff --git a/packages/sdk/.eslintrc.cjs b/packages/sdk/.eslintrc.cjs new file mode 100644 index 000000000..b9c4af855 --- /dev/null +++ b/packages/sdk/.eslintrc.cjs @@ -0,0 +1,13 @@ +module.exports = { + extends: '../../.eslintrc.cjs', + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + ecmaVersion: 12, + sourceType: 'module', + // project: 'tsconfig.json', + tsconfigRootDir: __dirname, + }, + ignorePatterns: ['*.test.ts', '**/__test__/*.ts'], +}; diff --git a/packages/sdk/.eslintrc.js b/packages/sdk/.eslintrc.js deleted file mode 100644 index f6538413a..000000000 --- a/packages/sdk/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: "../../.eslintrc.js", - parserOptions: { - project: './tsconfig.json', - tsconfigRootDir: __dirname, - }, -} \ No newline at end of file diff --git a/packages/sdk/jest.config.cjs b/packages/sdk/jest.config.cjs index 113467b7b..12c5b94cb 100644 --- a/packages/sdk/jest.config.cjs +++ b/packages/sdk/jest.config.cjs @@ -1,14 +1,15 @@ module.exports = { - roots: ["/integration/test", "/src"], - - // Jest transformations -- this adds support for TypeScript - // using ts-jest - transform: { - "^.+\\.tsx?$": "ts-jest", - }, - // Module file extensions for importing - moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], - // setupFilesAfterEnv: ["./setupTests.ts"] - testTimeout: 15000, - modulePathIgnorePatterns: ["/integration/test/chainbridge.e2e.test.ts"] -} + roots: ['/integration/test', '/src'], + extensionsToTreatAsEsm: ['.ts', '.tsx'], + verbose: true, + preset: 'ts-jest/presets/default-esm', + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + }, + testEnvironment: 'jsdom', + testTimeout: 15000, + transform: { + '^.+\\.(ts|tsx)?$': ['ts-jest', { useESM: true }], + }, + testPathIgnorePatterns: ['./dist', '/integration/test/chainbridge.e2e.test.ts'], +}; diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 124e0e1a2..626bdaa01 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,9 +1,10 @@ { "name": "@buildwithsygma/sygma-sdk-core", - "version": "1.1.4", + "version": "1.1.0", "description": "Core primitives for bridging and message passing", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", + "type": "module", "repository": { "type": "git", "url": "https://github.com/sygmaprotocol/sygma-sdk" @@ -12,8 +13,10 @@ "prepareNodes": "cd ./integration/node1 && npx hardhat node --port 8545 & cd ./integration/node2 && npx hardhat node --port 8547 &", "test": "jest --watchAll --detectOpenHandles --silent", "test:unit": "jest --detectOpenHandles", - "testOracle": "jest --watchAll --testPathPattern=src/fee/__test__/", - "run:all": "concurrently \"yarn run prepareNodes\" \"yarn run test\"", + "test:fee": "jest --watchAll --testPathPattern=src/fee/__test__/", + "test:substrate": "jest --watchAll --testPathPattern=src/chains/Substrate/__test__/", + "test:evm": "jest --watchAll --testPathPattern=src/chains/EVM/__test__/", + "run:all": "concurrently \"yarn run prepareNodes\" \"yarn run test\"", "build": "tsc -p tsconfig.build.json", "lint": "eslint 'src/**/*.ts'", "lint:fix": "yarn run lint --fix", @@ -31,25 +34,37 @@ "author": "Sygmaprotocol Product Team", "license": "LGPL-3.0-or-later", "devDependencies": { - "@types/jest": "27.4.1", + "@types/jest": "^29.4.0", "@types/node-fetch": "2.x", "concurrently": "7.0.0", "eslint-config-prettier": "8.3.0", "eslint-plugin-only-warn": "1.0.3", "eslint-plugin-prettier": "4.0.0", "hardhat": "2.8.2", - "jest": "27.5.1", + "jest": "^29.4.1", "jest-extended": "1.2.0", - "ts-jest": "27.1.4", + "ts-jest": "^29.0.5", "ts-node": "10.7.0", - "typescript": "4.6.3" + "typescript": "4.6.3", + "@polkadot/types": "^9.9.1", + "jest-environment-jsdom": "^29.4.1" }, "files": [ "dist/**/*" ], "dependencies": { "@buildwithsygma/sygma-contracts": "1.0.0", + "eth-crypto": "2.3.0", + "node-fetch": "2.6.1", + "react-hook-form": "^7.30.0", "ethers": "5.6.2", - "node-fetch": "2.6.1" + "@polkadot/api": "^9.9.1", + "@polkadot/api-augment": "^9.9.1", + "@polkadot/keyring": "^10.1.13", + "@polkadot/rpc-provider": "^9.9.1", + "@polkadot/util": "^10.1.13", + "@polkadot/util-crypto": "^10.1.13", + "@polkadot/extension-dapp": "^0.44.8", + "@polkadot/ui-keyring": "^2.10.1" } } diff --git a/packages/sdk/src/Sygma.ts b/packages/sdk/src/Sygma.ts index 2dde1ef35..e7f7cee50 100644 --- a/packages/sdk/src/Sygma.ts +++ b/packages/sdk/src/Sygma.ts @@ -24,8 +24,8 @@ import { ConnectorProvider, FeeOracleData, FeeDataResult, - SygmaBridgeSetupList, - SygmaBridgeSetup, + EvmBridgeSetupList, + EvmBridgeSetup, TokenConfig, } from './types'; import { @@ -53,7 +53,7 @@ import { * */ export class Sygma implements SygmaSDK { - public bridgeSetupList: SygmaBridgeSetupList | undefined; + public bridgeSetupList: EvmBridgeSetupList | undefined; private ethersProvider: Provider = undefined; public bridgeSetup: BridgeData | undefined; public bridges: Bridges = { chain1: undefined, chain2: undefined }; @@ -112,9 +112,9 @@ export class Sygma implements SygmaSDK { * @name selectHomeNetwork * @description returns homechain object * @param homeNetworkChainId - * @returns {SygmaBridgeSetup | undefined} + * @returns {EvmBridgeSetup | undefined} */ - public selectHomeNetwork(homeNetworkChainId: number): SygmaBridgeSetup | undefined { + public selectHomeNetwork(homeNetworkChainId: number): EvmBridgeSetup | undefined { return this.bridgeSetupList?.find(el => el.networkId === homeNetworkChainId); } @@ -122,9 +122,9 @@ export class Sygma implements SygmaSDK { * @name selectOneForDestination * @description returns the destinaton chain object * @param homeNetworkChainId - * @returns {SygmaBridgeSetup | undefined} + * @returns {EvmBridgeSetup | undefined} */ - public selectOneForDestination(homeNetworkChainId: number): SygmaBridgeSetup | undefined { + public selectOneForDestination(homeNetworkChainId: number): EvmBridgeSetup | undefined { return this.bridgeSetupList?.filter(el => el.networkId !== homeNetworkChainId)[0]; } @@ -189,7 +189,7 @@ export class Sygma implements SygmaSDK { ): Promise { const connector = setConnectorWeb3(web3ProviderInstance); const network = await connector.provider?.getNetwork(); - let chain1: SygmaBridgeSetup | undefined; + let chain1: EvmBridgeSetup | undefined; // DomainId is used only for Local Setup if (domainId) { chain1 = this.bridgeSetupList!.find(el => el.domainId === domainId); @@ -220,7 +220,7 @@ export class Sygma implements SygmaSDK { * @returns {Sygma} */ public setDestination(domainId: string): Sygma { - let chain2: SygmaBridgeSetup | undefined; + let chain2: EvmBridgeSetup | undefined; if (domainId) { chain2 = this.bridgeSetupList!.find(el => el.domainId === domainId); } @@ -278,7 +278,7 @@ export class Sygma implements SygmaSDK { * @returns {Object} - object with bridge and ERC20 contracts */ public computeContract( - config: SygmaBridgeSetup, + config: EvmBridgeSetup, connector: Connector, ): { bridge: Bridge; diff --git a/packages/sdk/src/chains/EVM/__test__/utils.test.ts b/packages/sdk/src/chains/EVM/__test__/utils.test.ts new file mode 100644 index 000000000..2042f7494 --- /dev/null +++ b/packages/sdk/src/chains/EVM/__test__/utils.test.ts @@ -0,0 +1,105 @@ +import { BigNumber, ethers, BaseContract, Contract } from 'ethers'; +import type{ + Bridge, + Bridge__factory, + IBridge, +} from '@buildwithsygma/sygma-contracts'; + +import { + createProposalExecutionEventListener, + proposalExecutionEventListenerCount, + removeProposalExecutionEventListener, + connectToBridge +} from '../utils'; + +describe('createProposalExecutionEventListener', () => { + it('should create a ProposalExecution event listener', () => { + const homeDepositNonce = 1; + const bridge = { + filters: { ProposalExecution: jest.fn() }, + on: jest.fn(), + } as unknown as Bridge; + + const callbackFn = jest.fn(); + + createProposalExecutionEventListener(homeDepositNonce, bridge, callbackFn); + + expect(bridge.filters.ProposalExecution).toHaveBeenCalledWith(null, null, null); + + // Call the event handler with some dummy data to ensure that the callback is called correctly + const originDomainId = 3; + const depositNonce = BigNumber.from('1'); + const dataHash = '0x12345'; + const tx = {}; + + (bridge.on as jest.Mock).mock.calls[0][1](originDomainId, depositNonce, dataHash, tx); + + expect(callbackFn).toHaveBeenCalledWith(originDomainId, depositNonce, dataHash, tx); + }); + + it('should not call the callback if the deposit nonce does not match', () => { + const homeDepositNonce = 1; + const bridge = { + filters: { ProposalExecution: jest.fn() }, + on: jest.fn(), + } as unknown as Bridge; + + const callbackFn = jest.fn(); + + createProposalExecutionEventListener(homeDepositNonce, bridge, callbackFn); + + // Call the event handler with some dummy data to ensure that the callback is not called if the nonces do not match + const originDomainId = 3; + const depositNonce = BigNumber.from('2'); // Nonces do not match + const dataHash = '0x12345'; + const tx = {}; + + (bridge.on as jest.Mock).mock.calls[0][1](originDomainId, depositNonce, dataHash, tx); + + expect(callbackFn).not.toHaveBeenCalled(); // callback should not have been called because nonces do not match + }); +}); + +describe('proposalExecutionEventListenerCount', () => { + it('should return the number of listeners for the ProposalExecution event', () => { + const bridge = { + filters: { + ProposalExecution: jest.fn(() => 'proposalFilter'), + }, + listenerCount: jest.fn(() => 5), + } as unknown as Bridge; + + expect(proposalExecutionEventListenerCount(bridge)).toBe(5); + expect(bridge.filters.ProposalExecution).toHaveBeenCalledWith(null, null, null); + expect(bridge.listenerCount).toHaveBeenCalledWith('proposalFilter'); + }); +}); + +describe('removeProposalExecutionEventListener', () => { + it('should remove all listeners for a given proposal filter', () => { + const bridge = { + filters: { + ProposalExecution: jest.fn().mockReturnValue('proposalFilter'), + }, + removeAllListeners: jest.fn(), + } as unknown as Bridge; + + removeProposalExecutionEventListener(bridge); + + expect(bridge.filters.ProposalExecution).toHaveBeenCalledWith(null, null, null); + expect(bridge.removeAllListeners).toHaveBeenCalledWith('proposalFilter'); + }); +}); + +describe('connectToBridge', () => { + it('should return a Bridge instance', () => { + const bridgeAddress = '0x1234567890123456789012345678901234567890'; + const signerOrProvider = new ethers.providers.JsonRpcProvider(); + + const bridge = connectToBridge(bridgeAddress, signerOrProvider); + + expect(bridge).toEqual(expect.objectContaining({ + address: "0x1234567890123456789012345678901234567890", + })); + }); +}); diff --git a/packages/sdk/src/chains/EVM/index.ts b/packages/sdk/src/chains/EVM/index.ts index b6134604a..519d9fc5e 100644 --- a/packages/sdk/src/chains/EVM/index.ts +++ b/packages/sdk/src/chains/EVM/index.ts @@ -1 +1,2 @@ -export { default } from './EvmBridge'; +export { default as EvmBridge } from './EvmBridge'; +export * as EVM from './utils'; diff --git a/packages/sdk/src/chains/EVM/utils.ts b/packages/sdk/src/chains/EVM/utils.ts new file mode 100644 index 000000000..2a68af6e1 --- /dev/null +++ b/packages/sdk/src/chains/EVM/utils.ts @@ -0,0 +1,90 @@ +import { BigNumber, ethers, Event } from 'ethers'; +import { Bridge, Bridge__factory as BridgeFactory } from '@buildwithsygma/sygma-contracts'; + +/** + * @typedef {Object} Bridge + */ +/** + * @typedef {Object} Event + */ +/** + * @typedef {Object} BigNumber + */ +/** + * Creates a ProposalExecution event listener for a given Bridge instance. + * + * @param {number} homeDepositNonce - The deposit nonce of the home chain. + * @param {Bridge} bridge - The Bridge Contract instance to listen to. + * @param {function(originDomainId: number, depositNonce: BigNumber, dataHash: string, tx: Event): void} callbackFn - Callback function to execute when a ProposalExecution event is emitted. + * @returns {Bridge} The Bridge Contract instance with the event listener attached. + */ +export const createProposalExecutionEventListener = ( + homeDepositNonce: number, + bridge: Bridge, + callbackFn: ( + originDomainId: number, + depositNonce: BigNumber, + dataHash: string, + tx: Event, + ) => void, +): Bridge => { + const proposalFilter = bridge.filters.ProposalExecution(null, null, null); + + return bridge.on(proposalFilter, (originDomainId, depositNonce, dataHash, tx) => { + console.log('Proposal Execution event: '); + console.group(); + console.log(originDomainId, depositNonce, homeDepositNonce); + console.groupEnd(); + if (depositNonce.toNumber() === homeDepositNonce) { + callbackFn(originDomainId, depositNonce, dataHash, tx); + } + }); +}; + +/** + * Returns the number of listeners for the ProposalExecution event. + * + * @param {Bridge} bridge The bridge to get the listener count from. + * @returns {number} The number of listeners for the ProposalExecution event. + */ +export const proposalExecutionEventListenerCount = (bridge: Bridge): number => { + const proposalFilter = bridge.filters.ProposalExecution(null, null, null); + const count = bridge.listenerCount(proposalFilter); + return count; +}; + +/** + * Removes a Proposal Execution event listener from the Bridge. + * + * @param {Bridge} bridge - The Bridge instance to remove the listener from. + * @returns {Bridge} The Bridge instance with the listener removed. + */ +export const removeProposalExecutionEventListener = (bridge: Bridge): Bridge => { + const proposalFilter = bridge.filters.ProposalExecution(null, null, null); + return bridge.removeAllListeners(proposalFilter); +}; + +/** + * Connects to an EVM Bridge contract. + * + * @param {string} bridgeAddress - The address of the bridge contract. + * @param {ethers.providers.Provider | ethers.Signer} signerOrProvider - The signer or provider to use for connecting to the bridge contract. + * @returns {Bridge} The connected Bridge contract instance. + */ +export const connectToBridge = ( + bridgeAddress: string, + signerOrProvider: ethers.providers.Provider | ethers.Signer, +): Bridge => { + return BridgeFactory.connect(bridgeAddress, signerOrProvider); +}; + +/** + * Creates a new JsonRpcProvider instance based on the given RPC URL + * + * @param {string} rpcURL - The RPC URL to use for the provider + * @returns {ethers.providers.JsonRpcProvider} A new JsonRpcProvider instance + */ +export const getProviderByRpcUrl = (rpcURL: string): ethers.providers.JsonRpcProvider => { + const provider = new ethers.providers.JsonRpcProvider(rpcURL); + return provider; +}; diff --git a/packages/sdk/src/chains/Substrate/__test__/calculateBigNumber.test.ts b/packages/sdk/src/chains/Substrate/__test__/calculateBigNumber.test.ts new file mode 100644 index 000000000..b02a1c81c --- /dev/null +++ b/packages/sdk/src/chains/Substrate/__test__/calculateBigNumber.test.ts @@ -0,0 +1,31 @@ +import { ApiPromise } from '@polkadot/api'; +import { BN } from '@polkadot/util'; +import { calculateBigNumber } from '../utils'; + +describe('calculateBigNumber', () => { + let api: ApiPromise; + + beforeEach(() => { + api = { + registry: { + chainDecimals: [18], + }, + } as unknown as ApiPromise; + }); + + it('should return a BN instance', () => { + const amount = '1'; + + const result = calculateBigNumber(api, amount); + + expect(result).toBeInstanceOf(BN); + }); + + it('should return the correct value', () => { + const amount = '1'; + + const result = calculateBigNumber(api, amount); + + expect(result.toString()).toEqual('1000000000000000000'); + }); +}); diff --git a/packages/sdk/src/chains/Substrate/__test__/deposit.test.ts b/packages/sdk/src/chains/Substrate/__test__/deposit.test.ts new file mode 100644 index 000000000..aae8b19a8 --- /dev/null +++ b/packages/sdk/src/chains/Substrate/__test__/deposit.test.ts @@ -0,0 +1,213 @@ +import { ApiPromise } from '@polkadot/api'; +import { BN } from '@polkadot/util'; +import { web3FromAddress } from '@polkadot/extension-dapp'; +import { InjectedAccountWithMeta } from '@polkadot/extension-inject/types'; +import { XcmMultiAssetIdType } from '../types'; +import { DepositCallbacksType } from '../utils/depositFns'; + +import * as Utils from '../utils/depositFns'; + +jest.mock('@polkadot/api'); +jest.mock('@polkadot/extension-inject/types'); +jest.mock('react'); + +jest.mock('@polkadot/extension-dapp', () => ({ + web3FromAddress: jest.fn().mockResolvedValue({signer: jest.fn()}), +})); + +describe('deposit', () => { + let api: ApiPromise; + let currentAccount: InjectedAccountWithMeta; + let xcmMultiAssetId: XcmMultiAssetIdType; + let amount: string; + let domainId: string; + let address: string; + let callbacksMockFns: DepositCallbacksType; + + beforeEach(() => { + api = new ApiPromise(); + + currentAccount = { address: 'testaddress' } as unknown as InjectedAccountWithMeta; + + xcmMultiAssetId = { id: 1 } as unknown as XcmMultiAssetIdType; + + amount = '1000000000000'; + + domainId = '1'; + + address = 'testaddress'; + jest.spyOn(Utils, 'calculateBigNumber').mockReturnValue(new BN(110)); + + callbacksMockFns = { + onInBlock: jest.fn(), + onFinalized: jest.fn(), + onError: jest.fn() + } + }); + + it('should call calculateBigNumber with correct params', async () => { + const signAndSendMockFn = jest.fn(); + + api = { + tx: { + sygmaBridge: { + deposit: jest.fn().mockImplementationOnce(() =>{ + return ({ signAndSend: signAndSendMockFn }) + }), + }, + }, + } as unknown as ApiPromise; + + await Utils.deposit( + api, + currentAccount, + xcmMultiAssetId, + amount, + domainId, + address, + callbacksMockFns, + ); + + expect(Utils.calculateBigNumber).toHaveBeenCalledWith(api, amount); + }); + + it('should call web3FromAddress with correct params', async () => { + const signAndSendMockFn = jest.fn(); + + api = { + tx: { + sygmaBridge: { + deposit: jest.fn().mockImplementationOnce(() =>{ + return ({ signAndSend: signAndSendMockFn }) + }), + }, + }, + } as unknown as ApiPromise; + + await Utils.deposit( + api, + currentAccount, + xcmMultiAssetId, + amount, + domainId, + address, + callbacksMockFns, + ); + + expect(web3FromAddress).toHaveBeenCalledWith(currentAccount.address); + }); + + it('should call sygmaBridge.deposit with correct params', async () => { + const signAndSendMockFn = jest.fn(); + + api = { + tx: { + sygmaBridge: { + deposit: jest.fn().mockImplementationOnce(() =>{ + return ({ signAndSend: signAndSendMockFn }) + }), + }, + }, + } as unknown as ApiPromise; + + await Utils.deposit( + api, + currentAccount, + xcmMultiAssetId, + amount, + domainId, + address, + callbacksMockFns, + ); + + expect(api.tx.sygmaBridge.deposit).toHaveBeenCalledWith( + { + fun: { + fungible: '110', + }, + id: { + id: 1, + }, + }, + + { + parents: 0, + interior: { + x2: [{ generalKey: address }, { generalKey: '0x01' }], + }, + }, + ); + }); + + + it('should call signAndSend', async () => { + const signAndSendMockFn = jest.fn(); + api = { + tx: { + sygmaBridge: { + deposit: jest.fn().mockImplementationOnce(() =>{ + return ({ signAndSend: signAndSendMockFn }) + }), + }, + }, + } as unknown as ApiPromise; + + await Utils.deposit( + api, + currentAccount, + xcmMultiAssetId, + amount, + domainId, + address, + callbacksMockFns, + ); + + expect(signAndSendMockFn).toHaveBeenCalledTimes(1); + }); + + it('should call handleTxExtrinsicResult', async () => { + const unsub = jest.fn(); + const signAndSendMockFn = jest.fn().mockImplementationOnce((account, options, callback) => { + callback('someResult') + Promise.resolve( unsub) + }); + + api = { + tx: { + sygmaBridge: { + deposit: jest.fn().mockImplementationOnce(() =>{ + return ({ signAndSend: signAndSendMockFn }) + }), + }, + }, + } as unknown as ApiPromise; + jest.spyOn(Utils, 'handleTxExtrinsicResult').mockImplementation() + await Utils.deposit(api, currentAccount, xcmMultiAssetId, amount, domainId, address, callbacksMockFns); + expect(Utils.handleTxExtrinsicResult).toHaveBeenCalledTimes(1); + expect(Utils.handleTxExtrinsicResult).toHaveBeenCalledWith(api, 'someResult', undefined, callbacksMockFns); + }); + + it('should reject in case of error', async () => { + const unsub = jest.fn(); + const signAndSendMockFn = jest.fn().mockRejectedValue(new Error("Sick error")); + api = { + tx: { + sygmaBridge: { + deposit: jest.fn().mockImplementationOnce(() =>{ + return ({ signAndSend: signAndSendMockFn }) + }), + }, + }, + } as unknown as ApiPromise; + await Utils.deposit( + api, + currentAccount, + xcmMultiAssetId, + amount, + domainId, + address, + callbacksMockFns, + ) + expect(callbacksMockFns.onError).toBeCalledWith(new Error("Sick error")); + }); +}); diff --git a/packages/sdk/src/chains/Substrate/__test__/getAssetBalance.test.ts b/packages/sdk/src/chains/Substrate/__test__/getAssetBalance.test.ts new file mode 100644 index 000000000..6db82b4b3 --- /dev/null +++ b/packages/sdk/src/chains/Substrate/__test__/getAssetBalance.test.ts @@ -0,0 +1,44 @@ +import { ApiPromise } from '@polkadot/api'; +import { TypeRegistry } from '@polkadot/types/create'; +import { Option } from '@polkadot/types'; +import type { AssetBalance } from '@polkadot/types/interfaces'; +import type { InjectedAccountWithMeta } from '@polkadot/extension-inject/types'; + +import { getAssetBalance } from '../utils'; + +const registry = new TypeRegistry(); + +describe('getAssetBalance', () => { + let api: ApiPromise; + let currentAccount: InjectedAccountWithMeta; + + beforeEach(async () => { + const assetBalance: AssetBalance = registry.createType('AssetBalance', { + balance: 123, + }); + const optionAssetBalance = { + unwrapOrDefault: () => (assetBalance) + } as unknown as Option + api = { + query: { + assets: { + account: jest.fn().mockResolvedValue(optionAssetBalance), + }, + }, + } as unknown as ApiPromise; + currentAccount = { + address: '0x123', + meta: { + source: '', + }, + }; + }); + + it('should return the asset balance for the given account', async () => { + const assetId = 1; + + const actualAssetBalance = await getAssetBalance(api, assetId, currentAccount); + + expect(actualAssetBalance.balance.toString()).toBe("123"); + }); +}); diff --git a/packages/sdk/src/chains/Substrate/__test__/getBasicFee.test.ts b/packages/sdk/src/chains/Substrate/__test__/getBasicFee.test.ts new file mode 100644 index 000000000..8c8307865 --- /dev/null +++ b/packages/sdk/src/chains/Substrate/__test__/getBasicFee.test.ts @@ -0,0 +1,48 @@ +import { ApiPromise } from '@polkadot/api'; +import { u128, Option, Null } from '@polkadot/types'; +import { TypeRegistry } from '@polkadot/types/create'; + +const registry = new TypeRegistry(); + +import { getBasicFee } from '../utils'; + +describe('getBasicFee', () => { + it('should return the basic fee', async () => { + const result = new Option(registry, u128, '0x12345678'); + const api: ApiPromise = { + query: { + sygmaBasicFeeHandler: { + assetFees: jest.fn().mockResolvedValue(result), + }, + }, + } as unknown as ApiPromise; + + const domainId = 1; + const xsmMultiAssetId = {}; + + const feeRes = await getBasicFee(api, domainId, xsmMultiAssetId); + + expect(feeRes).toBeInstanceOf(Option); + expect(feeRes.isSome).toBeTruthy(); + expect(feeRes.unwrap()).toBeInstanceOf(u128); + }); + + it('should return none if the fee is not found', async () => { + const result = new Option(registry, u128, null); + + const api: ApiPromise = { + query: { + sygmaBasicFeeHandler: { + assetFees: jest.fn().mockResolvedValue(result), + }, + }, + } as unknown as ApiPromise; + const domainId = 2; // some non-existent domain id; + const xsmMultiAssetId = {}; + + const feeRes = await getBasicFee(api, domainId, xsmMultiAssetId); + + expect(feeRes).toBeInstanceOf(Option); + expect(feeRes.isNone).toBeTruthy(); + }); +}); diff --git a/packages/sdk/src/chains/Substrate/__test__/getNativeTokenBalance.test.ts b/packages/sdk/src/chains/Substrate/__test__/getNativeTokenBalance.test.ts new file mode 100644 index 000000000..ffca390e0 --- /dev/null +++ b/packages/sdk/src/chains/Substrate/__test__/getNativeTokenBalance.test.ts @@ -0,0 +1,37 @@ +import { ApiPromise } from '@polkadot/api'; +import type { AccountData, AccountInfoWithTripleRefCount } from '@polkadot/types/interfaces'; +import { TypeRegistry } from '@polkadot/types/create'; +import type { InjectedAccountWithMeta } from '@polkadot/extension-inject/types'; + +const registry = new TypeRegistry(); + +import { getNativeTokenBalance } from '../utils'; + +describe('getNativeTokenBalance', () => { + it('should return account balance', async () => { + const accountData: AccountInfoWithTripleRefCount = registry.createType( + 'AccountInfoWithTripleRefCount', + { + data: { + free: 123, + }, + }, + ); + const api = { + query: { + system: { + account: jest.fn().mockResolvedValue(accountData), + }, + }, + } as unknown as ApiPromise; + const currentAccount: InjectedAccountWithMeta = { + address: 'xyz', + meta: { + source: 'x', + }, + }; + + const balance = await getNativeTokenBalance(api, currentAccount); + expect(balance.free.eq(123)).toBe(true); + }); +}); diff --git a/packages/sdk/src/chains/Substrate/__test__/handleTxExtrinsicResult.test.ts b/packages/sdk/src/chains/Substrate/__test__/handleTxExtrinsicResult.test.ts new file mode 100644 index 000000000..a3925b352 --- /dev/null +++ b/packages/sdk/src/chains/Substrate/__test__/handleTxExtrinsicResult.test.ts @@ -0,0 +1,91 @@ +import { ApiPromise, SubmittableResult } from '@polkadot/api'; +import type { Event } from '@polkadot/types/interfaces'; + +import { DepositCallbacksType } from '../utils/depositFns'; + +import * as Utils from '../utils/depositFns'; + +describe('handleTxExtrinsicResult', () => { + let api: ApiPromise; + let callbacksMockFns: DepositCallbacksType; + let unsub: () => void; + beforeEach(() => { + api = {} as ApiPromise; + unsub = jest.fn(); + callbacksMockFns = { + onInBlock: jest.fn(), + onFinalized: jest.fn(), + onError: jest.fn(), + onDepositEvent: jest.fn(), + }; + }); + + it('should call onInBlock when status isInBlock', () => { + const result: SubmittableResult = { status: { isInBlock: true, asInBlock: '12345' } } as unknown as SubmittableResult; + + Utils.handleTxExtrinsicResult(api, result, unsub, callbacksMockFns); + + expect(callbacksMockFns.onInBlock).toHaveBeenCalledWith(result.status); + }); + + it('should call onFinalized when status isFinalized', () => { + const result: SubmittableResult = { status: { isFinalized: true, asFinalized: '12345' }, events: [] } as unknown as SubmittableResult; + + Utils.handleTxExtrinsicResult(api, result, unsub, callbacksMockFns); + + expect(callbacksMockFns.onFinalized).toHaveBeenCalledWith(result.status); + }); + + it('should call unsub when status isFinalized', () => { + const result: SubmittableResult = { status: { isFinalized: true, asFinalized: '12345' }, events: [] } as unknown as SubmittableResult; + + Utils.handleTxExtrinsicResult(api, result, unsub, callbacksMockFns); + + expect(unsub).toHaveBeenCalledTimes(1); + }); + + it('should call onDepositEvent with correct args when events have corresponding event', () => { + api = { + events: { + system: { + ExtrinsicFailed: { + is: jest.fn().mockReturnValue(false) + } + } + } + } as unknown as ApiPromise + + const result: SubmittableResult = { + status: { isFinalized: true, asFinalized: '12345' }, + events: [ + { + event: { + data: { + toHuman: () => ({ + depositData: '0x00', + depositNonce: '9', + destDomainId: '10', + handlerResponse: '0x01', + resourceId: '0x000', + sender: 'abc', + transferType: 'Fun', + }), + }, + method: 'Deposit', + section: 'sygmaBridge', + }, + }, + ], + } as unknown as SubmittableResult; + Utils.handleTxExtrinsicResult(api, result, unsub, callbacksMockFns); + expect(callbacksMockFns.onDepositEvent).toHaveBeenCalledWith({ + depositData: '0x00', + depositNonce: '9', + destDomainId: '10', + handlerResponse: '0x01', + resourceId: '0x000', + sender: 'abc', + transferType: 'Fun', + }); + }); +}); diff --git a/packages/sdk/src/chains/Substrate/__test__/listenForEvent.test.ts b/packages/sdk/src/chains/Substrate/__test__/listenForEvent.test.ts new file mode 100644 index 000000000..f184f91d4 --- /dev/null +++ b/packages/sdk/src/chains/Substrate/__test__/listenForEvent.test.ts @@ -0,0 +1,47 @@ +import { ApiPromise } from '@polkadot/api'; +import type { AnyJson } from '@polkadot/types-codec/types'; + +import { listenForEvent } from '../utils'; + +describe('listenForEvent', () => { + let api: ApiPromise; + let eventName: string; + let callback: jest.Mock; + + beforeEach(() => { + api = { query: { system: { events: jest.fn() } } } as unknown as ApiPromise; + eventName = 'testEvent'; + callback = jest.fn(); + }); + + it('should call the callback when the correct event is received', async () => { + const data = { testData: 'testData' , toHuman: () => ({testData: 'testData'}) as AnyJson}; + + (api.query.system.events as unknown as jest.Mock).mockImplementationOnce(cb => + cb([{ event: { data, method: eventName, section: 'sygmaBridge'} }]), + ); + + await listenForEvent(api, eventName, callback); + + expect(callback).toHaveBeenCalledWith({testData: 'testData'}); + }); + + it('should not call the callback when an incorrect event is received', async () => { + (api.query.system.events as unknown as jest.Mock).mockImplementationOnce(cb => + cb([{ event: { data: 'incorrectData', method: 'incorrectEvent', section: 'sygmaBridge' } }]), + ); + + await listenForEvent(api, eventName, callback); + + expect(callback).not.toHaveBeenCalled(); + }); + + it('should return a function to unsubscribe from the events', async () => { + const data = { testData: 'testData' , toHuman: () => ({testData: 'testData'}) as AnyJson}; + + (api.query.system.events as unknown as jest.Mock).mockResolvedValue(() => {}) + const unsubscribeFn = await listenForEvent(api, eventName, callback); + + expect(typeof unsubscribeFn).toBe('function'); + }); +}); diff --git a/packages/sdk/src/chains/Substrate/__test__/loadAccounts.test.ts b/packages/sdk/src/chains/Substrate/__test__/loadAccounts.test.ts new file mode 100644 index 000000000..4c81d9dbb --- /dev/null +++ b/packages/sdk/src/chains/Substrate/__test__/loadAccounts.test.ts @@ -0,0 +1,148 @@ +import { ApiPromise, WsProvider } from '@polkadot/api'; +import { TypeRegistry } from '@polkadot/types/create'; +import { SubstrateConfigType } from '../types'; +import { web3Enable, web3Accounts } from '@polkadot/extension-dapp'; +import { keyring as Keyring } from '@polkadot/ui-keyring'; + +import * as Utils from '../utils'; +import { retrieveChainInfo } from '../utils/retrieveChainInfo'; +import { LoadAccountsCallbacksType } from '../utils/loadAccounts'; + +jest.mock('@polkadot/extension-dapp', () => ({ + web3Enable: jest.fn().mockResolvedValue(true), + web3Accounts: jest.fn().mockResolvedValue([ + { + address: '5DhjtK8fwZVc1Q2w4LUKxAAUyH7nzhzXUv89B1a6FdYynWvN', + meta: { genesisHash: '', name: 'Caterpillar', source: 'polkadot-js' }, + type: 'sr25519', + }, + { + address: '5CDQJk6kxvBcjauhrogUc9B8vhbdXhRscp1tGEUmniryF1Vt', + meta: { genesisHash: '', name: 'SygmaTest', source: 'polkadot-js' }, + type: 'sr25519', + }, + ]), +})); +jest.mock('../utils/retrieveChainInfo', () => { + const registry = new TypeRegistry(); + + return { + retrieveChainInfo: jest.fn().mockResolvedValue({ + systemChain: 'Development', + systemChainType: registry.createType('ChainType', 'Development'), + }), + }; +}); + +const mockApiPromise = { + on: (arg: any, fn: () => any) => fn(), + isReady: new Promise(resolve => { + setTimeout(() => { + resolve(); + }, 1); + }), +}; +jest.mock('@polkadot/api', () => ({ + WsProvider: jest.fn(), + ApiPromise: jest.fn().mockImplementation(() => mockApiPromise), +})); +describe('loadAccounts', () => { + let config: SubstrateConfigType; + let api: ApiPromise; + let callbacks: LoadAccountsCallbacksType; + + beforeEach(() => { + config = { + domainId: "4", + appName: 'test', + provider_socket: '', + assets: [ + { + assetName: 'USDT', + assetId: 1000, + xsmMultiAssetId: { + concrete: { + parents: 1, + interior: { + x3: [{ parachain: 2005 }, { generalKey: '0x7777' }, { generalKey: '0x88' }], + }, + }, + }, + }, + ], + }; + api = new ApiPromise(); + + jest.spyOn(Keyring, 'loadAll').mockImplementation(); + callbacks = { + onLoadKeyring: jest.fn(), + onSetKeyring: jest.fn(), + onErrorKeyring: jest.fn(), + }; + }); + + it('should call web3Enable with the correct parameter', async () => { + await Utils.loadAccounts(config, api, callbacks); + + expect(web3Enable).toHaveBeenCalledWith('test'); + }); + + it('should call web3Accounts and map the accounts correctly', async () => { + await Utils.loadAccounts(config, api, callbacks); + + expect(web3Accounts).toHaveBeenCalled(); + + expect(Keyring.loadAll).toHaveBeenCalledWith({ isDevelopment: true }, [ + { + address: '5DhjtK8fwZVc1Q2w4LUKxAAUyH7nzhzXUv89B1a6FdYynWvN', + meta: { genesisHash: '', name: 'Caterpillar (polkadot-js)', source: 'polkadot-js' }, + }, + { + address: '5CDQJk6kxvBcjauhrogUc9B8vhbdXhRscp1tGEUmniryF1Vt', + meta: { genesisHash: '', name: 'SygmaTest (polkadot-js)', source: 'polkadot-js' }, + }, + ]); + }); + + it('should call retrieveChainInfo and isTestChain correctly', async () => { + await Utils.loadAccounts(config, api, callbacks); + + expect(Keyring.loadAll).toHaveBeenCalled(); + + expect(retrieveChainInfo).toHaveBeenCalledWith(api); + }); + + it('should call callbacks onLoadKeyring and onSetKeyring with the correct parameters on success', async () => { + await Utils.loadAccounts(config, api, callbacks); + + expect(Keyring.loadAll).toHaveBeenCalled(); + + expect(callbacks.onLoadKeyring).toHaveBeenCalled(); + + expect(callbacks.onSetKeyring).toHaveBeenCalledWith(Keyring); + }); + + it('should call callabacks onLoadKeyring and onErrorKeyring with the correct parameters when failed', async () => { + jest.spyOn(Keyring, 'loadAll').mockImplementation(() => { + throw new Error('No'); + }); + await Utils.loadAccounts(config, api, callbacks); + + expect(Keyring.loadAll).toHaveBeenCalled(); + + expect(callbacks.onLoadKeyring).toHaveBeenCalled(); + + expect(callbacks.onErrorKeyring).toHaveBeenCalledWith(new Error('No')); + }); + + it('should call callabacks onLoadKeyring if web3Enable returns []', async () => { + (web3Enable as jest.Mock).mockResolvedValue([]); + await Utils.loadAccounts(config, api, callbacks); + + expect(Keyring.loadAll).toHaveBeenCalled(); + + expect(callbacks.onLoadKeyring).toHaveBeenCalled(); + + expect(callbacks.onErrorKeyring).toHaveBeenCalledWith(new Error("Can't get any injected sources. Is the wallet authorized?")); + }); +}); diff --git a/packages/sdk/src/chains/Substrate/__test__/retriveChaininfo.test.ts b/packages/sdk/src/chains/Substrate/__test__/retriveChaininfo.test.ts new file mode 100644 index 000000000..2be53d9fc --- /dev/null +++ b/packages/sdk/src/chains/Substrate/__test__/retriveChaininfo.test.ts @@ -0,0 +1,45 @@ +import { ApiPromise } from '@polkadot/api'; +import { TypeRegistry } from '@polkadot/types/create'; +import { ChainType } from '@polkadot/types/interfaces'; + +import { retrieveChainInfo } from '../utils'; + +const registry = new TypeRegistry(); + +describe('retrieveChainInfo', () => { + let api: ApiPromise; + + beforeEach(() => { + api = { + rpc: { + system: { + chain: jest.fn().mockResolvedValue('local'), + chainType: jest.fn().mockResolvedValue(registry.createType('ChainType', 'Development') as unknown as ChainType), + }, + }, + } as unknown as ApiPromise; + }); + + it('retrieves the system chain and chain type', async () => { + const result = await retrieveChainInfo(api); + + expect(result).toEqual({ + systemChain: 'local', + systemChainType: registry.createType('ChainType', 'Development') as unknown as ChainType, + }); + expect(api.rpc.system.chain).toHaveBeenCalledTimes(1); + expect(api.rpc.system.chainType).toHaveBeenCalledTimes(1); + }); + + it('handles chainType being undefined', async () => { + (api.rpc.system.chainType as any) = undefined; + + const result = await retrieveChainInfo(api); + + expect(result).toEqual({ + systemChain: 'local', + systemChainType: registry.createType('ChainType', 'Live') as unknown as ChainType, + }); + expect(api.rpc.system.chain).toHaveBeenCalledTimes(1); + }); +}); \ No newline at end of file diff --git a/packages/sdk/src/chains/Substrate/__test__/substrateSocketConnect.test.ts b/packages/sdk/src/chains/Substrate/__test__/substrateSocketConnect.test.ts new file mode 100644 index 000000000..2f0d60a0e --- /dev/null +++ b/packages/sdk/src/chains/Substrate/__test__/substrateSocketConnect.test.ts @@ -0,0 +1,86 @@ +import { TypeRegistry } from '@polkadot/types/create'; + +import { substrateSocketConnect } from '../utils'; +import { SubstrateSocketConnectionCallbacksType } from '../utils/substrateSocketConnect'; + +const registry = new TypeRegistry(); + +jest.mock('@polkadot/extension-dapp', () => ({ + web3Enable: jest.fn().mockResolvedValue(true), + web3Accounts: jest.fn().mockResolvedValue([ + { + address: '5DhjtK8fwZVc1Q2w4LUKxAAUyH7nzhzXUv89B1a6FdYynWvN', + meta: { genesisHash: '', name: 'Caterpillar', source: 'polkadot-js' }, + type: 'sr25519', + }, + { + address: '5CDQJk6kxvBcjauhrogUc9B8vhbdXhRscp1tGEUmniryF1Vt', + meta: { genesisHash: '', name: 'SygmaTest', source: 'polkadot-js' }, + type: 'sr25519', + }, + ]), +})); + +const mockApiPromise = { + on: (arg: any, fn: () => any) => fn(), + isReady: new Promise(resolve => { + setTimeout(() => { + resolve(); + }, 1); + }), +}; +jest.mock('@polkadot/api', () => ({ + WsProvider: jest.fn(), + ApiPromise: jest.fn().mockImplementation(() => mockApiPromise), +})); + +describe('substrateSocketConnect', () => { + let state: { apiState: any; socket: any; jsonrpc: any }; + let callbacks: SubstrateSocketConnectionCallbacksType; + beforeEach(() => { + state = { + apiState: '', + socket: 'ws://localhost:9944', + jsonrpc: {}, + }; + + callbacks = { + onConnectInit: jest.fn(), + onConnect: jest.fn(), + onConnectSucccess: jest.fn(), + onConnectError: jest.fn(), + }; + }); + + it('should return if apiState is set', () => { + state.apiState = 'connected'; + + substrateSocketConnect(state, callbacks); + + expect(callbacks.onConnectInit).not.toHaveBeenCalled(); + }); + + it('should call onConnectInit', () => { + substrateSocketConnect(state, callbacks); + + expect(callbacks.onConnectInit).toHaveBeenCalled(); + }); + + it('should call onConnect with API as payload when connected event is emitted', () => { + substrateSocketConnect(state, callbacks); + + expect(callbacks.onConnect).toHaveBeenCalledWith(mockApiPromise); + }); + + it('should call onConnectSucccess when ready event is emitted', () => { + substrateSocketConnect(state, callbacks); + + expect(callbacks.onConnectSucccess).toHaveBeenCalledWith(mockApiPromise); + }); + + it('should call onConnectError with error as argument when error event is emitted', async () => { + const connect = substrateSocketConnect(state, callbacks); + await connect?.isReadyOrError; + expect(callbacks.onConnectError).toHaveBeenCalled(); + }); +}); diff --git a/packages/sdk/src/chains/Substrate/__test__/throwErrorIfAny.test.ts b/packages/sdk/src/chains/Substrate/__test__/throwErrorIfAny.test.ts new file mode 100644 index 000000000..d8664d647 --- /dev/null +++ b/packages/sdk/src/chains/Substrate/__test__/throwErrorIfAny.test.ts @@ -0,0 +1,74 @@ + +import { ApiPromise, SubmittableResult } from '@polkadot/api'; + +import {throwErrorIfAny} from '../utils'; + +describe('throwErrorIfAny', () => { + let api: ApiPromise; + let result: SubmittableResult; + let unsub: () => void; + + beforeEach(() => { + api = { + events: { + system: { + ExtrinsicFailed: { + is: jest.fn().mockReturnValue(true) + } + } + }, + registry: { + findMetaError: jest.fn().mockReturnValue({ + docs: ['can', 'not', 'do'], + method: 'skrew', + section: 'bridge' + }) + } + } as unknown as ApiPromise; + result = { events: [{ + data: [ + {isModule: true} + ] + }], status: {} } as unknown as SubmittableResult; + unsub = jest.fn(); + }); + + it('should throw an error when status is in block or finalized', () => { + (result.status.isInBlock as any) = true; + + expect(() => throwErrorIfAny(api, result, unsub)).toThrow(); + (result.status.isFinalized as any) = true; + + expect(() => throwErrorIfAny(api, result, unsub)).toThrow(); + }); + + it('should not throw an error when status is not in block or finalized', () => { + expect(() => throwErrorIfAny(api, result, unsub)).not.toThrow(); + }); + + it('should call the unsubscribe function when an module error is thrown', () => { + (result.status.isInBlock as any) = true; + const eventData = [{ asModule: 'test', isModule: true }]; // mock data for DispatchError event type + + // mock system ExtrinsicFailed event type and data for the event object in the events array of the SubmittableResult object passed to the function + (result.events[0] as any) = { event: { type: 'system.ExtrinsicFailed', data: eventData } }; + + expect(() => throwErrorIfAny(api, result, unsub)).toThrow('bridge.skrew: can not do'); // call the function and check that it throws an error + expect(api.registry.findMetaError).toBeCalledWith('test') + + expect(unsub).toHaveBeenCalledTimes(1); // check that the unsubscribe function has been called + }); + + it('should call the unsubscribe function when an other error is thrown', () => { + (result.status.isInBlock as any) = true; + const eventData = [{ isModule: false, toString: () => "OTHER" }]; // mock data for DispatchError event type + + // mock system ExtrinsicFailed event type and data for the event object in the events array of the SubmittableResult object passed to the function + (result.events[0] as any) = { event: { type: 'system.ExtrinsicFailed', data: eventData } }; + + expect(() => throwErrorIfAny(api, result, unsub)).toThrow("OTHER"); // call the function and check that it throws an error + expect(api.registry.findMetaError).not.toHaveBeenCalled() + + expect(unsub).toHaveBeenCalledTimes(1); // check that the unsubscribe function has been called + }); +}); \ No newline at end of file diff --git a/packages/sdk/src/chains/Substrate/index.ts b/packages/sdk/src/chains/Substrate/index.ts new file mode 100644 index 000000000..e52db0080 --- /dev/null +++ b/packages/sdk/src/chains/Substrate/index.ts @@ -0,0 +1,8 @@ +export type { + XcmMultiAssetIdType, + SubstrateConfigAssetType, + SubstrateConfigType, +} from '../Substrate/types'; + +export * as Substrate from './utils'; +export * from './utils'; diff --git a/packages/sdk/src/chains/Substrate/types/index.ts b/packages/sdk/src/chains/Substrate/types/index.ts new file mode 100644 index 000000000..14795bc90 --- /dev/null +++ b/packages/sdk/src/chains/Substrate/types/index.ts @@ -0,0 +1,19 @@ +export type XcmMultiAssetIdType = { + concrete: { + parents: number; + interior: { + x3: Array<{ parachain: number } | { generalKey: string }>; + }; + }; +}; +export type SubstrateConfigAssetType = { + assetName: string; + assetId: number; + xsmMultiAssetId: XcmMultiAssetIdType; +}; +export type SubstrateConfigType = { + domainId: string; + appName: string; + provider_socket: string; + assets: SubstrateConfigAssetType[]; +}; diff --git a/packages/sdk/src/chains/Substrate/utils/depositFns.ts b/packages/sdk/src/chains/Substrate/utils/depositFns.ts new file mode 100644 index 000000000..2b571ac21 --- /dev/null +++ b/packages/sdk/src/chains/Substrate/utils/depositFns.ts @@ -0,0 +1,177 @@ +import { ApiPromise, SubmittableResult } from '@polkadot/api'; +import { BN, numberToHex } from '@polkadot/util'; +import { web3FromAddress } from '@polkadot/extension-dapp'; +import type { DispatchError, ExtrinsicStatus } from '@polkadot/types/interfaces'; + +import type { InjectedAccountWithMeta } from '@polkadot/extension-inject/types'; + +import { XcmMultiAssetIdType } from '../types'; + +export type DepositEventDataType = { + depositData: string; + depositNonce: string; + destDomainId: string; + handlerResponse: string; + resourceId: string; + sender: string; + transferType: string; +}; + +export type DepositCallbacksType = { + /** + * Callback for when the transaction is included in a block. + */ + onInBlock?: (status: ExtrinsicStatus) => void; + /** + * Callback for when the transaction is finalized. + */ + onFinalized?: (status: ExtrinsicStatus) => void; + /** + * Callback for when an error occurs. + */ + onError?: (error: unknown) => void; + /** + * Callback for sygmaBridge.Deposit event on finalize stage + */ + onDepositEvent?: (data: DepositEventDataType) => void; +}; + +/** + * Calculates a big number from an amount and chain decimals retrived from API. + * + * @param {ApiPromise} api - An API Promise object. + * @param {string} amount - The amount to be converted. + * @returns {BN} The converted amount as a BN object. + */ +export const calculateBigNumber = (api: ApiPromise, amount: string): BN => { + const bnAmount = new BN(Number(amount)); + const bnBase = new BN(10); + const bnDecimals = new BN(api.registry.chainDecimals[0]); + const convertAmount = bnAmount.mul(bnBase.pow(bnDecimals)); + return convertAmount; +}; + +/** + * Throw errors from a SubmittableResult. + * + * @param {ApiPromise} api - The ApiPromise instance used to find meta errors. + * @param {SubmittableResult} result - The SubmittableResult to log errors from. + * @param {() => void} unsub - A function to stop listen for events. + */ +export const throwErrorIfAny = ( + api: ApiPromise, + result: SubmittableResult, + unsub: () => void, +): void => { + const { events = [], status } = result; + if (status.isInBlock || status.isFinalized) { + events + // find/filter for failed events + .filter(({ event }) => api.events.system.ExtrinsicFailed.is(event)) + // we know that data for system.ExtrinsicFailed is + // (DispatchError, DispatchInfo) + .forEach(({ event: { data } }) => { + const error = data[0] as DispatchError; + unsub(); // unsubscribe from subscription + if (error.isModule) { + // for module errors, we have the section indexed, lookup + const decoded = api.registry.findMetaError(error.asModule); + const { docs, method, section } = decoded; + + throw new Error(`${section}.${method}: ${docs.join(' ')}`); + } else { + // Other, CannotLookup, BadOrigin, no extra info + throw new Error(error.toString()); + } + }); + } +}; + +/** + * Handles the transaction extrinsic result. + * + * @param {ApiPromise} api - The API promise object. + * @param {SubmittableResult} result - The submittable result object. + * @param {Function} unsub - A function to stop listen for events. + * @param {DepositCallbacksType=} callbacks - Optional callbacks for success and error cases. + */ +export const handleTxExtrinsicResult = ( + api: ApiPromise, + result: SubmittableResult, + unsub: () => void, + callbacks?: DepositCallbacksType, +): void => { + const { status } = result; + console.log(`Current status is ${status.toString()}`); + + // if error has been found in events log the error and unsubsribe + throwErrorIfAny(api, result, unsub); + + if (status.isInBlock) { + console.log(`Transaction included at blockHash ${status.asInBlock.toString()}`); + callbacks?.onInBlock?.(status); + } else if (status.isFinalized) { + console.log(`Transaction finalized at blockHash ${status.asFinalized.toString()}`); + + result.events.forEach(({ event: { data, method, section } }) => { + // Search for Deposit event + if (section === 'sygmaBridge' && method === 'Deposit') { + console.log(`${section}.${method}.event data:`, data.toHuman()); + callbacks?.onDepositEvent?.(data.toHuman() as DepositEventDataType); + } + }); + + callbacks?.onFinalized?.(status); + unsub(); + } +}; + +/** + * Deposit function + * + * @description Performs a deposit transaction on the Sygna Bridge. + * @param {ApiPromise} api - The ApiPromise instance. + * @param {InjectedAccountWithMeta} currentAccount - The current account instance. + * @param {XcmMultiAssetIdType} xcmMultiAssetId - The XCM multi-asset ID type. + * @param {string} amount - The amount to be deposited. + * @param {string} domainId - The domain ID of the destination address. + * @param {string} address - The destination address of the deposit transaction. + * @param {DepositCallbacksType=} callbacks - Optional callbacks for success and error cases. + */ +export const deposit = async ( + api: ApiPromise, + currentAccount: InjectedAccountWithMeta, + xcmMultiAssetId: XcmMultiAssetIdType, + amount: string, + domainId: string, + address: string, + callbacks?: DepositCallbacksType, +): Promise => { + const convertedAmount = calculateBigNumber(api, amount); + + const xcmV1MultiassetFungibility = { fungible: convertedAmount.toString() }; + + const destIdMultilocation = { + parents: 0, + interior: { + x2: [{ generalKey: address }, { generalKey: numberToHex(Number(domainId)) }], + }, + }; + const asset = { id: xcmMultiAssetId, fun: xcmV1MultiassetFungibility }; + + let unsub: () => void; + + try { + // finds an injector for an address + const injector = await web3FromAddress(currentAccount.address); + + unsub = await api.tx.sygmaBridge + .deposit(asset, destIdMultilocation) + .signAndSend(currentAccount.address, { signer: injector.signer }, result => { + handleTxExtrinsicResult(api, result, unsub, callbacks); + }); + } catch (e) { + console.error('Substrate deposit error: ', e); + callbacks?.onError?.(e); + } +}; diff --git a/packages/sdk/src/chains/Substrate/utils/getAssetBalance.ts b/packages/sdk/src/chains/Substrate/utils/getAssetBalance.ts new file mode 100644 index 000000000..9c7c210ac --- /dev/null +++ b/packages/sdk/src/chains/Substrate/utils/getAssetBalance.ts @@ -0,0 +1,25 @@ +import { ApiPromise } from '@polkadot/api'; +import type { AssetBalance } from '@polkadot/types/interfaces'; +import { Option } from '@polkadot/types'; + +import type { InjectedAccountWithMeta } from '@polkadot/extension-inject/types'; + +/** + * Retrieves the asset balance of a given account. + * + * @param {ApiPromise} api - The API instance used to query the chain. + * @param {number} assetId - The ID of the asset to query. {@link {@link https://github.com/sygmaprotocol/sygma-substrate-pallets#multiasset}|More details} + * @param {InjectedAccountWithMeta} currentAccount - The account from which to retrieve the asset balance. + * @returns {Promise} A promise that resolves with the retrieved asset balance. + */ +export const getAssetBalance = async ( + api: ApiPromise, + assetId: number, + currentAccount: InjectedAccountWithMeta, +): Promise => { + const assetRes = (await api.query.assets.account( + assetId, + currentAccount.address, + )) as Option; + return assetRes.unwrapOrDefault(); +}; diff --git a/packages/sdk/src/chains/Substrate/utils/getBasicFee.ts b/packages/sdk/src/chains/Substrate/utils/getBasicFee.ts new file mode 100644 index 000000000..6e0549bb2 --- /dev/null +++ b/packages/sdk/src/chains/Substrate/utils/getBasicFee.ts @@ -0,0 +1,22 @@ +import { ApiPromise } from '@polkadot/api'; +import type { Option, u128 } from '@polkadot/types'; + +/** + * Retrieves the basic fee for a given domain and asset. + * + * @param {ApiPromise} api - The Substrate API instance. + * @param {number} domainId - The ID of the domain. + * @param {Object} xcmMultiAssetId - The XCM MultiAsset ID of the asset. {@link {@link https://github.com/sygmaprotocol/sygma-substrate-pallets#multiasset}|More details} + * @returns {Promise>} A promise that resolves to an Option containing the basic fee as u128, or None if not found. + */ +export const getBasicFee = async ( + api: ApiPromise, + domainId: number, + xcmMultiAssetId: Object, +): Promise> => { + const feeRes = (await api.query.sygmaBasicFeeHandler.assetFees([ + domainId, + xcmMultiAssetId, + ])) as unknown as Option; + return feeRes; +}; diff --git a/packages/sdk/src/chains/Substrate/utils/getNativeTokenBalance.ts b/packages/sdk/src/chains/Substrate/utils/getNativeTokenBalance.ts new file mode 100644 index 000000000..0a23d6a66 --- /dev/null +++ b/packages/sdk/src/chains/Substrate/utils/getNativeTokenBalance.ts @@ -0,0 +1,20 @@ +import { ApiPromise } from '@polkadot/api'; +import type { AccountData, AccountInfoWithTripleRefCount } from '@polkadot/types/interfaces'; + +import type { InjectedAccountWithMeta } from '@polkadot/extension-inject/types'; + +/** + * Retrieves balance value in native tokens of the network + * + * @param {ApiPromise} api - An ApiPromise instance. + * @param {InjectedAccountWithMeta} currentAccount - The current account. + * @returns {Promise} A promise that resolves to a AccountData. + */ +export const getNativeTokenBalance = async ( + api: ApiPromise, + currentAccount: InjectedAccountWithMeta, +): Promise => { + const accountInfo: unknown = await api.query.system.account(currentAccount.address); + const balanceData = accountInfo as AccountInfoWithTripleRefCount; + return balanceData.data; +}; diff --git a/packages/sdk/src/chains/Substrate/utils/index.ts b/packages/sdk/src/chains/Substrate/utils/index.ts new file mode 100644 index 000000000..a051370fc --- /dev/null +++ b/packages/sdk/src/chains/Substrate/utils/index.ts @@ -0,0 +1,14 @@ +export { substrateSocketConnect } from './substrateSocketConnect'; +export { getAssetBalance } from './getAssetBalance'; +export { getBasicFee } from './getBasicFee'; +export { getNativeTokenBalance } from './getNativeTokenBalance'; + +export { loadAccounts } from './loadAccounts'; +export { retrieveChainInfo } from './retrieveChainInfo'; +export { + deposit, + throwErrorIfAny, + handleTxExtrinsicResult, + calculateBigNumber, +} from './depositFns'; +export { listenForEvent } from './listenForEvent'; diff --git a/packages/sdk/src/chains/Substrate/utils/listenForEvent.ts b/packages/sdk/src/chains/Substrate/utils/listenForEvent.ts new file mode 100644 index 000000000..d77f14a02 --- /dev/null +++ b/packages/sdk/src/chains/Substrate/utils/listenForEvent.ts @@ -0,0 +1,33 @@ +import { ApiPromise } from '@polkadot/api'; +import type { EventRecord } from '@polkadot/types/interfaces'; +import type { AnyJson } from '@polkadot/types-codec/types'; + +/** + * Listens for an event and calls a callback when it is triggered. + * + * @param {ApiPromise} api - An ApiPromise instance. + * @param {string} eventName - The name of the event to listen for. + * @param {(data: AnyJson) => void} callback - The function to call when the event is triggered. + * @returns {Promise<() => void) | undefined>} A promise that resolves when the event is triggered. + */ +export const listenForEvent = async ( + api: ApiPromise, + eventName: string, + callback: (data: AnyJson) => void, +): Promise<(() => void) | undefined> => { + let unsub: () => void; + try { + unsub = (await api.query.system.events((events: EventRecord[]) => { + // loop through the Vec + events.forEach(({ event: { data, method, section } }) => { + if (section === 'sygmaBridge' && method === eventName) { + callback(data.toHuman()); + unsub(); + } + }); + })) as unknown as () => void; + return unsub; + } catch (e) { + console.error('listenForEvent Error:', e); + } +}; diff --git a/packages/sdk/src/chains/Substrate/utils/loadAccounts.ts b/packages/sdk/src/chains/Substrate/utils/loadAccounts.ts new file mode 100644 index 000000000..fa0031ada --- /dev/null +++ b/packages/sdk/src/chains/Substrate/utils/loadAccounts.ts @@ -0,0 +1,65 @@ +import { ApiPromise } from '@polkadot/api'; +import { web3Accounts, web3Enable } from '@polkadot/extension-dapp'; +import { keyring as Keyring } from '@polkadot/ui-keyring'; +import { isTestChain } from '@polkadot/util'; + +import { SubstrateConfigType } from '../types'; + +import { retrieveChainInfo } from '../utils'; + +export type LoadAccountsCallbacksType = { + /** + * Callback to be called when the keyring is being loaded. + */ + onLoadKeyring: () => void; + /** + * Callback to be called when the keyring is set. + */ + onSetKeyring: (keyring: typeof Keyring) => void; + /** + * Callback to be called when an error occurs while loading the keyring. + */ + onErrorKeyring: (e: unknown) => void; +}; + +/** + * Loads all accounts from web3 and sets them in the Keyring. + * + * @param {SubstrateConfigType} config - Substrate sygma bridge config. + * @param {ApiPromise} api - An ApiPromise instance. + * @param {LoadAccountsCallbacksType} [callbacks] - Callback functions to be executed during the loading process. + * @returns {Promise} Promise that resolves when accounts are loaded. + */ +export const loadAccounts = async ( + config: SubstrateConfigType, + api: ApiPromise, + callbacks?: LoadAccountsCallbacksType, +): Promise => { + callbacks?.onLoadKeyring?.(); + try { + // For some reason web3Enable promise is not rejecting, only console.error + const auth = await web3Enable(config.appName); + if (!auth || (auth as []).length === 0) { + throw new Error("Can't get any injected sources. Is the wallet authorized?"); + } + + let allAccounts = await web3Accounts(); + allAccounts = allAccounts.map(({ address, meta }) => ({ + address, + meta: { ...meta, name: `${meta.name ?? 'no name'} (${meta.source})` }, + })); + + /** + * Logics to check if the connecting chain is a dev chain, coming from polkadot-js Apps + * @link https://github.com/polkadot-js/apps/blob/15b8004b2791eced0dde425d5dc7231a5f86c682/packages/react-api/src/Api.tsx?_pjax=div%5Bitemtype%3D%22http%3A%2F%2Fschema.org%2FSoftwareSourceCode%22%5D%20%3E%20main#L101-L110 + */ + const { systemChain, systemChainType } = await retrieveChainInfo(api); + const isDevelopment = + systemChainType.isDevelopment || systemChainType.isLocal || isTestChain(systemChain); + Keyring.loadAll({ isDevelopment }, allAccounts); + callbacks?.onSetKeyring?.(Keyring); + } catch (e) { + console.error(e); + callbacks?.onErrorKeyring?.(e); + } +}; diff --git a/packages/sdk/src/chains/Substrate/utils/retrieveChainInfo.ts b/packages/sdk/src/chains/Substrate/utils/retrieveChainInfo.ts new file mode 100644 index 000000000..ae88cffb8 --- /dev/null +++ b/packages/sdk/src/chains/Substrate/utils/retrieveChainInfo.ts @@ -0,0 +1,28 @@ +import { ApiPromise } from '@polkadot/api'; +import { TypeRegistry } from '@polkadot/types/create'; +import { ChainType } from '@polkadot/types/interfaces'; + +const registry = new TypeRegistry(); +const LiveChainType = registry.createType('ChainType', 'Live') as unknown as ChainType; +/** + * Retrieve the system chain and chain type from the API. + * + * @param {ApiPromise} api - The API instance. + * @returns {Promise<{systemChain: string; systemChainType: ChainType}>} An object with the system chain and chain type. + */ +export const retrieveChainInfo = async ( + api: ApiPromise, +): Promise<{ + systemChain: string; + systemChainType: ChainType; +}> => { + const [systemChain, systemChainType] = await Promise.all([ + api.rpc.system.chain(), + api.rpc.system.chainType ? api.rpc.system.chainType() : Promise.resolve(LiveChainType), + ]); + + return { + systemChain: (systemChain || '').toString(), + systemChainType, + }; +}; diff --git a/packages/sdk/src/chains/Substrate/utils/substrateSocketConnect.ts b/packages/sdk/src/chains/Substrate/utils/substrateSocketConnect.ts new file mode 100644 index 000000000..2635bcaac --- /dev/null +++ b/packages/sdk/src/chains/Substrate/utils/substrateSocketConnect.ts @@ -0,0 +1,60 @@ +import { DefinitionRpcExt } from '@polkadot/types/types'; +import { ApiPromise, WsProvider } from '@polkadot/api'; + +export type SubstrateSocketConnectionCallbacksType = { + /** + * Callback called before whole connection logic started + */ + onConnectInit?: () => void; + /** + * Callback for when the connection is established. + */ + onConnect?: (api: ApiPromise) => void; + /** + * Callback for when the connection is successful. + */ + onConnectSucccess?: (api: ApiPromise) => void; + /** + * Callback for when an error occurs with the connection. + */ + onConnectError?: (error: Event) => void; +}; +/** + * Connects to a Substrate node using WebSockets API by creating a new WsProvider instance with the given socket address. + * + * @param {Object} state - An object that contains the state of the API, including the connection status, socket address, and JSON-RPC interface. + * @param {SubstrateSocketConnectionCallbacksType} callbacks - Optional callbacks + * @returns {ApiPromise} - An instance of the ApiPromise class. + */ +export const substrateSocketConnect = ( + state: { + apiState: string | null | undefined; + socket: string; + jsonrpc: { + [x: string]: Record; + }; + }, + callbacks?: SubstrateSocketConnectionCallbacksType, +): ApiPromise | undefined => { + const { apiState, socket, jsonrpc } = state; + // We only want this function to be performed once + if (apiState) return; + + callbacks?.onConnectInit?.(); + + // console.log(`Connected socket: ${socket}`); + const provider = new WsProvider(socket); + const _api = new ApiPromise({ provider, rpc: jsonrpc }); + + // Set listeners for disconnection and reconnection event. + _api.on('connected', () => { + callbacks?.onConnect?.(_api); + // `ready` event is not emitted upon reconnection and is checked explicitly here. + void _api.isReady.then(() => callbacks?.onConnectSucccess?.(_api)); + }); + _api.on('ready', () => callbacks?.onConnectSucccess?.(_api)); + + _api.on('error', (err: Event) => callbacks?.onConnectError?.(err)); + + return _api; +}; diff --git a/packages/sdk/src/chains/index.ts b/packages/sdk/src/chains/index.ts index 59505a5c9..d9b670117 100644 --- a/packages/sdk/src/chains/index.ts +++ b/packages/sdk/src/chains/index.ts @@ -1 +1,2 @@ -export { default as EvmBridge } from './EVM'; +export * from './EVM'; +export * from './Substrate'; diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts index 34cf4945f..bb46d5c04 100644 --- a/packages/sdk/src/index.ts +++ b/packages/sdk/src/index.ts @@ -1,3 +1,4 @@ export { Sygma } from './Sygma'; export * from './types'; export * from './utils'; +export * from './chains'; diff --git a/packages/sdk/src/types/types.ts b/packages/sdk/src/types/types.ts index 9adce8b47..8a702307f 100644 --- a/packages/sdk/src/types/types.ts +++ b/packages/sdk/src/types/types.ts @@ -8,7 +8,7 @@ export interface SygmaSDK {} export type Directions = 'chain1' | 'chain2'; export type Setup = { - bridgeSetupList: SygmaBridgeSetupList; + bridgeSetupList: EvmBridgeSetupList; bridgeSetup?: BridgeData; feeOracleSetup?: FeeOracleData; }; @@ -31,7 +31,7 @@ export type TokenConfig = { export type FeeType = 'basic' | 'feeOracle' | 'none'; -export type SygmaBridgeSetup = { +export type EvmBridgeSetup = { name: string; networkId: number; bridgeAddress: string; @@ -45,11 +45,12 @@ export type SygmaBridgeSetup = { confirmations?: number; }; -export type SygmaBridgeSetupList = SygmaBridgeSetup[]; +export type EvmBridgeSetupList = EvmBridgeSetup[]; +// export type SygmaEvmSubstrateBridgeSetupList = (SubstrateConfigType | SygmaBridgeSetup)[]; export type BridgeData = { - chain1: SygmaBridgeSetup; - chain2: SygmaBridgeSetup; + chain1: EvmBridgeSetup; + chain2: EvmBridgeSetup; }; export type FeeOracleData = { diff --git a/packages/sdk/tsconfig.json b/packages/sdk/tsconfig.json index bc4daaa6d..367e952c9 100644 --- a/packages/sdk/tsconfig.json +++ b/packages/sdk/tsconfig.json @@ -2,9 +2,9 @@ "extends": "../../tsconfig.json", "compilerOptions": { "composite": true, - "target": "ES2017", + "target": "ES2022", "outDir": "dist", - "module": "commonjs", + "module": "ES2022", "baseUrl": "./src", "allowJs": true, "declaration": true, @@ -22,7 +22,12 @@ "lib": [ "es2021", "dom" - ] + ], + "types": ["jest", "node", "@types/jest"], + }, + "ts-node": { + "esm": true, + "experimentalSpecifierResolution": "node" }, "include": [ "src" diff --git a/yarn.lock b/yarn.lock index e6b41dad6..387fdc37a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -36,6 +36,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.0.tgz#2a592fd89bacb1fcde68de31bee4f2f2dacb0e86" integrity sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw== +"@babel/compat-data@^7.20.5": + version "7.20.10" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.10.tgz#9d92fa81b87542fff50e848ed585b4212c1d34ec" + integrity sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg== + "@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.0.tgz#d2f5f4f2033c00de8096be3c9f45772563e150c3" @@ -57,6 +62,27 @@ json5 "^2.2.1" semver "^6.3.0" +"@babel/core@^7.11.6", "@babel/core@^7.20.7": + version "7.20.12" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d" + integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.7" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helpers" "^7.20.7" + "@babel/parser" "^7.20.7" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.12" + "@babel/types" "^7.20.7" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" + "@babel/eslint-parser@^7.16.3": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.18.9.tgz#255a63796819a97b7578751bb08ab9f2a375a031" @@ -75,6 +101,15 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" +"@babel/generator@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a" + integrity sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw== + dependencies: + "@babel/types" "^7.20.7" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -100,6 +135,17 @@ browserslist "^4.20.2" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" + integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.19.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz#bfd6904620df4e46470bae4850d66be1054c404b" @@ -188,6 +234,20 @@ "@babel/traverse" "^7.19.0" "@babel/types" "^7.19.0" +"@babel/helper-module-transforms@^7.20.11": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0" + integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.10" + "@babel/types" "^7.20.7" + "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" @@ -228,6 +288,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + dependencies: + "@babel/types" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" @@ -247,11 +314,21 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + "@babel/helper-validator-identifier@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== +"@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + "@babel/helper-validator-option@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" @@ -276,6 +353,15 @@ "@babel/traverse" "^7.19.0" "@babel/types" "^7.19.0" +"@babel/helpers@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.7.tgz#04502ff0feecc9f20ecfaad120a18f011a8e6dce" + integrity sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA== + dependencies: + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.7" + "@babel/types" "^7.20.7" + "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" @@ -290,6 +376,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.0.tgz#497fcafb1d5b61376959c1c338745ef0577aa02c" integrity sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw== +"@babel/parser@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b" + integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -523,7 +614,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.18.6": +"@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.7.2": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== @@ -809,6 +900,20 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.18.6" +"@babel/plugin-transform-react-jsx-self@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz#3849401bab7ae8ffa1e3e5687c94a753fc75bda7" + integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-jsx-source@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86" + integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/plugin-transform-react-jsx@^7.18.6": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9" @@ -1048,6 +1153,13 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" +"@babel/runtime@7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" @@ -1055,6 +1167,20 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.20.13": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" + integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd" + integrity sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/template@^7.18.10", "@babel/template@^7.3.3": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" @@ -1064,6 +1190,15 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" +"@babel/template@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@babel/traverse@^7.18.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.7.2": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.0.tgz#eb9c561c7360005c592cc645abafe0c3c4548eed" @@ -1080,6 +1215,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.7": + version "7.20.12" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.12.tgz#7f0f787b3a67ca4475adef1f56cb94f6abd4a4b5" + integrity sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.7" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" @@ -1089,6 +1240,15 @@ "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" +"@babel/types@^7.20.2", "@babel/types@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" + integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1463,6 +1623,116 @@ resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== +"@esbuild/android-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23" + integrity sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg== + +"@esbuild/android-arm@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2" + integrity sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw== + +"@esbuild/android-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e" + integrity sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ== + +"@esbuild/darwin-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220" + integrity sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w== + +"@esbuild/darwin-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4" + integrity sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg== + +"@esbuild/freebsd-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27" + integrity sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw== + +"@esbuild/freebsd-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72" + integrity sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug== + +"@esbuild/linux-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca" + integrity sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g== + +"@esbuild/linux-arm@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196" + integrity sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ== + +"@esbuild/linux-ia32@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54" + integrity sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg== + +"@esbuild/linux-loong64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8" + integrity sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ== + +"@esbuild/linux-mips64el@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726" + integrity sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw== + +"@esbuild/linux-ppc64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8" + integrity sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g== + +"@esbuild/linux-riscv64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9" + integrity sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw== + +"@esbuild/linux-s390x@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87" + integrity sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w== + +"@esbuild/linux-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f" + integrity sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw== + +"@esbuild/netbsd-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775" + integrity sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA== + +"@esbuild/openbsd-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35" + integrity sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg== + +"@esbuild/sunos-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c" + integrity sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw== + +"@esbuild/win32-arm64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a" + integrity sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw== + +"@esbuild/win32-ia32@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09" + integrity sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig== + +"@esbuild/win32-x64@0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091" + integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q== + "@eslint/eslintrc@^1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.2.tgz#58b69582f3b7271d8fa67fe5251767a5b38ea356" @@ -1570,7 +1840,7 @@ lru-cache "^5.1.1" semaphore-async-await "^1.5.1" -"@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.0", "@ethereumjs/common@^2.6.4", "@ethereumjs/common@^2.6.5": +"@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.0", "@ethereumjs/common@^2.6.3", "@ethereumjs/common@^2.6.4", "@ethereumjs/common@^2.6.5": version "2.6.5" resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== @@ -1589,6 +1859,14 @@ ethereumjs-util "^7.1.1" miller-rabin "^4.0.0" +"@ethereumjs/tx@3.5.1": + version "3.5.1" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.1.tgz#8d941b83a602b4a89949c879615f7ea9a90e6671" + integrity sha512-xzDrTiu4sqZXUcaBxJ4n4W5FrppwxLxZB4ZDGVLtxSQR4lVuOnFR6RcUHdg1mpUhAPVrmnzLJpxaeXnPxIyhWA== + dependencies: + "@ethereumjs/common" "^2.6.3" + ethereumjs-util "^7.1.4" + "@ethereumjs/tx@^3.3.0", "@ethereumjs/tx@^3.3.2", "@ethereumjs/tx@^3.4.0", "@ethereumjs/tx@^3.5.2": version "3.5.2" resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" @@ -1660,6 +1938,21 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.0" +"@ethersproject/abi@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.1.tgz#f7de888edeb56b0a657b672bdd1b3a1135cd14f7" + integrity sha512-0cqssYh6FXjlwKWBmLm3+zH2BNARoS5u/hxbz+LpQmcDB3w0W553h2btWui1/uZp2GBM/SI3KniTuMcYyHpA5w== + dependencies: + "@ethersproject/address" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/constants" "^5.6.0" + "@ethersproject/hash" "^5.6.0" + "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.0" + "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.4.0", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.0", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" @@ -2158,6 +2451,13 @@ dependencies: "@ethersproject/logger" "^5.6.0" +"@ethersproject/networks@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.2.tgz#2bacda62102c0b1fcee408315f2bed4f6fbdf336" + integrity sha512-9uEzaJY7j5wpYGTojGp8U89mSsgQLc40PCMJLMCnFXTs7nhBveZ0t7dbqWUNrepWTszDbFkYD6WlL8DKx5huHA== + dependencies: + "@ethersproject/logger" "^5.6.0" + "@ethersproject/networks@5.7.0", "@ethersproject/networks@^5.4.0", "@ethersproject/networks@^5.6.0", "@ethersproject/networks@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.0.tgz#df72a392f1a63a57f87210515695a31a245845ad" @@ -2267,6 +2567,31 @@ bech32 "1.1.4" ws "7.4.6" +"@ethersproject/providers@5.6.4": + version "5.6.4" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.4.tgz#1a49c211b57b0b2703c320819abbbfa35c83dff7" + integrity sha512-WAdknnaZ52hpHV3qPiJmKx401BLpup47h36Axxgre9zT+doa/4GC/Ne48ICPxTm0BqndpToHjpLP1ZnaxyE+vw== + dependencies: + "@ethersproject/abstract-provider" "^5.6.0" + "@ethersproject/abstract-signer" "^5.6.0" + "@ethersproject/address" "^5.6.0" + "@ethersproject/basex" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/constants" "^5.6.0" + "@ethersproject/hash" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/networks" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/random" "^5.6.0" + "@ethersproject/rlp" "^5.6.0" + "@ethersproject/sha2" "^5.6.0" + "@ethersproject/strings" "^5.6.0" + "@ethersproject/transactions" "^5.6.0" + "@ethersproject/web" "^5.6.0" + bech32 "1.1.4" + ws "7.4.6" + "@ethersproject/providers@5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.0.tgz#a885cfc7650a64385e7b03ac86fe9c2d4a9c2c63" @@ -2803,6 +3128,18 @@ jest-util "^28.1.3" slash "^3.0.0" +"@jest/console@^29.4.1": + version "29.4.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.4.1.tgz#cbc31d73f6329f693b3d34b365124de797704fff" + integrity sha512-m+XpwKSi3PPM9znm5NGS8bBReeAJJpSkL1OuFCqaMaJL2YX9YXLkkI+MBchMPwu+ZuM2rynL51sgfkQteQ1CKQ== + dependencies: + "@jest/types" "^29.4.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.4.1" + jest-util "^29.4.1" + slash "^3.0.0" + "@jest/core@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" @@ -2837,6 +3174,40 @@ slash "^3.0.0" strip-ansi "^6.0.0" +"@jest/core@^29.4.1": + version "29.4.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.4.1.tgz#91371179b5959951e211dfaeea4277a01dcca14f" + integrity sha512-RXFTohpBqpaTebNdg5l3I5yadnKo9zLBajMT0I38D0tDhreVBYv3fA8kywthI00sWxPztWLD3yjiUkewwu/wKA== + dependencies: + "@jest/console" "^29.4.1" + "@jest/reporters" "^29.4.1" + "@jest/test-result" "^29.4.1" + "@jest/transform" "^29.4.1" + "@jest/types" "^29.4.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.4.0" + jest-config "^29.4.1" + jest-haste-map "^29.4.1" + jest-message-util "^29.4.1" + jest-regex-util "^29.2.0" + jest-resolve "^29.4.1" + jest-resolve-dependencies "^29.4.1" + jest-runner "^29.4.1" + jest-runtime "^29.4.1" + jest-snapshot "^29.4.1" + jest-util "^29.4.1" + jest-validate "^29.4.1" + jest-watcher "^29.4.1" + micromatch "^4.0.4" + pretty-format "^29.4.1" + slash "^3.0.0" + strip-ansi "^6.0.0" + "@jest/environment@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" @@ -2847,6 +3218,16 @@ "@types/node" "*" jest-mock "^27.5.1" +"@jest/environment@^29.4.1": + version "29.4.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.4.1.tgz#52d232a85cdc995b407a940c89c86568f5a88ffe" + integrity sha512-pJ14dHGSQke7Q3mkL/UZR9ZtTOxqskZaC91NzamEH4dlKRt42W+maRBXiw/LWkdJe+P0f/zDR37+SPMplMRlPg== + dependencies: + "@jest/fake-timers" "^29.4.1" + "@jest/types" "^29.4.1" + "@types/node" "*" + jest-mock "^29.4.1" + "@jest/expect-utils@^29.0.3": version "29.0.3" resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.0.3.tgz#f5bb86f5565bf2dacfca31ccbd887684936045b2" @@ -2854,6 +3235,21 @@ dependencies: jest-get-type "^29.0.0" +"@jest/expect-utils@^29.4.1": + version "29.4.1" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.4.1.tgz#105b9f3e2c48101f09cae2f0a4d79a1b3a419cbb" + integrity sha512-w6YJMn5DlzmxjO00i9wu2YSozUYRBhIoJ6nQwpMYcBMtiqMGJm1QBzOf6DDgRao8dbtpDoaqLg6iiQTvv0UHhQ== + dependencies: + jest-get-type "^29.2.0" + +"@jest/expect@^29.4.1": + version "29.4.1" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.4.1.tgz#3338fa20f547bb6e550c4be37d6f82711cc13c38" + integrity sha512-ZxKJP5DTUNF2XkpJeZIzvnzF1KkfrhEF6Rz0HGG69fHl6Bgx5/GoU3XyaeFYEjuuKSOOsbqD/k72wFvFxc3iTw== + dependencies: + expect "^29.4.1" + jest-snapshot "^29.4.1" + "@jest/fake-timers@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" @@ -2866,6 +3262,18 @@ jest-mock "^27.5.1" jest-util "^27.5.1" +"@jest/fake-timers@^29.4.1": + version "29.4.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.4.1.tgz#7b673131e8ea2a2045858f08241cace5d518b42b" + integrity sha512-/1joI6rfHFmmm39JxNfmNAO3Nwm6Y0VoL5fJDy7H1AtWrD1CgRtqJbN9Ld6rhAkGO76qqp4cwhhxJ9o9kYjQMw== + dependencies: + "@jest/types" "^29.4.1" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.4.1" + jest-mock "^29.4.1" + jest-util "^29.4.1" + "@jest/globals@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" @@ -2875,6 +3283,16 @@ "@jest/types" "^27.5.1" expect "^27.5.1" +"@jest/globals@^29.4.1": + version "29.4.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.4.1.tgz#3cd78c5567ab0249f09fbd81bf9f37a7328f4713" + integrity sha512-znoK2EuFytbHH0ZSf2mQK2K1xtIgmaw4Da21R2C/NE/+NnItm5mPEFQmn8gmF3f0rfOlmZ3Y3bIf7bFj7DHxAA== + dependencies: + "@jest/environment" "^29.4.1" + "@jest/expect" "^29.4.1" + "@jest/types" "^29.4.1" + jest-mock "^29.4.1" + "@jest/reporters@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" @@ -2906,6 +3324,36 @@ terminal-link "^2.0.0" v8-to-istanbul "^8.1.0" +"@jest/reporters@^29.4.1": + version "29.4.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.4.1.tgz#50d509c08575c75e3cd2176d72ec3786419d5e04" + integrity sha512-AISY5xpt2Xpxj9R6y0RF1+O6GRy9JsGa8+vK23Lmzdy1AYcpQn5ItX79wJSsTmfzPKSAcsY1LNt/8Y5Xe5LOSg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.4.1" + "@jest/test-result" "^29.4.1" + "@jest/transform" "^29.4.1" + "@jest/types" "^29.4.1" + "@jridgewell/trace-mapping" "^0.3.15" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.4.1" + jest-util "^29.4.1" + jest-worker "^29.4.1" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + "@jest/schemas@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" @@ -2920,6 +3368,13 @@ dependencies: "@sinclair/typebox" "^0.24.1" +"@jest/schemas@^29.4.0": + version "29.4.0" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.0.tgz#0d6ad358f295cc1deca0b643e6b4c86ebd539f17" + integrity sha512-0E01f/gOZeNTG76i5eWWSupvSHaIINrTie7vCyjiYFKgzNdyEGd12BUv4oNBFHOqlHDbtoJi3HrQ38KCC90NsQ== + dependencies: + "@sinclair/typebox" "^0.25.16" + "@jest/source-map@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" @@ -2929,6 +3384,15 @@ graceful-fs "^4.2.9" source-map "^0.6.0" +"@jest/source-map@^29.2.0": + version "29.2.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.2.0.tgz#ab3420c46d42508dcc3dc1c6deee0b613c235744" + integrity sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ== + dependencies: + "@jridgewell/trace-mapping" "^0.3.15" + callsites "^3.0.0" + graceful-fs "^4.2.9" + "@jest/test-result@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" @@ -2949,6 +3413,16 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" +"@jest/test-result@^29.4.1": + version "29.4.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.4.1.tgz#997f19695e13b34779ceb3c288a416bd26c3238d" + integrity sha512-WRt29Lwt+hEgfN8QDrXqXGgCTidq1rLyFqmZ4lmJOpVArC8daXrZWkWjiaijQvgd3aOUj2fM8INclKHsQW9YyQ== + dependencies: + "@jest/console" "^29.4.1" + "@jest/types" "^29.4.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + "@jest/test-sequencer@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" @@ -2959,6 +3433,16 @@ jest-haste-map "^27.5.1" jest-runtime "^27.5.1" +"@jest/test-sequencer@^29.4.1": + version "29.4.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.4.1.tgz#f7a006ec7058b194a10cf833c88282ef86d578fd" + integrity sha512-v5qLBNSsM0eHzWLXsQ5fiB65xi49A3ILPSFQKPXzGL4Vyux0DPZAIN7NAFJa9b4BiTDP9MBF/Zqc/QA1vuiJ0w== + dependencies: + "@jest/test-result" "^29.4.1" + graceful-fs "^4.2.9" + jest-haste-map "^29.4.1" + slash "^3.0.0" + "@jest/transform@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" @@ -2980,6 +3464,27 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" +"@jest/transform@^29.4.1": + version "29.4.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.4.1.tgz#e4f517841bb795c7dcdee1ba896275e2c2d26d4a" + integrity sha512-5w6YJrVAtiAgr0phzKjYd83UPbCXsBRTeYI4BXokv9Er9CcrH9hfXL/crCvP2d2nGOcovPUnlYiLPFLZrkG5Hg== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.4.1" + "@jridgewell/trace-mapping" "^0.3.15" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.4.1" + jest-regex-util "^29.2.0" + jest-util "^29.4.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^5.0.0" + "@jest/types@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" @@ -3026,6 +3531,18 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jest/types@^29.4.1": + version "29.4.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.4.1.tgz#f9f83d0916f50696661da72766132729dcb82ecb" + integrity sha512-zbrAXDUOnpJ+FMST2rV7QZOgec8rskg2zv8g2ajeqitp4tvZiyqTCYXANrKsM+ryj5o+LI+ZN2EgU9drrkiwSA== + dependencies: + "@jest/schemas" "^29.4.0" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" @@ -3043,7 +3560,7 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@^3.0.3": +"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": version "3.1.0" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== @@ -3061,7 +3578,7 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== @@ -3074,6 +3591,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + 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.14", "@jridgewell/trace-mapping@^0.3.9": version "0.3.15" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" @@ -3082,6 +3607,99 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@ledgerhq/devices@^6.27.1": + version "6.27.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-6.27.1.tgz#3b13ab1d1ba8201e9e74a08f390560483978c962" + integrity sha512-jX++oy89jtv7Dp2X6gwt3MMkoajel80JFWcdc0HCouwDsV1mVJ3SQdwl/bQU0zd8HI6KebvUP95QTwbQLLK/RQ== + dependencies: + "@ledgerhq/errors" "^6.10.0" + "@ledgerhq/logs" "^6.10.0" + rxjs "6" + semver "^7.3.5" + +"@ledgerhq/devices@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.0.0.tgz#8fe9f9e442e28b7a20bcdf4c2eed06ce7b8f76ae" + integrity sha512-gSnRT0KPca+LIpaC6D/WZQjOAlSI5uCvK1dmxXtKhODLAj735rX5Z3SnGnLUavRCHNbUi44FzgvloF5BKTkh7A== + dependencies: + "@ledgerhq/errors" "^6.12.3" + "@ledgerhq/logs" "^6.10.1" + rxjs "6" + semver "^7.3.5" + +"@ledgerhq/errors@^6.10.0", "@ledgerhq/errors@^6.12.3": + version "6.12.3" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.12.3.tgz#a610caae1eeeb7cb038525e5212fe03217dda683" + integrity sha512-djiMSgB/7hnK3aLR/c5ZMMivxjcI7o2+y3VKcsZZpydPoVf9+FXqeJPRfOwmJ0JxbQ//LinUfWpIfHew8LkaVw== + +"@ledgerhq/hw-transport-node-hid-noevents@^6.27.12": + version "6.27.12" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.27.12.tgz#5dacbaf7e146018a73d18d16ce975925b5795732" + integrity sha512-f99lIcdEz78jHVfr57Vl9sgP/WpAuM3X26lLDSTKmNHDxLSx7IQaK/eJOcFG4XLk5K7dK/zoyXqq13zcLL2tPg== + dependencies: + "@ledgerhq/devices" "^8.0.0" + "@ledgerhq/errors" "^6.12.3" + "@ledgerhq/hw-transport" "^6.28.1" + "@ledgerhq/logs" "^6.10.1" + node-hid "^2.1.2" + +"@ledgerhq/hw-transport-node-hid-singleton@^6.28.8": + version "6.28.9" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid-singleton/-/hw-transport-node-hid-singleton-6.28.9.tgz#29bca2146710c0c2d4e239abb7496b31a76da68a" + integrity sha512-uMjAooHqcmcFztAcv8h1uwNKWDaSDRRvYg6pK2Yn+C2IAUvwUf9cHeTsid6E3J1rS20/dwx3GRHFtX65MpQLDg== + dependencies: + "@ledgerhq/devices" "^8.0.0" + "@ledgerhq/errors" "^6.12.3" + "@ledgerhq/hw-transport" "^6.28.1" + "@ledgerhq/hw-transport-node-hid-noevents" "^6.27.12" + "@ledgerhq/logs" "^6.10.1" + lodash "^4.17.21" + node-hid "^2.1.2" + usb "2.5.1" + +"@ledgerhq/hw-transport-webhid@^6.27.11": + version "6.27.12" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webhid/-/hw-transport-webhid-6.27.12.tgz#dd5073c5da05c6c3234a76a6e44ed576fe198757" + integrity sha512-Yhy5dOKeJIU24Dh9xQjrStc++NviPjRSGHsbc1PeyEjgPEGc8q8wtvm7WFBDzmymBwMhIA5eoNj3fGLk/voXQQ== + dependencies: + "@ledgerhq/devices" "^8.0.0" + "@ledgerhq/errors" "^6.12.3" + "@ledgerhq/hw-transport" "^6.28.1" + "@ledgerhq/logs" "^6.10.1" + +"@ledgerhq/hw-transport-webusb@^6.27.11": + version "6.27.12" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-6.27.12.tgz#96c9126161664f1c8736f76304309caf46433a7f" + integrity sha512-U96UWLZIurD9ifHlm77PAgBbvDCe99DAJk64O2SdR41WRF3WaRq/pjrzCq2UvvammdCd1p7nS4zbhlse0wZplg== + dependencies: + "@ledgerhq/devices" "^8.0.0" + "@ledgerhq/errors" "^6.12.3" + "@ledgerhq/hw-transport" "^6.28.1" + "@ledgerhq/logs" "^6.10.1" + +"@ledgerhq/hw-transport@6.27.1": + version "6.27.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.27.1.tgz#88072278f69c279cb6569352acd4ae2fec33ace3" + integrity sha512-hnE4/Fq1YzQI4PA1W0H8tCkI99R3UWDb3pJeZd6/Xs4Qw/q1uiQO+vNLC6KIPPhK0IajUfuI/P2jk0qWcMsuAQ== + dependencies: + "@ledgerhq/devices" "^6.27.1" + "@ledgerhq/errors" "^6.10.0" + events "^3.3.0" + +"@ledgerhq/hw-transport@^6.28.0", "@ledgerhq/hw-transport@^6.28.1": + version "6.28.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.28.1.tgz#cb22fe9bc23af4682c30f2aac7fe6f7ab13ed65a" + integrity sha512-RaZe+abn0zBIz82cE9tp7Y7aZkHWWbEaE2yJpfxT8AhFz3fx+BU0kLYzuRN9fmA7vKueNJ1MTVUCY+Ex9/CHSQ== + dependencies: + "@ledgerhq/devices" "^8.0.0" + "@ledgerhq/errors" "^6.12.3" + events "^3.3.0" + +"@ledgerhq/logs@^6.10.0", "@ledgerhq/logs@^6.10.1": + version "6.10.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.10.1.tgz#5bd16082261d7364eabb511c788f00937dac588d" + integrity sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w== + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" @@ -3157,6 +3775,11 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== +"@noble/hashes@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + "@noble/hashes@~1.1.1": version "1.1.3" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.3.tgz#360afc77610e0a61f3417e497dcf36862e4f8111" @@ -3167,6 +3790,11 @@ resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94" integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ== +"@noble/secp256k1@1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -3203,6 +3831,427 @@ schema-utils "^3.0.0" source-map "^0.7.3" +"@polkadot/api-augment@9.14.1", "@polkadot/api-augment@^9.13.6", "@polkadot/api-augment@^9.9.1": + version "9.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-augment/-/api-augment-9.14.1.tgz#1504ca45640fce3bd992fa153f0b2562a0064ed3" + integrity sha512-wx9mrNTI3QmO3lfy34KN+TQUwEdgEZzDbZTH8Y+AiQx5hX34oAHTHcKbKoIEF9ENhXhmbNMiEERccH+0GC/1OQ== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/api-base" "9.14.1" + "@polkadot/rpc-augment" "9.14.1" + "@polkadot/types" "9.14.1" + "@polkadot/types-augment" "9.14.1" + "@polkadot/types-codec" "9.14.1" + "@polkadot/util" "^10.4.1" + +"@polkadot/api-base@9.14.1", "@polkadot/api-base@^9.13.6": + version "9.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-base/-/api-base-9.14.1.tgz#b6e2156bf1272045bb3beb4549742503558bfd62" + integrity sha512-bhVZEexTq7qMaq5OoTxjJZgHRA8OPY050tn741JSD5qP9cnZ1xX1H2SElmw3yIlA5juA34V+1gwhxxa4tkDOwA== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/rpc-core" "9.14.1" + "@polkadot/types" "9.14.1" + "@polkadot/util" "^10.4.1" + rxjs "^7.8.0" + +"@polkadot/api-contract@^9.13.6": + version "9.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-contract/-/api-contract-9.14.1.tgz#c70f08d12e30370535ced8a24008e8f0595fa4d6" + integrity sha512-O88NUXMZP0cpHLlr9mdMVh+4EwllezvWMAfZZAPZPqdsUpV6+azKDMRRtBQj+mg3aHiNws+sTkUchUim0JYOUw== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/api" "9.14.1" + "@polkadot/types" "9.14.1" + "@polkadot/types-codec" "9.14.1" + "@polkadot/types-create" "9.14.1" + "@polkadot/util" "^10.4.1" + "@polkadot/util-crypto" "^10.4.1" + rxjs "^7.8.0" + +"@polkadot/api-derive@9.14.1", "@polkadot/api-derive@^9.13.6": + version "9.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-9.14.1.tgz#afe0747436352130571a855a008d52d987f4b72a" + integrity sha512-urDXH+LHTJHEn5eAT4dOQAGFi3MGa2OnZo0lRYeIkIis9Bl7+Lhh2YKmoL5iFR1BBpmNSL82nlVNjfI2m7oiKA== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/api" "9.14.1" + "@polkadot/api-augment" "9.14.1" + "@polkadot/api-base" "9.14.1" + "@polkadot/rpc-core" "9.14.1" + "@polkadot/types" "9.14.1" + "@polkadot/types-codec" "9.14.1" + "@polkadot/util" "^10.4.1" + "@polkadot/util-crypto" "^10.4.1" + rxjs "^7.8.0" + +"@polkadot/api@9.14.1", "@polkadot/api@^9.13.6", "@polkadot/api@^9.9.1": + version "9.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-9.14.1.tgz#2ac156db72ad51394f416f2bdd5e0e3a5e08e40e" + integrity sha512-7fQxH6cPOUTH6psEDkaskkgfD+R0CUL0vBYj0BD8e4yxWMsdz4lbuyBl8A6DOVjMD40ZU9HTL3GqQzud5dEdMw== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/api-augment" "9.14.1" + "@polkadot/api-base" "9.14.1" + "@polkadot/api-derive" "9.14.1" + "@polkadot/keyring" "^10.4.1" + "@polkadot/rpc-augment" "9.14.1" + "@polkadot/rpc-core" "9.14.1" + "@polkadot/rpc-provider" "9.14.1" + "@polkadot/types" "9.14.1" + "@polkadot/types-augment" "9.14.1" + "@polkadot/types-codec" "9.14.1" + "@polkadot/types-create" "9.14.1" + "@polkadot/types-known" "9.14.1" + "@polkadot/util" "^10.4.1" + "@polkadot/util-crypto" "^10.4.1" + eventemitter3 "^5.0.0" + rxjs "^7.8.0" + +"@polkadot/extension-dapp@^0.44.8": + version "0.44.8" + resolved "https://registry.yarnpkg.com/@polkadot/extension-dapp/-/extension-dapp-0.44.8.tgz#f07acc50054e4dd39e9506d38f81b1a231fe9d3e" + integrity sha512-CaGrY+Vh9u2ABPpLsbMEVQniQDKreBWEmtp0RzfmIbed8lmmOgwtfDZjb7ncTNR79WJX+1AD+VX5dKQtvT3S4w== + dependencies: + "@babel/runtime" "^7.20.7" + "@polkadot/extension-inject" "^0.44.8" + "@polkadot/util" "^10.2.3" + "@polkadot/util-crypto" "^10.2.3" + +"@polkadot/extension-inject@^0.44.8": + version "0.44.8" + resolved "https://registry.yarnpkg.com/@polkadot/extension-inject/-/extension-inject-0.44.8.tgz#844ad10212857f9d280b27199a90a3fb5d7a552e" + integrity sha512-srBjCgOMUuQTCvU2Mu6hPHEmrxqJb+DImh8lHy79bpz4IoTATepuJGdeDONUiLS4KFhUstFSxkVsbL/4YSEVng== + dependencies: + "@babel/runtime" "^7.20.7" + "@polkadot/rpc-provider" "^9.11.1" + "@polkadot/types" "^9.11.1" + "@polkadot/util" "^10.2.3" + "@polkadot/util-crypto" "^10.2.3" + "@polkadot/x-global" "^10.2.3" + +"@polkadot/hw-ledger-transports@10.4.1": + version "10.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/hw-ledger-transports/-/hw-ledger-transports-10.4.1.tgz#af1871c2681d3bdcca1835c6468523435826d75b" + integrity sha512-Jvas/iw7cmog+cITulwd2+6gP31faf+FAHVSz6QDAv//gl/90Sku2fxIEJAwgO4Z+DAiRSYdHQ8RES6TOR/0Pw== + dependencies: + "@babel/runtime" "^7.20.13" + "@ledgerhq/hw-transport" "^6.28.0" + "@ledgerhq/hw-transport-webhid" "^6.27.11" + "@ledgerhq/hw-transport-webusb" "^6.27.11" + "@polkadot/util" "10.4.1" + optionalDependencies: + "@ledgerhq/hw-transport-node-hid-singleton" "^6.28.8" + +"@polkadot/hw-ledger@^10.3.1": + version "10.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/hw-ledger/-/hw-ledger-10.4.1.tgz#7c28e90cef93309dca27eab8c13a5246eb969dd1" + integrity sha512-OHnf/0yas3ZdgFsi/xKYzq4ocpOoDcvbEYIWUf+dCGvku3A21cOgkErfLTxOfsTzw5Lh/JOJVCYE0seisTNPtw== + dependencies: + "@babel/runtime" "^7.20.13" + "@ledgerhq/hw-transport" "^6.28.0" + "@polkadot/hw-ledger-transports" "10.4.1" + "@polkadot/util" "10.4.1" + "@zondax/ledger-substrate" "^0.40.4" + +"@polkadot/keyring@^10.1.13", "@polkadot/keyring@^10.2.6", "@polkadot/keyring@^10.3.1", "@polkadot/keyring@^10.4.1": + version "10.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-10.4.1.tgz#45f44e7fb9b33f625cea74ab5684ca8396f00d07" + integrity sha512-urTl0ReOr1A1b2kSF6QnGlVc2IcJpDnTacxwA4kIVn45p4Kysi19ek7odSdLA5yNcDZSB+/4uITZQ6meClS71Q== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/util" "10.4.1" + "@polkadot/util-crypto" "10.4.1" + +"@polkadot/networks@10.4.1", "@polkadot/networks@^10.2.6", "@polkadot/networks@^10.3.1", "@polkadot/networks@^10.4.1": + version "10.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-10.4.1.tgz#87880a16e34c4da77db47e76d6e8a6aee23f80d5" + integrity sha512-kmSy8iAnYKNWXZBv7bTfI10cSLJzOrFFEdngzohHMjDOG5FKoaX3Pix6MUkcWc2asX0hCyACtNTlcp+MBnS9eQ== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/util" "10.4.1" + "@substrate/ss58-registry" "^1.38.0" + +"@polkadot/phishing@^0.19.1": + version "0.19.2" + resolved "https://registry.yarnpkg.com/@polkadot/phishing/-/phishing-0.19.2.tgz#aea82984a077dda6dd3a72e6a3566c2498197f14" + integrity sha512-XhH0uLKYHQBrz6a1e+QjcpVlDViYVpT2QvVIIKZpf1QMXjkG6s0FhzfVB4A/4llwPpIvm8SRBRe5lBKkD0Sksw== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/util" "^10.4.1" + "@polkadot/util-crypto" "^10.4.1" + "@polkadot/x-fetch" "^10.4.1" + +"@polkadot/rpc-augment@9.14.1", "@polkadot/rpc-augment@^9.13.6": + version "9.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-9.14.1.tgz#441824cadab247fc7a9f8b76b76e3f6665759e9c" + integrity sha512-F7pP7YzSrQKDE6LFpfcGIsr1/XLLFwwuIeqyT1nBP9KN9FzykvrDdWaxM0TJqNEf27EFkd3HXeWbGISTPLje0A== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/rpc-core" "9.14.1" + "@polkadot/types" "9.14.1" + "@polkadot/types-codec" "9.14.1" + "@polkadot/util" "^10.4.1" + +"@polkadot/rpc-core@9.14.1", "@polkadot/rpc-core@^9.13.6": + version "9.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-9.14.1.tgz#d6e6053e36d281746680c660609ec65f0846b796" + integrity sha512-OxbzpDFTvJsHfCbs8DjZJxCyWVeroHUqFwQaQsVQwpbfmSfKf/WxaDTvVGqPw50dfOfCQd9RSndR+52LWQpp2Q== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/rpc-augment" "9.14.1" + "@polkadot/rpc-provider" "9.14.1" + "@polkadot/types" "9.14.1" + "@polkadot/util" "^10.4.1" + rxjs "^7.8.0" + +"@polkadot/rpc-provider@9.14.1", "@polkadot/rpc-provider@^9.11.1", "@polkadot/rpc-provider@^9.13.6", "@polkadot/rpc-provider@^9.9.1": + version "9.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-9.14.1.tgz#b9d22b683fdabb7fa641865dbaec14d4733a5773" + integrity sha512-29EnMJ+7F/62Cdrw92iWvhl+misIeYpX4+a5wZZggBpVb6SSIjj26TzqxxFRG6McZLx/Bh2dKkcFC8qbwINdLw== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/keyring" "^10.4.1" + "@polkadot/types" "9.14.1" + "@polkadot/types-support" "9.14.1" + "@polkadot/util" "^10.4.1" + "@polkadot/util-crypto" "^10.4.1" + "@polkadot/x-fetch" "^10.4.1" + "@polkadot/x-global" "^10.4.1" + "@polkadot/x-ws" "^10.4.1" + eventemitter3 "^5.0.0" + mock-socket "^9.2.0" + nock "^13.3.0" + optionalDependencies: + "@substrate/connect" "0.7.19" + +"@polkadot/types-augment@9.14.1", "@polkadot/types-augment@^9.13.6": + version "9.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-augment/-/types-augment-9.14.1.tgz#4abc6438faf0abe08e5731dc98cecd4d67135298" + integrity sha512-/jNdIdfVtnVkO+mXzqvTSDxNMmsSXc434m4dmyVIazCQ8DD/EreA9myHHqQUOGUh+NDXxkhV0RpTmRCx07d0+g== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/types" "9.14.1" + "@polkadot/types-codec" "9.14.1" + "@polkadot/util" "^10.4.1" + +"@polkadot/types-codec@9.14.1", "@polkadot/types-codec@^9.13.6": + version "9.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-codec/-/types-codec-9.14.1.tgz#48bf859695b6742f21e50fb9811926a6eac814d3" + integrity sha512-sKas3MD9RTa9EfY7qNdimv5/VktZR/ecK9VcHEKXQt2H4SDUn5afOUjfrhELuKmjEWnhQqzSfp0nCnds2el0SA== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/util" "^10.4.1" + "@polkadot/x-bigint" "^10.4.1" + +"@polkadot/types-create@9.14.1", "@polkadot/types-create@^9.13.6": + version "9.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-create/-/types-create-9.14.1.tgz#54f1e8cd145d254821880bd58288178c21735bdb" + integrity sha512-Sw7srNZ+3xx/8uWR0wWX2gWGue6GBojZMZkeHVURdF2RNVoYRQB/UQIRFEg7ehjSkBWikVT+Z3a0mntBYATZgA== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/types-codec" "9.14.1" + "@polkadot/util" "^10.4.1" + +"@polkadot/types-known@9.14.1", "@polkadot/types-known@^9.13.6": + version "9.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-9.14.1.tgz#b243c3469eea30f764f5328201946b0e80ab8abd" + integrity sha512-fF3pKNtie0TxPSYE1MZHu/xKVGCqYLqcdMs/GAvD2+spwSMVAfyefwNB1Yv2FKz3OSUj4OBLnCZT2fmm4HsHnA== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/networks" "^10.4.1" + "@polkadot/types" "9.14.1" + "@polkadot/types-codec" "9.14.1" + "@polkadot/types-create" "9.14.1" + "@polkadot/util" "^10.4.1" + +"@polkadot/types-support@9.14.1", "@polkadot/types-support@^9.13.6": + version "9.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-support/-/types-support-9.14.1.tgz#d5fc6d935a742a8d7d7629834f99b9f89069a52c" + integrity sha512-kjZ8wwyYucWwobrZLxK9v0mkhUZiorFEVHp4QphaKnX9PPaTWxYW68AVlHZdIXmy88k4sl4qDGgthXH3I/04CA== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/util" "^10.4.1" + +"@polkadot/types@9.14.1", "@polkadot/types@^9.11.1", "@polkadot/types@^9.13.6", "@polkadot/types@^9.9.1": + version "9.14.1" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-9.14.1.tgz#fbda7b0e4083d95fb4d725a2aa6a5036d492b792" + integrity sha512-aFhXTcRbDvj0NulJ0utPNZveyP/vFr+CoLssAEZC8jL+kM0Q80zV2vF8RvWAXFPd46i+JWPSy2ELjpwI/3BqXw== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/keyring" "^10.4.1" + "@polkadot/types-augment" "9.14.1" + "@polkadot/types-codec" "9.14.1" + "@polkadot/types-create" "9.14.1" + "@polkadot/util" "^10.4.1" + "@polkadot/util-crypto" "^10.4.1" + rxjs "^7.8.0" + +"@polkadot/ui-keyring@^2.10.1": + version "2.10.1" + resolved "https://registry.yarnpkg.com/@polkadot/ui-keyring/-/ui-keyring-2.10.1.tgz#5fdf0b3ee09fd32c44cde93e9e2f890524362415" + integrity sha512-9GI/rXIr3b7mFFX6bg0Q19QwhGuAzBwtItlPpjCm5vNXAJKLFp+5h4EmzIT08tku3+HhVUG/RYvfVBCCiwgPlw== + dependencies: + "@babel/runtime" "^7.20.7" + "@polkadot/keyring" "^10.2.6" + "@polkadot/ui-settings" "2.10.1" + "@polkadot/util" "^10.2.6" + "@polkadot/util-crypto" "^10.2.6" + mkdirp "^1.0.4" + rxjs "^7.8.0" + store "^2.0.12" + +"@polkadot/ui-settings@2.10.1": + version "2.10.1" + resolved "https://registry.yarnpkg.com/@polkadot/ui-settings/-/ui-settings-2.10.1.tgz#979a0241e7c4d60a5e86b152a3355bf197e30d0f" + integrity sha512-Fv5DhLG36rdHax9y2bh432BvHbohosDqdlrqp/s7qt+6DYWaed/xrpIxySCWeMO7C/G7vvkYJs9mR66/VBPApw== + dependencies: + "@babel/runtime" "^7.20.7" + "@polkadot/networks" "^10.2.6" + "@polkadot/util" "^10.2.6" + eventemitter3 "^4.0.7" + store "^2.0.12" + +"@polkadot/util-crypto@10.4.1", "@polkadot/util-crypto@^10.1.13", "@polkadot/util-crypto@^10.2.3", "@polkadot/util-crypto@^10.2.6", "@polkadot/util-crypto@^10.3.1", "@polkadot/util-crypto@^10.4.1": + version "10.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-10.4.1.tgz#64109883a889c3a948f5dec1b934d55fa8f8c115" + integrity sha512-29vOZLZJl5mNb8lHd2NwP51O7kEV1QOitBX7UsBw66nJOPZQ0imPFPJFGuI6ySPUuck1Lu4vBTC76nE5xpzjAQ== + dependencies: + "@babel/runtime" "^7.20.13" + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@polkadot/networks" "10.4.1" + "@polkadot/util" "10.4.1" + "@polkadot/wasm-crypto" "^6.4.1" + "@polkadot/x-bigint" "10.4.1" + "@polkadot/x-randomvalues" "10.4.1" + "@scure/base" "1.1.1" + ed2curve "^0.3.0" + tweetnacl "^1.0.3" + +"@polkadot/util@10.4.1", "@polkadot/util@^10.1.13", "@polkadot/util@^10.2.3", "@polkadot/util@^10.2.6", "@polkadot/util@^10.3.1", "@polkadot/util@^10.4.1": + version "10.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-10.4.1.tgz#da011b59ac716744c88fd0cf85e54ba87e5a9482" + integrity sha512-dOlmue4nhbk8msbs/YgoBqVtUzDx5iqhiDnC62GWC8b+JmIlIM4Ddgg1rhBf1KJ6TfEQrzQA0FwLaqCCH5vYmA== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/x-bigint" "10.4.1" + "@polkadot/x-global" "10.4.1" + "@polkadot/x-textdecoder" "10.4.1" + "@polkadot/x-textencoder" "10.4.1" + "@types/bn.js" "^5.1.1" + bn.js "^5.2.1" + +"@polkadot/wasm-bridge@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-bridge/-/wasm-bridge-6.4.1.tgz#e97915dd67ba543ec3381299c2a5b9330686e27e" + integrity sha512-QZDvz6dsUlbYsaMV5biZgZWkYH9BC5AfhT0f0/knv8+LrbAoQdP3Asbvddw8vyU9sbpuCHXrd4bDLBwUCRfrBQ== + dependencies: + "@babel/runtime" "^7.20.6" + +"@polkadot/wasm-crypto-asmjs@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-6.4.1.tgz#3cc76bbda5ea4a7a860982c64f9565907b312253" + integrity sha512-UxZTwuBZlnODGIQdCsE2Sn/jU0O2xrNQ/TkhRFELfkZXEXTNu4lw6NpaKq7Iey4L+wKd8h4lT3VPVkMcPBLOvA== + dependencies: + "@babel/runtime" "^7.20.6" + +"@polkadot/wasm-crypto-init@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-init/-/wasm-crypto-init-6.4.1.tgz#4d9ab0030db52cf177bf707ef8e77aa4ca721668" + integrity sha512-1ALagSi/nfkyFaH6JDYfy/QbicVbSn99K8PV9rctDUfxc7P06R7CoqbjGQ4OMPX6w1WYVPU7B4jPHGLYBlVuMw== + dependencies: + "@babel/runtime" "^7.20.6" + "@polkadot/wasm-bridge" "6.4.1" + "@polkadot/wasm-crypto-asmjs" "6.4.1" + "@polkadot/wasm-crypto-wasm" "6.4.1" + +"@polkadot/wasm-crypto-wasm@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-6.4.1.tgz#97180f80583b18f6a13c1054fa5f7e8da40b1028" + integrity sha512-3VV9ZGzh0ZY3SmkkSw+0TRXxIpiO0nB8lFwlRgcwaCihwrvLfRnH9GI8WE12mKsHVjWTEVR3ogzILJxccAUjDA== + dependencies: + "@babel/runtime" "^7.20.6" + "@polkadot/wasm-util" "6.4.1" + +"@polkadot/wasm-crypto@^6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-6.4.1.tgz#79310e23ad1ca62362ba893db6a8567154c2536a" + integrity sha512-FH+dcDPdhSLJvwL0pMLtn/LIPd62QDPODZRCmDyw+pFjLOMaRBc7raomWUOqyRWJTnqVf/iscc2rLVLNMyt7ag== + dependencies: + "@babel/runtime" "^7.20.6" + "@polkadot/wasm-bridge" "6.4.1" + "@polkadot/wasm-crypto-asmjs" "6.4.1" + "@polkadot/wasm-crypto-init" "6.4.1" + "@polkadot/wasm-crypto-wasm" "6.4.1" + "@polkadot/wasm-util" "6.4.1" + +"@polkadot/wasm-util@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-util/-/wasm-util-6.4.1.tgz#74aecc85bec427a9225d9874685944ea3dc3ab76" + integrity sha512-Uwo+WpEsDmFExWC5kTNvsVhvqXMZEKf4gUHXFn4c6Xz4lmieRT5g+1bO1KJ21pl4msuIgdV3Bksfs/oiqMFqlw== + dependencies: + "@babel/runtime" "^7.20.6" + +"@polkadot/x-bigint@10.4.1", "@polkadot/x-bigint@^10.3.1", "@polkadot/x-bigint@^10.4.1": + version "10.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-10.4.1.tgz#39907892f3bd17101baee0af5d66202845c8c860" + integrity sha512-CpTGPwNUDrJcrnfDU/94mfZ16TZoTwWAwTLH0oMUJtrM2mHo+LtWZBlCTG+thhkcGcSRy/rrpzx4ffNsj5Sy1w== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/x-global" "10.4.1" + +"@polkadot/x-fetch@^10.3.1", "@polkadot/x-fetch@^10.4.1": + version "10.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-fetch/-/x-fetch-10.4.1.tgz#73f84a9a32f23c656f227c418563681f7cb07e28" + integrity sha512-9LDskIW74Iz5Nen6p9xhVw1D6Z3r/K5buchZW2DERKCA3gZ98wUkTnpHDcwEyLGw0Lvq+1Trvm/txaEMWjUT6w== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/x-global" "10.4.1" + "@types/node-fetch" "^2.6.2" + node-fetch "^3.3.0" + +"@polkadot/x-global@10.4.1", "@polkadot/x-global@^10.2.3", "@polkadot/x-global@^10.3.1", "@polkadot/x-global@^10.4.1": + version "10.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-10.4.1.tgz#77a6a1252a0ab8b3f7b77a846cee7f7ffb2aaa34" + integrity sha512-Kdh2Fzl1fpEwU6vL1HMaXJy+fadX79eSy4VAnIx/uyCF3H5Z4WaxzoiNVmHdDZSVaamqtbuKepi1nkE3q1nvlA== + dependencies: + "@babel/runtime" "^7.20.13" + +"@polkadot/x-randomvalues@10.4.1", "@polkadot/x-randomvalues@^10.3.1": + version "10.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-10.4.1.tgz#ae6e7cf17aa2f88592e7aaef9211ccd40fcccd0a" + integrity sha512-dB4OGOiBbJbNQV040Ggh2CujSXtVe9bxXn1g5LuJEw1iioeraoduJ6yEYmh0olfaQjCUXnyWLr8uCPtPpfJ9uQ== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/x-global" "10.4.1" + +"@polkadot/x-textdecoder@10.4.1", "@polkadot/x-textdecoder@^10.3.1": + version "10.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-10.4.1.tgz#7bf1740400c10f0482fa6af28ab681cd06cbff16" + integrity sha512-OcAL0napRM4hukgvH6kYGdiczqvbkFYoLBgQFalZChktjL1tDNiF6tzzt4Nn8WQXYYFlfyxp5LoZRtNrcFJq4w== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/x-global" "10.4.1" + +"@polkadot/x-textencoder@10.4.1", "@polkadot/x-textencoder@^10.3.1": + version "10.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-10.4.1.tgz#232d3b084e90bea2fffb6bd8777e79b9f82c7f1c" + integrity sha512-YBS04HV/QgRppt0XC5n48c89ueH3ErivrcmqFTlkKMcXNzvtpMCTZGCTzG5vU8ozP0tl/4Is5N8agmYHLMu1Cg== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/x-global" "10.4.1" + +"@polkadot/x-ws@^10.3.1", "@polkadot/x-ws@^10.4.1": + version "10.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-ws/-/x-ws-10.4.1.tgz#14e156c85aac8306acce7428f764d8eecbf1d7ae" + integrity sha512-acS2kAAvFOrGo5gVLuOY4DKRschGafvruh491O7jE5r7QbZUNG1Q948g6TA/67I4g8N0k096DYFryID4OK9Ufg== + dependencies: + "@babel/runtime" "^7.20.13" + "@polkadot/x-global" "10.4.1" + "@types/websocket" "^1.0.5" + websocket "^1.0.34" + "@resolver-engine/core@^0.3.3": version "0.3.3" resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.3.3.tgz#590f77d85d45bc7ecc4e06c654f41345db6ca967" @@ -3248,6 +4297,15 @@ "@babel/helper-module-imports" "^7.10.4" "@rollup/pluginutils" "^3.1.0" +"@rollup/plugin-inject@^5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-5.0.3.tgz#0783711efd93a9547d52971db73b2fb6140a67b1" + integrity sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA== + dependencies: + "@rollup/pluginutils" "^5.0.1" + estree-walker "^2.0.2" + magic-string "^0.27.0" + "@rollup/plugin-node-resolve@^11.2.1": version "11.2.1" resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" @@ -3277,6 +4335,15 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@rollup/pluginutils@^5.0.1": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" + integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + "@rushstack/eslint-patch@^1.1.0": version "1.1.4" resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.4.tgz#0c8b74c50f29ee44f423f7416829c0bf8bb5eb27" @@ -3287,7 +4354,7 @@ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== -"@scure/base@~1.1.0": +"@scure/base@1.1.1", "@scure/base@~1.1.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== @@ -3382,6 +4449,11 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.41.tgz#45470b8bae32a28f1e0501066d0bacbd8b772804" integrity sha512-TJCgQurls4FipFvHeC+gfAzb+GGstL0TDwYJKQVtTeSvJIznWzP7g3bAd5gEBlr8+bIxqnWS9VGVWREDhmE8jA== +"@sinclair/typebox@^0.25.16": + version "0.25.21" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.21.tgz#763b05a4b472c93a8db29b2c3e359d55b29ce272" + integrity sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g== + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -3399,6 +4471,20 @@ dependencies: type-detect "4.0.8" +"@sinonjs/commons@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" + integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz#d10549ed1f423d80639c528b6c7f5a1017747d0c" + integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw== + dependencies: + "@sinonjs/commons" "^2.0.0" + "@sinonjs/fake-timers@^8.0.1": version "8.1.0" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" @@ -3413,6 +4499,33 @@ dependencies: antlr4ts "^0.5.0-alpha.4" +"@substrate/connect-extension-protocol@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@substrate/connect-extension-protocol/-/connect-extension-protocol-1.0.1.tgz#fa5738039586c648013caa6a0c95c43265dbe77d" + integrity sha512-161JhCC1csjH3GE5mPLEd7HbWtwNSPJBg3p1Ksz9SFlTzj/bgEwudiRN2y5i0MoLGCIJRYKyKGMxVnd29PzNjg== + +"@substrate/connect@0.7.19": + version "0.7.19" + resolved "https://registry.yarnpkg.com/@substrate/connect/-/connect-0.7.19.tgz#7c879cb275bc7ac2fe9edbf797572d4ff8d8b86a" + integrity sha512-+DDRadc466gCmDU71sHrYOt1HcI2Cbhm7zdCFjZfFVHXhC/E8tOdrVSglAH2HDEHR0x2SiHRxtxOGC7ak2Zjog== + dependencies: + "@substrate/connect-extension-protocol" "^1.0.1" + "@substrate/smoldot-light" "0.7.9" + eventemitter3 "^4.0.7" + +"@substrate/smoldot-light@0.7.9": + version "0.7.9" + resolved "https://registry.yarnpkg.com/@substrate/smoldot-light/-/smoldot-light-0.7.9.tgz#68449873a25558e547e9468289686ee228a9930f" + integrity sha512-HP8iP7sFYlpSgjjbo0lqHyU+gu9lL2hbDNce6dWk5/10mFFF9jKIFGfui4zCecUY808o/Go9pan/31kMJoLbug== + dependencies: + pako "^2.0.4" + ws "^8.8.1" + +"@substrate/ss58-registry@^1.38.0": + version "1.38.0" + resolved "https://registry.yarnpkg.com/@substrate/ss58-registry/-/ss58-registry-1.38.0.tgz#b50cb28c77a0375fbf33dd29b7b28ee32871af9f" + integrity sha512-sHiVRWekGMRZAjPukN9/W166NM6D5wtHcK6RVyLy66kg3CHNZ1BXfpXcjOiXSwhbd7guQFDEwnOVaDrbk1XL1g== + "@surma/rollup-plugin-off-main-thread@^2.2.3": version "2.2.3" resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" @@ -3597,6 +4710,11 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + "@truffle/hdwallet-provider@^2.0.14": version "2.0.17" resolved "https://registry.yarnpkg.com/@truffle/hdwallet-provider/-/hdwallet-provider-2.0.17.tgz#41ef42079ca6987d4838101574ea368027616cab" @@ -3704,6 +4822,13 @@ dependencies: "@babel/types" "^7.3.0" +"@types/bn.js@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" + integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== + dependencies: + "@types/node" "*" + "@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": version "4.11.6" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" @@ -3711,7 +4836,7 @@ dependencies: "@types/node" "*" -"@types/bn.js@^5.1.0": +"@types/bn.js@^5.1.0", "@types/bn.js@^5.1.1": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== @@ -3782,7 +4907,7 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*": +"@types/estree@*", "@types/estree@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== @@ -3835,6 +4960,13 @@ dependencies: "@types/node" "*" +"@types/graceful-fs@^4.1.3": + version "4.1.6" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + dependencies: + "@types/node" "*" + "@types/har-format@*": version "1.2.10" resolved "https://registry.yarnpkg.com/@types/har-format/-/har-format-1.2.10.tgz#7b4e1e0ada4d17684ac3b05d601a4871cfab11fc" @@ -3891,14 +5023,6 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/jest@27.4.1": - version "27.4.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.1.tgz#185cbe2926eaaf9662d340cc02e548ce9e11ab6d" - integrity sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw== - dependencies: - jest-matcher-utils "^27.0.0" - pretty-format "^27.0.0" - "@types/jest@^27.0.1", "@types/jest@^27.4.1": version "27.5.2" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.2.tgz#ec49d29d926500ffb9fd22b84262e862049c026c" @@ -3907,6 +5031,23 @@ jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" +"@types/jest@^29.4.0": + version "29.4.0" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.4.0.tgz#a8444ad1704493e84dbf07bb05990b275b3b9206" + integrity sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/jsdom@^20.0.0": + version "20.0.1" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" + integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ== + dependencies: + "@types/node" "*" + "@types/tough-cookie" "*" + parse5 "^7.0.0" + "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" @@ -3960,7 +5101,7 @@ dependencies: "@types/node" "*" -"@types/node-fetch@2.x", "@types/node-fetch@^2.5.5": +"@types/node-fetch@2.x", "@types/node-fetch@^2.5.5", "@types/node-fetch@^2.6.2": version "2.6.2" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== @@ -3973,6 +5114,16 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.17.tgz#52438111ea98f77475470fc62d79b9eb96bb2c92" integrity sha512-0UyfUnt02zIuqp7yC8RYtDkp/vo8bFaQ13KkSEvUAohPOAlnVNbj5Fi3fgPSuwzakS+EvvnnZ4x9y7i6ASaSPQ== +"@types/node@10.12.18": + version "10.12.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" + integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== + +"@types/node@11.11.6": + version "11.11.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" + integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== + "@types/node@^12.12.6", "@types/node@^12.7.1": version "12.20.55" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" @@ -4042,6 +5193,13 @@ dependencies: "@types/react" "*" +"@types/react-dom@^18.0.9": + version "18.0.10" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.10.tgz#3b66dec56aa0f16a6cc26da9e9ca96c35c0b4352" + integrity sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg== + dependencies: + "@types/react" "*" + "@types/react@*", "@types/react@^18.0.6": version "18.0.19" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.19.tgz#269a5f35b9a73c69dfb0c7189017013ab02acbaa" @@ -4060,6 +5218,15 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@^18.0.26": + version "18.0.26" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.26.tgz#8ad59fc01fef8eaf5c74f4ea392621749f0b7917" + integrity sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -4147,11 +5314,21 @@ dependencies: "@types/jest" "*" +"@types/tough-cookie@*": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" + integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== + "@types/trusted-types@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== +"@types/w3c-web-usb@1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/w3c-web-usb/-/w3c-web-usb-1.0.6.tgz#5d8560d0d9f585ffc80865bc773db7bc975b680c" + integrity sha512-cSjhgrr8g4KbPnnijAr/KJDNKa/bBa+ixYkywFRvrhvi9n1WEl7yYbtRyzE6jqNQiSxxJxoAW3STaOQwJHndaw== + "@types/web3@^1.0.20": version "1.2.2" resolved "https://registry.yarnpkg.com/@types/web3/-/web3-1.2.2.tgz#d95a101547ce625c5ebd0470baa5dbd4b9f3c015" @@ -4159,6 +5336,13 @@ dependencies: web3 "*" +"@types/websocket@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.5.tgz#3fb80ed8e07f88e51961211cd3682a3a4a81569c" + integrity sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ== + dependencies: + "@types/node" "*" + "@types/ws@^8.5.1": version "8.5.3" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" @@ -4363,6 +5547,17 @@ "@typescript-eslint/types" "5.43.0" eslint-visitor-keys "^3.3.0" +"@vitejs/plugin-react@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-3.0.1.tgz#ad21fb81377970dd4021a31cd95a03eb6f5c4c48" + integrity sha512-mx+QvYwIbbpOIJw+hypjnW1lAbKDHtWK5ibkF/V1/oMBu8HU/chb+SnqJDAsLq1+7rGqjktCEomMTM5KShzUKQ== + dependencies: + "@babel/core" "^7.20.7" + "@babel/plugin-transform-react-jsx-self" "^7.18.6" + "@babel/plugin-transform-react-jsx-source" "^7.19.6" + magic-string "^0.27.0" + react-refresh "^0.14.0" + "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -4499,7 +5694,22 @@ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== -abab@^2.0.3, abab@^2.0.5: +"@zondax/ledger-substrate@^0.40.4": + version "0.40.5" + resolved "https://registry.yarnpkg.com/@zondax/ledger-substrate/-/ledger-substrate-0.40.5.tgz#1fd5f39bf62a700eca28c971bf5fa1826347690f" + integrity sha512-LixHoxbzlUY5yumnZnNlvcqRSL7059utZOvNMCWRxN0/qgz/oZUBmIw9Xp8/GMZFXutZ5CHiMHi8vSEWTzjkRQ== + dependencies: + "@babel/runtime" "^7.18.9" + "@ledgerhq/hw-transport" "6.27.1" + bip32 "3.0.1" + bip32-ed25519 "https://github.com/Zondax/bip32-ed25519" + bip39 "3.0.4" + blakejs "^1.2.1" + bs58 "^5.0.0" + chalk "4" + hash.js "^1.1.7" + +abab@^2.0.3, abab@^2.0.5, abab@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== @@ -4599,6 +5809,14 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" +acorn-globals@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" + integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== + dependencies: + acorn "^8.1.0" + acorn-walk "^8.0.2" + acorn-import-assertions@^1.7.6: version "1.8.0" resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" @@ -4623,16 +5841,26 @@ acorn-walk@^7.0.0, acorn-walk@^7.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn-walk@^8.1.1: +acorn-walk@^8.0.2, acorn-walk@^8.1.1: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== +acorn@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== + acorn@^7.0.0, acorn@^7.1.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.1.0, acorn@^8.8.1: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: version "8.8.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" @@ -5085,44 +6313,10 @@ babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.0.14, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" +babel-core@^6.0.14, babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: version "6.24.1" @@ -5229,14 +6423,6 @@ babel-helper-replace-supers@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ== - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-jest@^27.4.2, babel-jest@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" @@ -5251,6 +6437,19 @@ babel-jest@^27.4.2, babel-jest@^27.5.1: graceful-fs "^4.2.9" slash "^3.0.0" +babel-jest@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.4.1.tgz#01fa167e27470b35c2d4a1b841d9586b1764da19" + integrity sha512-xBZa/pLSsF/1sNpkgsiT3CmY7zV1kAsZ9OxxtrFqYucnOuRftXAfcJqcDVyOPeN4lttWTwhLdu0T9f8uvoPEUg== + dependencies: + "@jest/transform" "^29.4.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.4.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + babel-loader@^8.2.3: version "8.2.5" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" @@ -5303,6 +6502,16 @@ babel-plugin-jest-hoist@^27.5.1: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" +babel-plugin-jest-hoist@^29.4.0: + version "29.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.0.tgz#3fd3dfcedf645932df6d0c9fc3d9a704dd860248" + integrity sha512-a/sZRLQJEmsmejQ2rPEUe35nO1+C9dc9O1gplH1SXmJxveQSRUYdBk8yGZG/VOUuZs1u2aHZJusEGoRMbhhwCg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + babel-plugin-macros@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" @@ -5654,6 +6863,14 @@ babel-preset-jest@^27.5.1: babel-plugin-jest-hoist "^27.5.1" babel-preset-current-node-syntax "^1.0.0" +babel-preset-jest@^29.4.0: + version "29.4.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.4.0.tgz#c2b03c548b02dea0a18ae21d5759c136f9251ee4" + integrity sha512-fUB9vZflUSM3dO/6M2TCAepTzvA4VkOvl67PjErcrQMGt9Eve7uazaeyCZ2th3UtI7ljpiBJES0F7A1vBRsLZA== + dependencies: + babel-plugin-jest-hoist "^29.4.0" + babel-preset-current-node-syntax "^1.0.0" + babel-preset-react-app@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" @@ -5676,19 +6893,6 @@ babel-preset-react-app@^10.0.1: babel-plugin-macros "^3.1.0" babel-plugin-transform-react-remove-prop-types "^0.4.24" -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A== - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" @@ -5765,6 +6969,11 @@ base-x@^3.0.2, base-x@^3.0.8: dependencies: safe-buffer "^5.0.1" +base-x@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" + integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== + base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -5832,6 +7041,33 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +"bip32-ed25519@https://github.com/Zondax/bip32-ed25519": + version "0.0.4" + resolved "https://github.com/Zondax/bip32-ed25519#0949df01b5c93885339bc28116690292088f6134" + dependencies: + bn.js "^5.1.1" + elliptic "^6.4.1" + hash.js "^1.1.7" + +bip32@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/bip32/-/bip32-3.0.1.tgz#1d1121469cce6e910e0ec3a5a1990dd62687e2a3" + integrity sha512-Uhpp9aEx3iyiO7CpbNGFxv9WcMIVdGoHG04doQ5Ln0u60uwDah7jUSc3QMV/fSZGm/Oo01/OeAmYevXV+Gz5jQ== + dependencies: + "@types/node" "10.12.18" + bs58check "^2.1.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + typeforce "^1.11.5" + wif "^2.0.6" + bip39@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.5.0.tgz#51cbd5179460504a63ea3c000db3f787ca051235" @@ -5843,7 +7079,33 @@ bip39@2.5.0: safe-buffer "^5.0.1" unorm "^1.3.3" -blakejs@^1.1.0: +bip39@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.4.tgz#5b11fed966840b5e1b8539f0f54ab6392969b2a0" + integrity sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw== + dependencies: + "@types/node" "11.11.6" + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + +bip66@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + integrity sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw== + dependencies: + safe-buffer "^5.0.1" + +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blakejs@^1.1.0, blakejs@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== @@ -5970,12 +7232,19 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== +browser-resolve@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-2.0.0.tgz#99b7304cb392f8d73dba741bb2d7da28c6d7842b" + integrity sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ== + dependencies: + resolve "^1.17.0" + browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6, browserify-aes@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== @@ -6029,6 +7298,13 @@ browserify-sign@^4.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + browserslist@^3.2.6: version "3.2.8" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" @@ -6071,7 +7347,14 @@ bs58@^4.0.0: dependencies: base-x "^3.0.2" -bs58check@^2.1.2: +bs58@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== + dependencies: + base-x "^4.0.0" + +bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== @@ -6114,7 +7397,7 @@ buffer-xor@^2.0.1: dependencies: safe-buffer "^5.1.1" -buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: +buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0, buffer@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -6323,7 +7606,7 @@ catering@^2.0.0, catering@^2.1.0: resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== -chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: +chalk@4, chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -6416,7 +7699,7 @@ chokidar@^3.4.0, chokidar@^3.4.2, chokidar@^3.5.2, chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" -chownr@^1.1.4: +chownr@^1.1.1, chownr@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -6523,6 +7806,15 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + clone-response@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" @@ -6738,6 +8030,16 @@ connect-history-api-fallback@^2.0.0: resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== + content-disposition@0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" @@ -6759,13 +8061,18 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.4.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== dependencies: safe-buffer "~5.1.1" +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -6810,7 +8117,7 @@ core-js-pure@^3.0.1, core-js-pure@^3.20.2, core-js-pure@^3.8.1: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.25.1.tgz#79546518ae87cc362c991d9c2d211f45107991ee" integrity sha512-7Fr74bliUDdeJCBMxkkIuQ4xfxn/SwrVg+HkJUAoNEXVqYLv55l6Af0dJ5Lq2YBUW9yKqSkLXaS5SYPK6MGa/A== -core-js@^2.4.0, core-js@^2.5.0: +core-js@^2.4.0: version "2.6.12" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== @@ -6896,7 +8203,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-require@^1.1.0: +create-require@^1.1.0, create-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== @@ -6945,7 +8252,7 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@3.12.0, crypto-browserify@^3.12.0: +crypto-browserify@3.12.0, crypto-browserify@^3.11.0, crypto-browserify@^3.12.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== @@ -7145,6 +8452,11 @@ cssom@^0.4.4: resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== + cssom@~0.3.6: version "0.3.8" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" @@ -7207,6 +8519,11 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-uri-to-buffer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== + data-urls@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -7216,6 +8533,15 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" +data-urls@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" + integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== + dependencies: + abab "^2.0.6" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + date-fns@^2.16.1: version "2.29.3" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" @@ -7267,6 +8593,11 @@ decimal.js@^10.2.1: resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.0.tgz#97a7448873b01e92e5ff9117d89a7bca8e63e0fe" integrity sha512-Nv6ENEzyPQ6AItkGwLE2PGKinZZ9g59vSh2BeH6NqPu0OTKZ5ruJsVqh/orbAnqXc9pBbgXAIrc2EyaCj8NpGg== +decimal.js@^10.4.2: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -7438,18 +8769,16 @@ detect-browser@^5.2.0: resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A== - dependencies: - repeating "^2.0.0" - detect-indent@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== +detect-libc@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" + integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -7497,6 +8826,11 @@ diff-sequences@^29.0.0: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.0.0.tgz#bae49972ef3933556bcb0800b72e8579d19d9e4f" integrity sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA== +diff-sequences@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.3.1.tgz#104b5b95fe725932421a9c6e5b4bef84c3f2249e" + integrity sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ== + diff@3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -7588,6 +8922,11 @@ dom-walk@^0.1.0: resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== +domain-browser@^4.22.0: + version "4.22.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.22.0.tgz#6ddd34220ec281f9a65d3386d267ddd35c491f9f" + integrity sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw== + domelementtype@1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" @@ -7605,6 +8944,13 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== + dependencies: + webidl-conversions "^7.0.0" + domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" @@ -7654,6 +9000,11 @@ dotenv@^10.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== +dotenv@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== + dotignore@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" @@ -7661,6 +9012,15 @@ dotignore@~0.1.2: dependencies: minimatch "^3.0.4" +drbg.js@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" + integrity sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g== + dependencies: + browserify-aes "^1.0.6" + create-hash "^1.1.2" + create-hmac "^1.1.4" + duplexer3@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" @@ -7679,6 +9039,25 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +eccrypto@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/eccrypto/-/eccrypto-1.1.6.tgz#846bd1222323036f7a3515613704386399702bd3" + integrity sha512-d78ivVEzu7Tn0ZphUUaL43+jVPKTMPFGtmgtz1D0LrFn7cY3K8CdrvibuLz2AAkHBLKZtR8DMbB2ukRYFk987A== + dependencies: + acorn "7.1.1" + elliptic "6.5.4" + es6-promise "4.2.8" + nan "2.14.0" + optionalDependencies: + secp256k1 "3.7.1" + +ed2curve@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/ed2curve/-/ed2curve-0.3.0.tgz#322b575152a45305429d546b071823a93129a05d" + integrity sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ== + dependencies: + tweetnacl "1.x.x" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -7701,7 +9080,7 @@ electron-to-chromium@^1.4.251: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.275.tgz#db25c8e39c9cc910a996d1ec9b73eee834cb0ac1" integrity sha512-aJeQQ+Hl9Jyyzv4chBqYJwmVRY46N5i2BEX5Cuyk/5gFCUZ5F3i7Hnba6snZftWla7Gglwc5pIgcd+E7cW+rPg== -elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.4.1, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -7724,6 +9103,11 @@ emittery@^0.10.2: resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + emittery@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" @@ -7782,7 +9166,7 @@ encoding@^0.1.11: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.1.0, end-of-stream@^1.4.4: +end-of-stream@^1.1.0, end-of-stream@^1.4.1, end-of-stream@^1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -7809,6 +9193,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== + env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" @@ -7913,7 +9302,7 @@ es6-object-assign@^1.1.0: resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw== -es6-promise@^4.2.8: +es6-promise@4.2.8, es6-promise@^4.2.8: version "4.2.8" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== @@ -7926,6 +9315,34 @@ es6-symbol@^3.1.1, es6-symbol@^3.1.3: d "^1.0.1" ext "^1.1.2" +esbuild@^0.16.3: + version "0.16.17" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.17.tgz#fc2c3914c57ee750635fee71b89f615f25065259" + integrity sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg== + optionalDependencies: + "@esbuild/android-arm" "0.16.17" + "@esbuild/android-arm64" "0.16.17" + "@esbuild/android-x64" "0.16.17" + "@esbuild/darwin-arm64" "0.16.17" + "@esbuild/darwin-x64" "0.16.17" + "@esbuild/freebsd-arm64" "0.16.17" + "@esbuild/freebsd-x64" "0.16.17" + "@esbuild/linux-arm" "0.16.17" + "@esbuild/linux-arm64" "0.16.17" + "@esbuild/linux-ia32" "0.16.17" + "@esbuild/linux-loong64" "0.16.17" + "@esbuild/linux-mips64el" "0.16.17" + "@esbuild/linux-ppc64" "0.16.17" + "@esbuild/linux-riscv64" "0.16.17" + "@esbuild/linux-s390x" "0.16.17" + "@esbuild/linux-x64" "0.16.17" + "@esbuild/netbsd-x64" "0.16.17" + "@esbuild/openbsd-x64" "0.16.17" + "@esbuild/sunos-x64" "0.16.17" + "@esbuild/win32-arm64" "0.16.17" + "@esbuild/win32-ia32" "0.16.17" + "@esbuild/win32-x64" "0.16.17" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -8294,6 +9711,11 @@ estree-walker@^1.0.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -8329,6 +9751,19 @@ eth-block-tracker@^4.4.2: pify "^3.0.0" safe-event-emitter "^1.0.1" +eth-crypto@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/eth-crypto/-/eth-crypto-2.3.0.tgz#e5bbfc3540bd118cec85468bb310f41dcf40e507" + integrity sha512-kTRdMuqIO4OBuk5XKL3FNQ6HVQV54dc/mxGgSoeUscp+7eiZ3C5xBsBj2DGY2HM9Woa0sMuzvpi6HwjyXL6E8w== + dependencies: + "@babel/runtime" "7.17.9" + "@ethereumjs/tx" "3.5.1" + "@types/bn.js" "5.1.0" + eccrypto "1.1.6" + ethereumjs-util "7.1.4" + ethers "5.6.4" + secp256k1 "4.0.3" + eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" @@ -8686,6 +10121,17 @@ ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumj ethjs-util "0.1.6" rlp "^2.2.3" +ethereumjs-util@7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz#a6885bcdd92045b06f596c7626c3e89ab3312458" + integrity sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + ethereumjs-util@^4.3.0: version "4.5.1" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz#f4bf9b3b515a484e3cc8781d61d9d980f7c83bd0" @@ -8846,6 +10292,42 @@ ethers@5.6.2: "@ethersproject/web" "5.6.0" "@ethersproject/wordlists" "5.6.0" +ethers@5.6.4: + version "5.6.4" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.4.tgz#23629e9a7d4bc5802dfb53d4da420d738744b53c" + integrity sha512-62UIfxAQXdf67TeeOaoOoPctm5hUlYgfd0iW3wxfj7qRYKDcvvy0f+sJ3W2/Pyx77R8dblvejA8jokj+lS+ATQ== + dependencies: + "@ethersproject/abi" "5.6.1" + "@ethersproject/abstract-provider" "5.6.0" + "@ethersproject/abstract-signer" "5.6.0" + "@ethersproject/address" "5.6.0" + "@ethersproject/base64" "5.6.0" + "@ethersproject/basex" "5.6.0" + "@ethersproject/bignumber" "5.6.0" + "@ethersproject/bytes" "5.6.1" + "@ethersproject/constants" "5.6.0" + "@ethersproject/contracts" "5.6.0" + "@ethersproject/hash" "5.6.0" + "@ethersproject/hdnode" "5.6.0" + "@ethersproject/json-wallets" "5.6.0" + "@ethersproject/keccak256" "5.6.0" + "@ethersproject/logger" "5.6.0" + "@ethersproject/networks" "5.6.2" + "@ethersproject/pbkdf2" "5.6.0" + "@ethersproject/properties" "5.6.0" + "@ethersproject/providers" "5.6.4" + "@ethersproject/random" "5.6.0" + "@ethersproject/rlp" "5.6.0" + "@ethersproject/sha2" "5.6.0" + "@ethersproject/signing-key" "5.6.0" + "@ethersproject/solidity" "5.6.0" + "@ethersproject/strings" "5.6.0" + "@ethersproject/transactions" "5.6.0" + "@ethersproject/units" "5.6.0" + "@ethersproject/wallet" "5.6.0" + "@ethersproject/web" "5.6.0" + "@ethersproject/wordlists" "5.6.0" + ethers@5.7.1, ethers@^5.7.0: version "5.7.1" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.1.tgz#48c83a44900b5f006eb2f65d3ba6277047fd4f33" @@ -8980,12 +10462,17 @@ eventemitter3@4.0.4: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== -eventemitter3@^4.0.0: +eventemitter3@^4.0.0, eventemitter3@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0, events@^3.2.0: +eventemitter3@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.0.tgz#084eb7f5b5388df1451e63f4c2aafd71b217ccb3" + integrity sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg== + +events@^3.0.0, events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -9044,6 +10531,11 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + expect@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" @@ -9077,6 +10569,17 @@ expect@^29.0.0: jest-message-util "^29.0.3" jest-util "^29.0.3" +expect@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.4.1.tgz#58cfeea9cbf479b64ed081fd1e074ac8beb5a1fe" + integrity sha512-OKrGESHOaMxK3b6zxIq9SOW8kEXztKff/Dvg88j4xIJxur1hspEbedVkR3GpHe5LO+WB2Qw7OWN0RMTdp6as5A== + dependencies: + "@jest/expect-utils" "^29.4.1" + jest-get-type "^29.2.0" + jest-matcher-utils "^29.4.1" + jest-message-util "^29.4.1" + jest-util "^29.4.1" + express@^4.14.0, express@^4.17.3: version "4.18.1" resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" @@ -9255,6 +10758,14 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + fetch-ponyfill@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" @@ -9277,6 +10788,11 @@ file-loader@^6.2.0: loader-utils "^2.0.0" schema-utils "^3.0.0" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + filelist@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" @@ -9477,6 +10993,15 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -9486,6 +11011,13 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -9518,6 +11050,11 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -9763,6 +11300,11 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -10142,14 +11684,6 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - hoopy@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" @@ -10177,6 +11711,13 @@ html-encoding-sniffer@^2.0.1: dependencies: whatwg-encoding "^1.0.5" +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== + dependencies: + whatwg-encoding "^2.0.0" + html-entities@^2.1.0, html-entities@^2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" @@ -10271,6 +11812,15 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + http-proxy-middleware@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" @@ -10321,7 +11871,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== -https-proxy-agent@^5.0.0: +https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -10346,7 +11896,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2, iconv-lite@^0.6.3: +iconv-lite@0.6.3, iconv-lite@^0.6.2, iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -10660,11 +12210,6 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - is-fn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" @@ -10936,6 +12481,11 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +isomorphic-timers-promises@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz#e4137c24dbc54892de8abae3a4b5c1ffff381598" + integrity sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ== + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -11002,6 +12552,14 @@ jest-changed-files@^27.5.1: execa "^5.0.0" throat "^6.0.1" +jest-changed-files@^29.4.0: + version "29.4.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.4.0.tgz#ac2498bcd394228f7eddcadcf928b3583bf2779d" + integrity sha512-rnI1oPxgFghoz32Y8eZsGJMjW54UlqT17ycQeCEktcxxwqqKdlj9afl8LNeO0Pbu+h2JQHThQP0BzS67eTRx4w== + dependencies: + execa "^5.0.0" + p-limit "^3.1.0" + jest-circus@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" @@ -11027,6 +12585,31 @@ jest-circus@^27.5.1: stack-utils "^2.0.3" throat "^6.0.1" +jest-circus@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.4.1.tgz#ff1b63eb04c3b111cefea9489e8dbadd23ce49bd" + integrity sha512-v02NuL5crMNY4CGPHBEflLzl4v91NFb85a+dH9a1pUNx6Xjggrd8l9pPy4LZ1VYNRXlb+f65+7O/MSIbLir6pA== + dependencies: + "@jest/environment" "^29.4.1" + "@jest/expect" "^29.4.1" + "@jest/test-result" "^29.4.1" + "@jest/types" "^29.4.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + is-generator-fn "^2.0.0" + jest-each "^29.4.1" + jest-matcher-utils "^29.4.1" + jest-message-util "^29.4.1" + jest-runtime "^29.4.1" + jest-snapshot "^29.4.1" + jest-util "^29.4.1" + p-limit "^3.1.0" + pretty-format "^29.4.1" + slash "^3.0.0" + stack-utils "^2.0.3" + jest-cli@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" @@ -11045,6 +12628,24 @@ jest-cli@^27.5.1: prompts "^2.0.1" yargs "^16.2.0" +jest-cli@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.4.1.tgz#7abef96944f300feb9b76f68b1eb2d68774fe553" + integrity sha512-jz7GDIhtxQ37M+9dlbv5K+/FVcIo1O/b1sX3cJgzlQUf/3VG25nvuWzlDC4F1FLLzUThJeWLu8I7JF9eWpuURQ== + dependencies: + "@jest/core" "^29.4.1" + "@jest/test-result" "^29.4.1" + "@jest/types" "^29.4.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^29.4.1" + jest-util "^29.4.1" + jest-validate "^29.4.1" + prompts "^2.0.1" + yargs "^17.3.1" + jest-config@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" @@ -11075,6 +12676,34 @@ jest-config@^27.5.1: slash "^3.0.0" strip-json-comments "^3.1.1" +jest-config@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.4.1.tgz#e62670c6c980ec21d75941806ec4d0c0c6402728" + integrity sha512-g7p3q4NuXiM4hrS4XFATTkd+2z0Ml2RhFmFPM8c3WyKwVDNszbl4E7cV7WIx1YZeqqCtqbtTtZhGZWJlJqngzg== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.4.1" + "@jest/types" "^29.4.1" + babel-jest "^29.4.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.4.1" + jest-environment-node "^29.4.1" + jest-get-type "^29.2.0" + jest-regex-util "^29.2.0" + jest-resolve "^29.4.1" + jest-runner "^29.4.1" + jest-util "^29.4.1" + jest-validate "^29.4.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.4.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" + jest-diff@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" @@ -11105,6 +12734,16 @@ jest-diff@^29.0.3: jest-get-type "^29.0.0" pretty-format "^29.0.3" +jest-diff@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.4.1.tgz#9a6dc715037e1fa7a8a44554e7d272088c4029bd" + integrity sha512-uazdl2g331iY56CEyfbNA0Ut7Mn2ulAG5vUaEHXycf1L6IPyuImIxSz4F0VYBKi7LYIuxOwTZzK3wh5jHzASMw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.3.1" + jest-get-type "^29.2.0" + pretty-format "^29.4.1" + jest-docblock@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" @@ -11112,6 +12751,13 @@ jest-docblock@^27.5.1: dependencies: detect-newline "^3.0.0" +jest-docblock@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.2.0.tgz#307203e20b637d97cee04809efc1d43afc641e82" + integrity sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A== + dependencies: + detect-newline "^3.0.0" + jest-each@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" @@ -11123,6 +12769,17 @@ jest-each@^27.5.1: jest-util "^27.5.1" pretty-format "^27.5.1" +jest-each@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.4.1.tgz#05ce9979e7486dbd0f5d41895f49ccfdd0afce01" + integrity sha512-QlYFiX3llJMWUV0BtWht/esGEz9w+0i7BHwODKCze7YzZzizgExB9MOfiivF/vVT0GSQ8wXLhvHXh3x2fVD4QQ== + dependencies: + "@jest/types" "^29.4.1" + chalk "^4.0.0" + jest-get-type "^29.2.0" + jest-util "^29.4.1" + pretty-format "^29.4.1" + jest-environment-jsdom@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" @@ -11136,6 +12793,20 @@ jest-environment-jsdom@^27.5.1: jest-util "^27.5.1" jsdom "^16.6.0" +jest-environment-jsdom@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.4.1.tgz#34d491244ddd6fe3d666da603b576bd0ae6aef78" + integrity sha512-+KfYmRTl5CBHQst9hIz77TiiriHYvuWoLjMT855gx2AMxhHxpk1vtKvag1DQfyWCPVTWV/AG7SIqVh5WI1O/uw== + dependencies: + "@jest/environment" "^29.4.1" + "@jest/fake-timers" "^29.4.1" + "@jest/types" "^29.4.1" + "@types/jsdom" "^20.0.0" + "@types/node" "*" + jest-mock "^29.4.1" + jest-util "^29.4.1" + jsdom "^20.0.0" + jest-environment-node@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" @@ -11148,6 +12819,18 @@ jest-environment-node@^27.5.1: jest-mock "^27.5.1" jest-util "^27.5.1" +jest-environment-node@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.4.1.tgz#22550b7d0f8f0b16228639c9f88ca04bbf3c1974" + integrity sha512-x/H2kdVgxSkxWAIlIh9MfMuBa0hZySmfsC5lCsWmWr6tZySP44ediRKDUiNggX/eHLH7Cd5ZN10Rw+XF5tXsqg== + dependencies: + "@jest/environment" "^29.4.1" + "@jest/fake-timers" "^29.4.1" + "@jest/types" "^29.4.1" + "@types/node" "*" + jest-mock "^29.4.1" + jest-util "^29.4.1" + jest-extended@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/jest-extended/-/jest-extended-1.2.0.tgz#6ef87d806bd9501a0aeae56fe8c7af73777987ed" @@ -11173,6 +12856,11 @@ jest-get-type@^29.0.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.0.0.tgz#843f6c50a1b778f7325df1129a0fd7aa713aef80" integrity sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw== +jest-get-type@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408" + integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA== + jest-haste-map@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" @@ -11193,6 +12881,25 @@ jest-haste-map@^27.5.1: optionalDependencies: fsevents "^2.3.2" +jest-haste-map@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.4.1.tgz#b0579dc82d94b40ed9041af56ad25c2f80bedaeb" + integrity sha512-imTjcgfVVTvg02khXL11NNLTx9ZaofbAWhilrMg/G8dIkp+HYCswhxf0xxJwBkfhWb3e8dwbjuWburvxmcr58w== + dependencies: + "@jest/types" "^29.4.1" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.2.0" + jest-util "^29.4.1" + jest-worker "^29.4.1" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + jest-jasmine2@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" @@ -11224,6 +12931,14 @@ jest-leak-detector@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" +jest-leak-detector@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.4.1.tgz#632186c546e084da2b490b7496fee1a1c9929637" + integrity sha512-akpZv7TPyGMnH2RimOCgy+hPmWZf55EyFUvymQ4LMsQP8xSPlZumCPtXGoDhFNhUE2039RApZkTQDKU79p/FiQ== + dependencies: + jest-get-type "^29.2.0" + pretty-format "^29.4.1" + jest-matcher-utils@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" @@ -11254,6 +12969,16 @@ jest-matcher-utils@^29.0.3: jest-get-type "^29.0.0" pretty-format "^29.0.3" +jest-matcher-utils@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.4.1.tgz#73d834e305909c3b43285fbc76f78bf0ad7e1954" + integrity sha512-k5h0u8V4nAEy6lSACepxL/rw78FLDkBnXhZVgFneVpnJONhb2DhZj/Gv4eNe+1XqQ5IhgUcqj745UwH0HJmMnA== + dependencies: + chalk "^4.0.0" + jest-diff "^29.4.1" + jest-get-type "^29.2.0" + pretty-format "^29.4.1" + jest-message-util@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" @@ -11314,6 +13039,21 @@ jest-message-util@^29.0.3: slash "^3.0.0" stack-utils "^2.0.3" +jest-message-util@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.4.1.tgz#522623aa1df9a36ebfdffb06495c7d9d19e8a845" + integrity sha512-H4/I0cXUaLeCw6FM+i4AwCnOwHRgitdaUFOdm49022YD5nfyr8C/DrbXOBEyJaj+w/y0gGJ57klssOaUiLLQGQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.4.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.4.1" + slash "^3.0.0" + stack-utils "^2.0.3" + jest-mock@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" @@ -11322,6 +13062,15 @@ jest-mock@^27.5.1: "@jest/types" "^27.5.1" "@types/node" "*" +jest-mock@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.4.1.tgz#a218a2abf45c99c501d4665207748a6b9e29afbd" + integrity sha512-MwA4hQ7zBOcgVCVnsM8TzaFLVUD/pFWTfbkY953Y81L5ret3GFRZtmPmRFAjKQSdCKoJvvqOu6Bvfpqlwwb0dQ== + dependencies: + "@jest/types" "^29.4.1" + "@types/node" "*" + jest-util "^29.4.1" + jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" @@ -11342,6 +13091,11 @@ jest-regex-util@^28.0.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== +jest-regex-util@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" + integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA== + jest-resolve-dependencies@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" @@ -11351,6 +13105,14 @@ jest-resolve-dependencies@^27.5.1: jest-regex-util "^27.5.1" jest-snapshot "^27.5.1" +jest-resolve-dependencies@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.4.1.tgz#02420a2e055da105e5fca8218c471d8b9553c904" + integrity sha512-Y3QG3M1ncAMxfjbYgtqNXC5B595zmB6e//p/qpA/58JkQXu/IpLDoLeOa8YoYfsSglBKQQzNUqtfGJJT/qLmJg== + dependencies: + jest-regex-util "^29.2.0" + jest-snapshot "^29.4.1" + jest-resolve@^27.4.2, jest-resolve@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" @@ -11367,6 +13129,21 @@ jest-resolve@^27.4.2, jest-resolve@^27.5.1: resolve.exports "^1.1.0" slash "^3.0.0" +jest-resolve@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.4.1.tgz#4c6bf71a07b8f0b79c5fdf4f2a2cf47317694c5e" + integrity sha512-j/ZFNV2lm9IJ2wmlq1uYK0Y/1PiyDq9g4HEGsNTNr3viRbJdV+8Lf1SXIiLZXFvyiisu0qUyIXGBnw+OKWkJwQ== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.4.1" + jest-pnp-resolver "^1.2.2" + jest-util "^29.4.1" + jest-validate "^29.4.1" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + jest-runner@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" @@ -11394,6 +13171,33 @@ jest-runner@^27.5.1: source-map-support "^0.5.6" throat "^6.0.1" +jest-runner@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.4.1.tgz#57460d9ebb0eea2e27eeddca1816cf8537469661" + integrity sha512-8d6XXXi7GtHmsHrnaqBKWxjKb166Eyj/ksSaUYdcBK09VbjPwIgWov1VwSmtupCIz8q1Xv4Qkzt/BTo3ZqiCeg== + dependencies: + "@jest/console" "^29.4.1" + "@jest/environment" "^29.4.1" + "@jest/test-result" "^29.4.1" + "@jest/transform" "^29.4.1" + "@jest/types" "^29.4.1" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.2.0" + jest-environment-node "^29.4.1" + jest-haste-map "^29.4.1" + jest-leak-detector "^29.4.1" + jest-message-util "^29.4.1" + jest-resolve "^29.4.1" + jest-runtime "^29.4.1" + jest-util "^29.4.1" + jest-watcher "^29.4.1" + jest-worker "^29.4.1" + p-limit "^3.1.0" + source-map-support "0.5.13" + jest-runtime@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" @@ -11422,6 +13226,35 @@ jest-runtime@^27.5.1: slash "^3.0.0" strip-bom "^4.0.0" +jest-runtime@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.4.1.tgz#9a50f9c69d3a391690897c01b0bfa8dc5dd45808" + integrity sha512-UXTMU9uKu2GjYwTtoAw5rn4STxWw/nadOfW7v1sx6LaJYa3V/iymdCLQM6xy3+7C6mY8GfX22vKpgxY171UIoA== + dependencies: + "@jest/environment" "^29.4.1" + "@jest/fake-timers" "^29.4.1" + "@jest/globals" "^29.4.1" + "@jest/source-map" "^29.2.0" + "@jest/test-result" "^29.4.1" + "@jest/transform" "^29.4.1" + "@jest/types" "^29.4.1" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.4.1" + jest-message-util "^29.4.1" + jest-mock "^29.4.1" + jest-regex-util "^29.2.0" + jest-resolve "^29.4.1" + jest-snapshot "^29.4.1" + jest-util "^29.4.1" + semver "^7.3.5" + slash "^3.0.0" + strip-bom "^4.0.0" + jest-serializer@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" @@ -11458,6 +13291,36 @@ jest-snapshot@^27.5.1: pretty-format "^27.5.1" semver "^7.3.2" +jest-snapshot@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.4.1.tgz#5692210b3690c94f19317913d4082b123bd83dd9" + integrity sha512-l4iV8EjGgQWVz3ee/LR9sULDk2pCkqb71bjvlqn+qp90lFwpnulHj4ZBT8nm1hA1C5wowXLc7MGnw321u0tsYA== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.4.1" + "@jest/transform" "^29.4.1" + "@jest/types" "^29.4.1" + "@types/babel__traverse" "^7.0.6" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.4.1" + graceful-fs "^4.2.9" + jest-diff "^29.4.1" + jest-get-type "^29.2.0" + jest-haste-map "^29.4.1" + jest-matcher-utils "^29.4.1" + jest-message-util "^29.4.1" + jest-util "^29.4.1" + natural-compare "^1.4.0" + pretty-format "^29.4.1" + semver "^7.3.5" + jest-util@^27.0.0, jest-util@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" @@ -11482,6 +13345,18 @@ jest-util@^28.1.3: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-util@^29.0.0, jest-util@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.4.1.tgz#2eeed98ff4563b441b5a656ed1a786e3abc3e4c4" + integrity sha512-bQy9FPGxVutgpN4VRc0hk6w7Hx/m6L53QxpDreTZgJd9gfx/AV2MjyPde9tGyZRINAUrSv57p2inGBu2dRLmkQ== + dependencies: + "@jest/types" "^29.4.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + jest-util@^29.0.3: version "29.0.3" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.0.3.tgz#06d1d77f9a1bea380f121897d78695902959fbc0" @@ -11506,6 +13381,18 @@ jest-validate@^27.5.1: leven "^3.1.0" pretty-format "^27.5.1" +jest-validate@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.4.1.tgz#0d5174510415083ec329d4f981bf6779211f17e9" + integrity sha512-qNZXcZQdIQx4SfUB/atWnI4/I2HUvhz8ajOSYUu40CSmf9U5emil8EDHgE7M+3j9/pavtk3knlZBDsgFvv/SWw== + dependencies: + "@jest/types" "^29.4.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.2.0" + leven "^3.1.0" + pretty-format "^29.4.1" + jest-watch-typeahead@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz#b4a6826dfb9c9420da2f7bc900de59dad11266a9" @@ -11546,6 +13433,20 @@ jest-watcher@^28.0.0: jest-util "^28.1.3" string-length "^4.0.1" +jest-watcher@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.4.1.tgz#6e3e2486918bd778849d4d6e67fd77b814f3e6ed" + integrity sha512-vFOzflGFs27nU6h8dpnVRER3O2rFtL+VMEwnG0H3KLHcllLsU8y9DchSh0AL/Rg5nN1/wSiQ+P4ByMGpuybaVw== + dependencies: + "@jest/test-result" "^29.4.1" + "@jest/types" "^29.4.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.4.1" + string-length "^4.0.1" + jest-worker@^26.2.1: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" @@ -11573,7 +13474,17 @@ jest-worker@^28.0.2: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@27.5.1, jest@^27.4.3, jest@^27.5.1: +jest-worker@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.4.1.tgz#7cb4a99a38975679600305650f86f4807460aab1" + integrity sha512-O9doU/S1EBe+yp/mstQ0VpPwpv0Clgn68TkNwGxL6/usX/KUW9Arnn4ag8C3jc6qHcXznhsT5Na1liYzAsuAbQ== + dependencies: + "@types/node" "*" + jest-util "^29.4.1" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^27.4.3, jest@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== @@ -11582,6 +13493,16 @@ jest@27.5.1, jest@^27.4.3, jest@^27.5.1: import-local "^3.0.2" jest-cli "^27.5.1" +jest@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.4.1.tgz#bb34baca8e05901b49c02c62f1183a6182ea1785" + integrity sha512-cknimw7gAXPDOmj0QqztlxVtBVCw2lYY9CeIE5N6kD+kET1H4H79HSNISJmijb1HF+qk+G+ploJgiDi5k/fRlg== + dependencies: + "@jest/core" "^29.4.1" + "@jest/types" "^29.4.1" + import-local "^3.0.2" + jest-cli "^29.4.1" + js-sdsl@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.4.tgz#78793c90f80e8430b7d8dc94515b6c77d98a26a6" @@ -11668,10 +13589,37 @@ jsdom@^16.6.0: ws "^7.4.6" xml-name-validator "^3.0.0" -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== +jsdom@^20.0.0: + version "20.0.3" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" + integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== + dependencies: + abab "^2.0.6" + acorn "^8.8.1" + acorn-globals "^7.0.0" + cssom "^0.5.0" + cssstyle "^2.3.0" + data-urls "^3.0.2" + decimal.js "^10.4.2" + 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 "^7.1.1" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^4.1.2" + w3c-xmlserializer "^4.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + ws "^8.11.0" + xml-name-validator "^4.0.0" jsesc@^2.5.1: version "2.5.2" @@ -11773,7 +13721,7 @@ json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" -json-stringify-safe@~5.0.1: +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== @@ -11783,11 +13731,6 @@ json5@2.x, json5@^2.1.2, json5@^2.2.0, json5@^2.2.1: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -11795,6 +13738,11 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +json5@^2.2.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -12429,6 +14377,13 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" +magic-string@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" + integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.13" + make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -12770,6 +14725,11 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +minimist@^1.2.3: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + minipass@^2.6.0, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" @@ -12798,6 +14758,11 @@ mixme@^0.5.1: resolved "https://registry.yarnpkg.com/mixme/-/mixme-0.5.4.tgz#8cb3bd0cd32a513c161bf1ca99d143f0bcf2eff3" integrity sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw== +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + mkdirp-promise@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" @@ -12805,7 +14770,7 @@ mkdirp-promise@^5.0.1: dependencies: mkdirp "*" -mkdirp@*: +mkdirp@*, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -12866,6 +14831,11 @@ mock-fs@^4.1.0: resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== +mock-socket@^9.2.0: + version "9.2.1" + resolved "https://registry.yarnpkg.com/mock-socket/-/mock-socket-9.2.1.tgz#cc9c0810aa4d0afe02d721dcb2b7e657c00e2282" + integrity sha512-aw9F9T9G2zpGipLLhSNh6ZpgUyUl4frcVmRN08uE1NWPWg43Wx6+sGPDbQ7E5iFZZDJW5b5bypMeAEHqTbIFag== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -12934,6 +14904,16 @@ multihashes@^0.4.15, multihashes@~0.4.15: multibase "^0.7.0" varint "^5.0.0" +nan@2.14.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +nan@^2.14.0: + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + nano-json-stream-parser@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" @@ -12961,6 +14941,11 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + napi-macros@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" @@ -13004,11 +14989,43 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +nock@^13.3.0: + version "13.3.0" + resolved "https://registry.yarnpkg.com/nock/-/nock-13.3.0.tgz#b13069c1a03f1ad63120f994b04bfd2556925768" + integrity sha512-HHqYQ6mBeiMc+N038w8LkMpDCRquCHWeNmN3v6645P3NhN2+qXOBqvPqo7Rt1VyCMzKhJ733wZqw5B7cQVFNPg== + dependencies: + debug "^4.1.0" + json-stringify-safe "^5.0.1" + lodash "^4.17.21" + propagate "^2.0.0" + +node-abi@^3.3.0: + version "3.33.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.33.0.tgz#8b23a0cec84e1c5f5411836de6a9b84bccf26e7f" + integrity sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog== + dependencies: + semver "^7.3.5" + node-addon-api@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== +node-addon-api@^3.0.2: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + +node-addon-api@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" + integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== + +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + node-environment-flags@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" @@ -13029,6 +15046,15 @@ node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" +node-fetch@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.0.tgz#37e71db4ecc257057af828d523a7243d651d91e4" + integrity sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + node-fetch@~1.7.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -13052,6 +15078,15 @@ node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== +node-hid@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/node-hid/-/node-hid-2.1.2.tgz#3145fa86ed4336a402a71e9f372c54213b88797c" + integrity sha512-qhCyQqrPpP93F/6Wc/xUR7L8mAJW0Z6R7HMQV8jCHHksAxNDe/4z4Un/H9CpLOT+5K39OPyt9tIQlavxWES3lg== + dependencies: + bindings "^1.5.0" + node-addon-api "^3.0.2" + prebuild-install "^7.1.1" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -13062,6 +15097,39 @@ node-releases@^2.0.6: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== +node-stdlib-browser@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/node-stdlib-browser/-/node-stdlib-browser-1.2.0.tgz#5ddcfdf4063b88fb282979a1aa6ddab9728d5e4c" + integrity sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg== + dependencies: + assert "^2.0.0" + browser-resolve "^2.0.0" + browserify-zlib "^0.2.0" + buffer "^5.7.1" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + create-require "^1.1.1" + crypto-browserify "^3.11.0" + domain-browser "^4.22.0" + events "^3.0.0" + https-browserify "^1.0.0" + isomorphic-timers-promises "^1.0.1" + os-browserify "^0.3.0" + path-browserify "^1.0.1" + pkg-dir "^5.0.0" + process "^0.11.10" + punycode "^1.4.1" + querystring-es3 "^0.2.1" + readable-stream "^3.6.0" + stream-browserify "^3.0.0" + stream-http "^3.2.0" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.1" + url "^0.11.0" + util "^0.12.4" + vm-browserify "^1.0.1" + nodemon@2.0.16: version "2.0.16" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.16.tgz#d71b31bfdb226c25de34afea53486c8ef225fdef" @@ -13156,7 +15224,7 @@ number-to-bn@1.7.0: bn.js "4.11.6" strip-hex-prefix "1.0.0" -nwsapi@^2.2.0: +nwsapi@^2.2.0, nwsapi@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0" integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== @@ -13383,11 +15451,6 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== - os-locale@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" @@ -13404,7 +15467,7 @@ os-locale@^3.1.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== @@ -13465,7 +15528,7 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -13533,6 +15596,16 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" +pako@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -13586,6 +15659,13 @@ parse5@6.0.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== +parse5@^7.0.0, parse5@^7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -13641,7 +15721,7 @@ patch-package@^6.2.2: slash "^2.0.0" tmp "^0.0.33" -path-browserify@^1.0.0: +path-browserify@^1.0.0, path-browserify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== @@ -13663,7 +15743,7 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== @@ -13777,6 +15857,13 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== + dependencies: + find-up "^5.0.0" + pkg-up@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" @@ -14341,11 +16428,38 @@ postcss@^8.3.5, postcss@^8.4.14, postcss@^8.4.4, postcss@^8.4.7: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.20: + version "8.4.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" + integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + postinstall-postinstall@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== +prebuild-install@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" + integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + precond@0.2: version "0.2.3" resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" @@ -14439,7 +16553,16 @@ pretty-format@^29.0.0, pretty-format@^29.0.3: ansi-styles "^5.0.0" react-is "^18.0.0" -private@^0.1.6, private@^0.1.8: +pretty-format@^29.4.1: + version "29.4.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.4.1.tgz#0da99b532559097b8254298da7c75a0785b1751c" + integrity sha512-dt/Z761JUVsrIKaY215o1xQJBGlSmTx/h4cSqXqjHLnU1+Kt+mavVE7UgqJJO5ukx5HjSswHfmXz4LjS2oIJfg== + dependencies: + "@jest/schemas" "^29.4.0" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +private@^0.1.6: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== @@ -14486,6 +16609,11 @@ prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" +propagate@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" + integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -14592,6 +16720,11 @@ punycode@2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -14637,6 +16770,11 @@ query-string@^5.0.1: object-assign "^4.1.0" strict-uri-encode "^1.0.0" +querystring-es3@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== + querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" @@ -14699,7 +16837,7 @@ raw-body@2.5.1, raw-body@^2.4.1: iconv-lite "0.4.24" unpipe "1.0.0" -rc@1.2.8, rc@^1.2.8: +rc@1.2.8, rc@^1.2.7, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -14796,6 +16934,11 @@ react-refresh@^0.11.0: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== + react-scripts@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.1.tgz#6285dbd65a8ba6e49ca8d651ce30645a6d980003" @@ -14934,7 +17077,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.5, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.0, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: +readable-stream@^3.0.6, readable-stream@^3.1.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -14999,6 +17142,11 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.9: version "0.13.9" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" @@ -15132,13 +17280,6 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== - dependencies: - is-finite "^1.0.0" - request@^2.79.0, request@^2.85.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -15238,6 +17379,11 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== +resolve.exports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.0.tgz#c1a0028c2d166ec2fbf7d0644584927e76e7400e" + integrity sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg== + resolve@1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" @@ -15245,7 +17391,7 @@ resolve@1.17.0: dependencies: path-parse "^1.0.6" -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, resolve@^1.8.1, resolve@~1.22.1: +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, resolve@^1.8.1, resolve@~1.22.1: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -15345,6 +17491,13 @@ rollup@^2.43.1: optionalDependencies: fsevents "~2.3.2" +rollup@^3.7.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.10.0.tgz#6eb19196d8b3b375ca651cb78261faac48e24cd6" + integrity sha512-JmRYz44NjC1MjVF2VKxc0M1a97vn+cDxeqWmnwyAF4FvpjK8YFdHpaqvQB+3IxCvX05vJxKZkoMDU8TShhmJVA== + optionalDependencies: + fsevents "~2.3.2" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -15357,13 +17510,20 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== -rxjs@^6.6.3: +rxjs@6, rxjs@^6.6.3: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" +rxjs@^7.8.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" + integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== + dependencies: + tslib "^2.1.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -15418,6 +17578,13 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== + dependencies: + xmlchars "^2.2.0" + scheduler@^0.23.0: version "0.23.0" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" @@ -15474,6 +17641,20 @@ scryptsy@^1.2.1: dependencies: pbkdf2 "^3.0.3" +secp256k1@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.7.1.tgz#12e473e0e9a7c2f2d4d4818e722ad0e14cc1e2f1" + integrity sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g== + dependencies: + bindings "^1.5.0" + bip66 "^1.1.5" + bn.js "^4.11.8" + create-hash "^1.2.0" + drbg.js "^1.0.1" + elliptic "^6.4.1" + nan "^2.14.0" + safe-buffer "^5.1.2" + secp256k1@4.0.3, secp256k1@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" @@ -15626,7 +17807,7 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.5: +setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== @@ -15687,7 +17868,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -15706,16 +17887,20 @@ simple-get@^2.7.0: once "^1.3.1" simple-concat "^1.0.0" +simple-get@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== - slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" @@ -15860,12 +18045,13 @@ source-map-support@0.5.12: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== dependencies: - source-map "^0.5.6" + buffer-from "^1.0.0" + source-map "^0.6.0" source-map-support@^0.5.13, source-map-support@^0.5.6, source-map-support@~0.5.20: version "0.5.21" @@ -15885,7 +18071,7 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, sourc resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== @@ -16038,6 +18224,11 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +store@^2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/store/-/store-2.0.12.tgz#8c534e2a0b831f72b75fc5f1119857c44ef5d593" + integrity sha512-eO9xlzDpXLiMr9W1nQ3Nfp9EzZieIQc10zPPMP5jsVV7bLOziSFFBP0XoDXACEIFtdI+rIz0NwWVA/QVJ8zJtw== + stream-browserify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" @@ -16173,7 +18364,7 @@ string.prototype.trimstart@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" -string_decoder@^1.1.1: +string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -16469,6 +18660,27 @@ tape@^4.6.3: string.prototype.trim "~1.2.6" through "~2.3.8" +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + tar@^4.0.2: version "4.4.19" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" @@ -16586,6 +18798,13 @@ timed-out@^4.0.1: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + tmp@0.0.33, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -16664,7 +18883,7 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" -tough-cookie@^4.0.0: +tough-cookie@^4.0.0, tough-cookie@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== @@ -16696,6 +18915,13 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -16711,11 +18937,6 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== - "true-case-path@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" @@ -16751,10 +18972,10 @@ ts-generator@^0.1.1: resolve "^1.8.1" ts-essentials "^1.0.0" -ts-jest@27.1.4: - version "27.1.4" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.4.tgz#84d42cf0f4e7157a52e7c64b1492c46330943e00" - integrity sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ== +ts-jest@^27.1.4: + version "27.1.5" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.5.tgz#0ddf1b163fbaae3d5b7504a1e65c914a95cff297" + integrity sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA== dependencies: bs-logger "0.x" fast-json-stable-stringify "2.x" @@ -16765,19 +18986,19 @@ ts-jest@27.1.4: semver "7.x" yargs-parser "20.x" -ts-jest@^27.1.4: - version "27.1.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.5.tgz#0ddf1b163fbaae3d5b7504a1e65c914a95cff297" - integrity sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA== +ts-jest@^29.0.5: + version "29.0.5" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.0.5.tgz#c5557dcec8fe434fcb8b70c3e21c6b143bfce066" + integrity sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA== dependencies: bs-logger "0.x" fast-json-stable-stringify "2.x" - jest-util "^27.0.0" - json5 "2.x" + jest-util "^29.0.0" + json5 "^2.2.3" lodash.memoize "4.x" make-error "1.x" semver "7.x" - yargs-parser "20.x" + yargs-parser "^21.0.1" ts-node@10.7.0: version "10.7.0" @@ -16798,7 +19019,7 @@ ts-node@10.7.0: v8-compile-cache-lib "^3.0.0" yn "3.1.1" -ts-node@10.9.1, ts-node@>=8.0.0, ts-node@^10.7.0: +ts-node@10.9.1, ts-node@>=8.0.0, ts-node@^10.7.0, ts-node@^10.9.1: version "10.9.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== @@ -16837,6 +19058,11 @@ tslib@^2.0.0, tslib@^2.0.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +tslib@^2.1.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + tsort@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" @@ -16849,6 +19075,11 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +tty-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" + integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== + tty-table@^4.1.5: version "4.1.6" resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-4.1.6.tgz#6bd58338f36c94cce478c3337934d8a65ab40a73" @@ -16874,16 +19105,16 @@ tweetnacl-util@^0.15.0, tweetnacl-util@^0.15.1: resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== +tweetnacl@1.x.x, tweetnacl@^1.0.0, tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== -tweetnacl@^1.0.0, tweetnacl@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -16981,20 +19212,15 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@4.6.3: - version "4.6.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" - integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== +typeforce@^1.11.5: + version "1.18.0" + resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" + integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== -typescript@4.8.4, typescript@^4.4.2: - version "4.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" - integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== - -typescript@^4.6.3: - version "4.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" - integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== +typescript@4.6.3, typescript@4.8.4, typescript@^4.4.2, typescript@^4.6.3, typescript@^4.9.3, typescript@^4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== typewise-core@^1.2, typewise-core@^1.2.0: version "1.2.0" @@ -17202,6 +19428,15 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" +usb@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/usb/-/usb-2.5.1.tgz#27550f078a785144fbc19b5f6664742a066b961f" + integrity sha512-/VNr4wUL32KVqyrVJ1HGBhDEvklhouVh+8ehIGKv6FsOKz6MWlkYLLAEyXbRo72HXhhiFNj6bwz6L+bIk8F0Yw== + dependencies: + "@types/w3c-web-usb" "1.0.6" + node-addon-api "^4.2.0" + node-gyp-build "^4.3.0" + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -17264,6 +19499,17 @@ util@^0.12.0: safe-buffer "^5.1.2" which-typed-array "^1.1.2" +util@^0.12.4: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" @@ -17303,6 +19549,15 @@ v8-to-istanbul@^8.1.0: convert-source-map "^1.6.0" source-map "^0.7.3" +v8-to-istanbul@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" + integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -17330,6 +19585,31 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vite-plugin-node-polyfills@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.7.0.tgz#004f400cfae791338c6f0a46d4ddf559c331c899" + integrity sha512-DKBSGDOx3R8pUIsQFRZAWNYp0vIffJOT0NkuByX4WIQq80nJ2eamAph5T9zG91liO1Fyl1lo7/Onh6xoQO52XQ== + dependencies: + "@rollup/plugin-inject" "^5.0.3" + node-stdlib-browser "^1.2.0" + +vite@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.0.4.tgz#4612ce0b47bbb233a887a54a4ae0c6e240a0da31" + integrity sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw== + dependencies: + esbuild "^0.16.3" + postcss "^8.4.20" + resolve "^1.22.1" + rollup "^3.7.0" + optionalDependencies: + fsevents "~2.3.2" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -17344,7 +19624,14 @@ w3c-xmlserializer@^2.0.0: dependencies: xml-name-validator "^3.0.0" -walker@^1.0.7: +w3c-xmlserializer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" + integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== + dependencies: + xml-name-validator "^4.0.0" + +walker@^1.0.7, walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== @@ -17373,6 +19660,11 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +web-streams-polyfill@^3.0.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" + integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== + web-vitals@^2.1.0: version "2.1.4" resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.4.tgz#76563175a475a5e835264d373704f9dde718290c" @@ -18181,6 +20473,11 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + webpack-dev-middleware@^5.3.1: version "5.3.3" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" @@ -18312,7 +20609,7 @@ websocket@1.0.32: utf-8-validate "^5.0.2" yaeti "^0.0.6" -websocket@^1.0.31, websocket@^1.0.32: +websocket@^1.0.31, websocket@^1.0.32, websocket@^1.0.34: version "1.0.34" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== @@ -18331,6 +20628,13 @@ whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== + dependencies: + iconv-lite "0.6.3" + whatwg-fetch@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" @@ -18346,6 +20650,19 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -18441,6 +20758,13 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" +wif@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" + integrity sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ== + dependencies: + bs58check "<3.0.0" + window-size@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" @@ -18670,6 +20994,14 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +write-file-atomic@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.0.tgz#54303f117e109bf3d540261125c8ea5a7320fab0" + integrity sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + ws@7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" @@ -18696,6 +21028,11 @@ ws@^7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== +ws@^8.11.0, ws@^8.8.1: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8" + integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig== + ws@^8.4.2: version "8.8.1" resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0" @@ -18748,6 +21085,11 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" @@ -18834,7 +21176,7 @@ yargs-parser@^2.4.1: camelcase "^3.0.0" lodash.assign "^4.0.6" -yargs-parser@^21.0.0: +yargs-parser@^21.0.0, yargs-parser@^21.0.1, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== @@ -18924,6 +21266,19 @@ yargs@^17.1.1: y18n "^5.0.5" yargs-parser "^21.0.0" +yargs@^17.3.1: + version "17.6.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yargs@^4.7.1: version "4.8.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0"