diff --git a/.gitignore b/.gitignore index e09af15fd..b3b0384ea 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,3 @@ template.out aws.env *.log .idea - -# Hardhat -contracts/evm/build/cache diff --git a/.vscode/settings.json b/.vscode/settings.json index d783e2bc6..36f044b5c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,6 +2,18 @@ "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, + "[html]": { + "editor.defaultFormatter": "Vue.volar" + }, + "[vue]": { + "editor.defaultFormatter": "Vue.volar" + }, + "[javascript]": { + "editor.defaultFormatter": "vscode.typescript-language-features" + }, + "[json]": { + "editor.defaultFormatter": "vscode.json-language-features" + }, "eslint.validate": [ "vue", "typescript" diff --git a/README.md b/README.md index 9e5bed95a..c2b3f7767 100644 --- a/README.md +++ b/README.md @@ -95,21 +95,21 @@ You can get up and running without configuration. You can also mock local backen ### Hardhat -EVM contract development is serviced through [Hardhat](https://hardhat.io/). The Hardhat development environment is configured in the [contracts/evm/hardhat.config.ts](contracts/evm/hardhat.config.ts) file. +Ethereum contract development is serviced through [Hardhat](https://hardhat.io/). The Hardhat development environment is configured in the [contracts/ethereum/hardhat.config.ts](contracts/ethereum/hardhat.config.ts) file. -1. Compile the contracts in [contracts/evm](contracts/evm). +1. Compile the contracts in [contracts/ethereum](contracts/ethereum). ```zsh npm run task:compile ``` -2. Deploy a contract, specifically [contracts/evm/src/Sample.sol](contracts/evm/src/Sample.sol) with [contracts/evm/deploy/sample.ts](contracts/evm/deploy/sample.ts). +2. Deploy a contract, specifically [contracts/ethereum/src/Sample.sol](contracts/ethereum/src/Sample.sol) with [contracts/ethereum/deploy/sample.ts](contracts/ethereum/deploy/sample.ts). ```zsh npm run deploy:sample ``` -3. Test the Sample with the tests in [contracts/evm/test/sample.ts](contracts/evm/test/sample.ts). +3. Test the Sample with the tests in [contracts/ethereum/test/sample.ts](contracts/ethereum/test/sample.ts). ```zsh npm run test:contracts @@ -127,7 +127,7 @@ EVM contract development is serviced through [Hardhat](https://hardhat.io/). The // Todo add Casimir Typescript usage ``` -7. Clean [contracts/evm/build/artifacts](contracts/evm/build/artifacts) and [contracts/evm/build/cache](contracts/evm/build/cache)). +7. Clean [contracts/ethereum/build/artifacts](contracts/ethereum/build/artifacts) and [contracts/ethereum/build/cache](contracts/ethereum/build/cache)). ```zsh npm run task:clean diff --git a/apps/web/package.json b/apps/web/package.json index 72dbcd429..d9e73d7ac 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -11,9 +11,11 @@ "dependencies": { "@heroicons/vue": "^1.0.6", "@ledgerhq/hw-app-eth": "^6.29.4", - "@ledgerhq/hw-transport-webhid": "^6.27.2", + "@ledgerhq/hw-transport-webusb": "^6.27.4", + "@solana/web3.js": "^1.63.1", "@walletconnect/client": "^1.8.0", "@walletconnect/qrcode-modal": "^1.8.0", + "borsh": "^0.7.0", "buffer": "^6.0.3", "ethers": "^5.6.9", "iotex-antenna": "^0.31.3", diff --git a/apps/web/src/components/Wallet.vue b/apps/web/src/components/Wallet.vue index fb082f97a..e3b9eb04c 100644 --- a/apps/web/src/components/Wallet.vue +++ b/apps/web/src/components/Wallet.vue @@ -11,7 +11,10 @@

-

@@ -20,7 +23,10 @@

-

@@ -28,7 +34,22 @@ {{ ioPayAccountsResult }}

- +

+ Connected phantom Account: + {{ phantomAccountsResult }} +

+ +
@@ -38,28 +59,37 @@ > WalletConnect - -
-
+
+ + +

{{ signedMessage }}

