diff --git a/.flowconfig b/.flowconfig index bf1f2a4aa..6d96fb775 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,5 +1,6 @@ [ignore] /lib/.* +/node_modules/@rollup/ [include] @@ -9,4 +10,4 @@ node_modules/@solana/web3.js/module.flow.js [lints] [options] -esproposal.optional_chaining=enable \ No newline at end of file +esproposal.optional_chaining=enable diff --git a/.gitignore b/.gitignore index 1b9048c8c..cce8a27c0 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /coverage /intermediate /lib +/src/polkadot/sdk-bundle.js # Package managers: node_modules/ diff --git a/package.json b/package.json index 88e93a862..832be7241 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "README.md" ], "scripts": { - "build": "rimraf lib && sucrase ./src -q -d ./lib -t flow && webpack && npm run checkpoints", + "build": "rimraf lib && rollup -c && sucrase ./src -q -d ./lib -t flow && webpack && npm run checkpoints", "checkpoints": "cp -R ./src/zcash/zecCheckpoints lib/zcash/", "fix": "npm run lint -- --fix", "flow": "flow", @@ -68,10 +68,11 @@ "ethereumjs-util": "5.2.0", "hash-base": "3.0.4", "hdkey": "1.1.1", + "inherits": "2.0.4", "long": "4.0.0", "process-nextick-args": "2.0.0", "randombytes": "2.1.0", - "readable-stream": "2.3.6", + "readable-stream": "3.6.0", "regenerator-runtime": "0.13.4", "ripemd160": "2.0.2", "safe-buffer": "5.2.0", @@ -116,6 +117,11 @@ "@babel/preset-env": "^7.9.0", "@babel/preset-flow": "^7.9.0", "@babel/runtime": "^7.9.2", + "@polkadot/keyring": "^9.5.1", + "@polkadot/util-crypto": "^9.5.1", + "@rollup/plugin-commonjs": "^22.0.0", + "@rollup/plugin-node-resolve": "^13.3.0", + "@substrate/txwrapper-polkadot": "^3.1.3", "babel-eslint": "^10.1.0", "babel-loader": "^8.1.0", "chai": "^4.2.0", @@ -137,6 +143,7 @@ "prettier": "^2.2.0", "react-native-zcash": "^0.2.2", "rimraf": "^3.0.2", + "rollup": "^2.75.7", "sucrase": "^3.13.0", "updot": "^1.1.7", "webpack": "^4.42.1", diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 000000000..34d8ef690 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,19 @@ +import commonJs from '@rollup/plugin-commonjs' +import nodeResolve from '@rollup/plugin-node-resolve' + +export default { + external: ['bn.js'], + input: './src/polkadot/sdk-bundle.js.flow', + output: { + file: './src/polkadot/sdk-bundle.js', + format: 'cjs' + }, + plugins: [ + commonJs(), + nodeResolve({ + preferBuiltins: true, + // Use the browser build to avoid advanced features: + exportConditions: ['browser'] + }) + ] +} diff --git a/src/binance/bnbEngine.js b/src/binance/bnbEngine.js index f73d816bb..e7c3ca3b2 100644 --- a/src/binance/bnbEngine.js +++ b/src/binance/bnbEngine.js @@ -132,19 +132,6 @@ export class BinanceEngine extends CurrencyEngine { } } - updateBalance(tk: string, balance: string) { - if (typeof this.walletLocalData.totalBalances[tk] === 'undefined') { - this.walletLocalData.totalBalances[tk] = '0' - } - if (!bns.eq(balance, this.walletLocalData.totalBalances[tk])) { - this.walletLocalData.totalBalances[tk] = balance - this.warn(`${tk}: token Address balance: ${balance}`) - this.currencyEngineCallbacks.onBalanceChanged(tk, balance) - } - this.tokenCheckBalanceStatus[tk] = 1 - this.updateOnAddressesChecked() - } - async checkAccountInnerLoop() { const address = this.walletLocalData.publicKey diff --git a/src/common/engine.js b/src/common/engine.js index 341c2b2c2..257f43350 100644 --- a/src/common/engine.js +++ b/src/common/engine.js @@ -526,6 +526,19 @@ export class CurrencyEngine { this.walletLocalDataDirty = true } + updateBalance(tk: string, balance: string) { + if (this.walletLocalData.totalBalances[tk] == null) { + this.walletLocalData.totalBalances[tk] = '0' + } + if (!bns.eq(balance, this.walletLocalData.totalBalances[tk])) { + this.walletLocalData.totalBalances[tk] = balance + this.warn(`${tk}: token Address balance: ${balance}`) + this.currencyEngineCallbacks.onBalanceChanged(tk, balance) + } + this.tokenCheckBalanceStatus[tk] = 1 + this.updateOnAddressesChecked() + } + updateTransaction( currencyCode: string, edgeTransaction: EdgeTransaction, diff --git a/src/eos/eosEngine.js b/src/eos/eosEngine.js index 7af917327..04c70e25c 100644 --- a/src/eos/eosEngine.js +++ b/src/eos/eosEngine.js @@ -857,32 +857,11 @@ export class EosEngine extends CurrencyEngine { `Received balance for unsupported currencyCode: ${currencyCode}` ) } - - if (!this.walletLocalData.totalBalances[currencyCode]) { - this.walletLocalData.totalBalances[currencyCode] = '0' - } - if ( - !bns.eq( - this.walletLocalData.totalBalances[currencyCode], - nativeAmount - ) - ) { - this.walletLocalData.totalBalances[currencyCode] = - nativeAmount - this.walletLocalDataDirty = true - this.currencyEngineCallbacks.onBalanceChanged( - currencyCode, - nativeAmount - ) - this.warn( - `Updated ${currencyCode} balance ${nativeAmount}` - ) - } + this.updateBalance(currencyCode, nativeAmount) } } } } - this.tokenCheckBalanceStatus[token.currencyCode] = 1 } } } diff --git a/src/ethereum/ethEngine.js b/src/ethereum/ethEngine.js index ef0f77eed..514df9e90 100644 --- a/src/ethereum/ethEngine.js +++ b/src/ethereum/ethEngine.js @@ -478,19 +478,6 @@ export class EthereumEngine extends CurrencyEngine { } } - updateBalance(tk: string, balance: string) { - if (typeof this.walletLocalData.totalBalances[tk] === 'undefined') { - this.walletLocalData.totalBalances[tk] = '0' - } - if (!bns.eq(balance, this.walletLocalData.totalBalances[tk])) { - this.walletLocalData.totalBalances[tk] = balance - this.warn(`${tk}: token Address balance: ${balance}`) - this.currencyEngineCallbacks.onBalanceChanged(tk, balance) - } - this.tokenCheckBalanceStatus[tk] = 1 - this.updateOnAddressesChecked() - } - processUnconfirmedTransaction(tx: Object) { const fromAddress = '0x' + tx.inputs[0].addresses[0] const toAddress = '0x' + tx.outputs[0].addresses[0] diff --git a/src/fio/fioEngine.js b/src/fio/fioEngine.js index bcd57e530..44560bb54 100644 --- a/src/fio/fioEngine.js +++ b/src/fio/fioEngine.js @@ -463,20 +463,6 @@ export class FioEngine extends CurrencyEngine { } } - updateBalance(tk: string, balance: string) { - if (typeof this.walletLocalData.totalBalances[tk] === 'undefined') { - this.walletLocalData.totalBalances[tk] = '0' - } - if (!bns.eq(balance, this.walletLocalData.totalBalances[tk])) { - this.walletLocalData.totalBalances[tk] = balance - this.localDataDirty() - this.warn(`${tk}: token Address balance: ${balance}`) - this.currencyEngineCallbacks.onBalanceChanged(tk, balance) - } - this.tokenCheckBalanceStatus[tk] = 1 - this.updateOnAddressesChecked() - } - checkUnStakeTx(otherParams: TxOtherParams): boolean { return ( otherParams.name === diff --git a/src/hedera/hederaEngine.js b/src/hedera/hederaEngine.js index 2fcdd17f3..e84b0b881 100644 --- a/src/hedera/hederaEngine.js +++ b/src/hedera/hederaEngine.js @@ -239,7 +239,7 @@ export class HederaEngine extends CurrencyEngine { } } - async updateBalance(): Promise { + async queryBalance(): Promise { if (this.accountId == null) { return } @@ -249,14 +249,7 @@ export class HederaEngine extends CurrencyEngine { .execute(this.client) const nativeBalance: string = hbarBalance.asTinybar().toString() - this.walletLocalData.totalBalances[this.currencyInfo.currencyCode] = - nativeBalance - this.tokenCheckBalanceStatus[this.currencyInfo.currencyCode] = 1 - this.updateOnAddressesChecked() - this.currencyEngineCallbacks.onBalanceChanged( - this.currencyInfo.currencyCode, - nativeBalance - ) + this.updateBalance(this.currencyInfo.currencyCode, nativeBalance) } async getNewTransactions() { @@ -378,7 +371,7 @@ export class HederaEngine extends CurrencyEngine { } this.addToLoop('getNewTransactions', 1000) - this.addToLoop('updateBalance', 5000) + this.addToLoop('queryBalance', 5000) this.addToLoop('checkAccountCreationStatus', 5000) await super.startEngine() diff --git a/src/index.js b/src/index.js index 4fb4ca4bd..beb045c86 100644 --- a/src/index.js +++ b/src/index.js @@ -10,6 +10,7 @@ import { eosPlugins } from './eos/index.js' import { ethPlugins } from './ethereum/ethInfos.js' import { makeFioPlugin } from './fio/fioPlugin' import { makeHederaPlugin } from './hedera/hederaInfo.js' +import { makePolkadotPlugin } from './polkadot/polkadotInfo.js' import { makeSolanaPlugin } from './solana/solanaInfo.js' import { makeStellarPlugin } from './stellar/stellarPlugin.js' import { makeTezosPlugin } from './tezos/tezosPlugin.js' @@ -19,15 +20,16 @@ import { makeZcashPlugin } from './zcash/zecPlugin.js' const plugins = { ...eosPlugins, ...ethPlugins, + binance: makeBinancePlugin, fio: makeFioPlugin, - zcash: makeZcashPlugin, + hedera: makeHederaPlugin, + polkadot: makePolkadotPlugin, // "ripple" is network name. XRP is just an asset: ripple: makeRipplePlugin, + solana: makeSolanaPlugin, stellar: makeStellarPlugin, tezos: makeTezosPlugin, - binance: makeBinancePlugin, - hedera: makeHederaPlugin, - solana: makeSolanaPlugin + zcash: makeZcashPlugin } if ( diff --git a/src/polkadot/polkadotEngine.js b/src/polkadot/polkadotEngine.js new file mode 100644 index 000000000..aa479c314 --- /dev/null +++ b/src/polkadot/polkadotEngine.js @@ -0,0 +1,431 @@ +// @flow + +// import { Keyring } from '@polkadot/keyring' +// import { +// construct, +// createMetadata, +// deriveAddress, +// getRegistry, +// methods, +// PolkadotSS58Format +// } from '@substrate/txwrapper-polkadot' +import { add, div, gt, mul } from 'biggystring' +import { + type EdgeSpendInfo, + type EdgeTransaction, + type EdgeWalletInfo, + type JsonObject, + InsufficientFundsError +} from 'edge-core-js/types' + +import { CurrencyEngine } from '../common/engine.js' +import { + asyncWaterfall, + cleanTxLogs, + decimalToHex, + getDenomInfo, + getOtherParams, + isHex +} from '../common/utils.js' +import { PolkadotPlugin } from './polkadotPlugin.js' +import { + type PolkadotOtherData, + type PolkadotSettings, + type SubscanTx, + asBalance, + asBlockheight, + asGetRuntimeVersion, + asSubscanResponse, + asTransactions, + asTransfer +} from './polkadotTypes.js' +import { + construct, + createMetadata, + deriveAddress, + getRegistry, + Keyring, + methods, + PolkadotSS58Format +} from './polkadotUtils' + +const ACCOUNT_POLL_MILLISECONDS = 5000 +const BLOCKCHAIN_POLL_MILLISECONDS = 20000 +const TRANSACTION_POLL_MILLISECONDS = 3000 + +// const { Keyring } = require('@polkadot/keyring') + +export class PolkadotEngine extends CurrencyEngine { + settings: PolkadotSettings + otherData: PolkadotOtherData + + // For transactions: + recentBlockhash: string + nonce: number + metadataRpc: string + transactionVersion: number + specName: string + specVersion: number + + constructor( + currencyPlugin: PolkadotPlugin, + walletInfo: EdgeWalletInfo, + opts: any // EdgeCurrencyEngineOptions + ) { + super(currencyPlugin, walletInfo, opts) + this.settings = currencyPlugin.currencyInfo.defaultSettings.otherSettings + this.recentBlockhash = this.settings.genesisHash + this.nonce = 0 + this.metadataRpc = '' + this.transactionVersion = 0 + } + + async fetchSubscan(endpoint: string, body: JsonObject): Promise { + const options = { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json' + }, + body: JSON.stringify(body) + } + const response = await this.io.fetch( + this.settings.subscanBaseUrl + endpoint, + options + ) + if (!response.ok) { + throw new Error(`Subscan ${endpoint} failed with ${response.status}`) + } + return asSubscanResponse(await response.json()).data + } + + async queryBalance() { + try { + const payload = { key: this.walletInfo.keys.publicKey } + const response = await this.fetchSubscan('/v2/scan/search', payload) + const { balance, nonce } = asBalance(response).account + this.nonce = nonce + const denom = getDenomInfo( + this.currencyInfo, + this.currencyInfo.currencyCode + ) + if (denom == null) return + const nativeBalance = div(balance, denom.multiplier) + this.updateBalance(this.currencyInfo.currencyCode, nativeBalance) + } catch (e) { + this.warn('queryBalance failed with error: ', e) + } + } + + async queryBlockheight() { + try { + const payload = { + row: 1, + page: 0 + } + const response = await this.fetchSubscan('/scan/blocks', payload) + const { block_num: blockheight, hash } = asBlockheight(response).blocks[0] + if (blockheight > this.walletLocalData.blockHeight) { + this.walletLocalData.blockHeight = blockheight + this.walletLocalDataDirty = true + this.currencyEngineCallbacks.onBlockHeightChanged( + this.walletLocalData.blockHeight + ) + } + this.recentBlockhash = hash + } catch (e) { + this.warn('queryBlockheight failed with error: ', e) + } + } + + async fetchPostRPC(method: string, params: any = []) { + const body = { + jsonrpc: '2.0', + id: 1, + method, + params + } + const options = { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json' + }, + body: JSON.stringify(body) + } + + const funcs = this.settings.rpcNodes.map(serverUrl => async () => { + const res = await this.io.fetch(serverUrl, options) + if (!res.ok) { + throw new Error( + `fetchRpc ${options.method} failed error: ${res.status}` + ) + } + return res.json() + }) + + const response = await asyncWaterfall(funcs) + return response.result + } + + async queryChainstate() { + // state_getMetadata + const metadataResponse = await this.fetchPostRPC('state_getMetadata') + if (isHex(metadataResponse)) { + this.metadataRpc = metadataResponse + } else { + this.warn(`Invalid state_getMetadata response ${metadataResponse}`) + } + + // state_getRuntimeVersion + const { specName, specVersion, transactionVersion } = asGetRuntimeVersion( + await this.fetchPostRPC('state_getRuntimeVersion') + ) + this.transactionVersion = transactionVersion + this.specName = specName + this.specVersion = specVersion + } + + async queryFee() {} + + processPolkadotTransaction(tx: SubscanTx) { + const { + from, + to, + success, + hash, + block_num: blockHeight, + block_timestamp: date, + module, + amount, // large denomination + fee // small denomination + } = tx + + // Skip unsuccessful and irrelevant transactions + if (!success || module !== 'balances') return + + const denom = getDenomInfo( + this.currencyInfo, + this.currencyInfo.currencyCode + ) + if (denom == null) return + + const ourReceiveAddresses = [] + + let nativeAmount = mul(amount, denom.multiplier) + if (from === this.walletInfo.keys.publicKey) { + nativeAmount = `-${add(amount, fee)}` + } else { + ourReceiveAddresses.push(to) + } + + const edgeTransaction: EdgeTransaction = { + txid: hash, + date, + currencyCode: this.currencyInfo.currencyCode, + blockHeight, + nativeAmount: nativeAmount, + networkFee: fee, + ourReceiveAddresses, + signedTx: '' + } + this.addTransaction(this.currencyInfo.currencyCode, edgeTransaction) + } + + async queryTransactions() { + let page = 0 + + while (true) { + const payload = { + row: this.settings.subscanQueryLimit, + page, + address: '1REAJ1k691g5Eqqg9gL7vvZCBG7FCCZ8zgQkZWd4va5ESih' + } + const response = await this.fetchSubscan('scan/transfers', payload) + const { count, transfers } = asTransactions(response) + + // If we've already seen all the transfers we don't need to bother processing or page through older ones + if (count === this.otherData.processedTxCount) break + + // Instead of an empty array, a null is returned when there are zero transfers + if (transfers == null) break + + // Process txs (newest first) + transfers.forEach(tx => { + this.otherData.processedTxCount++ + try { + this.processPolkadotTransaction(asTransfer(tx)) + } catch (e) { + const hash = tx != null && typeof tx.hash === 'string' ? tx.hash : '' + this.warn(`Ignoring invalid transfer ${hash}`) + } + }) + + // We've reached the end of the query + if (transfers.length < this.settings.subscanQueryLimit) break + + page++ + } + } + + initOtherData() { + if (this.otherData.processedTxCount == null) { + this.otherData.processedTxCount = 0 + } + } + + // // **************************************************************************** + // // Public methods + // // **************************************************************************** + + async startEngine() { + this.engineOn = true + this.initOtherData() + this.addToLoop('queryBlockheight', BLOCKCHAIN_POLL_MILLISECONDS) + this.addToLoop('queryFee', BLOCKCHAIN_POLL_MILLISECONDS) + this.addToLoop('queryBalance', ACCOUNT_POLL_MILLISECONDS) + this.addToLoop('queryChainstate', BLOCKCHAIN_POLL_MILLISECONDS) + this.addToLoop('queryTransactions', TRANSACTION_POLL_MILLISECONDS) + super.startEngine() + } + + async resyncBlockchain(): Promise { + await this.killEngine() + await this.clearBlockchainCache() + await this.startEngine() + } + + async makeSpend(edgeSpendInfoIn: EdgeSpendInfo): Promise { + const { edgeSpendInfo, currencyCode } = super.makeSpend(edgeSpendInfoIn) + + if (edgeSpendInfo.spendTargets.length !== 1) { + throw new Error('Error: only one output allowed') + } + const publicAddress = edgeSpendInfo.spendTargets[0].publicAddress + const nativeAmount: string = edgeSpendInfo.spendTargets[0].nativeAmount + const nativeNetworkFee = '0' // TODO: + const balance = this.walletLocalData.totalBalances[currencyCode] + const totalTxAmount = add(nativeAmount, nativeNetworkFee) + if (gt(totalTxAmount, balance)) { + throw new InsufficientFundsError() + } + // Create Solana transaction + const registry = getRegistry({ + chainName: this.currencyInfo.displayName, + specName: this.specName, + specVersion: this.specVersion, + metadataRpc: this.metadataRpc + }) + // transfer all you to send entire balance. transferKeepAlive provides some kind of protection from spending all but 1 where the network wil consume the last 1 DOT + const unsignedTx = methods.balances.transferKeepAlive( + { + value: nativeAmount, + dest: publicAddress + }, + { + address: deriveAddress( + new Uint8Array(this.walletInfo.keys.publicKey), + PolkadotSS58Format.polkadot + ), + blockHash: this.recentBlockhash, + blockNumber: decimalToHex(this.walletLocalData.blockHeight.toString()), + eraPeriod: 64, + genesisHash: this.settings.genesisHash, + metadataRpc: this.metadataRpc, + nonce: this.nonce, + specVersion: this.specVersion, + tip: 0, + transactionVersion: this.transactionVersion + }, + { + metadataRpc: this.metadataRpc, + registry: registry, + asCallsOnlyArg: true // this is some kind of space saving flag + } + ) + const otherParams: JsonObject = { + unsignedTx: construct.signingPayload(unsignedTx, { registry }) + } + // // ********************************** + // // Create the unsigned EdgeTransaction + const edgeTransaction: EdgeTransaction = { + txid: '', + date: 0, + currencyCode: '', + blockHeight: 0, + nativeAmount: `-${0}`, + networkFee: '0', + ourReceiveAddresses: [], + signedTx: '', + otherParams + } + + return edgeTransaction + } + + async signTx(edgeTransaction: EdgeTransaction): Promise { + const { unsignedTx } = getOtherParams(edgeTransaction) + + const keyring = new Keyring() + const keypair = keyring.addFromSeed( + new Uint8Array(this.walletInfo.keys[`${this.currencyInfo.pluginId}Key`]) + ) + + const registry = getRegistry({ + chainName: this.currencyInfo.displayName, + specName: this.specName, + specVersion: this.specVersion, + metadataRpc: this.metadataRpc + }) + const signingPayload = construct.signingPayload(unsignedTx, { registry }) + registry.setMetadata(createMetadata(registry, this.metadataRpc)) + const signature = registry + .createType('ExtrinsicPayload', signingPayload, { + version: 4 // EXTRINSIC_VERSION + }) + .sign(keypair) + edgeTransaction.signedTx = construct.signedTx(unsignedTx, signature, { + metadataRpc: this.metadataRpc, + registry + }) + return edgeTransaction + } + + async broadcastTx( + edgeTransaction: EdgeTransaction + ): Promise { + if (edgeTransaction.signedTx == null) throw new Error('Missing signedTx') + + try { + const payload = [edgeTransaction.signedTx] + const txid = await this.fetchPostRPC('author_submitExtrinsic', payload) + edgeTransaction.txid = txid + edgeTransaction.date = Date.now() / 1000 + this.warn(`SUCCESS broadcastTx\n${cleanTxLogs(edgeTransaction)}`) + } catch (e) { + this.warn('FAILURE broadcastTx failed: ', e) + throw e + } + + return edgeTransaction + } + + getDisplayPrivateSeed() { + if ( + this.walletInfo.keys && + this.walletInfo.keys[`${this.currencyPlugin.pluginId}Mnemonic`] + ) { + return this.walletInfo.keys[`${this.currencyPlugin.pluginId}Mnemonic`] + } + return '' + } + + getDisplayPublicSeed() { + if (this.walletInfo.keys && this.walletInfo.keys.publicKey) { + return this.walletInfo.keys.publicKey + } + return '' + } +} + +export { CurrencyEngine } diff --git a/src/polkadot/polkadotInfo.js b/src/polkadot/polkadotInfo.js new file mode 100644 index 000000000..1ecc00d6f --- /dev/null +++ b/src/polkadot/polkadotInfo.js @@ -0,0 +1,50 @@ +/* global */ +// @flow + +import type { + EdgeCorePluginOptions, + EdgeCurrencyInfo +} from 'edge-core-js/types' + +import { makePolkadotPluginInner } from './polkadotPlugin.js' +import type { PolkadotSettings } from './polkadotTypes.js' + +const otherSettings: PolkadotSettings = { + rpcNodes: ['https://rpc.polkadot.io'], + genesisHash: + '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3', + subscanBaseUrl: 'https://polkadot.api.subscan.io/api', + subscanQueryLimit: 100 +} + +const defaultSettings: any = { + otherSettings +} + +export const currencyInfo: EdgeCurrencyInfo = { + // Basic currency information: + currencyCode: 'DOT', + displayName: 'Polkadot', + pluginId: 'polkadot', + walletType: 'wallet:polkadot', + + defaultSettings, + + addressExplorer: 'https://blockchair.com/polkadot/address/%s?from=edgeapp', + transactionExplorer: + 'https://blockchair.com/polkadot/transaction/%s?from=edgeapp', + + denominations: [ + // An array of Objects of the possible denominations for this currency + { + name: 'DOT', + multiplier: '10000000000', + symbol: '' + } + ], + metaTokens: [] +} + +export const makePolkadotPlugin = (opts: EdgeCorePluginOptions) => { + return makePolkadotPluginInner(opts, currencyInfo) +} diff --git a/src/polkadot/polkadotPlugin.js b/src/polkadot/polkadotPlugin.js new file mode 100644 index 000000000..ed910c5a9 --- /dev/null +++ b/src/polkadot/polkadotPlugin.js @@ -0,0 +1,159 @@ +// @flow + +import { div } from 'biggystring' +import { entropyToMnemonic, validateMnemonic } from 'bip39' +import { Buffer } from 'buffer' +import { + type EdgeCorePluginOptions, + type EdgeCurrencyEngine, + type EdgeCurrencyEngineOptions, + type EdgeCurrencyInfo, + type EdgeCurrencyPlugin, + type EdgeEncodeUri, + type EdgeIo, + type EdgeMetaToken, + type EdgeParsedUri, + type EdgeWalletInfo, + type JsonObject +} from 'edge-core-js/types' + +import { CurrencyPlugin } from '../common/plugin.js' +import { getDenomInfo, isHex } from '../common/utils.js' +import { PolkadotEngine } from './polkadotEngine.js' +import { + ed25519PairFromSeed, // FIXME: Is this a good default? + encodeAddress, + isAddress, + mnemonicToMiniSecret +} from './polkadotUtils' + +export class PolkadotPlugin extends CurrencyPlugin { + pluginId: string + + constructor(io: EdgeIo, currencyInfo: EdgeCurrencyInfo) { + super(io, currencyInfo.pluginId, currencyInfo) + this.pluginId = currencyInfo.pluginId + } + + async importPrivateKey(userInput: string): Promise { + if (validateMnemonic(userInput)) { + const miniSecret = mnemonicToMiniSecret(userInput) + const { secretKey } = ed25519PairFromSeed(miniSecret) + return { + [`${this.pluginId}Mnemonic`]: userInput, + [`${this.pluginId}Key`]: Buffer.from(secretKey).toString('hex') + } + } else if (isHex(userInput)) { + return { + [`${this.pluginId}Key`]: userInput + } + } else { + throw new Error('InvalidPrivateKey') + } + } + + async createPrivateKey(walletType: string): Promise { + const type = walletType.replace('wallet:', '') + + if (type === this.pluginId) { + const entropy = Buffer.from(this.io.random(32)) + const mnemonic = entropyToMnemonic(entropy) + return this.importPrivateKey(mnemonic) + } else { + throw new Error('InvalidWalletType') + } + } + + async derivePublicKey(walletInfo: EdgeWalletInfo): Promise { + const secret = new Uint8Array(walletInfo.keys[`${this.pluginId}Key`]) + const { publicKey } = ed25519PairFromSeed(secret) + return encodeAddress(publicKey) + } + + async parseUri( + uri: string, + currencyCode?: string, + customTokens?: EdgeMetaToken[] + ): Promise { + const networks = { [this.pluginId]: true } + + const { parsedUri, edgeParsedUri } = this.parseUriCommon( + this.currencyInfo, + uri, + networks, + currencyCode || this.currencyInfo.currencyCode, + customTokens + ) + let address = '' + if (edgeParsedUri.publicAddress) { + address = edgeParsedUri.publicAddress + } + + if (!isAddress(address)) throw new Error('InvalidPublicAddressError') + + edgeParsedUri.uniqueIdentifier = parsedUri.query.memo || undefined + return edgeParsedUri + } + + async encodeUri( + obj: EdgeEncodeUri, + customTokens?: EdgeMetaToken[] + ): Promise { + const { nativeAmount, currencyCode, publicAddress } = obj + + if (!isAddress(publicAddress)) throw new Error('InvalidPublicAddressError') + + let amount + if (typeof nativeAmount === 'string') { + const denom = getDenomInfo( + this.currencyInfo, + currencyCode || this.currencyInfo.currencyCode, + customTokens + ) + if (!denom) { + throw new Error('InternalErrorInvalidCurrencyCode') + } + amount = div(nativeAmount, denom.multiplier, 10) + } + const encodedUri = this.encodeUriCommon(obj, this.pluginId, amount) + return encodedUri + } +} + +export function makePolkadotPluginInner( + opts: EdgeCorePluginOptions, + currencyInfo: EdgeCurrencyInfo +): EdgeCurrencyPlugin { + const { io } = opts + + let toolsPromise: Promise + function makeCurrencyTools(): Promise { + if (toolsPromise != null) return toolsPromise + toolsPromise = Promise.resolve(new PolkadotPlugin(io, currencyInfo)) + return toolsPromise + } + + async function makeCurrencyEngine( + walletInfo: EdgeWalletInfo, + opts: EdgeCurrencyEngineOptions + ): Promise { + const tools = await makeCurrencyTools() + const currencyEngine = new PolkadotEngine(tools, walletInfo, opts) + + // Do any async initialization necessary for the engine + await currencyEngine.loadEngine(tools, walletInfo, opts) + + // This is just to make sure otherData is Flow type checked + currencyEngine.otherData = currencyEngine.walletLocalData.otherData + + const out: EdgeCurrencyEngine = currencyEngine + + return out + } + + return { + currencyInfo, + makeCurrencyEngine, + makeCurrencyTools + } +} diff --git a/src/polkadot/polkadotTypes.js b/src/polkadot/polkadotTypes.js new file mode 100644 index 000000000..8e362e77a --- /dev/null +++ b/src/polkadot/polkadotTypes.js @@ -0,0 +1,72 @@ +// @flow + +import { + asArray, + asBoolean, + asEither, + asNull, + asNumber, + asObject, + asString, + asTuple, + asUnknown +} from 'cleaners' + +export type PolkadotSettings = { + rpcNodes: string[], + genesisHash: string, + subscanBaseUrl: string, + subscanQueryLimit: number +} + +export type PolkadotOtherData = { + processedTxCount: number +} + +export const asSubscanResponse = asObject({ + data: asObject(asUnknown) +}) + +// https://docs.api.subscan.io/#v2-api +export const asBalance = asObject({ + account: asObject({ + nonce: asNumber, + balance: asString + }) +}) + +// https://docs.api.subscan.io/#blocks +export const asBlockheight = asObject({ + blocks: asTuple( + asObject({ + hash: asString, + block_num: asNumber + }) + ) +}) + +// https://docs.api.subscan.io/#transfers +export const asTransfer = asObject({ + from: asString, + to: asString, + success: asBoolean, + hash: asString, + block_num: asNumber, + block_timestamp: asNumber, + module: asString, + amount: asString, + fee: asString +}) + +export type SubscanTx = $Call + +export const asTransactions = asObject({ + count: asNumber, + transfers: asEither(asArray(asUnknown), asNull) +}) + +export const asGetRuntimeVersion = asObject({ + specName: asString, + specVersion: asNumber, + transactionVersion: asNumber +}) diff --git a/src/polkadot/polkadotUtils.js b/src/polkadot/polkadotUtils.js new file mode 100644 index 000000000..14feef8d3 --- /dev/null +++ b/src/polkadot/polkadotUtils.js @@ -0,0 +1,28 @@ +// @flow + +import { Keyring, txWrapper, utilCrypto } from './sdk-bundle.js' +const { ed25519PairFromSeed, encodeAddress, isAddress, mnemonicToMiniSecret } = + utilCrypto + +const { + construct, + createMetadata, + deriveAddress, + getRegistry, + methods, + PolkadotSS58Format +} = txWrapper.default + +export { + construct, + createMetadata, + deriveAddress, + getRegistry, + methods, + PolkadotSS58Format, + ed25519PairFromSeed, + encodeAddress, + isAddress, + mnemonicToMiniSecret, + Keyring +} diff --git a/src/polkadot/sdk-bundle.js.flow b/src/polkadot/sdk-bundle.js.flow new file mode 100644 index 000000000..ef9761f26 --- /dev/null +++ b/src/polkadot/sdk-bundle.js.flow @@ -0,0 +1,7 @@ +// @flow + +import Keyring from '@polkadot/keyring' +import * as utilCrypto from '@polkadot/util-crypto' +import * as txWrapper from '@substrate/txwrapper-polkadot' + +export { Keyring, txWrapper, utilCrypto } diff --git a/src/solana/solanaEngine.js b/src/solana/solanaEngine.js index 35181a977..2cfb7cbd9 100644 --- a/src/solana/solanaEngine.js +++ b/src/solana/solanaEngine.js @@ -93,19 +93,6 @@ export class SolanaEngine extends CurrencyEngine { return response.result } - updateBalance(tk: string, balance: string) { - if (typeof this.walletLocalData.totalBalances[tk] === 'undefined') { - this.walletLocalData.totalBalances[tk] = '0' - } - if (!bns.eq(balance, this.walletLocalData.totalBalances[tk])) { - this.walletLocalData.totalBalances[tk] = balance - this.warn(`${tk}: token Address balance: ${balance}`) - this.currencyEngineCallbacks.onBalanceChanged(tk, balance) - } - this.tokenCheckBalanceStatus[tk] = 1 - this.updateOnAddressesChecked() - } - async queryBalance() { try { const response = await this.fetchRpc('getBalance', [ diff --git a/src/stellar/stellarEngine.js b/src/stellar/stellarEngine.js index 0c5e9e782..9d2a02253 100644 --- a/src/stellar/stellarEngine.js +++ b/src/stellar/stellarEngine.js @@ -298,27 +298,9 @@ export class StellarEngine extends CurrencyEngine { const denom = getDenomInfo(this.currencyInfo, currencyCode) if (denom && denom.multiplier) { const nativeAmount = bns.mul(bal.balance, denom.multiplier) - if ( - typeof this.walletLocalData.totalBalances[currencyCode] === - 'undefined' - ) { - this.walletLocalData.totalBalances[currencyCode] = '0' - } - - if ( - this.walletLocalData.totalBalances[currencyCode] !== nativeAmount - ) { - this.walletLocalData.totalBalances[currencyCode] = nativeAmount - this.warn(`Updated ${currencyCode} balance ${nativeAmount}`) - this.currencyEngineCallbacks.onBalanceChanged( - currencyCode, - nativeAmount - ) - } + this.updateBalance(currencyCode, nativeAmount) } } - this.tokenCheckBalanceStatus.XLM = 1 - this.updateOnAddressesChecked() } catch (e) { if (e.response && e.response.title === 'Resource Missing') { this.log('Account not found. Probably not activated w/minimum XLM') diff --git a/src/tezos/tezosEngine.js b/src/tezos/tezosEngine.js index f4e2b8eb6..9fa0ab731 100644 --- a/src/tezos/tezosEngine.js +++ b/src/tezos/tezosEngine.js @@ -296,7 +296,6 @@ export class TezosEngine extends CurrencyEngine { // Check all account balance and other relevant info async checkAccountInnerLoop() { - this.tokenCheckBalanceStatus.XTZ = 0 const currencyCode = PRIMARY_CURRENCY const pkh = this.walletLocalData.publicKey if ( @@ -305,12 +304,7 @@ export class TezosEngine extends CurrencyEngine { this.walletLocalData.totalBalances[currencyCode] = '0' } const balance = await this.multicastServers('getBalance', pkh) - if (this.walletLocalData.totalBalances[currencyCode] !== balance) { - this.walletLocalData.totalBalances[currencyCode] = balance - this.warn(`Updated ${currencyCode} balance ${balance}`) - this.currencyEngineCallbacks.onBalanceChanged(currencyCode, balance) - } - this.tokenCheckBalanceStatus.XTZ = 1 + this.updateBalance(currencyCode, balance) } async checkBlockchainInnerLoop() { diff --git a/src/xrp/xrpEngine.js b/src/xrp/xrpEngine.js index e478f9e5d..17ff32928 100644 --- a/src/xrp/xrpEngine.js +++ b/src/xrp/xrpEngine.js @@ -223,24 +223,8 @@ export class XrpEngine extends CurrencyEngine { const currencyCode = currency const exchangeAmount = value const nativeAmount = bns.mul(exchangeAmount, '1000000') - - if (this.walletLocalData.totalBalances[currencyCode] == null) { - this.walletLocalData.totalBalances[currencyCode] = '0' - } - - if ( - this.walletLocalData.totalBalances[currencyCode] !== nativeAmount - ) { - this.walletLocalData.totalBalances[currencyCode] = nativeAmount - this.warn(`Updated ${currencyCode} balance ${nativeAmount}`) - this.currencyEngineCallbacks.onBalanceChanged( - currencyCode, - nativeAmount - ) - } + this.updateBalance(currencyCode, nativeAmount) } - this.tokenCheckBalanceStatus.XRP = 1 - this.updateOnAddressesChecked() } } catch (e) { if (e?.data?.error === 'actNotFound' || e?.data?.error_code === 19) { diff --git a/src/zcash/zecEngine.js b/src/zcash/zecEngine.js index 2059cb298..d94484974 100644 --- a/src/zcash/zecEngine.js +++ b/src/zcash/zecEngine.js @@ -181,19 +181,6 @@ export class ZcashEngine extends CurrencyEngine { } } - updateBalance(tk: string, balance: string) { - if (this.walletLocalData.totalBalances[tk] == null) { - this.walletLocalData.totalBalances[tk] = '0' - } - if (!bns.eq(balance, this.walletLocalData.totalBalances[tk])) { - this.walletLocalData.totalBalances[tk] = balance - this.warn(`${tk}: token Address balance: ${balance}`) - this.currencyEngineCallbacks.onBalanceChanged(tk, balance) - } - this.tokenCheckBalanceStatus[tk] = 1 - this.updateOnAddressesChecked() - } - async queryTransactions() { try { let first = this.otherData.blockRange.first diff --git a/webpack.config.js b/webpack.config.js index 56830e7a0..9e0132685 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -27,6 +27,7 @@ module.exports = { }, plugins: [new webpack.IgnorePlugin(/^https-proxy-agent$/)], node: { + // stream: 'empty', fs: 'empty' } } diff --git a/yarn.lock b/yarn.lock index 6b1cd4220..b9c902970 100644 --- a/yarn.lock +++ b/yarn.lock @@ -875,6 +875,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.18.3": + version "7.18.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" + integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" @@ -1175,6 +1182,380 @@ resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.50.0.tgz#29c6419e8379d496ab6d0426eadf3c4d100cd186" integrity sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA== +"@noble/hashes@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.1.tgz#c056d9b7166c1e7387a7453c2aff199bf7d88e5f" + integrity sha512-Lkp9+NijmV7eSVZqiUvt3UCuuHeJpUVmRrvh430gyJjJiuJMqkeHf6/A9lQ/smmbWV/0spDeJscscPzyB4waZg== + +"@noble/secp256k1@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.0.tgz#602afbbfcfb7e169210469b697365ef740d7e930" + integrity sha512-DWSsg8zMHOYMYBqIQi96BQuthZrp98LCeMNcUOaffCIVYQ5yxDbNikLF+H7jEnmNNmXbtVic46iCuVWzar+MgA== + +"@polkadot/api-augment@8.9.1": + version "8.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-augment/-/api-augment-8.9.1.tgz#25b0997ccf3d1df4641123e0d9ec29e8fb03ef62" + integrity sha512-yobYURNgoZcZD3QJmE34n3ZcEEUtsiivquckxjJMXnHJv3zahMyJh75tCNAXjzWn+e+SqKTVlgCpLXYlC1HJPQ== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/api-base" "8.9.1" + "@polkadot/rpc-augment" "8.9.1" + "@polkadot/types" "8.9.1" + "@polkadot/types-augment" "8.9.1" + "@polkadot/types-codec" "8.9.1" + "@polkadot/util" "^9.5.1" + +"@polkadot/api-base@8.9.1": + version "8.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-base/-/api-base-8.9.1.tgz#e0013bbb8e72678a4eecdfb880854b2e30c840d5" + integrity sha512-2OpS9ArZSuUu9vg2Y5DdK7r1iB1Bjx9e+6qerPGry8um+jI+EsHJESylw5OUrR2DxvtW3Ilrk4YvYpQPa9OB4w== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/rpc-core" "8.9.1" + "@polkadot/types" "8.9.1" + "@polkadot/util" "^9.5.1" + rxjs "^7.5.5" + +"@polkadot/api-derive@8.9.1": + version "8.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-8.9.1.tgz#d701c98db27b86dceac6d3e737f0cab4f9731045" + integrity sha512-zOuNK1tApg3iEC5N4yiOTaMKUykk4tkNU1htcnotOxflgdhYUi22l0JuCrEtrnG6TE2ZH8z1VQA/jK0MbLfC3A== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/api" "8.9.1" + "@polkadot/api-augment" "8.9.1" + "@polkadot/api-base" "8.9.1" + "@polkadot/rpc-core" "8.9.1" + "@polkadot/types" "8.9.1" + "@polkadot/types-codec" "8.9.1" + "@polkadot/util" "^9.5.1" + "@polkadot/util-crypto" "^9.5.1" + rxjs "^7.5.5" + +"@polkadot/api@8.9.1": + version "8.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-8.9.1.tgz#c35c5d583845a5d67edfa8c3579bad143f65bcd6" + integrity sha512-UwQ5hWPHruqnBO2hriaPhGaOwaWZx9MVECWFJzVs0ZuhKDge9jyBp+JXud/Ly/+8VbeokYUB0DSZG/gTAO5+vg== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/api-augment" "8.9.1" + "@polkadot/api-base" "8.9.1" + "@polkadot/api-derive" "8.9.1" + "@polkadot/keyring" "^9.5.1" + "@polkadot/rpc-augment" "8.9.1" + "@polkadot/rpc-core" "8.9.1" + "@polkadot/rpc-provider" "8.9.1" + "@polkadot/types" "8.9.1" + "@polkadot/types-augment" "8.9.1" + "@polkadot/types-codec" "8.9.1" + "@polkadot/types-create" "8.9.1" + "@polkadot/types-known" "8.9.1" + "@polkadot/util" "^9.5.1" + "@polkadot/util-crypto" "^9.5.1" + eventemitter3 "^4.0.7" + rxjs "^7.5.5" + +"@polkadot/keyring@^9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-9.5.1.tgz#3b0851f8fffe489f1b6020e69dc9a3a8e5696172" + integrity sha512-ixv2lq1zNzYa+GqZQTzcraNw5ZrTTK+2/sqfeMOIr7gBGk0UCALuK0NCvTRAUtQK1RT2psBkkm2lr/rrNCeK+A== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/util" "9.5.1" + "@polkadot/util-crypto" "9.5.1" + +"@polkadot/networks@9.5.1", "@polkadot/networks@^9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-9.5.1.tgz#876c6cf8915a47e6ace81139197f8b0d36adb362" + integrity sha512-1q9jm7NLk1ZMqFJL+kYkpn1phEO+N0d5LU81ropjYf0hC9boBAya4Zqvv3DwasPuLp6qaj4r0nrfzmkP5xHKZQ== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/util" "9.5.1" + "@substrate/ss58-registry" "^1.22.0" + +"@polkadot/rpc-augment@8.9.1": + version "8.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-8.9.1.tgz#644061c68a9a2abe7f3574ab74b10652acae5707" + integrity sha512-6TtZPVjvjcPy3w4lmcNu3MTU1h2YLkZBVNwUZFnZPhALc9qBy9ZcvkMODLPfD+mj+i8Fcfn4b7Ypj+sNqXFxUQ== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/rpc-core" "8.9.1" + "@polkadot/types" "8.9.1" + "@polkadot/types-codec" "8.9.1" + "@polkadot/util" "^9.5.1" + +"@polkadot/rpc-core@8.9.1": + version "8.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-8.9.1.tgz#79392d2a1d1d5e93549cd0f7fae7f0d71a6fb79d" + integrity sha512-+mAkpxIX2kIovnIIf8uxqjXqPA/7LaeysfIPi8VGrVB3IqvLEaT2rWtCMRSFkBEZwYI7vP7PrAw9co6MMkXlUw== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/rpc-augment" "8.9.1" + "@polkadot/rpc-provider" "8.9.1" + "@polkadot/types" "8.9.1" + "@polkadot/util" "^9.5.1" + rxjs "^7.5.5" + +"@polkadot/rpc-provider@8.9.1": + version "8.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-8.9.1.tgz#1e6e8e6218bb0fe59dd673acb9198bf12acf6625" + integrity sha512-XunL29pi464VB6AJGuvVzTnCtk4y5KBwgBIC/S4YMdqi+l2ujXZOFM2WBnbiV+YhB7FEXmbYR8NsKAe/DSb85A== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/keyring" "^9.5.1" + "@polkadot/types" "8.9.1" + "@polkadot/types-support" "8.9.1" + "@polkadot/util" "^9.5.1" + "@polkadot/util-crypto" "^9.5.1" + "@polkadot/x-fetch" "^9.5.1" + "@polkadot/x-global" "^9.5.1" + "@polkadot/x-ws" "^9.5.1" + "@substrate/connect" "0.7.6" + eventemitter3 "^4.0.7" + mock-socket "^9.1.5" + nock "^13.2.6" + +"@polkadot/types-augment@8.9.1": + version "8.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-augment/-/types-augment-8.9.1.tgz#ff4880471eba038f8b28e412b7d8d1f500d46cf9" + integrity sha512-kfSioIpB8krtNgIANN8QCik+uBFmxGACEq84oxiqbKc2BfTXzcqQ7jkmslXeEqb9IsQ9rpaa3fkvyoLQNLqXgA== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/types" "8.9.1" + "@polkadot/types-codec" "8.9.1" + "@polkadot/util" "^9.5.1" + +"@polkadot/types-codec@8.9.1": + version "8.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-codec/-/types-codec-8.9.1.tgz#8fbf3ade7a87b716937b7f37fd43b8a46ba12c4d" + integrity sha512-bboHpTwvHooTdITsmJ5IqAyZDuONZaVs6xC3iRbE9SIHD4kUpivlTc+Rvk91EcQclFo5IUKvNrX4BrOx8Y/YnQ== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/util" "^9.5.1" + +"@polkadot/types-create@8.9.1": + version "8.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-create/-/types-create-8.9.1.tgz#ed365812b522fcc7984aa24cf7cbeeb0cdf20e34" + integrity sha512-q7er671QXYcmG4gkZvtKpES7QV013w36s8VT947aT3GDzlGZDQQKNKpELyi7K1sgWjQyrL3/0cTKhP8taAjWPQ== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/types-codec" "8.9.1" + "@polkadot/util" "^9.5.1" + +"@polkadot/types-known@8.9.1": + version "8.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-8.9.1.tgz#019ab25b048f157659cf6141c3d8483c28af0123" + integrity sha512-y5Fvo7TM9DjM/CNQbQsR78O5LP3CuBbQY90yA2APwqZNn/dilTxWIGrxtPzTG9QCZJyhMN+EZdKUo51brKRI/g== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/networks" "^9.5.1" + "@polkadot/types" "8.9.1" + "@polkadot/types-codec" "8.9.1" + "@polkadot/types-create" "8.9.1" + "@polkadot/util" "^9.5.1" + +"@polkadot/types-support@8.9.1": + version "8.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-support/-/types-support-8.9.1.tgz#84d023945feddc15f60b8cb1a36abe2edfed4a23" + integrity sha512-t3HJc8o68LWvhEy63PRZQxCL4T7sSsrLm7+rpkfeJAEC1DXeFF85FwE2U+YKa3+Z3NuMv2e4DV2jnIZe9XRtHQ== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/util" "^9.5.1" + +"@polkadot/types@8.9.1": + version "8.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-8.9.1.tgz#e5bf1cef79d8c305faa8691c62dd3d4be9baed53" + integrity sha512-h43/aPzk+ta0MzzGQz3DiGtearttHxZr08xOdtU5GctI6u9MXm0n0w74clciLpIGu5CI+QxYN3oQ8/5WXTukMw== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/keyring" "^9.5.1" + "@polkadot/types-augment" "8.9.1" + "@polkadot/types-codec" "8.9.1" + "@polkadot/types-create" "8.9.1" + "@polkadot/util" "^9.5.1" + "@polkadot/util-crypto" "^9.5.1" + rxjs "^7.5.5" + +"@polkadot/util-crypto@9.5.1", "@polkadot/util-crypto@^9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-9.5.1.tgz#f69bdccd7043620c9bd905b169ec50bf97bf6ffb" + integrity sha512-4YwJJ2/mXx3PXTy4WLekQOo1MlDtQzYgTZsjOagi3Uz3Q/ITvS+/iu6eF/H6Tz0uEQjwX6t9tsMkM5FWk/XoGg== + dependencies: + "@babel/runtime" "^7.18.3" + "@noble/hashes" "1.1.1" + "@noble/secp256k1" "1.6.0" + "@polkadot/networks" "9.5.1" + "@polkadot/util" "9.5.1" + "@polkadot/wasm-crypto" "^6.1.1" + "@polkadot/x-bigint" "9.5.1" + "@polkadot/x-randomvalues" "9.5.1" + "@scure/base" "1.1.1" + ed2curve "^0.3.0" + tweetnacl "^1.0.3" + +"@polkadot/util@9.5.1", "@polkadot/util@^9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-9.5.1.tgz#b9e0b8cb0d6f1fd86e1a39a843ac8defeb6d5c9f" + integrity sha512-cI2ar15vkoXjs//YNn1yT5eUdK7jF32XNw3Oc6YJ2qEpenwy30c3BUQJOiqW7J6UBYLYll5O5y0ejv6LQoSFBQ== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/x-bigint" "9.5.1" + "@polkadot/x-global" "9.5.1" + "@polkadot/x-textdecoder" "9.5.1" + "@polkadot/x-textencoder" "9.5.1" + "@types/bn.js" "^5.1.0" + bn.js "^5.2.1" + ip-regex "^4.3.0" + +"@polkadot/wasm-bridge@6.1.3": + version "6.1.3" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-bridge/-/wasm-bridge-6.1.3.tgz#92ea264df3e69a907fc16920d619f4bc0b703f71" + integrity sha512-Hr64uhqF6dt51quQWJEEuL/qog87NkWOmc4I3uw7j+TgMGUQv+vYh4r+LU3IoAHPATRVGKmr6S77vVJ0IBjLLA== + dependencies: + "@babel/runtime" "^7.18.3" + +"@polkadot/wasm-crypto-asmjs@6.1.3": + version "6.1.3" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-6.1.3.tgz#55faf8fbe0938928e647232605618a367e79d7f4" + integrity sha512-B8GuMNhf76uj+1YxQb7L4MQKZ87XS9WB6dG/8RVBTM4MNKgABGDMnrNcGWvvVOY/BJXZ3Pov5VAB6rRluFr9tg== + dependencies: + "@babel/runtime" "^7.18.3" + +"@polkadot/wasm-crypto-init@6.1.3": + version "6.1.3" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-init/-/wasm-crypto-init-6.1.3.tgz#2fe9181ac65afb6c50363d88466633c9f3e3f22c" + integrity sha512-26I+4yoboeUoLQ/5KmZsX7Zd8k5khOaKqt7zhkmH2F3do6IcMCwrxQ7KOs7o1IhGO4PO+SzMam/ltg/K7OTqkw== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/wasm-bridge" "6.1.3" + "@polkadot/wasm-crypto-asmjs" "6.1.3" + "@polkadot/wasm-crypto-wasm" "6.1.3" + +"@polkadot/wasm-crypto-wasm@6.1.3": + version "6.1.3" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-6.1.3.tgz#db0875c6f5ee716af148492295df8a672500de88" + integrity sha512-TrtLit/1a+UnSVhU/M9qUmkq675kxLgqzIt7Is9OtyVNTKxFkS2HZexk0l2nfIEToEws80a/snVtu5/HhZ8hrA== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/wasm-util" "6.1.3" + +"@polkadot/wasm-crypto@^6.1.1": + version "6.1.3" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-6.1.3.tgz#bba2f5fc850800a5c7464b0a2c518815c138b708" + integrity sha512-sAFjV39qz45LyUnxLJFcv3V5tXFd+CXYJ94gYAh/iwr8Vi3T6t/VA1eyS76b8IOlgzTua0XQR7BCPI/Jk6aVmQ== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/wasm-bridge" "6.1.3" + "@polkadot/wasm-crypto-asmjs" "6.1.3" + "@polkadot/wasm-crypto-init" "6.1.3" + "@polkadot/wasm-crypto-wasm" "6.1.3" + "@polkadot/wasm-util" "6.1.3" + +"@polkadot/wasm-util@6.1.3": + version "6.1.3" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-util/-/wasm-util-6.1.3.tgz#c9df5b025b2fb4335fb4a6f5ed0a8f612cfb3c12" + integrity sha512-vGyqMfjMhDEtWUEve3LFdjfDSv6ixaRbh0RD8opqbkHg2//gPlQeQAqJGUk4pEiZohzpOluZztT9G7Ne+ch5AQ== + dependencies: + "@babel/runtime" "^7.18.3" + +"@polkadot/x-bigint@9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-9.5.1.tgz#d5d98aaa6b3de560eea23df9f696903f2e2dcf7c" + integrity sha512-rTp7j3KvCy8vANRoaW6j0pCQdLc/eed6uSRXoxh3z1buJhw460/Q/hJ0Bey6fyeNSDzIwFk4SGwf/Gzf+kS1vQ== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/x-global" "9.5.1" + +"@polkadot/x-fetch@^9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-fetch/-/x-fetch-9.5.1.tgz#dda5f36de656a5db2c81a81245ad5059f95879a9" + integrity sha512-jMWpDVE4CyH+vVuONmvcKlJJnsRqmglmJTppsl+38JTnGL2FbELn2q92N8b5uTxmPP0lf+QTn1THXnkWvG7Ojw== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/x-global" "9.5.1" + "@types/node-fetch" "^2.6.2" + node-fetch "^2.6.7" + +"@polkadot/x-global@9.5.1", "@polkadot/x-global@^9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-9.5.1.tgz#a78e109ca95f5ba5e9c501a2106a9b3acfe3a682" + integrity sha512-asG5YlW1K3f4YjyuZ+HrbF9H5d78i5v9+7Bh+9gD+sVfB3KhqwVYZB+wzOaJkPp6lwUbBA9OBHFCVBqpR3wBJw== + dependencies: + "@babel/runtime" "^7.18.3" + +"@polkadot/x-randomvalues@9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-9.5.1.tgz#e647554f7b34d4073e1bc60d8b81163d5f75f523" + integrity sha512-NFvG//NsBjFP01dEtQATNPn5lSAZwh6jkkUXG2rHlgvW6k8nVJ0aJPvO5MlgItgS5Ry2F88AIiSsO3cfoTpszg== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/x-global" "9.5.1" + +"@polkadot/x-textdecoder@9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-9.5.1.tgz#13c1b48b12d350b635de385c8a0e2be14210b620" + integrity sha512-bY0J3Tov5y4oZi8qB/UtoEYCSgo5sDiiOa3Wmgen09LfB4gXJhWFGJSmcZqHERXCdEcmZojdbHTvOGSeYM9U1w== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/x-global" "9.5.1" + +"@polkadot/x-textencoder@9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-9.5.1.tgz#76d79d07bb81e9cc7eff97043eae82c39189d8d9" + integrity sha512-zt121nqxiudMeZnanpnfWhCE0SOTcVRqn/atqO59us/yf6LMTf23mgd7P4795TgJwXOUcui4fhm/g/VcpsLq9Q== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/x-global" "9.5.1" + +"@polkadot/x-ws@^9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-ws/-/x-ws-9.5.1.tgz#990d86c8bc54d6fe00c6ff16f341b9304dd89164" + integrity sha512-d91Hf7p9+mWqSvx+lZr0f7eVkHXGzNqvQnXYAizU1HE1HHl5gLixPKoGldTKrYhvV30OwKKDJChKHzvQL6nVdQ== + dependencies: + "@babel/runtime" "^7.18.3" + "@polkadot/x-global" "9.5.1" + "@types/websocket" "^1.0.5" + websocket "^1.0.34" + +"@rollup/plugin-commonjs@^22.0.0": + version "22.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.0.tgz#f4d87016e2fbf187a593ab9f46626fe05b59e8bd" + integrity sha512-Ktvf2j+bAO+30awhbYoCaXpBcyPmJbaEUYClQns/+6SNCYFURbvBiNbWgHITEsIgDDWCDUclWRKEuf8cwZCFoQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + commondir "^1.0.1" + estree-walker "^2.0.1" + glob "^7.1.6" + is-reference "^1.2.1" + magic-string "^0.25.7" + resolve "^1.17.0" + +"@rollup/plugin-node-resolve@^13.3.0": + version "13.3.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" + integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + deepmerge "^4.2.2" + is-builtin-module "^3.1.0" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@scure/base@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" + integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + "@solana/buffer-layout@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-3.0.0.tgz#b9353caeb9a1589cb77a1b145bcb1a9a93114326" @@ -1288,6 +1669,57 @@ resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== +"@substrate/connect-extension-protocol@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@substrate/connect-extension-protocol/-/connect-extension-protocol-1.0.0.tgz#d452beda84b3ebfcf0e88592a4695e729a91e858" + integrity sha512-nFVuKdp71hMd/MGlllAOh+a2hAqt8m6J2G0aSsS/RcALZexxF9jodbFc62ni8RDtJboeOfXAHhenYOANvJKPIg== + +"@substrate/connect@0.7.6": + version "0.7.6" + resolved "https://registry.yarnpkg.com/@substrate/connect/-/connect-0.7.6.tgz#4b1cca6bf9c0e8be93f6f6a4eeb6684993f5dc18" + integrity sha512-PHizR91CbjC5bzUwgYUZJrbOyoraCS1QqoxkFHteZ/0vkXDKyuzoixobDaITJqq6wSTeM8ZSjuOn9u/3q7F5+A== + dependencies: + "@substrate/connect-extension-protocol" "^1.0.0" + "@substrate/smoldot-light" "0.6.19" + eventemitter3 "^4.0.7" + +"@substrate/smoldot-light@0.6.19": + version "0.6.19" + resolved "https://registry.yarnpkg.com/@substrate/smoldot-light/-/smoldot-light-0.6.19.tgz#13e897ca9839aecb0dac4ce079ff1cca1dc54cc0" + integrity sha512-Xi+v1cdURhTwx7NH+9fa1U9m7VGP61GvB6qwev9HrZXlGbQiUIvySxPlH/LMsq3mwgiRYkokPhcaZEHufY7Urg== + dependencies: + buffer "^6.0.1" + pako "^2.0.4" + websocket "^1.0.32" + +"@substrate/ss58-registry@^1.22.0": + version "1.22.0" + resolved "https://registry.yarnpkg.com/@substrate/ss58-registry/-/ss58-registry-1.22.0.tgz#d115bc5dcab8c0f5800e05e4ef265949042b13ec" + integrity sha512-IKqrPY0B3AeIXEc5/JGgEhPZLy+SmVyQf+k0SIGcNSTqt1GLI3gQFEOFwSScJdem+iYZQUrn6YPPxC3TpdSC3A== + +"@substrate/txwrapper-core@^3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@substrate/txwrapper-core/-/txwrapper-core-3.1.3.tgz#ec790e332dd09ee5021b3824b43f11b0fc70f36a" + integrity sha512-8QV5wp+V1/KXu/f2K9uTfbBrEXiu86z1N/O6+4858hYGihypZuO2YT0pChfsnj0Uic4K2T2QDzTCj8VJ70yORA== + dependencies: + "@polkadot/api" "8.9.1" + memoizee "0.4.15" + +"@substrate/txwrapper-polkadot@^3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@substrate/txwrapper-polkadot/-/txwrapper-polkadot-3.1.3.tgz#34c4ad1eaba72f829a8935846503ab15a412f011" + integrity sha512-uP48AuHlKjTz6EZzvlIVe7WnKu3xhacJFrVO0pAHZcnFxm/IVLhAItqN8KLd3xZmbIpy4Zlw9nITM+iaDU/ljA== + dependencies: + "@substrate/txwrapper-core" "^3.1.3" + "@substrate/txwrapper-substrate" "^3.1.3" + +"@substrate/txwrapper-substrate@^3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@substrate/txwrapper-substrate/-/txwrapper-substrate-3.1.3.tgz#81dd8a9a9780f291c3cf111a49c370829f75e975" + integrity sha512-v8skSLC40axHJN/dg51wLEAnQxk/5tk/EWr6rBKLFM4T8Kmjirj83lLyzVhRNRVYWdgCAr6Maoe+v1CWNXKoXw== + dependencies: + "@substrate/txwrapper-core" "^3.1.3" + "@types/bech32@^1.1.2": version "1.1.4" resolved "https://registry.yarnpkg.com/@types/bech32/-/bech32-1.1.4.tgz#501590d41c81a5f1802e39d6be450e89ec6d75d6" @@ -1300,7 +1732,7 @@ resolved "https://registry.yarnpkg.com/@types/big.js/-/big.js-4.0.5.tgz#62c61697646269e39191f24e55e8272f05f21fc0" integrity sha512-D9KFrAt05FDSqLo7PU9TDHfDgkarlwdkuwFsg7Zm4xl62tTNaz+zN+Tkcdx2wGLBbSMf8BnoMhOVeUGUaJfLKg== -"@types/bn.js@*": +"@types/bn.js@*", "@types/bn.js@^5.1.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== @@ -1340,6 +1772,16 @@ dependencies: "@types/bn.js" "*" +"@types/estree@*": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@types/express-serve-static-core@^4.17.9": version "4.17.28" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" @@ -1409,6 +1851,14 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.178.tgz#341f6d2247db528d4a13ddbb374bcdc80406f4f8" integrity sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw== +"@types/node-fetch@^2.6.2": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" + integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== + dependencies: + "@types/node" "*" + form-data "^3.0.0" + "@types/node@*": version "17.0.13" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.13.tgz#5ed7ed7c662948335fcad6c412bb42d99ea754e3" @@ -1462,6 +1912,13 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + "@types/text-encoding@0.0.35": version "0.0.35" resolved "https://registry.yarnpkg.com/@types/text-encoding/-/text-encoding-0.0.35.tgz#6f14474e0b232bc70c59677aadc65dcc5a99c3a9" @@ -1479,6 +1936,13 @@ resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-7.0.5.tgz#b1d2f772142a301538fae9bdf9cf15b9f2573a29" integrity sha512-hKB88y3YHL8oPOs/CNlaXtjWn93+Bs48sDQR37ZUqG2tLeCS7EA1cmnkKsuQsub9OKEB/y/Rw9zqJqqNSbqVlQ== +"@types/websocket@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.5.tgz#3fb80ed8e07f88e51961211cd3682a3a4a81569c" + integrity sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ== + dependencies: + "@types/node" "*" + "@types/ws@^7.4.4": version "7.4.7" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" @@ -2073,6 +2537,11 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -2319,7 +2788,7 @@ bluebird@^3.5.5: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@4.11.8, bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.3, bn.js@^4.11.7, bn.js@^4.11.8, bn.js@^4.4.0, bn.js@^5.0.0, bn.js@^5.1.1: +bn.js@4.11.8, bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.3, bn.js@^4.11.7, bn.js@^4.11.8, bn.js@^4.4.0, bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.2.1: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== @@ -2522,7 +2991,7 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -buffer@~6.0.3: +buffer@^6.0.1, buffer@~6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -2537,6 +3006,11 @@ bufferutil@^4.0.1: dependencies: node-gyp-build "^4.3.0" +builtin-modules@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -2848,6 +3322,13 @@ colorette@^1.2.2: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + commander@^2.20.0, commander@^2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -2958,11 +3439,6 @@ core-js@2.5.3, core-js@^2.4.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" integrity sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4= -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - cosmiconfig@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" @@ -3085,6 +3561,14 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + debug@3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -3171,6 +3655,11 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + default-require-extensions@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.0.tgz#e03f93aac9b2b6443fc52e5e4a37b3ad9ad8df96" @@ -3212,6 +3701,11 @@ delay@^5.0.0: resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -3339,6 +3833,13 @@ ed25519@0.0.4: bindings "^1.2.1" nan "^2.0.9" +ed2curve@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/ed2curve/-/ed2curve-0.3.0.tgz#322b575152a45305429d546b071823a93129a05d" + integrity sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ== + dependencies: + tweetnacl "1.x.x" + edge-core-js@^0.19.17: version "0.19.17" resolved "https://registry.yarnpkg.com/edge-core-js/-/edge-core-js-0.19.17.tgz#407ac24ea7f3f1ff7c30339a8130f7ee936bcbcf" @@ -3555,11 +4056,29 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.61" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.61.tgz#311de37949ef86b6b0dcea894d1ffedb909d3269" + integrity sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + es6-error@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + es6-object-assign@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" @@ -3582,6 +4101,24 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -3806,6 +4343,16 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +estree-walker@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -3875,6 +4422,14 @@ ethjs-util@^0.1.3: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + event-source-polyfill@0.0.12: version "0.0.12" resolved "https://registry.yarnpkg.com/event-source-polyfill/-/event-source-polyfill-0.0.12.tgz#e539cd67fdef2760a16aa5262fa98134df52e3af" @@ -3955,6 +4510,13 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" +ext@^1.1.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" + integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== + dependencies: + type "^2.5.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -4196,6 +4758,15 @@ foreground-child@^2.0.0: cross-spawn "^7.0.0" signal-exit "^3.0.2" +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -4258,7 +4829,7 @@ fsevents@~2.1.1: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== -fsevents@~2.3.1: +fsevents@~2.3.1, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -4712,21 +5283,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1: +inherits@2, inherits@2.0.1, inherits@2.0.3, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" @@ -4746,6 +5307,11 @@ interpret@^1.4.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +ip-regex@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -4814,6 +5380,13 @@ is-buffer@~2.0.3: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== +is-builtin-module@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" + integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== + dependencies: + builtin-modules "^3.0.0" + is-callable@^1.1.4, is-callable@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" @@ -4831,6 +5404,13 @@ is-core-module@^2.2.0, is-core-module@^2.4.0: dependencies: has "^1.0.3" +is-core-module@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -4928,6 +5508,11 @@ is-hex-prefixed@1.0.0: resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + is-nan@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" @@ -4970,6 +5555,18 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-reference@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + is-regex@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" @@ -5068,7 +5665,7 @@ is_js@^0.9.0: resolved "https://registry.yarnpkg.com/is_js/-/is_js-0.9.0.tgz#0ab94540502ba7afa24c856aa985561669e9c52d" integrity sha1-CrlFQFArp6+iTIVqqYVWFmnpxS0= -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -5546,6 +6143,20 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== + dependencies: + es5-ext "~0.10.2" + +magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + make-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -5581,6 +6192,20 @@ md5.js@^1.3.4: hash-base "^3.0.0" inherits "^2.0.1" +memoizee@0.4.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" + memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -5637,6 +6262,18 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -5752,6 +6389,11 @@ mocha@^7.1.1: yargs-parser "13.1.2" yargs-unparser "1.6.0" +mock-socket@^9.1.5: + version "9.1.5" + resolved "https://registry.yarnpkg.com/mock-socket/-/mock-socket-9.1.5.tgz#2c4e44922ad556843b6dfe09d14ed8041fa2cdeb" + integrity sha512-3DeNIcsQixWHHKk6NdoBhWI4t1VMj5/HzfnI1rE/pLl5qKx7+gd4DNA07ehTaZ6MoUU053si6Hd+YtiM/tQZfg== + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -5845,6 +6487,11 @@ neo-async@^2.5.0, neo-async@^2.6.1: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +next-tick@1, next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -5857,6 +6504,16 @@ no-case@^2.2.0: dependencies: lower-case "^1.1.1" +nock@^13.2.6: + version "13.2.7" + resolved "https://registry.yarnpkg.com/nock/-/nock-13.2.7.tgz#c93933b61df42f4f4b3a07fde946a4e209c0c168" + integrity sha512-R6NUw7RIPtKwgK7jskuKoEi4VFMqIHtV2Uu9K/Uegc4TA5cqe+oNMYslZcUmnVNQCTG6wcSqUBaGTDd7sq5srg== + dependencies: + debug "^4.1.0" + json-stringify-safe "^5.0.1" + lodash "^4.17.21" + propagate "^2.0.0" + node-abi@^2.21.0: version "2.30.1" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.1.tgz#c437d4b1fe0e285aaf290d45b45d4d7afedac4cf" @@ -5900,7 +6557,7 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" -node-fetch@^2.6.1: +node-fetch@^2.6.1, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -6270,6 +6927,11 @@ pako@1.0.11, pako@~1.0.5: resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== +pako@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.4.tgz#6cebc4bbb0b6c73b0d5b8d7e8476e2b2fbea576d" + integrity sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg== + parallel-transform@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" @@ -6366,6 +7028,11 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + path-starts-with@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/path-starts-with/-/path-starts-with-1.0.0.tgz#b28243015e8b138de572682ac52da42e646ad84e" @@ -6406,6 +7073,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== +picomatch@^2.2.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" @@ -6521,7 +7193,7 @@ printj@~1.1.0: resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== -process-nextick-args@2.0.0, process-nextick-args@~2.0.0: +process-nextick-args@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== @@ -6548,6 +7220,11 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +propagate@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" + integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== + protocol-buffers-encodings@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/protocol-buffers-encodings/-/protocol-buffers-encodings-1.1.1.tgz#f1e4a386711823137330171d2c82b49d062e75d3" @@ -6700,18 +7377,14 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@2.3.6, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== +"readable-stream@1 || 2", readable-stream@3.6.0, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@~2.3.6: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" readdirp@^2.2.1: version "2.2.1" @@ -6902,6 +7575,15 @@ resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.1 is-core-module "^2.2.0" path-parse "^1.0.6" +resolve@^1.17.0, resolve@^1.19.0: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -6980,6 +7662,13 @@ rlp@^2.0.0: dependencies: bn.js "^4.11.1" +rollup@^2.75.7: + version "2.75.7" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.7.tgz#221ff11887ae271e37dcc649ba32ce1590aaa0b9" + integrity sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ== + optionalDependencies: + fsevents "~2.3.2" + rpc-websockets@^7.4.2: version "7.4.17" resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.4.17.tgz#f38845dd96db0442bff9e15fba9df781beb44cc0" @@ -7008,6 +7697,13 @@ rxjs@6, rxjs@^6.6.7: dependencies: tslib "^1.9.0" +rxjs@^7.5.5: + version "7.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" + integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== + dependencies: + tslib "^2.1.0" + safe-buffer@5.2.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1, safe-buffer@~5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" @@ -7329,6 +8025,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + spawn-wrap@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" @@ -7542,20 +8243,13 @@ string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" -string_decoder@^1.0.0: +string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" @@ -7677,6 +8371,11 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + symbol-observable@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -7811,6 +8510,14 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" +timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + tiny-secp256k1@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.3.tgz#e93b1e1bf62e9bd1ad3ab24af27ff6127ce0e077" @@ -7894,6 +8601,11 @@ tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== +tslib@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -7911,7 +8623,7 @@ tweetnacl-util@^0.15.0: resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== -tweetnacl@1.0.3, tweetnacl@^1.0.0, tweetnacl@^1.0.3: +tweetnacl@1.0.3, tweetnacl@1.x.x, tweetnacl@^1.0.0, tweetnacl@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== @@ -7943,6 +8655,16 @@ type-fest@^0.8.0, type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f" + integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ== + typecast@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/typecast/-/typecast-0.0.1.tgz#fffb75dcb6bdf1def8e293b6b6e893d6c1ed19de" @@ -8127,10 +8849,10 @@ utf8@^2.1.1: resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.2.tgz#1fa0d9270e9be850d9b05027f63519bf46457d96" integrity sha1-H6DZJw6b6FDZsFAn9jUZv0ZFfZY= -util-deprecate@~1.0.1: +util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util@0.10.3: version "0.10.3" @@ -8289,6 +9011,18 @@ websocket-stream@^5.5.0: ws "^3.2.0" xtend "^4.0.0" +websocket@^1.0.32, websocket@^1.0.34: + version "1.0.34" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + whatwg-fetch@>=0.10.0: version "2.0.3" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" @@ -8483,6 +9217,11 @@ y18n@^4.0.0: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== + yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"