+
+ - -
+ +
- - + +
@@ -69,12 +99,17 @@ import { ref, watchEffect } from 'vue' import useWallet from '@/composables/wallet' +const message = ref('') +const signedMessage = ref('') + const metamaskButtonText = ref('Connect Metamask') const metamaskAccountsResult = ref('Address Not Active') const coinbaseButtonText = ref('Connect Coinbase') const coinbaseAccountsResult = ref('Address Not Active') const ioPayButtonText = ref('Connect ioPay') const ioPayAccountsResult = ref('Address Not Active') +const phantomButtonText = ref('Connect Phantom') +const phantomAccountsResult = ref('Address Not Active') const { selectedProvider, @@ -82,8 +117,8 @@ const { toAddress, amount, connectWallet, - disconnectWallet, sendTransaction, + signMessage, } = useWallet() watchEffect(() => { @@ -94,6 +129,8 @@ watchEffect(() => { ioPayButtonText.value = 'Connect ioPay' coinbaseAccountsResult.value = 'Not Active' ioPayAccountsResult.value = 'Not Active' + phantomButtonText.value = 'Connect Phantom' + phantomAccountsResult.value = 'Not Active' } else if (selectedProvider.value === 'CoinbaseWallet') { metamaskButtonText.value = 'Connect Metamask' coinbaseButtonText.value = 'Coinbase Connected' @@ -101,6 +138,8 @@ watchEffect(() => { metamaskAccountsResult.value = 'Not Active' coinbaseAccountsResult.value = selectedAccount.value ioPayAccountsResult.value = 'Not Active' + phantomButtonText.value = 'Connect Phantom' + phantomAccountsResult.value = 'Not Active' } else if (selectedProvider.value === 'IoPay') { metamaskButtonText.value = 'Connect MetaMask' coinbaseButtonText.value = 'Connect Coinbase' @@ -108,6 +147,17 @@ watchEffect(() => { metamaskAccountsResult.value = 'Not Active' coinbaseAccountsResult.value = 'Not Active' ioPayAccountsResult.value = selectedAccount.value || 'Not Active' + phantomButtonText.value = 'Connect Phantom' + phantomAccountsResult.value = 'Not Active' + } else if (selectedProvider.value === 'Phantom') { + metamaskButtonText.value = 'Connect MetaMask' + coinbaseButtonText.value = 'Connect Coinbase' + ioPayButtonText.value = 'Connect ioPay' + phantomButtonText.value = 'Connected' + metamaskAccountsResult.value = 'Not Active' + coinbaseAccountsResult.value = 'Not Active' + ioPayAccountsResult.value = 'Not Active' + phantomAccountsResult.value = selectedAccount.value || 'Not Active' } }) @@ -155,6 +205,10 @@ button { background-color: rgb(0, 0, 0); } +.phantom-btn { + background-color: purple; +} + .connect-wallet-container { display: flex; flex-direction: column; diff --git a/apps/web/src/composables/ethers.ts b/apps/web/src/composables/ethers.ts index 79b54bbb7..a09c2d37d 100644 --- a/apps/web/src/composables/ethers.ts +++ b/apps/web/src/composables/ethers.ts @@ -1,13 +1,75 @@ +import { ref } from 'vue' +import { ethers } from 'ethers' +import { BrowserProviders } from '@/interfaces/BrowserProviders' import { EthersProvider } from '@/interfaces/EthersProvider' +import { ProviderString } from '@/types/ProviderString' +import { TransactionInit } from '@/interfaces/TransactionInit' +import { MessageInit } from '@/interfaces/MessageInit' + +const defaultProviders = { + MetaMask: undefined, + CoinbaseWallet: undefined, +} + +const ethereum: any = window.ethereum +const availableProviders = ref(getBrowserProviders(ethereum)) export default function useEthers() { - async function requestEthersAccount(provider: EthersProvider) { - if (provider.request) { - return await provider.request({ + const ethersProviderList = ['MetaMask', 'CoinbaseWallet'] + async function requestEthersAccount(provider: ProviderString) { + const browserExtensionProvider = + availableProviders.value[provider as keyof BrowserProviders] + if (browserExtensionProvider?.request) { + return await browserExtensionProvider.request({ method: 'eth_requestAccounts', }) } } - return { requestEthersAccount } + async function sendEthersTransaction( + { to, value, providerString }: TransactionInit + ) { + const browserProvider = + availableProviders.value[providerString as keyof BrowserProviders] + const web3Provider: ethers.providers.Web3Provider = + new ethers.providers.Web3Provider(browserProvider as EthersProvider) + const signer = web3Provider.getSigner() + const etherAmount = ethers.utils.parseEther(value) + const tx = { + to, + value: etherAmount, + } + const { hash } = await signer.sendTransaction(tx) + return hash + } + + async function signEthersMessage(messageInit: MessageInit): Promise { + const { providerString, hashedMessage } = messageInit + const browserProvider = + availableProviders.value[ + providerString as keyof BrowserProviders + ] + const web3Provider: ethers.providers.Web3Provider = + new ethers.providers.Web3Provider(browserProvider as EthersProvider) + const signer = web3Provider.getSigner() + const signature = await signer.signMessage(hashedMessage) + return signature + } + + return { ethersProviderList, requestEthersAccount, getBrowserProviders, sendEthersTransaction, signEthersMessage } } + +function getBrowserProviders(ethereum: any) { + if (!ethereum) return defaultProviders + else if (!ethereum.providerMap) { + return { + MetaMask: ethereum.isMetaMask ? ethereum : undefined, + CoinbaseWallet: ethereum.isCoinbaseWallet ? ethereum : undefined, + } + } else { + return { + MetaMask: ethereum.providerMap.get('MetaMask'), + CoinbaseWallet: ethereum.providerMap.get('CoinbaseWallet'), + } + } +} \ No newline at end of file diff --git a/apps/web/src/composables/iopay.ts b/apps/web/src/composables/iopay.ts index 361c2b338..a5aa74900 100644 --- a/apps/web/src/composables/iopay.ts +++ b/apps/web/src/composables/iopay.ts @@ -1,6 +1,8 @@ import Antenna from 'iotex-antenna' import { WsSignerPlugin } from 'iotex-antenna/lib/plugin/ws' import { toRau } from 'iotex-antenna/lib/account/utils' +import { TransactionInit } from '@/interfaces/TransactionInit' +import { MessageInit } from '@/interfaces/MessageInit' export default function useIoPay() { const signer = new WsSignerPlugin() @@ -12,22 +14,27 @@ export default function useIoPay() { return await signer.getAccounts() } - const sendIoPayTransaction = async (toAddress: string, amount: string) => { + const sendIoPayTransaction = async ({ to, value }: TransactionInit) => { try { const transResp = await antenna?.iotx.sendTransfer({ - to: `${toAddress}`, + to: `${to}`, from: antenna.iotx.accounts[0].address, - value: toRau(amount, 'Iotx'), + value: toRau(value, 'Iotx'), gasLimit: '100000', - gasPrice: toRau('1', 'Qev') + gasPrice: toRau('1', 'Qev'), }) - console.log('transResp :>> ', transResp) + return transResp } catch (err) { // TODO: handle submit error and guide user console.log(err) } } + const signIoPayMessage = async (messageInit: MessageInit): Promise => { + const { hashedMessage } = messageInit + return await signer.signMessage(hashedMessage) + } + // const stakeIoPay = async () => { // // TODO: Replace with appropriate abi, etc. // const transResp = await antenna?.iotx.executeContract( @@ -49,6 +56,7 @@ export default function useIoPay() { return { getIoPayAccounts, sendIoPayTransaction, + signIoPayMessage, // stakeIoPay, } } diff --git a/apps/web/src/composables/ledger.ts b/apps/web/src/composables/ledger.ts index f0ab055a1..5d5447884 100644 --- a/apps/web/src/composables/ledger.ts +++ b/apps/web/src/composables/ledger.ts @@ -1,26 +1,102 @@ import SpeculosHttpTransport from '@casimir/hw-transport-speculos' -import TransportWebHID from '@ledgerhq/hw-transport-webhid' -import Eth from '@ledgerhq/hw-app-eth' +import TransportWebUSB from '@ledgerhq/hw-transport-webusb' +import Eth, { ledgerService } from '@ledgerhq/hw-app-eth' +import { ethers } from 'ethers' +import { TransactionInit } from '@/interfaces/TransactionInit' +import { Deferrable } from '@ethersproject/properties' +import { TransactionRequest } from '@ethersproject/abstract-provider' +import { MessageInit } from '@/interfaces/MessageInit' export default function useLedger() { + const bip32Path = '44\'/60\'/0\'/0/0' - const bip32Path = '44\'/60\'/0\'/0/0' + async function getLedgerEthSigner() { + const transport = await _getLedgerTransport() + return new Eth(transport) + } - async function getLedgerEthSigner() { - const transport = await _getLedgerTransport() - return new Eth(transport) + async function _getLedgerTransport() { + if (import.meta.env.PUBLIC_SPECULOS_PORT) { + return await SpeculosHttpTransport.open( + `http://127.0.0.1:${import.meta.env.PUBLIC_SPECULOS_PORT}` + ) + } else { + return await TransportWebUSB.create() } + } - async function _getLedgerTransport() { - if (import.meta.env.PUBLIC_SPECULOS_PORT) { - return await SpeculosHttpTransport.open(`http://127.0.0.1:${import.meta.env.PUBLIC_SPECULOS_PORT}`) - } else { - return await TransportWebHID.create() - } + async function sendLedgerTransaction({ from, to, value }: TransactionInit) { + const rpcUrl = import.meta.env.PUBLIC_ETHEREUM_RPC || 'http://localhost:8545/' + const provider = new ethers.providers.JsonRpcProvider(rpcUrl) + const { chainId } = await provider.getNetwork() + const gasPriceHex = (await provider.getGasPrice())._hex + const gasPrice = '0x' + (parseInt(gasPriceHex, 16) * 1.15).toString(16) + const nonce = await provider.getTransactionCount(from, 'latest') + const unsignedTransaction: ethers.utils.UnsignedTransaction = { + to, + gasPrice, + nonce, + chainId, + data: '0x00', + value: ethers.utils.parseUnits(value) } - return { - bip32Path, - getLedgerEthSigner + // Todo check before click (user can +/- gas limit accordingly) + const gasEstimate = await provider.estimateGas( + unsignedTransaction as Deferrable + ) + const gasLimit = Math.ceil(parseInt(gasEstimate.toString()) * 1.3) + unsignedTransaction.gasLimit = ethers.utils.hexlify(gasLimit) + const balance = await provider.getBalance(from) + const required = ethers.BigNumber.from(gasPrice) + .mul(gasLimit) + .add(ethers.utils.parseEther(value)) + console.log('Balance', ethers.utils.formatEther(balance)) + console.log('Required', ethers.utils.formatEther(required)) + + const ledger = await getLedgerEthSigner() + const rawUnsignedTransaction = ethers.utils + .serializeTransaction(unsignedTransaction) + .substring(2) + const resolution = await ledgerService.resolveTransaction( + rawUnsignedTransaction, + {}, + {} + ) + const { v, r, s } = await ledger.signTransaction( + bip32Path, + rawUnsignedTransaction, + resolution + ) + const signature = { + v: parseInt(v), + r: '0x' + r, + s: '0x' + s, + from, } -} \ No newline at end of file + const signedTransaction = ethers.utils.serializeTransaction( + unsignedTransaction, + signature + ) + return await provider.sendTransaction(signedTransaction) + } + + async function signLedgerMessage(messageInit: MessageInit): Promise { + const { hashedMessage } = messageInit + const _eth = await getLedgerEthSigner() + const signature = await _eth.signPersonalMessage( + bip32Path, + Buffer.from(hashedMessage).toString('hex') + ) + const signedHash = + '0x' + signature.r + signature.s + signature.v.toString(16) + return signedHash + } + + return { + bip32Path, + getLedgerEthSigner, + signLedgerMessage, + sendLedgerTransaction, + } +} diff --git a/apps/web/src/composables/solana.ts b/apps/web/src/composables/solana.ts new file mode 100644 index 000000000..78deb01b0 --- /dev/null +++ b/apps/web/src/composables/solana.ts @@ -0,0 +1,68 @@ +import { ref } from 'vue' +import { + Connection, + Transaction, + SystemProgram, + PublicKey, +} from '@solana/web3.js' +import { BrowserProviders } from '@/interfaces/BrowserProviders' +import { ProviderString } from '@/types/ProviderString' +import { TransactionInit } from '@/interfaces/TransactionInit' +import { MessageInit } from '@/interfaces/MessageInit' + +export default function useSolana() { + const solanaProviderList = ['Phantom'] + const availableProviders = ref(getBrowserProviders()) + const solanaPublicKey = ref({}) + + async function requestSolanaAddress(provider: ProviderString) { + const phantomProvider = + availableProviders.value[provider as keyof BrowserProviders] + const resp = await phantomProvider.connect() + solanaPublicKey.value = resp.publicKey + const address = resp.publicKey.toString() + return address + } + + async function sendSolanaTransaction({ from, to, value, providerString }: TransactionInit) { + const network = 'https://api.devnet.solana.com' + const connection = new Connection(network) + const { blockhash } = await connection.getLatestBlockhash('finalized') + const toAddress = new PublicKey(to) + const fromAddress = new PublicKey(from) + const lamports = Number(value) * 1000000000 + const transaction = new Transaction().add( + SystemProgram.transfer({ + fromPubkey: fromAddress, + toPubkey: toAddress, + lamports, + }) + ) + transaction.feePayer = fromAddress + transaction.recentBlockhash = blockhash + const { signature } = await availableProviders.value[providerString as keyof BrowserProviders] + .signAndSendTransaction(transaction) + const signatureStatus = await connection.getSignatureStatus(signature) + return signatureStatus + } + + async function signSolanaMessage(messageInit: MessageInit): Promise { + const { providerString, hashedMessage } = messageInit + const { signature } = await availableProviders.value[providerString as keyof BrowserProviders] + .signMessage(hashedMessage) + return signature + } + + return { solanaProviderList, requestSolanaAddress, sendSolanaTransaction, signSolanaMessage } +} + +function getBrowserProviders() { + const phantom: any = window.phantom?.solana?.isPhantom + ? window.phantom?.solana + : undefined + const providers = { + Phantom: undefined, + } + providers.Phantom = phantom + return providers +} \ No newline at end of file diff --git a/apps/web/src/composables/wallet.ts b/apps/web/src/composables/wallet.ts index ae032aece..b5136b2d6 100644 --- a/apps/web/src/composables/wallet.ts +++ b/apps/web/src/composables/wallet.ts @@ -4,35 +4,30 @@ import useIoPay from '@/composables/iopay' import useLedger from '@/composables/ledger' import useEthers from '@/composables/ethers' import useWalletConnect from '@/composables/walletConnect' -import { BrowserProviders } from '@/interfaces/BrowserProviders' -import { EthersProvider } from '@/interfaces/EthersProvider' +import useSolana from '@/composables/solana' import { ProviderString } from '@/types/ProviderString' +import { TransactionInit } from '@/interfaces/TransactionInit' +import { MessageInit } from '@/interfaces/MessageInit' -const defaultProviders = { - MetaMask: undefined, - CoinbaseWallet: undefined, -} -const ethersProviderList = ['MetaMask', 'CoinbaseWallet'] - -const { requestEthersAccount } = useEthers() -const { - enableWalletConnect, - disableWalletConnect, - sendWalletConnectTransaction, -} = useWalletConnect() +const { ethersProviderList, requestEthersAccount, sendEthersTransaction, signEthersMessage } = useEthers() +const { enableWalletConnect, disableWalletConnect, sendWalletConnectTransaction } = useWalletConnect() +const { solanaProviderList, requestSolanaAddress, sendSolanaTransaction, signSolanaMessage } = useSolana() -const amount = ref('0.01') -const toAddress = ref('0xD4e5faa8aD7d499Aa03BDDE2a3116E66bc8F8203') +const amount = ref('0.001') +const toAddress = ref('7aVow9eVQjwn7Y4y7tAbPM1pfrE1TzjmJhxcRt8QwX5F') // Test ethereum send to address : 0xD4e5faa8aD7d499Aa03BDDE2a3116E66bc8F8203 +// Test solana address: 7aVow9eVQjwn7Y4y7tAbPM1pfrE1TzjmJhxcRt8QwX5F // Test iotex send to address: acc://06da5e904240736b1e21ca6dbbd5f619860803af04ff3d54/acme export default function useWallet() { - const { getIoPayAccounts, sendIoPayTransaction } = useIoPay() - const { bip32Path, getLedgerEthSigner } = useLedger() - const ethereum: any = window.ethereum - const availableProviders = ref( - getBrowserProviders(ethereum) - ) + const { getIoPayAccounts, sendIoPayTransaction, signIoPayMessage } = + useIoPay() + const { + bip32Path, + getLedgerEthSigner, + signLedgerMessage, + sendLedgerTransaction, + } = useLedger() const selectedProvider = ref('') const selectedAccount = ref('') const setSelectedProvider = (provider: ProviderString) => { @@ -44,18 +39,20 @@ export default function useWallet() { async function connectWallet(provider: ProviderString) { try { + if (selectedProvider.value === 'WalletConnect' && provider !== 'WalletConnect') { + await disableWalletConnect() + } setSelectedProvider(provider) selectedAccount.value = 'Not Active' if (provider === 'WalletConnect') { enableWalletConnect() } else if (ethersProviderList.includes(provider)) { - const browserExtensionProvider = - availableProviders.value[provider as keyof BrowserProviders] - const accounts = await requestEthersAccount( - browserExtensionProvider as EthersProvider - ) + const accounts = await requestEthersAccount(provider as ProviderString) const address = accounts[0] setSelectedAccount(address) + } else if (solanaProviderList.includes(provider)) { + const address = await requestSolanaAddress(provider as ProviderString) + setSelectedAccount(address) } else if (provider === 'IoPay') { const accounts = await getIoPayAccounts() const { address } = accounts[0] @@ -63,7 +60,6 @@ export default function useWallet() { } else if (provider === 'Ledger') { const ledgerEth = await getLedgerEthSigner() const { address } = await ledgerEth.getAddress(bip32Path) - console.log(address) setSelectedAccount(address) } else { throw new Error('No provider selected') @@ -73,45 +69,51 @@ export default function useWallet() { } } - // TODO: Fold this into the logic of switching to/from other wallet provider depending on front-end implementation - async function disconnectWallet(provider: ProviderString) { - selectedAccount.value = '' - selectedProvider.value = '' - if (provider === 'WalletConnect') { - await disableWalletConnect() + async function sendTransaction() { + const txInit: TransactionInit = { + from: selectedAccount.value, + to: toAddress.value, + value: amount.value, + providerString: selectedProvider.value } - } - async function sendTransaction(provider: string) { try { - if (provider === 'WalletConnect') { - await sendWalletConnectTransaction(amount.value, toAddress.value) - } else if (ethersProviderList.includes(provider)) { - const browserProvider = - availableProviders.value[provider as keyof BrowserProviders] - const web3Provider: ethers.providers.Web3Provider = - new ethers.providers.Web3Provider(browserProvider as EthersProvider) - const signer = web3Provider.getSigner() - const etherAmount = ethers.utils.parseEther(amount.value) - const tx = { - to: toAddress.value, - value: etherAmount, - } - signer.sendTransaction(tx).then((txObj) => { - console.log('successful txHash: ', txObj.hash) - }) + if (txInit.providerString === 'WalletConnect') { + await sendWalletConnectTransaction(txInit) + } else if (ethersProviderList.includes(txInit.providerString)) { + await sendEthersTransaction(txInit) + } else if (solanaProviderList.includes(txInit.providerString)) { + await sendSolanaTransaction(txInit) } else if (selectedProvider.value === 'IoPay') { - await sendIoPayTransaction(toAddress.value, amount.value) + await sendIoPayTransaction(txInit) } else if (selectedProvider.value === 'Ledger') { - // npm run dev:ethereum in another process - // const ledgerEth = await getLedgerEthSigner() - // Create - { to: ... } - // Serialize - ethers.utils.serializeTransaction - // Sign - ledgerEth.signTransaction - // Send - (new ethers.providers.JsonRpcProvider("http://127.0.0.1:8545")).sendTransaction + await sendLedgerTransaction(txInit) } else { throw new Error('Provider selected not yet supported') } + } catch (error) { + console.error('sendTransaction error: ', error) + } + } + + async function signMessage(message: string) { + const messageInit: MessageInit = { + hashedMessage: ethers.utils.id(message), + providerString: selectedProvider.value, + } + // TODO: Mock sending hash and signature to backend for verification + try { + if (ethersProviderList.includes(messageInit.providerString)) { + await signEthersMessage(messageInit) + } else if (solanaProviderList.includes(messageInit.providerString)) { + await signSolanaMessage(messageInit) + } else if (messageInit.providerString === 'IoPay') { + await signIoPayMessage(messageInit) + } else if (messageInit.providerString === 'Ledger') { + await signLedgerMessage(messageInit) + } else { + console.log('signMessage not yet supported for this wallet provider') + } } catch (error) { console.error(error) } @@ -123,22 +125,9 @@ export default function useWallet() { toAddress, amount, connectWallet, - disconnectWallet, sendTransaction, + signMessage, } } -function getBrowserProviders(ethereum: any) { - if (!ethereum) return defaultProviders - else if (!ethereum.providerMap) { - return { - MetaMask: ethereum.isMetaMask ? ethereum : undefined, - CoinbaseWallet: ethereum.isCoinbaseWallet ? ethereum : undefined, - } - } else { - return { - MetaMask: ethereum.providerMap.get('MetaMask'), - CoinbaseWallet: ethereum.providerMap.get('CoinbaseWallet'), - } - } -} + diff --git a/apps/web/src/composables/walletConnect.ts b/apps/web/src/composables/walletConnect.ts index 64a0ad257..26a901a3d 100644 --- a/apps/web/src/composables/walletConnect.ts +++ b/apps/web/src/composables/walletConnect.ts @@ -2,19 +2,20 @@ import WalletConnect from '@walletconnect/client' import QRCodeModal from '@walletconnect/qrcode-modal' import { ref, Ref } from 'vue' import { ethers } from 'ethers' +import { TransactionInit } from '@/interfaces/TransactionInit' export default function useWalletConnect() { - const connector: Ref = ref() + let connector: WalletConnect | undefined const walletConnectAddress: Ref = ref('') function enableWalletConnect() { - connector.value = new WalletConnect({ + connector = new WalletConnect({ bridge: 'https://bridge.walletconnect.org', // Required qrcodeModal: QRCodeModal, }) - if (!connector.value.connected) { - connector.value.createSession() + if (!connector.connected) { + connector.createSession() } - connector.value.on('connect', (error: any, payload: any) => { + connector.on('connect', (error: any, payload: any) => { if (error) { throw error } @@ -22,21 +23,21 @@ export default function useWalletConnect() { const { accounts, chainId } = payload.params[0] walletConnectAddress.value = accounts[0] }) - connector.value.on('session_update', (error: any, payload: any) => { + connector.on('session_update', (error: any, payload: any) => { if (error) { throw error } // Get updated accounts and chainId const { accounts, chainId } = payload.params[0] }) - connector.value.on('disconnect', (error: any) => { + connector.on('disconnect', (error: any) => { if (error) { console.log(`disconnect error :>> ${error}`) // throw error } // Delete connector try { - connector.value?.killSession() + connector?.killSession() } catch (error) { console.log(`disconnect error in listener :>> ${error}`) } @@ -45,34 +46,26 @@ export default function useWalletConnect() { } async function sendWalletConnectTransaction( - amount: string, - toAddress: string - ) { - const amountInWei = ethers.utils.parseEther(amount).toString() - + { to, value }: TransactionInit + ): Promise { + const amountInWei = ethers.utils.parseEther(value).toString() // TODO: Better understand and handle gasPrice and gasLimit const gasLimit = ethers.utils.hexlify(21000).toString() const gasPrice = ethers.utils.hexlify(1000000000).toString() const tx = { from: walletConnectAddress.value, - to: toAddress, + to, gas: gasLimit, gasPrice: gasPrice, value: amountInWei, - // data: 'data', // TODO: Determine when this is needed. - // nonce: 'nonce', // TODO: Determine when this is needed. - } - try { - const result = await connector.value?.sendTransaction(tx) - console.log('result :>> ', result) - } catch (err) { - console.log('error in sendWalletConnectTransaction :>> ', err) + // nonce: 'nonce', // TODO: Use ethers to get nonce for current address } + return await connector?.sendTransaction(tx) } async function disableWalletConnect() { try { - await connector.value?.killSession() + await connector?.killSession() } catch (err) { console.log('error in disableWalletConnect :>> ', err) } diff --git a/apps/web/src/env.d.ts b/apps/web/src/env.d.ts index be15b0dcb..88427095c 100644 --- a/apps/web/src/env.d.ts +++ b/apps/web/src/env.d.ts @@ -22,5 +22,6 @@ declare type APIGatewayResponse = { declare global { interface Window { ethereum: any; + phantom: any; } } diff --git a/apps/web/src/interfaces/BrowserProviders.ts b/apps/web/src/interfaces/BrowserProviders.ts index b624a0b3b..8acc95133 100644 --- a/apps/web/src/interfaces/BrowserProviders.ts +++ b/apps/web/src/interfaces/BrowserProviders.ts @@ -3,4 +3,5 @@ import { EthersProvider } from '@/interfaces/EthersProvider' export interface BrowserProviders { MetaMask?: EthersProvider CoinbaseWallet?: EthersProvider + Phantom?: any // TODO: Fix this. } diff --git a/apps/web/src/interfaces/MessageInit.ts b/apps/web/src/interfaces/MessageInit.ts new file mode 100644 index 000000000..e01d22daa --- /dev/null +++ b/apps/web/src/interfaces/MessageInit.ts @@ -0,0 +1,6 @@ +import { ProviderString } from '@/types/ProviderString' + +export interface MessageInit { + hashedMessage: string; + providerString: ProviderString; +} \ No newline at end of file diff --git a/apps/web/src/interfaces/TransactionInit.ts b/apps/web/src/interfaces/TransactionInit.ts new file mode 100644 index 000000000..a3841c837 --- /dev/null +++ b/apps/web/src/interfaces/TransactionInit.ts @@ -0,0 +1,13 @@ +import ethers from 'ethers' +import { ProviderString } from '@/types/ProviderString' + +export interface TransactionInit extends ethers.providers.TransactionRequest { + /** The transaction sender's address */ + from: string; + /** The transaction receiver's address */ + to: string; + /** The value of the transaction */ + value: string; + /** The provider string of the transaction */ + providerString: ProviderString; +} \ No newline at end of file diff --git a/apps/web/src/types/ProviderString.ts b/apps/web/src/types/ProviderString.ts index 547706e3e..c55573d90 100644 --- a/apps/web/src/types/ProviderString.ts +++ b/apps/web/src/types/ProviderString.ts @@ -4,4 +4,5 @@ export type ProviderString = | 'IoPay' | 'Ledger' | 'WalletConnect' + | 'Phantom' | '' diff --git a/common/data/src/index.ts b/common/data/src/index.ts index 44a87bc68..2be4b32d5 100644 --- a/common/data/src/index.ts +++ b/common/data/src/index.ts @@ -14,12 +14,12 @@ export function schemaToGlueColumns(jsonSchema: JsonSchema): glue.Column[] { return Object.keys(jsonSchema.properties).map((name: string) => { const property = jsonSchema.properties[name] - // 'STRING' | 'INTEGER' | 'BOOLEAN' | 'DOUBLE' | 'DECIMAL' | 'BIGINT' | 'TIMESTAMP' | 'JSON' | 'DATE' + // 'STRING' | 'INTEGER' | 'BOOLEAN' | 'DOUBLE' | 'DECIMAL' | 'BIG_INT' | 'TIMESTAMP' | 'JSON' | 'DATE' const typeKey = property.type.toUpperCase() as keyof glue.Schema let type: glue.Type = glue.Schema[typeKey] - if (name.endsWith('at')) type = glue.Schema.TIMESTAMP + if (name.endsWith('_at')) type = glue.Schema.TIMESTAMP if (name.endsWith('_list')) type = glue.Schema.array(glue.Schema.STRING) @@ -30,24 +30,45 @@ export function schemaToGlueColumns(jsonSchema: JsonSchema): glue.Column[] { }) } -export type EventTableColumn = { +export type EventTableSchema = { + /** Name of the chain (e.g. iotex, ethereum) */ chain: string + /** Name of the network (e.g. mainnet, testnet) */ network: string + /** "Name of the provider (e.g. casimir, infura, alchemy) */ provider: string + /** The type of event (e.g. block, transaction, deposit) */ type: string + /** The block height */ + height: number + /** The block hash */ + block: string + /** The transaction hash */ + transaction: string + /** The date timestamp of the event in ISO 8601 format (e.g. 2015-03-04T22:44:30.652Z) */ created_at: string + /** The address which initiated the event, a miner in case of block and a caller in case of other events */ address: string - height: number + /** The recipient's address */ to_address: string - candidate: string - candidate_list: string[] + /** The amount value associated with the transaction */ amount: string + /** The total amount of gas used */ + gasUsed: number + /** The gas limit provided by transactions in the block */ + gasLimit: number + /** Post-London upgrade this represents the minimum gasUsed multiplier required for a transaction to be included in a block */ + baseFee: number + /** Post-London Upgrade, this represents the part of the tx fee that is burnt */ + burntFee: number + /** The validator's address */ + validator: string + /** The list of validators' addresses */ + validator_list: string[] + /** The duration of the event */ duration: number + /** Is auto staking enabled */ auto_stake: boolean - // payload: Record } -// export type EventTableColumn = { -// [key in keyof typeof eventSchema.properties]: // what goes here? - export { eventSchema, aggSchema } \ No newline at end of file diff --git a/common/data/src/schemas/event.schema.json b/common/data/src/schemas/event.schema.json index 87a458584..081218a18 100644 --- a/common/data/src/schemas/event.schema.json +++ b/common/data/src/schemas/event.schema.json @@ -44,6 +44,26 @@ "type": "string", "description": "The recipient's address" }, + "amount": { + "type": "string", + "description": "The amount of currency associated with the event" + }, + "gas_used": { + "type": "big_int", + "description": "The total amount of gas used" + }, + "gas_limit": { + "type": "big_int", + "description": "The gas limit provided by transactions in the block" + }, + "base_fee": { + "type": "big_int", + "description": "Post-London upgrade this represents the minimum gasUsed multiplier required for a transaction to be included in a block" + }, + "burnt_fee": { + "type": "float", + "description": "Post-London Upgrade, this represents the part of the tx fee that is burnt" + }, "validator": { "type": "string", "description": "The validator's address" @@ -52,10 +72,6 @@ "type": "array", "description": "The list of validators in stake action" }, - "amount": { - "type": "string", - "description": "The amount of currency associated with the event" - }, "duration":{ "type": "string", "description": "The duration of the event" diff --git a/common/helpers/src/index.ts b/common/helpers/src/index.ts index 2f7ae52b9..86a09ddc8 100644 --- a/common/helpers/src/index.ts +++ b/common/helpers/src/index.ts @@ -2,7 +2,7 @@ import { S3Client, S3ClientConfig, PutObjectCommand, GetObjectCommand } from '@a import { AthenaClient, AthenaClientConfig } from '@aws-sdk/client-athena' import { defaultProvider } from '@aws-sdk/credential-provider-node' import { StartQueryExecutionCommand, GetQueryExecutionCommand } from '@aws-sdk/client-athena' -import { EventTableColumn } from '@casimir/data' +import { EventTableSchema } from '@casimir/data' const defaultQueryOutputBucket = 'casimir-etl-output-bucket-dev' @@ -186,7 +186,7 @@ async function pollAthenaQueryOutput(queryId: string): Promise { * @param query - SQL query to run (make sure the correct permissions are set) * @return string - Query result */ -export async function queryAthena(query: string): Promise { +export async function queryAthena(query: string): Promise { if (!athena) { athena = await newAthenaClient() @@ -225,7 +225,7 @@ export async function queryAthena(query: string): Promise h.trim().replace(/"/g, '')) - const events: EventTableColumn[] = [] + const events: EventTableSchema[] = [] rows.forEach((curr, i) => { const row = curr.split(',') diff --git a/contracts/evm/deploy/sample.ts b/contracts/ethereum/deploy/sample.ts similarity index 100% rename from contracts/evm/deploy/sample.ts rename to contracts/ethereum/deploy/sample.ts diff --git a/contracts/ethereum/hardhat.config.ts b/contracts/ethereum/hardhat.config.ts new file mode 100644 index 000000000..ef4034bdf --- /dev/null +++ b/contracts/ethereum/hardhat.config.ts @@ -0,0 +1,52 @@ +import localtunnel from 'localtunnel' +import os from 'os' +import '@typechain/hardhat' +import '@nomiclabs/hardhat-waffle' +import '@nomiclabs/hardhat-ethers' +import { HardhatUserConfig } from 'hardhat/config' + +const forkUrl = process.env.ETHEREUM_FORK_RPC +const mnemonic = process.env.BIP39_SEED + +// Go to https://hardhat.org/config/ to learn more +const config: HardhatUserConfig = { + solidity: '0.8.17', + paths: { + tests: './test', + sources: './src', + artifacts: './build/artifacts', + cache: './build/cache', + }, + typechain: { + outDir: './build/artifacts/types', + }, + networks: { + hardhat: { + accounts: mnemonic ? { mnemonic, accountsBalance: '48000000000000000000', count: 3 } : undefined, + chainId: 1337, + forking: forkUrl ? { url: forkUrl } : undefined + } + } +} + +if (process.env.LOCAL_TUNNEL) { + // Start a local tunnel for using RPC over https + const localSubdomain = `cn-hardhat-${os.userInfo().username.toLowerCase()}` + const localUrl = `https://${localSubdomain}.loca.lt` + console.log('Your local tunnel is', localUrl) + localtunnel({ port: 8545, subdomain: localSubdomain }).then( + (tunnel: localtunnel.Tunnel) => { + if (localUrl === tunnel.url) { + console.log('Your local tunnel is now available at', localUrl) + } else { + console.log('Your desired local tunnel url is not available') + } + process.on('SIGINT', () => { + tunnel.close() + process.exit(0) + }) + } + ) +} + +export default config \ No newline at end of file diff --git a/contracts/evm/package.json b/contracts/ethereum/package.json similarity index 86% rename from contracts/evm/package.json rename to contracts/ethereum/package.json index d5cd2f56c..ef1099a34 100644 --- a/contracts/evm/package.json +++ b/contracts/ethereum/package.json @@ -1,12 +1,11 @@ { - "name": "@casimir/evm", + "name": "@casimir/ethereum", "scripts": { "deploy:sample": "npx hardhat run deploy/sample.ts", "test:contracts": "npx hardhat test", - "task:accounts": "npx hardhat accounts", "task:compile": "npx hardhat compile", "task:clean": "npx hardhat clean", - "dev:localnode": "npx hardhat node" + "dev:node": "npx hardhat node" }, "devDependencies": { "@nomiclabs/hardhat-ethers": "^2.0.6", diff --git a/contracts/evm/src/Sample.sol b/contracts/ethereum/src/Sample.sol similarity index 100% rename from contracts/evm/src/Sample.sol rename to contracts/ethereum/src/Sample.sol diff --git a/contracts/evm/test/sample.ts b/contracts/ethereum/test/sample.ts similarity index 100% rename from contracts/evm/test/sample.ts rename to contracts/ethereum/test/sample.ts diff --git a/contracts/evm/tsconfig.json b/contracts/ethereum/tsconfig.json similarity index 100% rename from contracts/evm/tsconfig.json rename to contracts/ethereum/tsconfig.json diff --git a/contracts/evm/hardhat.config.ts b/contracts/evm/hardhat.config.ts deleted file mode 100644 index fa972d09b..000000000 --- a/contracts/evm/hardhat.config.ts +++ /dev/null @@ -1,59 +0,0 @@ -import localtunnel from 'localtunnel' -import os from 'os' -import { task } from 'hardhat/config' -import '@typechain/hardhat' -import '@nomiclabs/hardhat-waffle' -import '@nomiclabs/hardhat-ethers' -import { HardhatUserConfig } from 'hardhat/config' - -// https://hardhat.org/guides/create-task.html -task('accounts', 'Prints the list of accounts', async (taskArgs: any, hre: { ethers: { getSigners: () => any } }) => { - const accounts = await hre.ethers.getSigners() - - for (const account of accounts) { - console.log(account.address) - } -}) - -// Use Ledger seed for consistency from localnet to testnet -const defaultSeed = 'test test test test test test test test test test test junk' -const mnemonic = process.env.LEDGER_SEED || defaultSeed -console.log('Your mnemonic is', mnemonic) - -// Go to https://hardhat.org/config/ to learn more -const config: HardhatUserConfig = { - solidity: '0.8.4', - paths: { - tests: './test', - sources: './src', - artifacts: './build/artifacts', - cache: './build/cache' - }, - typechain: { - outDir: './build/artifacts/types' - }, - networks: { - hardhat: { - chainId: 1337, - accounts: { mnemonic, accountsBalance: '32000000000000000000' } - } - } -} - -// Start a local tunnel for using RPC with https -const localSubdomain = `cn-hh-${os.userInfo().username.toLowerCase()}` -const localUrl = `https://${localSubdomain}.loca.lt` -console.log('Your local tunnel is', localUrl) -localtunnel({ port: 8545, subdomain: localSubdomain }).then((tunnel: localtunnel.Tunnel) => { - if (localUrl === tunnel.url) { - console.log('Your local tunnel is now available at', localUrl) - } else { - console.log('Your desired local tunnel url is not available') - } - process.on('SIGINT', () => { - tunnel.close() - process.exit(0) - }) -}) - -export default config \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 026f2a23b..4753d43a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,9 +55,11 @@ "dependencies": { "@heroicons/vue": "^1.0.6", "@ledgerhq/hw-app-eth": "^6.29.4", - "@ledgerhq/hw-transport-webhid": "^6.27.2", + "@ledgerhq/hw-transport-webusb": "^6.27.4", + "@solana/web3.js": "^1.63.1", "@walletconnect/client": "^1.8.0", "@walletconnect/qrcode-modal": "^1.8.0", + "borsh": "^0.7.0", "buffer": "^6.0.3", "ethers": "^5.6.9", "iotex-antenna": "^0.31.3", @@ -80,8 +82,6 @@ }, "apps/web/node_modules/buffer": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -96,6 +96,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -119,10 +120,9 @@ }, "common/data/node_modules/esbuild": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", - "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -156,12 +156,11 @@ }, "common/data/node_modules/esbuild-darwin-64": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", - "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -185,10 +184,9 @@ }, "common/helpers/node_modules/esbuild": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", - "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -222,12 +220,11 @@ }, "common/helpers/node_modules/esbuild-darwin-64": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", - "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -243,8 +240,8 @@ "@ledgerhq/hw-transport": "^6.27.2" } }, - "contracts/evm": { - "name": "@casimir/evm", + "contracts/ethereum": { + "name": "@casimir/ethereum", "devDependencies": { "@nomiclabs/hardhat-ethers": "^2.0.6", "@nomiclabs/hardhat-waffle": "^2.0.3", @@ -262,7 +259,7 @@ "typechain": "^8.1.0" } }, - "contracts/evm/node_modules/@types/node": { + "contracts/ethereum/node_modules/@types/node": { "version": "17.0.45", "dev": true, "license": "MIT" @@ -2575,6 +2572,17 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", + "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.18.10", "license": "MIT", @@ -2635,8 +2643,8 @@ "resolved": "common/data", "link": true }, - "node_modules/@casimir/evm": { - "resolved": "contracts/evm", + "node_modules/@casimir/ethereum": { + "resolved": "contracts/ethereum", "link": true }, "node_modules/@casimir/helpers": { @@ -3059,38 +3067,6 @@ "esbuild": "*" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.9.tgz", - "integrity": "sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.9.tgz", - "integrity": "sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@eslint/eslintrc": { "version": "1.3.0", "dev": true, @@ -3403,8 +3379,6 @@ }, "node_modules/@ethersproject/abi": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", "funding": [ { "type": "individual", @@ -3415,6 +3389,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/address": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -3429,8 +3404,6 @@ }, "node_modules/@ethersproject/abstract-provider": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", "funding": [ { "type": "individual", @@ -3441,6 +3414,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -3453,8 +3427,6 @@ }, "node_modules/@ethersproject/abstract-signer": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", "funding": [ { "type": "individual", @@ -3465,6 +3437,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -3475,8 +3448,6 @@ }, "node_modules/@ethersproject/address": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", "funding": [ { "type": "individual", @@ -3487,6 +3458,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -3497,8 +3469,6 @@ }, "node_modules/@ethersproject/base64": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", "funding": [ { "type": "individual", @@ -3509,14 +3479,13 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0" } }, "node_modules/@ethersproject/basex": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", "funding": [ { "type": "individual", @@ -3527,6 +3496,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/properties": "^5.7.0" @@ -3534,8 +3504,6 @@ }, "node_modules/@ethersproject/bignumber": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", "funding": [ { "type": "individual", @@ -3546,6 +3514,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -3554,8 +3523,6 @@ }, "node_modules/@ethersproject/bytes": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", "funding": [ { "type": "individual", @@ -3566,14 +3533,13 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/constants": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", "funding": [ { "type": "individual", @@ -3584,14 +3550,13 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0" } }, "node_modules/@ethersproject/contracts": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", "funding": [ { "type": "individual", @@ -3602,6 +3567,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-provider": "^5.7.0", @@ -3617,8 +3583,6 @@ }, "node_modules/@ethersproject/hash": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", "funding": [ { "type": "individual", @@ -3629,6 +3593,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -3643,8 +3608,6 @@ }, "node_modules/@ethersproject/hdnode": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", "funding": [ { "type": "individual", @@ -3655,6 +3618,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/basex": "^5.7.0", @@ -3672,8 +3636,6 @@ }, "node_modules/@ethersproject/json-wallets": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", "funding": [ { "type": "individual", @@ -3684,6 +3646,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -3702,8 +3665,6 @@ }, "node_modules/@ethersproject/keccak256": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", "funding": [ { "type": "individual", @@ -3714,6 +3675,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "js-sha3": "0.8.0" @@ -3721,8 +3683,6 @@ }, "node_modules/@ethersproject/logger": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", "funding": [ { "type": "individual", @@ -3732,12 +3692,11 @@ "type": "individual", "url": "https://www.buymeacoffee.com/ricmoo" } - ] + ], + "license": "MIT" }, "node_modules/@ethersproject/networks": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", "funding": [ { "type": "individual", @@ -3748,14 +3707,13 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/pbkdf2": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", "funding": [ { "type": "individual", @@ -3766,6 +3724,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/sha2": "^5.7.0" @@ -3773,8 +3732,6 @@ }, "node_modules/@ethersproject/properties": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", "funding": [ { "type": "individual", @@ -3785,14 +3742,13 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/providers": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.1.tgz", - "integrity": "sha512-vZveG/DLyo+wk4Ga1yx6jSEHrLPgmTt+dFv0dv8URpVCRf0jVhalps1jq/emN/oXnMRsC7cQgAF32DcXLL7BPQ==", "funding": [ { "type": "individual", @@ -3803,6 +3759,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -3851,8 +3808,6 @@ }, "node_modules/@ethersproject/random": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", "funding": [ { "type": "individual", @@ -3863,6 +3818,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0" @@ -3870,8 +3826,6 @@ }, "node_modules/@ethersproject/rlp": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", "funding": [ { "type": "individual", @@ -3882,6 +3836,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0" @@ -3889,8 +3844,6 @@ }, "node_modules/@ethersproject/sha2": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", "funding": [ { "type": "individual", @@ -3901,6 +3854,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -3909,8 +3863,6 @@ }, "node_modules/@ethersproject/signing-key": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", "funding": [ { "type": "individual", @@ -3921,6 +3873,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -3932,8 +3885,7 @@ }, "node_modules/@ethersproject/signing-key/node_modules/elliptic": { "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "license": "MIT", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -3946,13 +3898,10 @@ }, "node_modules/@ethersproject/signing-key/node_modules/elliptic/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "license": "MIT" }, "node_modules/@ethersproject/solidity": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", "funding": [ { "type": "individual", @@ -3963,6 +3912,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -3974,8 +3924,6 @@ }, "node_modules/@ethersproject/strings": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", "funding": [ { "type": "individual", @@ -3986,6 +3934,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -3994,8 +3943,6 @@ }, "node_modules/@ethersproject/transactions": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", "funding": [ { "type": "individual", @@ -4006,6 +3953,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/address": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -4020,8 +3968,6 @@ }, "node_modules/@ethersproject/units": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", "funding": [ { "type": "individual", @@ -4032,6 +3978,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -4040,8 +3987,6 @@ }, "node_modules/@ethersproject/wallet": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", "funding": [ { "type": "individual", @@ -4052,6 +3997,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -4072,8 +4018,6 @@ }, "node_modules/@ethersproject/web": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", "funding": [ { "type": "individual", @@ -4084,6 +4028,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/base64": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -4094,8 +4039,6 @@ }, "node_modules/@ethersproject/wordlists": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", "funding": [ { "type": "individual", @@ -4106,6 +4049,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/hash": "^5.7.0", @@ -5263,27 +5207,24 @@ }, "node_modules/@ledgerhq/cryptoassets": { "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/cryptoassets/-/cryptoassets-6.34.0.tgz", - "integrity": "sha512-Rg3i3aOWnTFD8mtNZetZnG+7XTAWu2iuD4jCC6oUeU5wKB7Sc5m0En7LoEmEWv7ZW5VpH8NjM6uK/KWgsCwR6Q==", + "license": "Apache-2.0", "dependencies": { "invariant": "2" } }, "node_modules/@ledgerhq/devices": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-7.0.0.tgz", - "integrity": "sha512-vq4B33WdU0dRAJIRFWZMj6w1W1yw1i4mekCmhk7N9wPaFrtGWZ2iI9WDihsNOBooCWKQe8Jsb9eD8RVThbSlFQ==", + "version": "7.0.3", + "license": "Apache-2.0", "dependencies": { - "@ledgerhq/errors": "^6.10.1", - "@ledgerhq/logs": "^6.10.0", + "@ledgerhq/errors": "^6.11.1", + "@ledgerhq/logs": "^6.10.1", "rxjs": "6", "semver": "^7.3.5" } }, "node_modules/@ledgerhq/devices/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5293,8 +5234,7 @@ }, "node_modules/@ledgerhq/devices/node_modules/rxjs": { "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -5304,8 +5244,7 @@ }, "node_modules/@ledgerhq/devices/node_modules/semver": { "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5318,23 +5257,19 @@ }, "node_modules/@ledgerhq/devices/node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "license": "0BSD" }, "node_modules/@ledgerhq/devices/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "license": "ISC" }, "node_modules/@ledgerhq/errors": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.10.1.tgz", - "integrity": "sha512-92d1zRQleR1AQ4CAXgWgDtKUms+8EwShLVUcajI+BLWvgJ1Vclmq6PsBIDEQbsm+riVu/Ji3LcHdmgFgmi0VGw==" + "version": "6.11.1", + "license": "Apache-2.0" }, "node_modules/@ledgerhq/hw-app-eth": { "version": "6.29.6", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-app-eth/-/hw-app-eth-6.29.6.tgz", - "integrity": "sha512-7TS6dTF30ONOqppk0J8YYVX0Cd7/Pt0Uuy77n/LRXpfsLHDABSaRROjNzxxT3q7EIMz6FQi4K4WaN8OIznkytA==", + "license": "Apache-2.0", "dependencies": { "@ethersproject/abi": "^5.5.0", "@ethersproject/rlp": "^5.5.0", @@ -5349,51 +5284,41 @@ }, "node_modules/@ledgerhq/hw-app-eth/node_modules/bignumber.js": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz", - "integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==", + "license": "MIT", "engines": { "node": "*" } }, "node_modules/@ledgerhq/hw-transport": { - "version": "6.27.3", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.27.3.tgz", - "integrity": "sha512-vQMNCC1DUDtS+nkJsbycgFMSodmj91WuGSxX7RjOz2vuZBc6jXtDn9jzYdsfyKOwnvalQAkXm9hWWHlrMIKdNQ==", + "version": "6.27.6", + "license": "Apache-2.0", "dependencies": { - "@ledgerhq/devices": "^7.0.0", - "@ledgerhq/errors": "^6.10.1", + "@ledgerhq/devices": "^7.0.3", + "@ledgerhq/errors": "^6.11.1", "events": "^3.3.0" } }, "node_modules/@ledgerhq/hw-transport-mocker": { "version": "6.27.3", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.27.3.tgz", - "integrity": "sha512-eweiIdbU+ZC4txin7JhLQpQ5dpMoPyyGo3O5OvD4xsZGbVNauEPYZzUks0ko5ZniCpVnB3qNfS3cU3PXdjN6Zw==", + "license": "Apache-2.0", "dependencies": { "@ledgerhq/hw-transport": "^6.27.3", "@ledgerhq/logs": "^6.10.1-nightly.0" } }, - "node_modules/@ledgerhq/hw-transport-mocker/node_modules/@ledgerhq/logs": { - "version": "6.10.1-nightly.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.1-nightly.0.tgz", - "integrity": "sha512-hwoUwlC7le37kQ72W8hAzVq070zuY6IEpssYNXDTr3pEfc3cprTAgEnaBsb0jXQGiLdONPvxc7nPp8nSyGD3hQ==" - }, - "node_modules/@ledgerhq/hw-transport-webhid": { - "version": "6.27.2", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-webhid/-/hw-transport-webhid-6.27.2.tgz", - "integrity": "sha512-ZlyNheUhcxBZqjJzhSfJfeGQvNbeyWs9866rdQjVeG1zsbTJi0+6tfRv8J248QISS8vHtG5IMSxgMg9mtux9dQ==", + "node_modules/@ledgerhq/hw-transport-webusb": { + "version": "6.27.6", + "license": "Apache-2.0", "dependencies": { - "@ledgerhq/devices": "^7.0.0", - "@ledgerhq/errors": "^6.10.1", - "@ledgerhq/hw-transport": "^6.27.2", - "@ledgerhq/logs": "^6.10.0" + "@ledgerhq/devices": "^7.0.3", + "@ledgerhq/errors": "^6.11.1", + "@ledgerhq/hw-transport": "^6.27.6", + "@ledgerhq/logs": "^6.10.1" } }, "node_modules/@ledgerhq/logs": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.0.tgz", - "integrity": "sha512-lLseUPEhSFUXYTKj6q7s2O3s2vW2ebgA11vMAlKodXGf5AFw4zUoEbTz9CoFOC9jS6xY4Qr8BmRnxP/odT4Uuw==" + "version": "6.10.1", + "license": "Apache-2.0" }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.9", @@ -5516,9 +5441,19 @@ "node": ">=4" } }, + "node_modules/@noble/ed25519": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.1.tgz", + "integrity": "sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, "node_modules/@noble/hashes": { "version": "1.1.2", - "dev": true, "funding": [ { "type": "individual", @@ -5529,7 +5464,6 @@ }, "node_modules/@noble/secp256k1": { "version": "1.6.3", - "dev": true, "funding": [ { "type": "individual", @@ -5772,9 +5706,8 @@ }, "node_modules/@rollup/plugin-inject": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-4.0.4.tgz", - "integrity": "sha512-4pbcU4J/nS+zuHk+c+OL3WtmEQhqxlZ9uqfjQMQDOHOPld7PsCd8k5LWs8h5wjwJN7MgnAn768F2sDxEP4eNFQ==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "estree-walker": "^2.0.1", @@ -5786,15 +5719,13 @@ }, "node_modules/@rollup/plugin-inject/node_modules/estree-walker": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@rollup/pluginutils": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", @@ -5809,9 +5740,8 @@ }, "node_modules/@rollup/pluginutils/node_modules/estree-walker": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@scure/base": { "version": "1.1.1", @@ -6029,6 +5959,88 @@ "@sinonjs/commons": "^1.7.0" } }, + "node_modules/@solana/buffer-layout": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.0.tgz", + "integrity": "sha512-lR0EMP2HC3+Mxwd4YcnZb0smnaDw7Bl2IQWZiTevRH5ZZBZn6VRWn3/92E3qdU4SSImJkA6IDHawOHAnx/qUvQ==", + "dependencies": { + "buffer": "~6.0.3" + }, + "engines": { + "node": ">=5.10" + } + }, + "node_modules/@solana/buffer-layout/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@solana/web3.js": { + "version": "1.63.1", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.63.1.tgz", + "integrity": "sha512-wgEdGVK5FTS2zENxbcGSvKpGZ0jDS6BUdGu8Gn6ns0CzgJkK83u4ip3THSnBPEQ5i/jrqukg998BwV1H67+qiQ==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@noble/ed25519": "^1.7.0", + "@noble/hashes": "^1.1.2", + "@noble/secp256k1": "^1.6.3", + "@solana/buffer-layout": "^4.0.0", + "bigint-buffer": "^1.1.5", + "bn.js": "^5.0.0", + "borsh": "^0.7.0", + "bs58": "^4.0.1", + "buffer": "6.0.1", + "fast-stable-stringify": "^1.0.0", + "jayson": "^3.4.4", + "node-fetch": "2", + "rpc-websockets": "^7.5.0", + "superstruct": "^0.14.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/@solana/web3.js/node_modules/buffer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", + "integrity": "sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/@solidity-parser/parser": { "version": "0.14.3", "dev": true, @@ -6188,7 +6200,6 @@ }, "node_modules/@types/connect": { "version": "3.4.35", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -6216,9 +6227,8 @@ }, "node_modules/@types/estree": { "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/ethereumjs-abi": { "version": "0.6.3", @@ -6271,9 +6281,8 @@ }, "node_modules/@types/http-proxy": { "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -6340,9 +6349,8 @@ }, "node_modules/@types/localtunnel": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/localtunnel/-/localtunnel-2.0.1.tgz", - "integrity": "sha512-0h/ggh+tp9uKHc2eEOLdMgWW0cNwsQfn6iEE1Y44FszNB4BQyL5N6xvd5BnChZksB0YgVqa5MKxJt0dFoOKRxw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -7093,8 +7101,7 @@ }, "node_modules/@walletconnect/browser-utils": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/browser-utils/-/browser-utils-1.8.0.tgz", - "integrity": "sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A==", + "license": "Apache-2.0", "dependencies": { "@walletconnect/safe-json": "1.0.0", "@walletconnect/types": "^1.8.0", @@ -7105,8 +7112,7 @@ }, "node_modules/@walletconnect/client": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/client/-/client-1.8.0.tgz", - "integrity": "sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ==", + "license": "Apache-2.0", "dependencies": { "@walletconnect/core": "^1.8.0", "@walletconnect/iso-crypto": "^1.8.0", @@ -7116,8 +7122,7 @@ }, "node_modules/@walletconnect/core": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-1.8.0.tgz", - "integrity": "sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw==", + "license": "Apache-2.0", "dependencies": { "@walletconnect/socket-transport": "^1.8.0", "@walletconnect/types": "^1.8.0", @@ -7126,8 +7131,7 @@ }, "node_modules/@walletconnect/crypto": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@walletconnect/crypto/-/crypto-1.0.2.tgz", - "integrity": "sha512-+OlNtwieUqVcOpFTvLBvH+9J9pntEqH5evpINHfVxff1XIgwV55PpbdvkHu6r9Ib4WQDOFiD8OeeXs1vHw7xKQ==", + "license": "MIT", "dependencies": { "@walletconnect/encoding": "^1.0.1", "@walletconnect/environment": "^1.0.0", @@ -7138,13 +7142,11 @@ }, "node_modules/@walletconnect/crypto/node_modules/aes-js": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", - "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" + "license": "MIT" }, "node_modules/@walletconnect/encoding": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@walletconnect/encoding/-/encoding-1.0.1.tgz", - "integrity": "sha512-8opL2rs6N6E3tJfsqwS82aZQDL3gmupWUgmvuZ3CGU7z/InZs3R9jkzH8wmYtpbq0sFK3WkJkQRZFFk4BkrmFA==", + "license": "MIT", "dependencies": { "is-typedarray": "1.0.0", "typedarray-to-buffer": "3.1.5" @@ -7152,13 +7154,11 @@ }, "node_modules/@walletconnect/environment": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@walletconnect/environment/-/environment-1.0.0.tgz", - "integrity": "sha512-4BwqyWy6KpSvkocSaV7WR3BlZfrxLbJSLkg+j7Gl6pTDE+U55lLhJvQaMuDVazXYxcjBsG09k7UlH7cGiUI5vQ==" + "license": "MIT" }, "node_modules/@walletconnect/iso-crypto": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/iso-crypto/-/iso-crypto-1.8.0.tgz", - "integrity": "sha512-pWy19KCyitpfXb70hA73r9FcvklS+FvO9QUIttp3c2mfW8frxgYeRXfxLRCIQTkaYueRKvdqPjbyhPLam508XQ==", + "license": "Apache-2.0", "dependencies": { "@walletconnect/crypto": "^1.0.2", "@walletconnect/types": "^1.8.0", @@ -7167,16 +7167,14 @@ }, "node_modules/@walletconnect/jsonrpc-types": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.1.tgz", - "integrity": "sha512-+6coTtOuChCqM+AoYyi4Q83p9l/laI6NvuM2/AHaZFuf0gT0NjW7IX2+86qGyizn7Ptq4AYZmfxurAxTnhefuw==", + "license": "MIT", "dependencies": { "keyvaluestorage-interface": "^1.0.0" } }, "node_modules/@walletconnect/jsonrpc-utils": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.3.tgz", - "integrity": "sha512-3yb49bPk16MNLk6uIIHPSHQCpD6UAo1OMOx1rM8cW/MPEAYAzrSW5hkhG7NEUwX9SokRIgnZK3QuQkiyNzBMhQ==", + "license": "MIT", "dependencies": { "@walletconnect/environment": "^1.0.0", "@walletconnect/jsonrpc-types": "^1.0.1" @@ -7184,14 +7182,11 @@ }, "node_modules/@walletconnect/mobile-registry": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz", - "integrity": "sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw==", - "deprecated": "Deprecated in favor of dynamic registry available from: https://github.com/walletconnect/walletconnect-registry" + "license": "MIT" }, "node_modules/@walletconnect/qrcode-modal": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/qrcode-modal/-/qrcode-modal-1.8.0.tgz", - "integrity": "sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg==", + "license": "Apache-2.0", "dependencies": { "@walletconnect/browser-utils": "^1.8.0", "@walletconnect/mobile-registry": "^1.4.0", @@ -7203,8 +7198,7 @@ }, "node_modules/@walletconnect/randombytes": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@walletconnect/randombytes/-/randombytes-1.0.2.tgz", - "integrity": "sha512-ivgOtAyqQnN0rLQmOFPemsgYGysd/ooLfaDA/ACQ3cyqlca56t3rZc7pXfqJOIETx/wSyoF5XbwL+BqYodw27A==", + "license": "MIT", "dependencies": { "@walletconnect/encoding": "^1.0.1", "@walletconnect/environment": "^1.0.0", @@ -7213,13 +7207,11 @@ }, "node_modules/@walletconnect/safe-json": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.0.tgz", - "integrity": "sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg==" + "license": "MIT" }, "node_modules/@walletconnect/socket-transport": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/socket-transport/-/socket-transport-1.8.0.tgz", - "integrity": "sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ==", + "license": "Apache-2.0", "dependencies": { "@walletconnect/types": "^1.8.0", "@walletconnect/utils": "^1.8.0", @@ -7228,8 +7220,7 @@ }, "node_modules/@walletconnect/socket-transport/node_modules/ws": { "version": "7.5.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", - "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", + "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -7248,13 +7239,11 @@ }, "node_modules/@walletconnect/types": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-1.8.0.tgz", - "integrity": "sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg==" + "license": "Apache-2.0" }, "node_modules/@walletconnect/utils": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-1.8.0.tgz", - "integrity": "sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA==", + "license": "Apache-2.0", "dependencies": { "@walletconnect/browser-utils": "^1.8.0", "@walletconnect/encoding": "^1.0.1", @@ -7267,13 +7256,11 @@ }, "node_modules/@walletconnect/utils/node_modules/bn.js": { "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "license": "MIT" }, "node_modules/@walletconnect/utils/node_modules/query-string": { "version": "6.13.5", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.5.tgz", - "integrity": "sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q==", + "license": "MIT", "dependencies": { "decode-uri-component": "^0.2.0", "split-on-first": "^1.0.0", @@ -7288,13 +7275,11 @@ }, "node_modules/@walletconnect/window-getters": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.0.tgz", - "integrity": "sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA==" + "license": "MIT" }, "node_modules/@walletconnect/window-metadata": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.0.tgz", - "integrity": "sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA==", + "license": "MIT", "dependencies": { "@walletconnect/window-getters": "^1.0.0" } @@ -7428,8 +7413,7 @@ }, "node_modules/aes-js": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + "license": "MIT" }, "node_modules/agent-base": { "version": "6.0.2", @@ -8082,8 +8066,7 @@ }, "node_modules/axios": { "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.14.8" } @@ -8275,6 +8258,14 @@ "node": ">=0.10.0" } }, + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/base64-js": { "version": "1.5.1", "funding": [ @@ -8320,6 +8311,18 @@ "node": ">=0.6" } }, + "node_modules/bigint-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz", + "integrity": "sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.3.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/bignumber.js": { "version": "9.0.0", "license": "MIT", @@ -8343,6 +8346,14 @@ "node": ">=8" } }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, "node_modules/blakejs": { "version": "1.1.0", "license": "CC0-1.0" @@ -8407,6 +8418,16 @@ "dev": true, "license": "ISC" }, + "node_modules/borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "dependencies": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + }, "node_modules/bowser": { "version": "2.11.0", "license": "MIT" @@ -8561,6 +8582,14 @@ "node": ">= 6" } }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/bs58check": { "version": "2.1.2", "license": "MIT", @@ -8570,20 +8599,6 @@ "safe-buffer": "^5.1.2" } }, - "node_modules/bs58check/node_modules/base-x": { - "version": "3.0.9", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/bs58check/node_modules/bs58": { - "version": "4.0.1", - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, "node_modules/bser": { "version": "2.1.1", "dev": true, @@ -8607,8 +8622,7 @@ }, "node_modules/buffer-alloc": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "license": "MIT", "dependencies": { "buffer-alloc-unsafe": "^1.1.0", "buffer-fill": "^1.0.0" @@ -8616,13 +8630,11 @@ }, "node_modules/buffer-alloc-unsafe": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + "license": "MIT" }, "node_modules/buffer-fill": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" + "license": "MIT" }, "node_modules/buffer-from": { "version": "1.1.2", @@ -8658,7 +8670,6 @@ "hasInstallScript": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "node-gyp-build": "^4.3.0" }, @@ -10196,8 +10207,7 @@ }, "node_modules/copy-to-clipboard": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.2.tgz", - "integrity": "sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==", + "license": "MIT", "dependencies": { "toggle-selection": "^1.0.6" } @@ -10898,6 +10908,17 @@ "dev": true, "license": "MIT" }, + "node_modules/delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "license": "MIT", @@ -10940,8 +10961,7 @@ }, "node_modules/detect-browser": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.2.0.tgz", - "integrity": "sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA==" + "license": "MIT" }, "node_modules/detect-indent": { "version": "5.0.0", @@ -11005,8 +11025,7 @@ }, "node_modules/dijkstrajs": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", - "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" + "license": "MIT" }, "node_modules/dir-glob": { "version": "3.0.1", @@ -11366,6 +11385,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, "node_modules/esbuild": { "version": "0.14.54", "dev": true, @@ -11401,38 +11433,6 @@ "esbuild-windows-arm64": "0.14.54" } }, - "node_modules/esbuild-android-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.9.tgz", - "integrity": "sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.9.tgz", - "integrity": "sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/esbuild-darwin-64": { "version": "0.14.54", "cpu": [ @@ -11448,598 +11448,6 @@ "node": ">=12" } }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.9.tgz", - "integrity": "sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.9.tgz", - "integrity": "sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.9.tgz", - "integrity": "sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.9.tgz", - "integrity": "sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.9.tgz", - "integrity": "sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.9.tgz", - "integrity": "sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.9.tgz", - "integrity": "sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.9.tgz", - "integrity": "sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.9.tgz", - "integrity": "sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.9.tgz", - "integrity": "sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.9.tgz", - "integrity": "sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.9.tgz", - "integrity": "sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.9.tgz", - "integrity": "sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.9.tgz", - "integrity": "sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.9.tgz", - "integrity": "sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.9.tgz", - "integrity": "sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.9.tgz", - "integrity": "sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-loong64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", - "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-android-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", - "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-android-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", - "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-darwin-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", - "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-freebsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", - "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-freebsd-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", - "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-linux-32": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", - "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-linux-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", - "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-linux-arm": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", - "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-linux-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", - "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-linux-mips64le": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", - "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-linux-ppc64le": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", - "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-linux-riscv64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", - "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-linux-s390x": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", - "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-netbsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", - "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-openbsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", - "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-sunos-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", - "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-windows-32": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", - "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-windows-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", - "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/esbuild-windows-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", - "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/escalade": { "version": "3.1.1", "license": "MIT", @@ -12980,8 +12388,6 @@ }, "node_modules/ethers": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.1.tgz", - "integrity": "sha512-5krze4dRLITX7FpU8J4WscXqADiKmyeNlylmmDLbS95DaZpBhDe2YSwRQwKXWNyXcox7a3gBgm/MkGXV1O1S/Q==", "funding": [ { "type": "individual", @@ -12992,6 +12398,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@ethersproject/abi": "5.7.0", "@ethersproject/abstract-provider": "5.7.0", @@ -13064,9 +12471,7 @@ }, "node_modules/eventemitter3": { "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", @@ -13532,6 +12937,14 @@ ], "license": "MIT" }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "engines": { + "node": "> 0.1.90" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "license": "MIT" @@ -13571,6 +12984,11 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-stable-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", + "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==" + }, "node_modules/fast-xml-parser": { "version": "3.19.0", "license": "MIT", @@ -13628,6 +13046,11 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, "node_modules/fill-range": { "version": "7.0.1", "dev": true, @@ -14968,14 +14391,6 @@ "node": ">=0.10.0" } }, - "node_modules/ganache-core/node_modules/base-x": { - "version": "3.0.8", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, "node_modules/ganache-core/node_modules/base/node_modules/define-property": { "version": "1.0.0", "dev": true, @@ -15216,14 +14631,6 @@ "browserslist": "cli.js" } }, - "node_modules/ganache-core/node_modules/bs58": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, "node_modules/ganache-core/node_modules/bs58check": { "version": "2.1.2", "dev": true, @@ -24577,9 +23984,8 @@ }, "node_modules/http-proxy": { "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, + "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -24604,9 +24010,8 @@ }, "node_modules/http-proxy-middleware": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -24628,9 +24033,8 @@ }, "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -24971,8 +24375,7 @@ }, "node_modules/invariant": { "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", "dependencies": { "loose-envify": "^1.0.0" } @@ -25704,6 +25107,78 @@ "node": ">=8" } }, + "node_modules/jayson": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-3.7.0.tgz", + "integrity": "sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==", + "dependencies": { + "@types/connect": "^3.4.33", + "@types/node": "^12.12.54", + "@types/ws": "^7.4.4", + "commander": "^2.20.3", + "delay": "^5.0.0", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "isomorphic-ws": "^4.0.1", + "json-stringify-safe": "^5.0.1", + "JSONStream": "^1.3.5", + "lodash": "^4.17.20", + "uuid": "^8.3.2", + "ws": "^7.4.5" + }, + "bin": { + "jayson": "bin/jayson.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jayson/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "node_modules/jayson/node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/jayson/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/jayson/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/jayson/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/jest": { "version": "26.6.3", "dev": true, @@ -28219,7 +27694,6 @@ }, "node_modules/jsonparse": { "version": "1.3.1", - "dev": true, "engines": [ "node >= 0.2.0" ], @@ -28227,7 +27701,6 @@ }, "node_modules/JSONStream": { "version": "1.3.5", - "dev": true, "license": "(MIT OR Apache-2.0)", "dependencies": { "jsonparse": "^1.2.0", @@ -28288,8 +27761,7 @@ }, "node_modules/keyvaluestorage-interface": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz", - "integrity": "sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==" + "license": "MIT" }, "node_modules/kind-of": { "version": "6.0.3", @@ -28795,9 +28267,8 @@ }, "node_modules/localtunnel": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", - "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", "dev": true, + "license": "MIT", "dependencies": { "axios": "0.21.4", "debug": "4.3.2", @@ -28813,18 +28284,16 @@ }, "node_modules/localtunnel/node_modules/axios": { "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "dev": true, + "license": "MIT", "dependencies": { "follow-redirects": "^1.14.0" } }, "node_modules/localtunnel/node_modules/debug": { "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -28839,24 +28308,21 @@ }, "node_modules/localtunnel/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/localtunnel/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/localtunnel/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -28868,18 +28334,16 @@ }, "node_modules/localtunnel/node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/localtunnel/node_modules/yargs": { "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -28909,7 +28373,6 @@ }, "node_modules/lodash": { "version": "4.17.21", - "dev": true, "license": "MIT" }, "node_modules/lodash._reinterpolate": { @@ -30510,9 +29973,8 @@ }, "node_modules/openurl": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/optionator": { "version": "0.9.1", @@ -31323,8 +30785,7 @@ }, "node_modules/pngjs": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -31482,8 +30943,7 @@ }, "node_modules/preact": { "version": "10.4.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.4.1.tgz", - "integrity": "sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -31670,8 +31130,7 @@ }, "node_modules/qrcode": { "version": "1.4.4", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz", - "integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==", + "license": "MIT", "dependencies": { "buffer": "^5.4.3", "buffer-alloc": "^1.2.0", @@ -31690,16 +31149,14 @@ }, "node_modules/qrcode/node_modules/ansi-regex": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/qrcode/node_modules/cliui": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "license": "ISC", "dependencies": { "string-width": "^3.1.0", "strip-ansi": "^5.2.0", @@ -31708,13 +31165,11 @@ }, "node_modules/qrcode/node_modules/emoji-regex": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "license": "MIT" }, "node_modules/qrcode/node_modules/find-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -31724,16 +31179,14 @@ }, "node_modules/qrcode/node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/qrcode/node_modules/locate-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -31744,8 +31197,7 @@ }, "node_modules/qrcode/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -31758,8 +31210,7 @@ }, "node_modules/qrcode/node_modules/p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -31769,16 +31220,14 @@ }, "node_modules/qrcode/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/qrcode/node_modules/string-width": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "license": "MIT", "dependencies": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -31790,8 +31239,7 @@ }, "node_modules/qrcode/node_modules/strip-ansi": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" }, @@ -31801,8 +31249,7 @@ }, "node_modules/qrcode/node_modules/wrap-ansi": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.0", "string-width": "^3.0.0", @@ -31814,8 +31261,7 @@ }, "node_modules/qrcode/node_modules/yargs": { "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "license": "MIT", "dependencies": { "cliui": "^5.0.0", "find-up": "^3.0.0", @@ -31831,8 +31277,7 @@ }, "node_modules/qrcode/node_modules/yargs-parser": { "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -32137,6 +31582,11 @@ "node": ">=6" } }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, "node_modules/regex-not": { "version": "1.0.2", "dev": true, @@ -32691,9 +32141,8 @@ }, "node_modules/requires-port": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve": { "version": "1.17.0", @@ -32866,6 +32315,53 @@ "estree-walker": "^0.6.1" } }, + "node_modules/rpc-websockets": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.0.tgz", + "integrity": "sha512-9tIRi1uZGy7YmDjErf1Ax3wtqdSSLIlnmL5OtOzgd5eqPKbsPpwDP5whUDO2LQay3Xp0CcHlcNSGzacNRluBaQ==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "eventemitter3": "^4.0.7", + "uuid": "^8.3.2", + "ws": "^8.5.0" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/kozjak" + }, + "optionalDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + } + }, + "node_modules/rpc-websockets/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/rpc-websockets/node_modules/ws": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/rsvp": { "version": "4.8.5", "dev": true, @@ -34353,6 +33849,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/superstruct": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", + "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" + }, "node_modules/supports-color": { "version": "5.5.0", "license": "MIT", @@ -34832,6 +34333,11 @@ "version": "0.0.1", "dev": true }, + "node_modules/text-encoding-utf-8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", + "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" + }, "node_modules/text-extensions": { "version": "1.9.0", "dev": true, @@ -34852,7 +34358,6 @@ }, "node_modules/through": { "version": "2.3.8", - "dev": true, "license": "MIT" }, "node_modules/through2": { @@ -34968,8 +34473,7 @@ }, "node_modules/toggle-selection": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + "license": "MIT" }, "node_modules/toidentifier": { "version": "1.0.1", @@ -36489,7 +35993,6 @@ "hasInstallScript": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "node-gyp-build": "^4.3.0" }, @@ -38068,10 +37571,9 @@ }, "services/crawler/node_modules/esbuild": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", - "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -38105,12 +37607,11 @@ }, "services/crawler/node_modules/esbuild-darwin-64": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", - "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -38910,10 +38411,9 @@ }, "services/users/node_modules/esbuild": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", - "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -38947,12 +38447,11 @@ }, "services/users/node_modules/esbuild-darwin-64": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", - "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -40584,6 +40083,14 @@ "@babel/helper-plugin-utils": "^7.18.6" } }, + "@babel/runtime": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", + "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, "@babel/template": { "version": "7.18.10", "requires": { @@ -40942,8 +40449,6 @@ }, "esbuild": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", - "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", "dev": true, "requires": { "@esbuild/android-arm": "0.15.9", @@ -40972,8 +40477,6 @@ }, "esbuild-darwin-64": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", - "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", "dev": true, "optional": true }, @@ -41504,8 +41007,6 @@ }, "esbuild": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", - "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", "dev": true, "requires": { "@esbuild/android-arm": "0.15.9", @@ -41534,15 +41035,13 @@ }, "esbuild-darwin-64": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", - "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", "dev": true, "optional": true } } }, - "@casimir/evm": { - "version": "file:contracts/evm", + "@casimir/ethereum": { + "version": "file:contracts/ethereum", "requires": { "@nomiclabs/hardhat-ethers": "^2.0.6", "@nomiclabs/hardhat-waffle": "^2.0.3", @@ -41580,8 +41079,6 @@ }, "esbuild": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", - "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", "dev": true, "requires": { "@esbuild/android-arm": "0.15.9", @@ -41610,8 +41107,6 @@ }, "esbuild-darwin-64": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", - "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", "dev": true, "optional": true } @@ -41660,8 +41155,6 @@ }, "esbuild": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz", - "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==", "dev": true, "requires": { "@esbuild/android-arm": "0.15.9", @@ -41690,8 +41183,6 @@ }, "esbuild-darwin-64": { "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz", - "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==", "dev": true, "optional": true } @@ -41704,12 +41195,14 @@ "@esbuild-plugins/node-modules-polyfill": "^0.1.4", "@heroicons/vue": "^1.0.6", "@ledgerhq/hw-app-eth": "^6.29.4", - "@ledgerhq/hw-transport-webhid": "^6.27.2", + "@ledgerhq/hw-transport-webusb": "^6.27.4", "@rollup/plugin-inject": "^4.0.4", + "@solana/web3.js": "^1.63.1", "@vitejs/plugin-vue": "^2.3.3", "@walletconnect/client": "^1.8.0", "@walletconnect/qrcode-modal": "^1.8.0", "autoprefixer": "^10.4.7", + "borsh": "^0.7.0", "buffer": "^6.0.3", "ethers": "^5.6.9", "iotex-antenna": "^0.31.3", @@ -41725,8 +41218,6 @@ "dependencies": { "buffer": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "requires": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -42023,20 +41514,6 @@ "rollup-plugin-node-polyfills": "^0.2.1" } }, - "@esbuild/android-arm": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.9.tgz", - "integrity": "sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.9.tgz", - "integrity": "sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==", - "dev": true, - "optional": true - }, "@eslint/eslintrc": { "version": "1.3.0", "dev": true, @@ -42273,8 +41750,6 @@ }, "@ethersproject/abi": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", "requires": { "@ethersproject/address": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -42289,8 +41764,6 @@ }, "@ethersproject/abstract-provider": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", "requires": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -42303,8 +41776,6 @@ }, "@ethersproject/abstract-signer": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", "requires": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -42315,8 +41786,6 @@ }, "@ethersproject/address": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", "requires": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -42327,16 +41796,12 @@ }, "@ethersproject/base64": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", "requires": { "@ethersproject/bytes": "^5.7.0" } }, "@ethersproject/basex": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/properties": "^5.7.0" @@ -42344,8 +41809,6 @@ }, "@ethersproject/bignumber": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -42354,24 +41817,18 @@ }, "@ethersproject/bytes": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", "requires": { "@ethersproject/logger": "^5.7.0" } }, "@ethersproject/constants": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", "requires": { "@ethersproject/bignumber": "^5.7.0" } }, "@ethersproject/contracts": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", "requires": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-provider": "^5.7.0", @@ -42387,8 +41844,6 @@ }, "@ethersproject/hash": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", "requires": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -42403,8 +41858,6 @@ }, "@ethersproject/hdnode": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", "requires": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/basex": "^5.7.0", @@ -42422,8 +41875,6 @@ }, "@ethersproject/json-wallets": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", "requires": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -42442,30 +41893,22 @@ }, "@ethersproject/keccak256": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", "requires": { "@ethersproject/bytes": "^5.7.0", "js-sha3": "0.8.0" } }, "@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + "version": "5.7.0" }, "@ethersproject/networks": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", "requires": { "@ethersproject/logger": "^5.7.0" } }, "@ethersproject/pbkdf2": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/sha2": "^5.7.0" @@ -42473,16 +41916,12 @@ }, "@ethersproject/properties": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", "requires": { "@ethersproject/logger": "^5.7.0" } }, "@ethersproject/providers": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.1.tgz", - "integrity": "sha512-vZveG/DLyo+wk4Ga1yx6jSEHrLPgmTt+dFv0dv8URpVCRf0jVhalps1jq/emN/oXnMRsC7cQgAF32DcXLL7BPQ==", "requires": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -42517,8 +41956,6 @@ }, "@ethersproject/random": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0" @@ -42526,8 +41963,6 @@ }, "@ethersproject/rlp": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0" @@ -42535,8 +41970,6 @@ }, "@ethersproject/sha2": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -42545,8 +41978,6 @@ }, "@ethersproject/signing-key": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -42558,8 +41989,6 @@ "dependencies": { "elliptic": { "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "requires": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -42571,9 +42000,7 @@ }, "dependencies": { "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + "version": "4.12.0" } } } @@ -42581,8 +42008,6 @@ }, "@ethersproject/solidity": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", "requires": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -42594,8 +42019,6 @@ }, "@ethersproject/strings": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -42604,8 +42027,6 @@ }, "@ethersproject/transactions": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", "requires": { "@ethersproject/address": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -42620,8 +42041,6 @@ }, "@ethersproject/units": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", "requires": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -42630,8 +42049,6 @@ }, "@ethersproject/wallet": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", "requires": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -42652,8 +42069,6 @@ }, "@ethersproject/web": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", "requires": { "@ethersproject/base64": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -42664,8 +42079,6 @@ }, "@ethersproject/wordlists": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/hash": "^5.7.0", @@ -43461,68 +42874,50 @@ }, "@ledgerhq/cryptoassets": { "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/cryptoassets/-/cryptoassets-6.34.0.tgz", - "integrity": "sha512-Rg3i3aOWnTFD8mtNZetZnG+7XTAWu2iuD4jCC6oUeU5wKB7Sc5m0En7LoEmEWv7ZW5VpH8NjM6uK/KWgsCwR6Q==", "requires": { "invariant": "2" } }, "@ledgerhq/devices": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-7.0.0.tgz", - "integrity": "sha512-vq4B33WdU0dRAJIRFWZMj6w1W1yw1i4mekCmhk7N9wPaFrtGWZ2iI9WDihsNOBooCWKQe8Jsb9eD8RVThbSlFQ==", + "version": "7.0.3", "requires": { - "@ledgerhq/errors": "^6.10.1", - "@ledgerhq/logs": "^6.10.0", + "@ledgerhq/errors": "^6.11.1", + "@ledgerhq/logs": "^6.10.1", "rxjs": "6", "semver": "^7.3.5" }, "dependencies": { "lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { "yallist": "^4.0.0" } }, "rxjs": { "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "requires": { "tslib": "^1.9.0" } }, "semver": { "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "requires": { "lru-cache": "^6.0.0" } }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "version": "1.14.1" }, "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "version": "4.0.0" } } }, "@ledgerhq/errors": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.10.1.tgz", - "integrity": "sha512-92d1zRQleR1AQ4CAXgWgDtKUms+8EwShLVUcajI+BLWvgJ1Vclmq6PsBIDEQbsm+riVu/Ji3LcHdmgFgmi0VGw==" + "version": "6.11.1" }, "@ledgerhq/hw-app-eth": { "version": "6.29.6", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-app-eth/-/hw-app-eth-6.29.6.tgz", - "integrity": "sha512-7TS6dTF30ONOqppk0J8YYVX0Cd7/Pt0Uuy77n/LRXpfsLHDABSaRROjNzxxT3q7EIMz6FQi4K4WaN8OIznkytA==", "requires": { "@ethersproject/abi": "^5.5.0", "@ethersproject/rlp": "^5.5.0", @@ -43536,53 +42931,36 @@ }, "dependencies": { "bignumber.js": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.0.tgz", - "integrity": "sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==" + "version": "9.1.0" } } }, "@ledgerhq/hw-transport": { - "version": "6.27.3", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.27.3.tgz", - "integrity": "sha512-vQMNCC1DUDtS+nkJsbycgFMSodmj91WuGSxX7RjOz2vuZBc6jXtDn9jzYdsfyKOwnvalQAkXm9hWWHlrMIKdNQ==", + "version": "6.27.6", "requires": { - "@ledgerhq/devices": "^7.0.0", - "@ledgerhq/errors": "^6.10.1", + "@ledgerhq/devices": "^7.0.3", + "@ledgerhq/errors": "^6.11.1", "events": "^3.3.0" } }, "@ledgerhq/hw-transport-mocker": { "version": "6.27.3", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.27.3.tgz", - "integrity": "sha512-eweiIdbU+ZC4txin7JhLQpQ5dpMoPyyGo3O5OvD4xsZGbVNauEPYZzUks0ko5ZniCpVnB3qNfS3cU3PXdjN6Zw==", "requires": { "@ledgerhq/hw-transport": "^6.27.3", "@ledgerhq/logs": "^6.10.1-nightly.0" - }, - "dependencies": { - "@ledgerhq/logs": { - "version": "6.10.1-nightly.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.1-nightly.0.tgz", - "integrity": "sha512-hwoUwlC7le37kQ72W8hAzVq070zuY6IEpssYNXDTr3pEfc3cprTAgEnaBsb0jXQGiLdONPvxc7nPp8nSyGD3hQ==" - } } }, - "@ledgerhq/hw-transport-webhid": { - "version": "6.27.2", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-webhid/-/hw-transport-webhid-6.27.2.tgz", - "integrity": "sha512-ZlyNheUhcxBZqjJzhSfJfeGQvNbeyWs9866rdQjVeG1zsbTJi0+6tfRv8J248QISS8vHtG5IMSxgMg9mtux9dQ==", + "@ledgerhq/hw-transport-webusb": { + "version": "6.27.6", "requires": { - "@ledgerhq/devices": "^7.0.0", - "@ledgerhq/errors": "^6.10.1", - "@ledgerhq/hw-transport": "^6.27.2", - "@ledgerhq/logs": "^6.10.0" + "@ledgerhq/devices": "^7.0.3", + "@ledgerhq/errors": "^6.11.1", + "@ledgerhq/hw-transport": "^6.27.6", + "@ledgerhq/logs": "^6.10.1" } }, "@ledgerhq/logs": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.0.tgz", - "integrity": "sha512-lLseUPEhSFUXYTKj6q7s2O3s2vW2ebgA11vMAlKodXGf5AFw4zUoEbTz9CoFOC9jS6xY4Qr8BmRnxP/odT4Uuw==" + "version": "6.10.1" }, "@mapbox/node-pre-gyp": { "version": "1.0.9", @@ -43681,13 +43059,16 @@ "glob-to-regexp": "^0.3.0" } }, + "@noble/ed25519": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.1.tgz", + "integrity": "sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw==" + }, "@noble/hashes": { - "version": "1.1.2", - "dev": true + "version": "1.1.2" }, "@noble/secp256k1": { - "version": "1.6.3", - "dev": true + "version": "1.6.3" }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -43881,8 +43262,6 @@ }, "@rollup/plugin-inject": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-4.0.4.tgz", - "integrity": "sha512-4pbcU4J/nS+zuHk+c+OL3WtmEQhqxlZ9uqfjQMQDOHOPld7PsCd8k5LWs8h5wjwJN7MgnAn768F2sDxEP4eNFQ==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -43892,16 +43271,12 @@ "dependencies": { "estree-walker": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true } } }, "@rollup/pluginutils": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "requires": { "@types/estree": "0.0.39", @@ -43911,8 +43286,6 @@ "dependencies": { "estree-walker": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true } } @@ -44075,6 +43448,58 @@ "@sinonjs/commons": "^1.7.0" } }, + "@solana/buffer-layout": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.0.tgz", + "integrity": "sha512-lR0EMP2HC3+Mxwd4YcnZb0smnaDw7Bl2IQWZiTevRH5ZZBZn6VRWn3/92E3qdU4SSImJkA6IDHawOHAnx/qUvQ==", + "requires": { + "buffer": "~6.0.3" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, + "@solana/web3.js": { + "version": "1.63.1", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.63.1.tgz", + "integrity": "sha512-wgEdGVK5FTS2zENxbcGSvKpGZ0jDS6BUdGu8Gn6ns0CzgJkK83u4ip3THSnBPEQ5i/jrqukg998BwV1H67+qiQ==", + "requires": { + "@babel/runtime": "^7.12.5", + "@noble/ed25519": "^1.7.0", + "@noble/hashes": "^1.1.2", + "@noble/secp256k1": "^1.6.3", + "@solana/buffer-layout": "^4.0.0", + "bigint-buffer": "^1.1.5", + "bn.js": "^5.0.0", + "borsh": "^0.7.0", + "bs58": "^4.0.1", + "buffer": "6.0.1", + "fast-stable-stringify": "^1.0.0", + "jayson": "^3.4.4", + "node-fetch": "2", + "rpc-websockets": "^7.5.0", + "superstruct": "^0.14.2" + }, + "dependencies": { + "buffer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.1.tgz", + "integrity": "sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, "@solidity-parser/parser": { "version": "0.14.3", "dev": true, @@ -44193,7 +43618,6 @@ }, "@types/connect": { "version": "3.4.35", - "dev": true, "requires": { "@types/node": "*" } @@ -44217,8 +43641,6 @@ }, "@types/estree": { "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, "@types/ethereumjs-abi": { @@ -44266,8 +43688,6 @@ }, "@types/http-proxy": { "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", "dev": true, "requires": { "@types/node": "*" @@ -44326,8 +43746,6 @@ }, "@types/localtunnel": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/localtunnel/-/localtunnel-2.0.1.tgz", - "integrity": "sha512-0h/ggh+tp9uKHc2eEOLdMgWW0cNwsQfn6iEE1Y44FszNB4BQyL5N6xvd5BnChZksB0YgVqa5MKxJt0dFoOKRxw==", "dev": true, "requires": { "@types/node": "*" @@ -44837,8 +44255,6 @@ }, "@walletconnect/browser-utils": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/browser-utils/-/browser-utils-1.8.0.tgz", - "integrity": "sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A==", "requires": { "@walletconnect/safe-json": "1.0.0", "@walletconnect/types": "^1.8.0", @@ -44849,8 +44265,6 @@ }, "@walletconnect/client": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/client/-/client-1.8.0.tgz", - "integrity": "sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ==", "requires": { "@walletconnect/core": "^1.8.0", "@walletconnect/iso-crypto": "^1.8.0", @@ -44860,8 +44274,6 @@ }, "@walletconnect/core": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-1.8.0.tgz", - "integrity": "sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw==", "requires": { "@walletconnect/socket-transport": "^1.8.0", "@walletconnect/types": "^1.8.0", @@ -44870,8 +44282,6 @@ }, "@walletconnect/crypto": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@walletconnect/crypto/-/crypto-1.0.2.tgz", - "integrity": "sha512-+OlNtwieUqVcOpFTvLBvH+9J9pntEqH5evpINHfVxff1XIgwV55PpbdvkHu6r9Ib4WQDOFiD8OeeXs1vHw7xKQ==", "requires": { "@walletconnect/encoding": "^1.0.1", "@walletconnect/environment": "^1.0.0", @@ -44881,30 +44291,22 @@ }, "dependencies": { "aes-js": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", - "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" + "version": "3.1.2" } } }, "@walletconnect/encoding": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@walletconnect/encoding/-/encoding-1.0.1.tgz", - "integrity": "sha512-8opL2rs6N6E3tJfsqwS82aZQDL3gmupWUgmvuZ3CGU7z/InZs3R9jkzH8wmYtpbq0sFK3WkJkQRZFFk4BkrmFA==", "requires": { "is-typedarray": "1.0.0", "typedarray-to-buffer": "3.1.5" } }, "@walletconnect/environment": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@walletconnect/environment/-/environment-1.0.0.tgz", - "integrity": "sha512-4BwqyWy6KpSvkocSaV7WR3BlZfrxLbJSLkg+j7Gl6pTDE+U55lLhJvQaMuDVazXYxcjBsG09k7UlH7cGiUI5vQ==" + "version": "1.0.0" }, "@walletconnect/iso-crypto": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/iso-crypto/-/iso-crypto-1.8.0.tgz", - "integrity": "sha512-pWy19KCyitpfXb70hA73r9FcvklS+FvO9QUIttp3c2mfW8frxgYeRXfxLRCIQTkaYueRKvdqPjbyhPLam508XQ==", "requires": { "@walletconnect/crypto": "^1.0.2", "@walletconnect/types": "^1.8.0", @@ -44913,30 +44315,22 @@ }, "@walletconnect/jsonrpc-types": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.1.tgz", - "integrity": "sha512-+6coTtOuChCqM+AoYyi4Q83p9l/laI6NvuM2/AHaZFuf0gT0NjW7IX2+86qGyizn7Ptq4AYZmfxurAxTnhefuw==", "requires": { "keyvaluestorage-interface": "^1.0.0" } }, "@walletconnect/jsonrpc-utils": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.3.tgz", - "integrity": "sha512-3yb49bPk16MNLk6uIIHPSHQCpD6UAo1OMOx1rM8cW/MPEAYAzrSW5hkhG7NEUwX9SokRIgnZK3QuQkiyNzBMhQ==", "requires": { "@walletconnect/environment": "^1.0.0", "@walletconnect/jsonrpc-types": "^1.0.1" } }, "@walletconnect/mobile-registry": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz", - "integrity": "sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw==" + "version": "1.4.0" }, "@walletconnect/qrcode-modal": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/qrcode-modal/-/qrcode-modal-1.8.0.tgz", - "integrity": "sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg==", "requires": { "@walletconnect/browser-utils": "^1.8.0", "@walletconnect/mobile-registry": "^1.4.0", @@ -44948,8 +44342,6 @@ }, "@walletconnect/randombytes": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@walletconnect/randombytes/-/randombytes-1.0.2.tgz", - "integrity": "sha512-ivgOtAyqQnN0rLQmOFPemsgYGysd/ooLfaDA/ACQ3cyqlca56t3rZc7pXfqJOIETx/wSyoF5XbwL+BqYodw27A==", "requires": { "@walletconnect/encoding": "^1.0.1", "@walletconnect/environment": "^1.0.0", @@ -44957,14 +44349,10 @@ } }, "@walletconnect/safe-json": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@walletconnect/safe-json/-/safe-json-1.0.0.tgz", - "integrity": "sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg==" + "version": "1.0.0" }, "@walletconnect/socket-transport": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/socket-transport/-/socket-transport-1.8.0.tgz", - "integrity": "sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ==", "requires": { "@walletconnect/types": "^1.8.0", "@walletconnect/utils": "^1.8.0", @@ -44973,21 +44361,15 @@ "dependencies": { "ws": { "version": "7.5.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", - "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", "requires": {} } } }, "@walletconnect/types": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-1.8.0.tgz", - "integrity": "sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg==" + "version": "1.8.0" }, "@walletconnect/utils": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-1.8.0.tgz", - "integrity": "sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA==", "requires": { "@walletconnect/browser-utils": "^1.8.0", "@walletconnect/encoding": "^1.0.1", @@ -44999,14 +44381,10 @@ }, "dependencies": { "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "version": "4.11.8" }, "query-string": { "version": "6.13.5", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.5.tgz", - "integrity": "sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q==", "requires": { "decode-uri-component": "^0.2.0", "split-on-first": "^1.0.0", @@ -45016,14 +44394,10 @@ } }, "@walletconnect/window-getters": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.0.tgz", - "integrity": "sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA==" + "version": "1.0.0" }, "@walletconnect/window-metadata": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@walletconnect/window-metadata/-/window-metadata-1.0.0.tgz", - "integrity": "sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA==", "requires": { "@walletconnect/window-getters": "^1.0.0" } @@ -45111,9 +44485,7 @@ "dev": true }, "aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + "version": "3.0.0" }, "agent-base": { "version": "6.0.2", @@ -45502,8 +44874,6 @@ }, "axios": { "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", "requires": { "follow-redirects": "^1.14.8" } @@ -45637,6 +45007,14 @@ "pascalcase": "^0.1.1" } }, + "base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, "base64-js": { "version": "1.5.1" }, @@ -45661,6 +45039,14 @@ "big-integer": { "version": "1.6.51" }, + "bigint-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz", + "integrity": "sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==", + "requires": { + "bindings": "^1.3.0" + } + }, "bignumber.js": { "version": "9.0.0" }, @@ -45675,6 +45061,14 @@ "version": "2.2.0", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "blakejs": { "version": "1.1.0" }, @@ -45723,6 +45117,16 @@ "version": "1.0.0", "dev": true }, + "borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "requires": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + }, "bowser": { "version": "2.11.0" }, @@ -45825,26 +45229,20 @@ "fast-json-stable-stringify": "2.x" } }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "requires": { + "base-x": "^3.0.2" + } + }, "bs58check": { "version": "2.1.2", "requires": { "bs58": "^4.0.0", "create-hash": "^1.1.0", "safe-buffer": "^5.1.2" - }, - "dependencies": { - "base-x": { - "version": "3.0.9", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "bs58": { - "version": "4.0.1", - "requires": { - "base-x": "^3.0.2" - } - } } }, "bser": { @@ -45867,22 +45265,16 @@ }, "buffer-alloc": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "requires": { "buffer-alloc-unsafe": "^1.1.0", "buffer-fill": "^1.0.0" } }, "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + "version": "1.1.0" }, "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" + "version": "1.0.0" }, "buffer-from": { "version": "1.1.2" @@ -45906,7 +45298,6 @@ "bufferutil": { "version": "4.0.6", "optional": true, - "peer": true, "requires": { "node-gyp-build": "^4.3.0" } @@ -46914,8 +46305,6 @@ }, "copy-to-clipboard": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.2.tgz", - "integrity": "sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==", "requires": { "toggle-selection": "^1.0.6" } @@ -47399,6 +46788,11 @@ "version": "1.0.0", "dev": true }, + "delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==" + }, "delayed-stream": { "version": "1.0.0" }, @@ -47424,9 +46818,7 @@ "version": "1.2.0" }, "detect-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.2.0.tgz", - "integrity": "sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA==" + "version": "5.2.0" }, "detect-indent": { "version": "5.0.0", @@ -47461,9 +46853,7 @@ "dev": true }, "dijkstrajs": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", - "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" + "version": "1.0.2" }, "dir-glob": { "version": "3.0.1", @@ -47721,6 +47111,19 @@ "is-symbol": "^1.0.2" } }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "requires": { + "es6-promise": "^4.0.3" + } + }, "esbuild": { "version": "0.14.54", "dev": true, @@ -47746,288 +47149,13 @@ "esbuild-windows-32": "0.14.54", "esbuild-windows-64": "0.14.54", "esbuild-windows-arm64": "0.14.54" - }, - "dependencies": { - "@esbuild/linux-loong64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", - "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", - "dev": true, - "optional": true - }, - "esbuild-android-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", - "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", - "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", - "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", - "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", - "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", - "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", - "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", - "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", - "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", - "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", - "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", - "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", - "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", - "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", - "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", - "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", - "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", - "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", - "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", - "dev": true, - "optional": true - } } }, - "esbuild-android-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.9.tgz", - "integrity": "sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.9.tgz", - "integrity": "sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==", - "dev": true, - "optional": true - }, "esbuild-darwin-64": { "version": "0.14.54", "dev": true, "optional": true }, - "esbuild-darwin-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.9.tgz", - "integrity": "sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.9.tgz", - "integrity": "sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.9.tgz", - "integrity": "sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.9.tgz", - "integrity": "sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.9.tgz", - "integrity": "sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.9.tgz", - "integrity": "sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.9.tgz", - "integrity": "sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.9.tgz", - "integrity": "sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.9.tgz", - "integrity": "sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.9.tgz", - "integrity": "sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.9.tgz", - "integrity": "sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.9.tgz", - "integrity": "sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.9.tgz", - "integrity": "sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.9.tgz", - "integrity": "sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.9.tgz", - "integrity": "sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.9.tgz", - "integrity": "sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.9.tgz", - "integrity": "sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==", - "dev": true, - "optional": true - }, "escalade": { "version": "3.1.1" }, @@ -48669,8 +47797,6 @@ }, "ethers": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.1.tgz", - "integrity": "sha512-5krze4dRLITX7FpU8J4WscXqADiKmyeNlylmmDLbS95DaZpBhDe2YSwRQwKXWNyXcox7a3gBgm/MkGXV1O1S/Q==", "requires": { "@ethersproject/abi": "5.7.0", "@ethersproject/abstract-provider": "5.7.0", @@ -48729,10 +47855,7 @@ "dev": true }, "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "version": "4.0.7" }, "events": { "version": "3.3.0" @@ -49051,6 +48174,11 @@ "extsprintf": { "version": "1.3.0" }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==" + }, "fast-deep-equal": { "version": "3.1.3" }, @@ -49081,6 +48209,11 @@ "version": "2.0.6", "dev": true }, + "fast-stable-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", + "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==" + }, "fast-xml-parser": { "version": "3.19.0" }, @@ -49118,6 +48251,11 @@ "flat-cache": "^3.0.4" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, "fill-range": { "version": "7.0.1", "dev": true, @@ -50164,13 +49302,6 @@ } } }, - "base-x": { - "version": "3.0.8", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, "base64-js": { "version": "1.5.1", "dev": true @@ -50356,13 +49487,6 @@ "electron-to-chromium": "^1.3.47" } }, - "bs58": { - "version": "4.0.1", - "dev": true, - "requires": { - "base-x": "^3.0.2" - } - }, "bs58check": { "version": "2.1.2", "dev": true, @@ -57369,8 +56493,6 @@ }, "http-proxy": { "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "requires": { "eventemitter3": "^4.0.0", @@ -57389,8 +56511,6 @@ }, "http-proxy-middleware": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, "requires": { "@types/http-proxy": "^1.17.8", @@ -57402,8 +56522,6 @@ "dependencies": { "is-plain-obj": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true } } @@ -57610,8 +56728,6 @@ }, "invariant": { "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "requires": { "loose-envify": "^1.0.0" } @@ -58043,6 +57159,57 @@ "istanbul-lib-report": "^3.0.0" } }, + "jayson": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-3.7.0.tgz", + "integrity": "sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==", + "requires": { + "@types/connect": "^3.4.33", + "@types/node": "^12.12.54", + "@types/ws": "^7.4.4", + "commander": "^2.20.3", + "delay": "^5.0.0", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "isomorphic-ws": "^4.0.1", + "json-stringify-safe": "^5.0.1", + "JSONStream": "^1.3.5", + "lodash": "^4.17.20", + "uuid": "^8.3.2", + "ws": "^7.4.5" + }, + "dependencies": { + "@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "requires": { + "@types/node": "*" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "requires": {} + } + } + }, "jest": { "version": "26.6.3", "dev": true, @@ -59717,12 +58884,10 @@ } }, "jsonparse": { - "version": "1.3.1", - "dev": true + "version": "1.3.1" }, "JSONStream": { "version": "1.3.5", - "dev": true, "requires": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -59761,9 +58926,7 @@ } }, "keyvaluestorage-interface": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz", - "integrity": "sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==" + "version": "1.0.0" }, "kind-of": { "version": "6.0.3", @@ -60070,8 +59233,6 @@ }, "localtunnel": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", - "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", "dev": true, "requires": { "axios": "0.21.4", @@ -60082,8 +59243,6 @@ "dependencies": { "axios": { "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "dev": true, "requires": { "follow-redirects": "^1.14.0" @@ -60091,8 +59250,6 @@ }, "debug": { "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -60100,20 +59257,14 @@ }, "emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -60123,14 +59274,10 @@ }, "y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yargs": { "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -60152,8 +59299,7 @@ } }, "lodash": { - "version": "4.17.21", - "dev": true + "version": "4.17.21" }, "lodash._reinterpolate": { "version": "3.0.0", @@ -61201,8 +60347,6 @@ }, "openurl": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", "dev": true }, "optionator": { @@ -61714,9 +60858,7 @@ } }, "pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + "version": "3.4.0" }, "posix-character-classes": { "version": "0.1.1", @@ -61789,9 +60931,7 @@ "dev": true }, "preact": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.4.1.tgz", - "integrity": "sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q==" + "version": "10.4.1" }, "prelude-ls": { "version": "1.2.1", @@ -61910,8 +61050,6 @@ }, "qrcode": { "version": "1.4.4", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz", - "integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==", "requires": { "buffer": "^5.4.3", "buffer-alloc": "^1.2.0", @@ -61923,14 +61061,10 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" + "version": "4.1.1" }, "cliui": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "requires": { "string-width": "^3.1.0", "strip-ansi": "^5.2.0", @@ -61938,27 +61072,19 @@ } }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "version": "7.0.3" }, "find-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { "locate-path": "^3.0.0" } }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" + "version": "2.0.0" }, "locate-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -61966,29 +61092,21 @@ }, "p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { "p-try": "^2.0.0" } }, "p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "requires": { "p-limit": "^2.0.0" } }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + "version": "3.0.0" }, "string-width": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -61997,16 +61115,12 @@ }, "strip-ansi": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { "ansi-regex": "^4.1.0" } }, "wrap-ansi": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "requires": { "ansi-styles": "^3.2.0", "string-width": "^3.0.0", @@ -62015,8 +61129,6 @@ }, "yargs": { "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "requires": { "cliui": "^5.0.0", "find-up": "^3.0.0", @@ -62032,8 +61144,6 @@ }, "yargs-parser": { "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -62227,6 +61337,11 @@ "version": "2.0.0", "dev": true }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, "regex-not": { "version": "1.0.2", "dev": true, @@ -62614,8 +61729,6 @@ }, "requires-port": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "resolve": { @@ -62729,6 +61842,32 @@ "estree-walker": "^0.6.1" } }, + "rpc-websockets": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.5.0.tgz", + "integrity": "sha512-9tIRi1uZGy7YmDjErf1Ax3wtqdSSLIlnmL5OtOzgd5eqPKbsPpwDP5whUDO2LQay3Xp0CcHlcNSGzacNRluBaQ==", + "requires": { + "@babel/runtime": "^7.17.2", + "bufferutil": "^4.0.1", + "eventemitter3": "^4.0.7", + "utf-8-validate": "^5.0.2", + "uuid": "^8.3.2", + "ws": "^8.5.0" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "ws": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", + "requires": {} + } + } + }, "rsvp": { "version": "4.8.5", "dev": true @@ -63730,6 +62869,11 @@ "version": "3.1.1", "dev": true }, + "superstruct": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", + "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" + }, "supports-color": { "version": "5.5.0", "requires": { @@ -64048,6 +63192,11 @@ "version": "0.0.1", "dev": true }, + "text-encoding-utf-8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", + "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" + }, "text-extensions": { "version": "1.9.0", "dev": true @@ -64061,8 +63210,7 @@ "dev": true }, "through": { - "version": "2.3.8", - "dev": true + "version": "2.3.8" }, "through2": { "version": "3.0.2", @@ -64141,9 +63289,7 @@ } }, "toggle-selection": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + "version": "1.0.6" }, "toidentifier": { "version": "1.0.1" @@ -65090,7 +64236,6 @@ "utf-8-validate": { "version": "5.0.9", "optional": true, - "peer": true, "requires": { "node-gyp-build": "^4.3.0" } diff --git a/package.json b/package.json index 668700317..a28251719 100644 --- a/package.json +++ b/package.json @@ -10,20 +10,17 @@ "services/*" ], "scripts": { - "clean": "npm exec --workspaces -- npx rimraf node_modules && npx rimraf node_modules && npm i", + "clean": "npm exec --workspaces -- npx rimraf node_modules && npx rimraf node_modules", "deploy": "scripts/cdk/deploy -d infrastructure/cdk", - "dev": "scripts/local/dev -m \"$npm_config_mock\" -s \"$npm_config_speculos\"", + "dev": "scripts/local/dev -f \"$npm_config_fork\" -m \"$npm_config_mock\" -n \"$npm_config_network\" -s \"$npm_config_speculos\" -t \"$npm_config_tunnel\"", "dev:ethereum": "scripts/ethereum/dev -f \"$npm_config_fork\"", "dev:landing": "scripts/local/dev -a \"landing\" -m \"$npm_config_mock\"", "lint": "eslint --ext .vue,.ts ./ --fix", "test": "echo \"Error: no test specified\" && exit 1", + "test:ethereum": "scripts/ethereum/test -f \"$npm_config_fork\"", + "test:crawler": "scripts/crawler/test -f \"$npm_config_fork\" -n \"$npm_config_network\"", "test:push": "scripts/actions/test -w push", - "release": "release-it", - "deploy:sample": "npm run deploy:sample --workspace @casimir/evm", - "test:contracts": "npm run test:contracts --workspace @casimir/evm", - "task:accounts": "npm run task:accounts --workspace @casimir/evm", - "task:compile": "npm run task:compile --workspace @casimir/evm", - "task:clean": "npm run task:clean --workspace @casimir/evm" + "release": "release-it" }, "repository": { "type": "git", diff --git a/scripts/crawler/test b/scripts/crawler/test new file mode 100755 index 000000000..6ab972553 --- /dev/null +++ b/scripts/crawler/test @@ -0,0 +1,82 @@ +#!/bin/bash +# Test Casimir crawler with various network options +# +# Example: +# +# scripts/crawler/test -f -n +# +# Further information: +# See https://hardhat.org/hardhat-network/docs/overview +# + +# Set RPC URL bases +ethereum_mainnet=https://eth-mainnet.g.alchemy.com/v2 +ethereum_testnet=https://eth-testnet.g.alchemy.com/v2 + +# Get variables from root .env +export $(xargs < .env) + +# Set default profile +profile="consensus-networks-dev" + +if [ ${PROFILE+x} ]; then + echo "PROFILE is set to '$PROFILE'" + profile=$PROFILE +else + export PROFILE="$profile" + echo "PROFILE is not set, using default profile '$PROFILE'" +fi + +# Get args +while getopts :f:n: flag +do + case "${flag}" in + f) fork=${OPTARG};; + n) network=${OPTARG};; + esac +done + +# Default to mainnet if fork is set vaguely +if [ "$fork" = true ]; then + fork=mainnet +fi + +# Default to mainnet if network is set vaguely +if [ "$network" = true ]; then + network=mainnet +fi + +commands=("npm run test --workspace @casimir/crawler") + +chains="ethereum" + +# Loop over comma-separated string of chains +IFS=',' read -r -a chain_list <<< "$chains" + +for chain in "${chain_list[@]}" +do + # Expose RPC URL directly if network is set to mainnet or testnet + if [ -n "$network" ]; then + # Get the RPC API key from AWS + rpc_secret_id=consensus-networks-$chain-$network + rpc_key=$(aws secretsmanager get-secret-value \ + --secret-id $rpc_secret_id \ + --query SecretString \ + --output text \ + --profile $profile) + + CHAIN=$(echo $chain | tr '[:lower:]' '[:upper:]') + rpc_base=${chain}_${network} + export "PUBLIC_${CHAIN}_RPC"="${!rpc_base}/$rpc_key" + else + # Pass fork or network to chain-specific script + commands+=("npm run dev:$chain --fork=$fork") + fi +done + +for command in "${commands[@]}" +do + $command & +done + +wait && pkill -P $$ \ No newline at end of file diff --git a/scripts/ethereum/dev b/scripts/ethereum/dev old mode 100755 new mode 100644 index b1e620555..7572d9030 --- a/scripts/ethereum/dev +++ b/scripts/ethereum/dev @@ -3,7 +3,7 @@ # # Example: # -# scripts/ethereum/dev -f +# scripts/ethereum/dev -f -n # # Further information: # See https://hardhat.org/hardhat-network/docs/overview @@ -24,43 +24,46 @@ else fi # Get args -while getopts f: flag +while getopts :f: flag do case "${flag}" in f) fork=${OPTARG};; + n) network=${OPTARG};; esac done -# Secret ID is just the name or ARN -ledger_seed_secret_id=consensus-networks-ledger-seed -echo "🤫 Getting $ledger_seed_secret_id for $profile" +# Default to mainnet if fork is set vaguely +if [ "$fork" = true ]; then + fork=mainnet +fi -# Get the secret from AWS -ledger_seed=$(aws secretsmanager get-secret-value \ ---secret-id $ledger_seed_secret_id \ +# Get the bip39 seed from AWS +seed_secret_id=consensus-networks-bip39-seed +seed=$(aws secretsmanager get-secret-value \ +--secret-id $seed_secret_id \ --query SecretString \ --output text \ --profile $profile) -export LEDGER_SEED="$ledger_seed" - -if [ -z "$fork" ]; then - echo "⛓ Running default localnode" - npm run dev:localnode --workspace @casimir/evm -else - # Secret ID is just the name or ARN - alchemy_secret_id=consensus-networks-alchemy-$fork - echo "🤫 Getting $alchemy_secret_id for $profile" +# Set the shared bip39 seed +export BIP39_SEED="$seed" +echo "Your mnemonic is $BIP39_SEED" - # Get the secret from AWS - alchemy_key=$(aws secretsmanager get-secret-value \ - --secret-id $alchemy_secret_id \ +if [ -n "$fork" ]; then + # Get the RPC API key from AWS + rpc_secret_id=consensus-networks-ethereum-$fork + rpc_key=$(aws secretsmanager get-secret-value \ + --secret-id $rpc_secret_id \ --query SecretString \ --output text \ --profile $profile) - echo "⛓ Running $fork fork localnode" - npm run dev:localnode --workspace @casimir/evm -- --fork https://eth-$fork.alchemyapi.io/v2/$alchemy_key + echo "⛓ Setting up ethereum chain with $fork fork" + export ETHEREUM_FORK_RPC="https://eth-$fork.g.alchemy.com/v2/$rpc_key" +else + echo "⛓ Setting up ethereum chain without fork" fi +npm run dev:node --workspace @casimir/ethereum + diff --git a/scripts/ethereum/test b/scripts/ethereum/test new file mode 100755 index 000000000..703a95d66 --- /dev/null +++ b/scripts/ethereum/test @@ -0,0 +1,70 @@ +#!/bin/bash +# Test Ethereum contracts with Hardhat +# +# Example: +# +# scripts/ethereum/test -f +# +# Further information: +# See https://hardhat.org/hardhat-network/docs/overview +# + +# Set RPC URL bases +ethereum_mainnet=https://eth-mainnet.g.alchemy.com/v2 +ethereum_testnet=https://eth-testnet.g.alchemy.com/v2 + +# Get variables from root .env +export $(xargs < .env) + +# Set default profile +profile="consensus-networks-dev" + +if [ ${PROFILE+x} ]; then + echo "PROFILE is set to '$PROFILE'" + profile=$PROFILE +else + export PROFILE="$profile" + echo "PROFILE is not set, using default profile '$PROFILE'" +fi + +# Get args +while getopts :f: flag +do + case "${flag}" in + f) fork=${OPTARG};; + esac +done + +# Default to mainnet if fork is set vaguely +if [ "$fork" = true ]; then + fork=mainnet +fi + +# Get the bip39 seed from AWS +seed_secret_id=consensus-networks-bip39-seed +seed=$(aws secretsmanager get-secret-value \ +--secret-id $seed_secret_id \ +--query SecretString \ +--output text \ +--profile $profile) + +# Set the shared bip39 seed +export BIP39_SEED="$seed" +echo "Your mnemonic is $BIP39_SEED" + +if [ -n "$fork" ]; then + # Get the RPC API key from AWS + rpc_secret_id=consensus-networks-ethereum-$fork + rpc_key=$(aws secretsmanager get-secret-value \ + --secret-id $rpc_secret_id \ + --query SecretString \ + --output text \ + --profile $profile) + + echo "⛓ Testing ethereum contracts with $fork fork" + export ETHEREUM_FORK_RPC="https://eth-$fork.g.alchemy.com/v2/$rpc_key" +else + echo "⛓ Testing ethereum contracts without fork" +fi + +npm run test:contracts --workspace @casimir/ethereum \ No newline at end of file diff --git a/scripts/ledger/compile b/scripts/ledger/compile index fa6d85aa2..0498b4366 100755 --- a/scripts/ledger/compile +++ b/scripts/ledger/compile @@ -29,7 +29,7 @@ echo "🔨 Building $app app for ledger" cd $resource_path/app-$app docker pull ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder docker tag ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder ledger-app-builder -docker run --rm -v "$pwd:/app" ledger-app-builder sh -c "make clean && make && exit" +docker run --rm -v "$(pwd):/app" ledger-app-builder sh -c "make clean && make && exit" # Copy app to speculos apps folder echo "📲 Copying $app app to speculos apps folder" diff --git a/scripts/ledger/emulate b/scripts/ledger/emulate index 0967563dc..7c605c676 100755 --- a/scripts/ledger/emulate +++ b/scripts/ledger/emulate @@ -56,7 +56,6 @@ cd $resource_path/speculos # Secret ID is just the name or ARN ledger_seed_secret_id=consensus-networks-ledger-seed -echo "🤫 Getting $ledger_seed_secret_id for $profile" # Get the secret from AWS ledger_seed=$(aws secretsmanager get-secret-value \ diff --git a/scripts/local/dev b/scripts/local/dev index a8c729473..7273dcced 100755 --- a/scripts/local/dev +++ b/scripts/local/dev @@ -1,5 +1,5 @@ #!/bin/bash -# Run an application dev server +# Run a Casimir dev server # # Example: # @@ -11,30 +11,98 @@ # Configure and expose variables source scripts/aws/configure + +# Set RPC URL bases +ethereum_mainnet=https://eth-mainnet.g.alchemy.com/v2 +ethereum_testnet=https://eth-testnet.g.alchemy.com/v2 + +# Set the stage export PUBLIC_STAGE=${STAGE} +# Secret ID is just the name or ARN +seed_secret_id=consensus-networks-bip39-seed + +# Get the secret from AWS +seed=$(aws secretsmanager get-secret-value \ +--secret-id $seed_secret_id \ +--query SecretString \ +--output text \ +--profile $profile) + +# Set the shared bip39 seed +export BIP39_SEED="$seed" + # Get args -while getopts :a:m:s: flag +while getopts :a:f:m:n:s:t: flag do case "${flag}" in a) app=${OPTARG};; + f) fork=${OPTARG};; m) mock=${OPTARG};; + n) network=${OPTARG};; s) speculos=${OPTARG};; + t) tunnel=${OPTARG};; esac done +# Default to mainnet if fork is set vaguely +if [ "$fork" = true ]; then + fork=mainnet +fi + +# Default to mainnet if network is set vaguely +if [ "$network" = true ]; then + network=mainnet +fi + +commands=() + if [ "$app" == "landing" ]; then services="users" else # Default app app="web" + chains="ethereum" services="" + + # Loop over comma-separated string of chains + IFS=',' read -r -a chain_list <<< "$chains" + + for chain in "${chain_list[@]}" + do + # Expose RPC URL directly if network is set to mainnet or testnet + if [ -n "$network" ]; then + # Get the RPC API key from AWS + rpc_secret_id=consensus-networks-$chain-$network + rpc_key=$(aws secretsmanager get-secret-value \ + --secret-id $rpc_secret_id \ + --query SecretString \ + --output text \ + --profile $profile) + + CHAIN=$(echo $chain | tr '[:lower:]' '[:upper:]') + rpc_base=${chain}_${network} + export "PUBLIC_${CHAIN}_RPC"="${!rpc_base}/$rpc_key" + else + # Pass fork or network to chain-specific script + commands+=("npm run dev:$chain --fork=$fork") + fi + done + + # Set project-wide contracts for local (default) chain + if [ -z "$network" ]; then + export PUBLIC_SSV_ADDRESS="0x967Ada0ed736FC6916dABe7f0193BAb811C74f50" + + # Tunnel local (default) chain networks if specified + if [ -n "$tunnel" ]; then + export LOCAL_TUNNEL="$tunnel" + fi + fi fi -commands=("npm run dev --workspace @casimir/$app") +commands+=("npm run dev --workspace @casimir/$app") if [ -n "$mock" ]; then - # Loop over comma-separated string of services IFS=',' read -r -a service_list <<< "$services" port=3999 diff --git a/services/crawler/src/index.ts b/services/crawler/src/index.ts index 77a715215..047b73d55 100644 --- a/services/crawler/src/index.ts +++ b/services/crawler/src/index.ts @@ -1,21 +1,23 @@ -import { EventTableColumn } from '@casimir/data' -import {IotexNetworkType, IotexService, newIotexService} from './providers/Iotex' -import { EthereumService, newEthereumService } from './providers/Ethereum' +import { EventTableSchema } from '@casimir/data' +import {IotexNetworkType, IotexService, IotexServiceOptions, newIotexService} from './providers/Iotex' +import {EthereumService, EthereumServiceOptions, newEthereumService} from './providers/Ethereum' import { queryAthena, uploadToS3 } from '@casimir/helpers' +import * as fs from "fs"; export enum Chain { - Iotex = 'iotex', - Ethereum = 'ethereum' + Ethereum = 'ethereum', + Iotex = 'iotex' } export enum Provider { Casimir = 'casimir', } -export const defaultEventBucket = 'casimir-etl-event-bucket-dev' +export const eventOutputBucket = 'casimir-etl-event-bucket-dev' export interface CrawlerConfig { chain: Chain + options?: IotexServiceOptions | EthereumServiceOptions output?: `s3://${string}` verbose?: boolean } @@ -30,7 +32,11 @@ class Crawler { async setup(): Promise { if (this.config.chain === Chain.Ethereum) { - this.service = await newEthereumService({ url: 'http://localhost:8545'}) + try { + this.service = await newEthereumService({ url: this.config?.options?.url || process.env.PUBLIC_ETHEREUM_RPC_URL || 'http://localhost:8545' }) + } catch (err) { + throw new Error(`failed to setup ethereum service: ${err}`) + } return } @@ -41,7 +47,7 @@ class Crawler { throw new Error('InvalidChain: chain is not supported') } - async getLastProcessedEvent(): Promise { + async getLastProcessedEvent(): Promise { const event = await queryAthena(`SELECT * FROM "casimir_etl_database_dev"."casimir_etl_event_table_dev" where chain = '${this.config.chain}' ORDER BY height DESC limit 1`) if (event !== null && event.length === 1) { @@ -53,7 +59,6 @@ class Crawler { async start(): Promise { if (this.service instanceof EthereumService) { const lastEvent = await this.getLastProcessedEvent() - const last = lastEvent !== null ? lastEvent.height : 0 const start = parseInt(last.toString()) + 1 @@ -63,16 +68,16 @@ class Crawler { const current = await this.service.getCurrentBlock() - for (let i = start as number; i < current.number; i++) { + for (let i = start; i < current.number; i++) { const { events, blockHash } = await this.service.getEvents(i) - const ndjson = events.map((e: EventTableColumn) => JSON.stringify(e)).join('\n') + const ndjson = events.map((e: Partial) => JSON.stringify(e)).join('\n') await uploadToS3({ - bucket: defaultEventBucket, + bucket: eventOutputBucket, key: `${blockHash}-event.json`, data: ndjson }).finally(() => { if (this.config.verbose) { - console.log(`uploaded ${events.length} event at height ${i}`) + console.log(`uploaded events for block ${blockHash}`) } }) } @@ -94,15 +99,15 @@ class Crawler { for (let i = start; i < currentHeight; i++) { const { hash, events } = await this.service.getEvents(i) - const ndjson = events.map((e: EventTableColumn) => JSON.stringify(e)).join('\n') + const ndjson = events.map((e: Partial) => JSON.stringify(e)).join('\n') await uploadToS3({ - bucket: defaultEventBucket, + bucket: eventOutputBucket, key: `${hash}-event.json`, data: ndjson }).finally(() => { if (this.config.verbose) { - console.log(`uploaded ${events.length} event at height ${i}`) + console.log(`uploaded events for block ${hash}`) } }) } @@ -113,9 +118,10 @@ class Crawler { export async function crawler (config: CrawlerConfig): Promise { const chainCrawler = new Crawler({ - chain: config.chain, - output: config?.output ?? `s3://${defaultEventBucket}`, - verbose: config?.verbose ?? false + chain: config.chain, + options: config.options, + output: config?.output ?? `s3://${eventOutputBucket}`, + verbose: config?.verbose ?? false }) await chainCrawler.setup() diff --git a/services/crawler/src/providers/Ethereum.ts b/services/crawler/src/providers/Ethereum.ts index ba835e7ac..fe6d4f135 100644 --- a/services/crawler/src/providers/Ethereum.ts +++ b/services/crawler/src/providers/Ethereum.ts @@ -1,10 +1,18 @@ import { ethers } from 'ethers' -import { EventTableColumn } from '@casimir/data' -import {Chain, Provider} from '../index' +import { EventTableSchema } from '@casimir/data' +import { Chain, Provider } from '../index' + +const ContractsOfInterest = { + BeaconDepositContract: { + hash: '0x00000000219ab540356cBB839Cbe05303d7705Fa', + abi: ['event DepositEvent (bytes pubkey, bytes withdrawal_credentials, bytes amount, bytes signature, bytes index)'] + } +} export type EthereumServiceOptions = { url: string network?: string + chainId?: number } export class EthereumService { @@ -15,48 +23,100 @@ export class EthereumService { this.chain = Chain.Ethereum this.network = opt.network || 'mainnet' this.provider = new ethers.providers.JsonRpcProvider({ - url: opt.url || 'http://localhost:8545', + url: opt.url, + }) + } + + parseLog(log: ethers.providers.Log): Record { + const abi = ContractsOfInterest[log.address as keyof typeof ContractsOfInterest].abi + const contractInterface = new ethers.utils.Interface(abi) + const parsedLog = contractInterface.parseLog(log) + const args = parsedLog.args.slice(-1 * parsedLog.eventFragment.inputs.length) + + const input: Record = {} + + parsedLog.eventFragment.inputs.forEach((key, index) => { + input[key.name] = args[index] }) + return input } - async getEvents(height: number): Promise<{ blockHash: string, events: EventTableColumn[] }> { - const events: EventTableColumn[] = [] + async getEvents(height: number): Promise<{ blockHash: string, events: Partial[] }> { + const events: Partial[] = [] const block = await this.provider.getBlockWithTransactions(height) - events.push({ + const blockEvent = { chain: this.chain, network: this.network, provider: Provider.Casimir, type: 'block', + height: block.number, + block: block.hash, created_at: new Date(block.timestamp * 1000).toISOString().replace('T', ' ').replace('Z', ''), address: block.miner, - height: block.number, - to_address: '', - candidate: '', - duration: 0, - candidate_list: [], - amount: '0', - auto_stake: false, - }) + gasUsed: block.gasUsed.toNumber(), + gasLimit: block.gasLimit.toNumber(), + baseFee: block.baseFeePerGas?.toNumber(), + // burntFee: parseFloat(ethers.utils.formatEther(ethers.BigNumber.from(block.gasUsed).mul(block.baseFeePerGas as ethers.BigNumber))), + } - if (block.transactions.length > 0) { - for (const tx of block.transactions) { - events.push({ - chain: this.chain, - network: this.network, - provider: Provider.Casimir, - type: tx.type === 0 ? 'transfer' : 'contract', - created_at: new Date(block.timestamp * 1000).toISOString(), - address: tx.from, - height: block.number, - to_address: tx.to || '', - candidate: '', - candidate_list: [], - duration: 0, - amount: tx.value.toString(), - auto_stake: false, - }) + events.push(blockEvent) + + if (block.transactions.length === 0) { + return { blockHash: block.hash, events } + } + + for await (const tx of block.transactions) { + const txEvent = { + chain: this.chain, + network: this.network, + provider: Provider.Casimir, + type: 'transaction', + block: block.hash, + transaction: tx.hash, + created_at: new Date(block.timestamp * 1000).toISOString().replace('T', ' ').replace('Z', ''), + address: tx.from, + to_address: tx.to, + height: block.number, + amount: ethers.utils.formatEther(tx.value.toString()), + gasUsed: block.gasUsed.toNumber(), + gasLimit: block.gasLimit.toNumber(), + baseFee: block.baseFeePerGas?.toNumber(), + // burntFee: parseFloat(ethers.utils.formatEther(ethers.BigNumber.from(block.gasUsed).mul(block.baseFeePerGas as ethers.BigNumber))), + } + + events.push(txEvent) + + const receipts = await this.provider.getTransactionReceipt(tx.hash) + + if (receipts.logs.length === 0) { + continue + } + + for (const log of receipts.logs) { + if (log.address in ContractsOfInterest) { + const parsedLog = this.parseLog(log) + const deposit = { + chain: this.chain, + network: this.network, + provider: Provider.Casimir, + type: 'deposit', + block: block.hash, + transaction: log.transactionHash, + created_at: new Date(block.timestamp * 1000).toISOString().replace('T', ' ').replace('Z', ''), + address: log.address, + height: block.number, + to_address: tx.to || '', + amount: parsedLog.amount, + gasUsed: block.gasUsed.toNumber(), + gasLimit: block.gasLimit.toNumber(), + baseFee: block.baseFeePerGas?.toNumber(), + // burntFee: parseFloat(ethers.utils.formatEther(ethers.BigNumber.from(block.gasUsed).mul(block.baseFeePerGas as ethers.BigNumber))), + } + events.push(deposit) + continue + } } } return { @@ -69,17 +129,13 @@ export class EthereumService { return await this.provider.getBlock(height) } - async getBlock(num: number): Promise { + async getBlockWithTx(num: number): Promise { return await this.provider.getBlockWithTransactions(num) } - async getTransaction(tx: string): Promise { - return await this.provider.getTransaction(tx) - } - on(event:string, cb: (block: ethers.providers.Block) => void): void { this.provider.on('block', async (blockNumber: number) => { - const block = await this.getBlock(blockNumber) + const block = await this.getBlockWithTx(blockNumber) cb(block) }) } diff --git a/services/crawler/src/providers/Iotex.ts b/services/crawler/src/providers/Iotex.ts index cb0f96979..f085f69aa 100644 --- a/services/crawler/src/providers/Iotex.ts +++ b/services/crawler/src/providers/Iotex.ts @@ -7,7 +7,7 @@ import { IStreamBlocksResponse, } from 'iotex-antenna/lib/rpc-method/types' import { Opts } from 'iotex-antenna/lib/antenna' -import { EventTableColumn } from '@casimir/data' +import { EventTableSchema } from '@casimir/data' import {Chain, Provider} from '../index' export enum IotexNetworkType { @@ -34,7 +34,7 @@ export enum IotexActionType { StakeChangeCandidate = 'stakeChangeCandidate', } -export type IotexOptions = Opts & { +export type IotexServiceOptions = Opts & { url: string network: IotexNetworkType } @@ -44,7 +44,7 @@ export class IotexService { network: IotexNetworkType provider: Antenna chainId: number - constructor (opt: IotexOptions) { + constructor (opt: IotexServiceOptions) { this.chain = Chain.Iotex this.network = opt.network || IotexNetworkType.Mainnet this.chainId = IotexNetworkType.Mainnet ? 4689 : 4690 @@ -63,14 +63,68 @@ export class IotexService { return type as IotexActionType } - async getEvents(height: number): Promise<{ hash: string, events: EventTableColumn[]}> { - const events: EventTableColumn[] = [] + async getBlocks(start: number, count: number): Promise { + if (start < 0 || count < 0) { + throw new Error('start and count must be greater than 0') + } + + if (start === 0) { + start = 1 + } + + if (count === 0) { + count = 100 + } + + const blocks = await this.provider.iotx.getBlockMetas({ byIndex: { start: start, count: count } }) + + return blocks + } + + async getBlockActions (index: number, count: number): Promise { + const actions = await this.provider.iotx.getActions({ + byIndex: { + start: index, + count: count + } + }) + return actions.actionInfo + } + + async getCurrentBlock(): Promise { + const { chainMeta } = await this.provider.iotx.getChainMeta({ + includePendingActions: false + }) + + const block = await this.provider.iotx.getBlockMetas({ byIndex: { start: parseInt(chainMeta.height), count: 1 } }) + return block + } + + async readableBlockStream (): Promise> { + const stream = await this.provider.iotx.streamBlocks({ + start: 1 + }) + return stream + } + + on(event: string, callback: (data: IStreamBlocksResponse) => void): void { + this.provider.iotx.streamBlocks({ + start: 1 + }).on('data', (data: IStreamBlocksResponse) => { + callback(data) + }) + } + + async getEvents(height: number): Promise<{ hash: string, events: Partial[]}> { + const events: Partial[] = [] const block = await this.provider.iotx.getBlockMetas({byIndex: {start: height, count: 1}}) const blockMeta = block.blkMetas[0] - events.push({ + const blockEvent = { + block: blockMeta.hash, + transaction: "", chain: this.chain, network: this.network, provider: Provider.Casimir, @@ -79,12 +133,14 @@ export class IotexService { address: blockMeta.producerAddress, height: blockMeta.height, to_address: '', - candidate: '', + validator: '', duration: 0, - candidate_list: [], - amount: '0', - auto_stake: false, - }) + validator_list: [], + amount: 0, + auto_stake: false + } + + const numOfActions = block.blkMetas[0].numActions @@ -98,7 +154,7 @@ export class IotexService { const actionType = this.deduceActionType(action) if (actionType === null) return - const actionEvent: Partial = { + const actionEvent: Partial = { chain: this.chain, network: this.network, provider: Provider.Casimir, @@ -107,70 +163,70 @@ export class IotexService { address: blockMeta.producerAddress, height: blockMeta.height, to_address: '', - candidate: '', + validator: '', duration: 0, - candidate_list: [], + validator_list: [], amount: '0', auto_stake: false, } if (actionType === IotexActionType.transfer && actionCore.transfer) { - actionEvent.amount = actionCore.transfer.amount + actionEvent.amount = parseInt(actionCore.transfer.amount).toString() actionEvent.to_address = actionCore.transfer.recipient - events.push(actionEvent as EventTableColumn) + events.push(actionEvent as EventTableSchema) } if (actionType === IotexActionType.stakeCreate && actionCore.stakeCreate) { actionEvent.amount = actionCore.stakeCreate.stakedAmount - actionEvent.candidate = actionCore.stakeCreate.candidateName + actionEvent.validator = actionCore.stakeCreate.candidateName actionEvent.auto_stake = actionCore.stakeCreate.autoStake actionEvent.duration = actionCore.stakeCreate.stakedDuration - events.push(actionEvent as EventTableColumn) + events.push(actionEvent as EventTableSchema) } if (actionType === IotexActionType.stakeAddDeposit && actionCore.stakeAddDeposit) { actionEvent.amount = actionCore.stakeAddDeposit.amount - events.push(actionEvent as EventTableColumn) + events.push(actionEvent as EventTableSchema) } if (actionType === IotexActionType.execution && actionCore.execution) { actionEvent.amount = actionCore.execution.amount - events.push(actionEvent as EventTableColumn) + events.push(actionEvent as EventTableSchema) } if (actionType === IotexActionType.putPollResult && actionCore.putPollResult) { if (actionCore.putPollResult.candidates) { - actionEvent.candidate_list = actionCore.putPollResult.candidates.candidates.map(c => c.address) + actionEvent.validator_list = actionCore.putPollResult.candidates.candidates.map(c => c.address) } if (actionCore.putPollResult.height) { actionEvent.height = typeof actionCore.putPollResult.height === 'string' ? parseInt(actionCore.putPollResult.height) : actionCore.putPollResult.height } - events.push(actionEvent as EventTableColumn) + events.push(actionEvent as EventTableSchema) } if (actionType === IotexActionType.StakeChangeCandidate && actionCore.stakeChangeCandidate) { - actionEvent.candidate = actionCore.stakeChangeCandidate.candidateName - events.push(actionEvent as EventTableColumn) + actionEvent.validator = actionCore.stakeChangeCandidate.candidateName + events.push(actionEvent as EventTableSchema) } if (actionType === IotexActionType.stakeRestake && actionCore.stakeRestake) { actionEvent.duration = actionCore.stakeRestake.stakedDuration actionEvent.auto_stake = actionCore.stakeRestake.autoStake - events.push(actionEvent as EventTableColumn) + events.push(actionEvent as EventTableSchema) } if (actionType === IotexActionType.candidateRegister && actionCore.candidateRegister) { actionEvent.amount = actionCore.candidateRegister.stakedAmount actionEvent.duration = actionCore.candidateRegister.stakedDuration actionEvent.auto_stake = actionCore.candidateRegister.autoStake - actionEvent.candidate = actionCore.candidateRegister.candidate.name - events.push(actionEvent as EventTableColumn) + actionEvent.validator = actionCore.candidateRegister.candidate.name + events.push(actionEvent as EventTableSchema) } if (actionType === IotexActionType.candidateUpdate && actionCore.candidateUpdate) { - actionEvent.candidate = actionCore.candidateUpdate.name - events.push(actionEvent as EventTableColumn) + actionEvent.validator = actionCore.candidateUpdate.name + events.push(actionEvent as EventTableSchema) } if (actionType === IotexActionType.claimFromRewardingFund && actionCore.claimFromRewardingFund) { @@ -179,7 +235,7 @@ export class IotexService { if (actionType === IotexActionType.depositToRewardingFund && actionCore.depositToRewardingFund) { actionEvent.amount = actionCore.depositToRewardingFund.amount - events.push(actionEvent as EventTableColumn) + events.push(actionEvent as EventTableSchema) } // if (actionType === IotexActionType.grantReward) {} @@ -187,66 +243,14 @@ export class IotexService { // if (actionType === IotexActionType.stakeWithdraw) {} return actionEvent }) - events.push(...blockActions as EventTableColumn[]) + events.push(...blockActions as EventTableSchema[]) } return { hash: blockMeta.hash, events } } - - async getBlocks(start: number, count: number): Promise { - if (start < 0 || count < 0) { - throw new Error('start and count must be greater than 0') - } - - if (start === 0) { - start = 1 - } - - if (count === 0) { - count = 100 - } - - const blocks = await this.provider.iotx.getBlockMetas({ byIndex: { start: start, count: count } }) - - return blocks - } - - async getBlockActions (index: number, count: number): Promise { - const actions = await this.provider.iotx.getActions({ - byIndex: { - start: index, - count: count - } - }) - return actions.actionInfo - } - - async getCurrentBlock(): Promise { - const { chainMeta } = await this.provider.iotx.getChainMeta({ - includePendingActions: false - }) - - const block = await this.provider.iotx.getBlockMetas({ byIndex: { start: parseInt(chainMeta.height), count: 1 } }) - return block - } - - async readableBlockStream (): Promise> { - const stream = await this.provider.iotx.streamBlocks({ - start: 1 - }) - return stream - } - - on(event: string, callback: (data: IStreamBlocksResponse) => void): void { - this.provider.iotx.streamBlocks({ - start: 1 - }).on('data', (data: IStreamBlocksResponse) => { - callback(data) - }) - } } -export function newIotexService (opt: IotexOptions): IotexService { +export function newIotexService (opt: IotexServiceOptions): IotexService { return new IotexService(opt) } \ No newline at end of file diff --git a/services/crawler/test/crawler.test.ts b/services/crawler/test/crawler.test.ts index 1f4c106c5..e2decfc17 100644 --- a/services/crawler/test/crawler.test.ts +++ b/services/crawler/test/crawler.test.ts @@ -1,30 +1,30 @@ import { crawler } from '../src/index' import { Chain } from '../src/index' -test('init crawler for iotex', async () => { - const iotex = await crawler({ - chain: Chain.Iotex, +jest.setTimeout(1000000) + +test('init crawler for ethereum', async () => { + const eth = await crawler({ + chain: Chain.Ethereum, verbose: true }) - await iotex.start() - expect(iotex.service).not.toBe(null) + await eth.start() + expect(eth.service).not.toBe(null) }) -jest.setTimeout(1000000) - -// test('init crawler for ethereum', async () => { -// const eth = await crawler({ -// chain: Chain.Ethereum, +// test('init crawler for iotex', async () => { +// const iotex = await crawler({ +// chain: Chain.Iotex, // verbose: true // }) -// await eth.start() -// expect(eth.service).not.toBe(null) +// await iotex.start() +// expect(iotex.service).not.toBe(null) // }) // test('query athena thru service', async () => { // const supercrawler = await crawler({ // chain: Chain.Ethereum, -// verbose: true +// verbose: true, // }) // // const lastBlock = await supercrawler.getLastProcessedEvent()