From 00f5908cbe7e33992f5b6ff46e1b85575ad88d76 Mon Sep 17 00:00:00 2001 From: Hoon Kim Date: Mon, 27 Sep 2021 13:39:00 +0200 Subject: [PATCH] Astar faucet instance (#2) * add faucet command and astar api inst * balance format * refactor api instance * add fund transfers * change token decimal * added callback interaction * fix message block style * add channel id * add description --- README.md | 17 +- package.json | 6 +- src/app.ts | 113 ++++++- src/clients/astar.ts | 113 +++++++ src/clients/discord.ts | 54 +--- src/clients/index.ts | 1 + src/config/appConfig.json | 190 ++++++++--- src/config/discordAppConfig.ts | 2 + src/helpers/addressCheck.ts | 20 ++ src/helpers/index.ts | 3 +- tests/sample.test.ts | 4 +- yarn.lock | 558 ++++++++++++++++++++++++++++++++- 12 files changed, 971 insertions(+), 110 deletions(-) create mode 100644 src/clients/astar.ts create mode 100644 src/helpers/addressCheck.ts diff --git a/README.md b/README.md index 72e7e42..9d16a9c 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,5 @@ # Discord Bot Starter Project -## Introduction - -This is a Discord bot starter project made with [Discord.js](https://discord.js.org/) and TypeScript. -This template project comes with a simple ping-pong slash command for a predefined guild (server). - ## Usage ### Creating a Discord Application @@ -25,17 +20,15 @@ You can do this by creating a `.env` file with the following variables. # Bot user app token DISCORD_APP_TOKEN= # Bot user client ID -DISCORD_APP_CLIENT_ID= +DISCORD_APP_CLIENT_ID= # Server ID for the bot to be installed DISCORD_GUILD_ID= +# The channel ID for the bot to listen to +DISCORD_FAUCET_CHANNEL_ID= +# Secret phrase (nmonic) for the faucet account +FAUCET_SECRET_PHRASE= ``` -The `DISCORD_GUILD_ID` refers to the Discord server ID (or guild ID) that the bot will listen to. -You can configure the OAuth2 redirect URL to read and store the guild ID from a remote database when the user add the application to their server for public distribution. - -`src/config/appConfig.json` contains the bot permission, scope, and slash commands. -The values must reflect the ones in the Discord Developer Portal app settings. - ### Scripts ```bash diff --git a/package.json b/package.json index d7826f8..167a2d0 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "build": "tsc --project tsconfig.json", "lint": "eslint '*/**/*.{js,ts}' --quiet --fix", "lint:check": "eslint '*/**/*.{js,ts}'", - "test": "NODE_ENV=test jest --verbose --coverage" + "test": "NODE_ENV=test echo \"Test not implemented\"!" }, "engines": { "node": ">=16.6.x" @@ -61,6 +61,10 @@ }, "dependencies": { "@discordjs/rest": "^0.1.0-canary.0", + "@polkadot/api": "^6.0.5", + "@polkadot/keyring": "^7.4.1", + "@polkadot/util": "^7.4.1", + "@polkadot/util-crypto": "^7.4.1", "discord-api-types": "^0.23.1", "discord.js": "^13.1.0", "express": "^4.17.1" diff --git a/src/app.ts b/src/app.ts index 988c4eb..f09e363 100644 --- a/src/app.ts +++ b/src/app.ts @@ -1,5 +1,14 @@ -import { discordApp, expressApp } from './clients'; -import { DISCORD_APP_TOKEN, DISCORD_APP_CLIENT_ID } from './config'; +import { + AstarFaucetApi, + expressApp, + DiscordCredentials, + refreshSlashCommands, + NetworkName, + ASTAR_TOKEN_DECIMALS, +} from './clients'; +import { DISCORD_APP_TOKEN, DISCORD_APP_CLIENT_ID, DISCORD_GUILD_ID, DISCORD_FAUCET_CHANNEL_ID } from './config'; +import { Client, Intents, Interaction } from 'discord.js'; +import BN from 'bn.js'; /** * the main entry function for running the discord application @@ -8,6 +17,104 @@ export default async function app() { if (!DISCORD_APP_TOKEN || !DISCORD_APP_CLIENT_ID) { throw new Error('No app tokens or ID were given!'); } - await discordApp({ token: DISCORD_APP_TOKEN, clientId: DISCORD_APP_CLIENT_ID }); + + await discordFaucetApp({ token: DISCORD_APP_TOKEN, clientId: DISCORD_APP_CLIENT_ID }); await expressApp(); } + +/** + * The main controller for Discord API requests. Everything that is done from Discord should be written here + */ +const discordFaucetApp = async (appCred: DiscordCredentials) => { + // todo: refactor this to handle multiple guilds + if (!DISCORD_GUILD_ID || !DISCORD_FAUCET_CHANNEL_ID) { + throw new Error( + 'No server information was given, please set the environment variable DISCORD_GUILD_ID and DISCORD_FAUCET_CHANNEL_ID', + ); + } + + if (!process.env.FAUCET_SECRET_PHRASE) { + throw new Error('No seed phrase was provided for the faucet account'); + } + + await refreshSlashCommands(appCred.token, appCred.clientId, DISCORD_GUILD_ID); + + const clientApp = new Client({ intents: [Intents.FLAGS.GUILDS] }); + + // send 30 testnet tokens per call + const oneToken = new BN(10).pow(new BN(ASTAR_TOKEN_DECIMALS)); + const dripAmount = new BN(15).mul(oneToken); + + const astarApi = new AstarFaucetApi({ faucetAccountSeed: process.env.FAUCET_SECRET_PHRASE, dripAmount }); + + // todo: find a way to connect to both Dusty and Shibuya + await astarApi.connectTo('shibuya'); + + clientApp.on('ready', async () => { + if (clientApp.user) { + console.log(`${clientApp.user.tag} is ready!`); + } else { + console.log(`Failed to login to Discord`); + } + }); + + // handle faucet token request + clientApp.on('interactionCreate', async (interaction: Interaction) => { + if (!interaction.isCommand() || interaction.channelId !== DISCORD_FAUCET_CHANNEL_ID) return; + + const { commandName } = interaction; + + if (commandName === 'drip') { + // note: the values are based on `src/config/appConfig.json` + const networkName = interaction.options.data[0]?.value as NetworkName; + const address = interaction.options.data[1]?.value; + try { + if (!address || typeof address !== 'string' || !networkName) { + throw new Error('No address was given!'); + } + + // todo: check if the user has already requested tokens or not + await interaction.deferReply(); + + const unsub = await astarApi.sendTokenTo(address, async (result) => { + console.log(`Sending ${astarApi.formatBalance(dripAmount)} to ${address}`); + + await interaction.editReply( + `Sending ${astarApi.formatBalance( + dripAmount, + )} to \`${address}\`. Please wait until the transaction has been finalized.`, + ); + + if (result.status.isInBlock) { + console.log(`Transaction included at block hash ${result.status.asInBlock}`); + + await interaction.editReply( + `Sending ${astarApi.formatBalance( + dripAmount, + )} to \`${address}\`. Transaction included at block hash \`${result.status.asInBlock}\``, + ); + } else if (result.status.isFinalized) { + console.log(`Transaction finalized at block hash ${result.status.asFinalized}`); + + const remainingFunds = await astarApi.getFaucetBalance(); + await interaction.editReply( + `Sent ${astarApi.formatBalance( + dripAmount, + )} to \`${address}\`. Transaction finalized at blockHash \`${ + result.status.asFinalized + }\`.\nRemaining funds: \`${remainingFunds}\`\nPlease send unused tokens back to the faucet \`${ + astarApi.faucetAccount.address + }\``, + ); + unsub(); + } + }); + } catch (err) { + console.warn(err); + await interaction.editReply({ content: `${err}` }); + } + } + }); + + await clientApp.login(DISCORD_APP_TOKEN); +}; diff --git a/src/clients/astar.ts b/src/clients/astar.ts new file mode 100644 index 0000000..654fc8f --- /dev/null +++ b/src/clients/astar.ts @@ -0,0 +1,113 @@ +import { ApiPromise, WsProvider, Keyring } from '@polkadot/api'; +import type { ISubmittableResult } from '@polkadot/types/types'; +import { appConfig } from '../config'; +import { formatBalance } from '@polkadot/util'; +import { evmToAddress } from '@polkadot/util-crypto'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import BN from 'bn.js'; +import { checkAddressType } from '../helpers'; + +export type NetworkName = 'dusty' | 'shibuya'; +export interface FaucetOption { + faucetAccountSeed: string; + dripAmount: BN; +} + +// ss58 address prefix +export const ASTAR_SS58_FORMAT = 5; + +export const ASTAR_TOKEN_DECIMALS = 18; + +export class AstarFaucetApi { + private _keyring: Keyring; + private _faucetAccount: KeyringPair; + private _api: ApiPromise; + // token amount to send from the faucet per request + private _dripAmount: BN; + + public get faucetAccount() { + return this._faucetAccount; + } + + public get api() { + return this._api; + } + + constructor(options: FaucetOption) { + this._keyring = new Keyring({ type: 'sr25519', ss58Format: ASTAR_SS58_FORMAT }); + this._faucetAccount = this._keyring.addFromUri(options.faucetAccountSeed, { name: 'Astar Faucet' }); + this._dripAmount = options.dripAmount; + //this._api = new ApiPromise(); + } + + public async connectTo(networkName: NetworkName) { + // get chain endpoint and types from the config file + const endpoint = appConfig.network[networkName].endpoint; + const chainMetaTypes = appConfig.network[networkName].types; + + // establish node connection with the endpoint + const provider = new WsProvider(endpoint); + const api = new ApiPromise({ + provider, + types: chainMetaTypes, + }); + + const apiInst = await api.isReady; + + // get chain metadata + const { tokenSymbol } = await apiInst.rpc.system.properties(); + const unit = tokenSymbol.unwrap()[0].toString(); + + // set token display format + formatBalance.setDefaults({ + unit, + decimals: ASTAR_TOKEN_DECIMALS, // we can get this directly from the chain too + }); + + // subscribe to account balance changes + // await apiInst.query.system.account(this._faucetAccount.address, ({ data }) => { + // const faucetReserve = formatBalance(data.free.toBn(), { + // withSi: true, + // withUnit: true, + // }); + // console.log(`Faucet has ${faucetReserve}`); + // }); + + this._api = apiInst; + + return apiInst; + } + + public async getFaucetBalance() { + const addr = this._faucetAccount.address; + + const { data } = await this._api.query.system.account(addr); + + const faucetReserve = this.formatBalance(data.free.toBn()); + + return faucetReserve; + } + + public formatBalance(input: string | number | BN) { + return formatBalance(input, { + withSi: true, + withUnit: true, + }); + } + + public async sendTokenTo(to: string, statusCb: (result: ISubmittableResult) => Promise) { + // send 30 testnet tokens per call + //const faucetAmount = new BN(30).mul(new BN(10).pow(new BN(18))); + + let destinationAccount = to; + const addrType = checkAddressType(to); + + // convert the h160 (evm) account to ss58 before sending the tokens + if (addrType === 'H160') { + destinationAccount = evmToAddress(to, ASTAR_SS58_FORMAT); + } + return await this._api.tx.balances + .transfer(destinationAccount, this._dripAmount) + .signAndSend(this._faucetAccount, statusCb); + } +} diff --git a/src/clients/discord.ts b/src/clients/discord.ts index 48a71e5..b1f062a 100644 --- a/src/clients/discord.ts +++ b/src/clients/discord.ts @@ -1,7 +1,6 @@ -import { Client, Intents } from 'discord.js'; import { REST } from '@discordjs/rest'; import { Routes } from 'discord-api-types/v9'; -import { DISCORD_APP_TOKEN, DISCORD_APP_CLIENT_ID, DISCORD_GUILD_ID, appConfig } from '../config'; +import { DISCORD_APP_CLIENT_ID, appConfig } from '../config'; export interface DiscordCredentials { token: string; @@ -18,11 +17,11 @@ export const appOauthInstallUrl = () => { // used to add the bot to a server (https://discordjs.guide/preparations/adding-your-bot-to-servers.html#bot-invite-links) return `https://discord.com/api/oauth2/authorize?client_id=${DISCORD_APP_CLIENT_ID}&permissions=${ - appConfig.permissions - }&scope=${concatBotScope(appConfig.scope)}`; + appConfig.discord.permissions + }&scope=${concatBotScope(appConfig.discord.scope)}`; }; -const refreshSlashCommands = async (appToken: string, appClientId: string, guildId: string) => { +export const refreshSlashCommands = async (appToken: string, appClientId: string, guildId: string) => { // generally, you only need to run this function when the slash command changes const rest = new REST({ version: '9' }).setToken(appToken); try { @@ -30,7 +29,7 @@ const refreshSlashCommands = async (appToken: string, appClientId: string, guild // note: the `DISCORD_GUILD_ID` is hard-coded in this project, but this can be changed to read it from a remote database await rest.put(Routes.applicationGuildCommands(appClientId, guildId), { - body: appConfig.slashCommands, + body: appConfig.discord.slashCommands, }); console.log('Successfully reloaded application (/) commands.'); @@ -38,46 +37,3 @@ const refreshSlashCommands = async (appToken: string, appClientId: string, guild console.error(error); } }; - -/** - * The main controller for Discord API requests. Everything that is done from Discord should be written here - */ -export const discordApp = async (appCred: DiscordCredentials) => { - // todo: refactor this to handle multiple guilds - if (!DISCORD_GUILD_ID) { - throw new Error( - 'No Discord bot token was provided, please set the environment variable DISCORD_APP_TOKEN and DISCORD_APP_CLIENT_ID', - ); - } - - await refreshSlashCommands(appCred.token, appCred.clientId, DISCORD_GUILD_ID); - - const clientApp = new Client({ intents: [Intents.FLAGS.GUILDS] }); - - clientApp.on('ready', async () => { - if (clientApp.user) { - console.log(`${clientApp.user.tag} is ready!`); - } else { - console.log(`Failed to login as a user!`); - } - }); - - // a ping-pong test - clientApp.on('interactionCreate', async (interaction) => { - if (!interaction.isCommand()) return; - - const { commandName } = interaction; - - if (commandName === 'ping') { - await interaction.reply('Pong!'); - } else if (commandName === 'greet') { - await interaction.reply('Hello ' + interaction.user.tag); - } else if (commandName === 'blep') { - await interaction.reply(`You chose ${JSON.stringify(interaction.options.data)}`); - } - }); - - await clientApp.login(DISCORD_APP_TOKEN); - - return clientApp; -}; diff --git a/src/clients/index.ts b/src/clients/index.ts index 70393f3..881e7ff 100644 --- a/src/clients/index.ts +++ b/src/clients/index.ts @@ -1,2 +1,3 @@ export * from './discord'; export * from './express'; +export * from './astar'; diff --git a/src/config/appConfig.json b/src/config/appConfig.json index 99a179e..c6011ee 100644 --- a/src/config/appConfig.json +++ b/src/config/appConfig.json @@ -1,44 +1,154 @@ { - "scope": ["bot", "applications.commands"], - "permissions": 2147551232, - "slashCommands": [ - { - "name": "ping", - "description": "Replies with Pong!" - }, - { "name": "greet", "description": "Greets the user" }, - { - "name": "blep", - "type": 1, - "description": "Send a random adorable animal photo", - "options": [ - { - "name": "animal", - "description": "The type of animal", - "type": 3, - "required": true, - "choices": [ - { - "name": "Dog", - "value": "animal_dog" - }, - { - "name": "Cat", - "value": "animal_cat" - }, - { - "name": "Penguin", - "value": "animal_penguin" - } - ] - }, - { - "name": "only_smol", - "description": "Whether to show only baby animals", - "type": 5, - "required": false + "discord": { + "scope": ["bot", "applications.commands"], + "permissions": 2147551232, + "slashCommands": [ + { + "name": "drip", + "type": 1, + "description": "Receive a testnet token from the faucet", + "options": [ + { + "name": "network", + "description": "The name of the testnet", + "type": 3, + "required": true, + "choices": [ + { + "name": "Shibuya", + "value": "shibuya" + } + ] + }, + { + "name": "address", + "description": "Your SS58 (Substrate) or H160 (EVM) public address for receiving the token", + "type": 3, + "required": false + } + ] + } + ] + }, + + "network": { + "dusty": { + "endpoint": "wss://rpc.dusty.plasmnet.io", + "types": { + "AccountInfo": "AccountInfoWithProviders", + "AuthorityId": "AccountId", + "AuthorityVote": "u32", + "ChallengeGameOf": { + "challenges": "Vec", + "createdBlock": "BlockNumber", + "decision": "Decision", + "propertyHash": "Hash" + }, + "Claim": { + "amount": "u128", + "approve": "BTreeSet", + "complete": "bool", + "decline": "BTreeSet", + "params": "Lockdrop" + }, + "ClaimId": "H256", + "ClaimVote": { + "approve": "bool", + "authority": "u16", + "claim_id": "ClaimId" + }, + "Decision": { + "_enum": ["Undecided", "True", "False"] + }, + "DollarRate": "u128", + "EraIndex": "u32", + "EraStakingPoints": { + "individual": "BTreeMap", + "total": "Balance" + }, + "Keys": "SessionKeys3", + "Lockdrop": { + "duration": "u64", + "public_key": "[u8; 33]", + "transaction_hash": "H256", + "type": "u8", + "value": "u128" + }, + "Parameters": { + "canBeNominated": "bool", + "optionExpired": "u128", + "optionP": "u32" + }, + "PredicateContractOf": { + "inputs": "Vec", + "predicateHash": "Hash" + }, + "PredicateHash": "Hash", + "PrefabOvmModule": { + "code": "Vec", + "scheduleVersion": "u32" + }, + "Property": { + "inputs": "Vec>", + "predicateAddress": "AccountId" + }, + "PropertyOf": { + "inputs": "Vec>", + "predicateAddress": "AccountId" + }, + "Schedule": { + "putCodePerByteCost": "Weight", + "version": "u32" + }, + "SmartContract": { + "_enum": { + "Wasm": "AccountId", + "Evm": "H160" + } + }, + "StakingParameters": { + "canBeNominated": "bool", + "optionExpired": "u128", + "optionP": "u32" + }, + "TickerRate": { + "authority": "u16", + "btc": "u128", + "eth": "u128" + }, + "VoteCounts": { + "bad": "u32", + "good": "u32" } - ] + } + }, + "shibuya": { + "endpoint": "wss://rpc.shibuya.astar.network", + "types": { + "Address": "MultiAddress", + "LookupSource": "MultiAddress", + "ChainId": { + "_enum": { + "RelayChain": null, + "Parachain": "ParaId" + } + }, + "XCurrencyId": { + "chain_id": "ChainId", + "currency_id": "Bytes" + }, + "CurrencyIdOf": "CurrencyId", + "CurrencyId": { + "_enum": { + "Token": "TokenSymbol" + } + }, + "TokenSymbol": { + "_enum": ["ACA", "AUSD", "DOT", "XBTC", "LDOT", "RENBTC", "SDN", "PLM"] + }, + "AmountOf": "Amount", + "Amount": "i128" + } } - ] + } } diff --git a/src/config/discordAppConfig.ts b/src/config/discordAppConfig.ts index 53f34ad..76ee8a9 100644 --- a/src/config/discordAppConfig.ts +++ b/src/config/discordAppConfig.ts @@ -3,3 +3,5 @@ export const DISCORD_APP_TOKEN = process.env.DISCORD_APP_TOKEN; export const DISCORD_APP_CLIENT_ID = process.env.DISCORD_APP_CLIENT_ID; export const DISCORD_GUILD_ID = process.env.DISCORD_GUILD_ID; + +export const DISCORD_FAUCET_CHANNEL_ID = process.env.DISCORD_FAUCET_CHANNEL_ID; diff --git a/src/helpers/addressCheck.ts b/src/helpers/addressCheck.ts new file mode 100644 index 0000000..3ae1360 --- /dev/null +++ b/src/helpers/addressCheck.ts @@ -0,0 +1,20 @@ +import { checkAddress, isEthereumAddress } from '@polkadot/util-crypto'; +import { ASTAR_SS58_FORMAT } from '../clients'; + +export type AddressType = 'SS58' | 'H160'; + +export const checkAddressType = (address: string) => { + const addressType: AddressType = isEthereumAddress(address) ? 'H160' : 'SS58'; + + // we already perform a check for H160 address string from the above line, so we only need to perform a check if it's a valid ss58 address string + if (addressType === 'SS58') { + const checkRes = checkAddress(address, ASTAR_SS58_FORMAT); + + // throw en error if the address validation failed and the error message string is not null + if (checkRes[1] !== null) { + throw new Error(checkRes[1]); + } + } + + return addressType; +}; diff --git a/src/helpers/index.ts b/src/helpers/index.ts index 6822c33..e187453 100644 --- a/src/helpers/index.ts +++ b/src/helpers/index.ts @@ -1 +1,2 @@ -export * as Math from './addNumber'; +export * from './addNumber'; +export * from './addressCheck'; diff --git a/tests/sample.test.ts b/tests/sample.test.ts index 0c71fa5..7d80859 100644 --- a/tests/sample.test.ts +++ b/tests/sample.test.ts @@ -1,10 +1,10 @@ -import { Math } from '../src/helpers'; +import { addNumbers } from '../src/helpers'; // this is just a simple test starter for jest describe('simple math', () => { it('should return a value that is the sum of two parameters', async () => { - const response = Math.addNumbers(2, 6); + const response = addNumbers(2, 6); expect(response).toEqual(8); }); }); diff --git a/yarn.lock b/yarn.lock index 6ecedad..5ba559a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -272,6 +272,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/runtime@^7.15.3", "@babel/runtime@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" + integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.14.5", "@babel/template@^7.3.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" @@ -611,6 +618,207 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@polkadot/api-derive@6.0.5": + version "6.0.5" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-6.0.5.tgz#f75038822517602ad7cb6421a32e282f7570f16a" + integrity sha512-I4Lq2bde5Mbw1vdiZQQHUg9+WzJqGR2NwWPej0jfEO9wWvCSri1d9c7KxgTZRLkb276L8FZu/o8P/uuC3nC56w== + dependencies: + "@babel/runtime" "^7.15.4" + "@polkadot/api" "6.0.5" + "@polkadot/rpc-core" "6.0.5" + "@polkadot/types" "6.0.5" + "@polkadot/util" "^7.4.1" + "@polkadot/util-crypto" "^7.4.1" + rxjs "^7.3.0" + +"@polkadot/api@6.0.5", "@polkadot/api@^6.0.5": + version "6.0.5" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-6.0.5.tgz#2474d4a5b06625159248816a89386340f943e5fc" + integrity sha512-DX0bN358SWP5F52UxBIl4A0/fIhua0mFhbcGLlu/JoElzqHJMxPaQU7hPRMS3fB7+YvZ3h/3VMSQ9V0bnw9hYA== + dependencies: + "@babel/runtime" "^7.15.4" + "@polkadot/api-derive" "6.0.5" + "@polkadot/keyring" "^7.4.1" + "@polkadot/rpc-core" "6.0.5" + "@polkadot/rpc-provider" "6.0.5" + "@polkadot/types" "6.0.5" + "@polkadot/types-known" "6.0.5" + "@polkadot/util" "^7.4.1" + "@polkadot/util-crypto" "^7.4.1" + eventemitter3 "^4.0.7" + rxjs "^7.3.0" + +"@polkadot/keyring@^7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-7.4.1.tgz#cda3f371cc2a9bf4b8847bad41c4c14edfb05745" + integrity sha512-3QCfhiv8O2vpbQ4qThn7aQSEZ3EJm0WMJ1TxklKdzaZ+5K6kVFXOGbS3ntRXXjjtoOPSPuyjOiOq2YEi+69s4A== + dependencies: + "@babel/runtime" "^7.15.4" + "@polkadot/util" "7.4.1" + "@polkadot/util-crypto" "7.4.1" + +"@polkadot/networks@7.4.1", "@polkadot/networks@^7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-7.4.1.tgz#02b4a1a159e64b90a08d0f3a0206858b64846a3b" + integrity sha512-V+IagmVtaoDwR6zA+8R4JeihuTVJlheeYbDJyYCIyS9WtYImb5c7j/83XzoGicx+2auc+rwK2dH8hxHboi8Quw== + dependencies: + "@babel/runtime" "^7.15.4" + +"@polkadot/rpc-core@6.0.5": + version "6.0.5" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-6.0.5.tgz#10e6c236d833573c8512079811034d4e82cbc86f" + integrity sha512-jfC2HyjFPs1F3vTcWCkehb3QkUpF4548Ksx8svfOpaOnJqv1fRMcnqUSSsxNtgyIr7P90Zc5tXeCTujznvLy+A== + dependencies: + "@babel/runtime" "^7.15.4" + "@polkadot/rpc-provider" "6.0.5" + "@polkadot/types" "6.0.5" + "@polkadot/util" "^7.4.1" + rxjs "^7.3.0" + +"@polkadot/rpc-provider@6.0.5": + version "6.0.5" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-6.0.5.tgz#a7dec0eb615ca4650275da03fff9ed7f19932006" + integrity sha512-PlF3hS6nLsxKIGIONVF8r30p+UwZGEpf6uWf1dsLByXFVHKO1fDfJIfDUlOZXC86YxYC3uwjn3IWf0GB6MfOUg== + dependencies: + "@babel/runtime" "^7.15.4" + "@polkadot/types" "6.0.5" + "@polkadot/util" "^7.4.1" + "@polkadot/util-crypto" "^7.4.1" + "@polkadot/x-fetch" "^7.4.1" + "@polkadot/x-global" "^7.4.1" + "@polkadot/x-ws" "^7.4.1" + eventemitter3 "^4.0.7" + +"@polkadot/types-known@6.0.5": + version "6.0.5" + resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-6.0.5.tgz#e9b52a9e9f2c0df674163a6ae8ba3078f2fea156" + integrity sha512-cP7iIGnbXuFyiV/OYZfrGhgOj/nXQlwTofavTqJr2NpXlRwqzvGSO63Dvfyliy7aHpzLGizLGu8yxq4hCxJw4w== + dependencies: + "@babel/runtime" "^7.15.4" + "@polkadot/networks" "^7.4.1" + "@polkadot/types" "6.0.5" + "@polkadot/util" "^7.4.1" + +"@polkadot/types@6.0.5": + version "6.0.5" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-6.0.5.tgz#7998bec6b0429df341554e4f77f33a19e47eda81" + integrity sha512-KpYN0FpNEQPhk1aMQE8aN3OFPqkJNIbeJ0b7njMg8+zuXpYinSAs+7BWdtdOxFoujWLXKKycw2FNAvQIiP5MnQ== + dependencies: + "@babel/runtime" "^7.15.4" + "@polkadot/util" "^7.4.1" + "@polkadot/util-crypto" "^7.4.1" + rxjs "^7.3.0" + +"@polkadot/util-crypto@7.4.1", "@polkadot/util-crypto@^7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-7.4.1.tgz#76760df995e9feb7deef69d85cab6c13e9ceb977" + integrity sha512-ragnHzqROJl6mlWDIgcHHMM42XA/v7BlnATbVEkKuKOV8xHmdpNHDdtTsqwWzJ+F+oV1jeITaIUZqPuEDWloiw== + dependencies: + "@babel/runtime" "^7.15.4" + "@polkadot/networks" "7.4.1" + "@polkadot/util" "7.4.1" + "@polkadot/wasm-crypto" "^4.2.1" + "@polkadot/x-randomvalues" "7.4.1" + base-x "^3.0.8" + base64-js "^1.5.1" + blakejs "^1.1.1" + bn.js "^4.12.0" + create-hash "^1.2.0" + ed2curve "^0.3.0" + elliptic "^6.5.4" + hash.js "^1.1.7" + js-sha3 "^0.8.0" + scryptsy "^2.1.0" + tweetnacl "^1.0.3" + xxhashjs "^0.2.2" + +"@polkadot/util@7.4.1", "@polkadot/util@^7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-7.4.1.tgz#f5aa9b60e5ca5c5b8f0d188beb7cbd47dd6c4041" + integrity sha512-HHsVVh8XpeIZZEHJDMZ8tCBnS2UfVuiZ4+79IuQln437HxL1uVfuTyv0mx0qsv6KsOyifMpxrUBfeAlna5jrWA== + dependencies: + "@babel/runtime" "^7.15.4" + "@polkadot/x-textdecoder" "7.4.1" + "@polkadot/x-textencoder" "7.4.1" + "@types/bn.js" "^4.11.6" + bn.js "^4.12.0" + camelcase "^6.2.0" + ip-regex "^4.3.0" + +"@polkadot/wasm-crypto-asmjs@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-4.2.1.tgz#6b7eae1c011709f8042dfd30872a5fc5e9e021c0" + integrity sha512-ON9EBpTNDCI3QRUmuQJIegYoAcwvxDaNNA7uwKTaEEStu8LjCIbQxbt4WbOBYWI0PoUpl4iIluXdT3XZ3V3jXA== + dependencies: + "@babel/runtime" "^7.15.3" + +"@polkadot/wasm-crypto-wasm@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-4.2.1.tgz#2a86f9b405e7195c3f523798c6ce4afffd19737e" + integrity sha512-Rs2CKiR4D+2hKzmKBfPNYxcd2E8NfLWia0av4fgicjT9YsWIWOGQUi9AtSOfazPOR9FrjxKJy+chQxAkcfKMnQ== + dependencies: + "@babel/runtime" "^7.15.3" + +"@polkadot/wasm-crypto@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-4.2.1.tgz#4d09402f5ac71a90962fb58cbe4b1707772a4fb6" + integrity sha512-C/A/QnemOilRTLnM0LfhPY2N/x3ZFd1ihm9sXYyuh98CxtekSVYI9h4IJ5Jrgz5imSUHgvt9oJLqJ5GbWQV/Zg== + dependencies: + "@babel/runtime" "^7.15.3" + "@polkadot/wasm-crypto-asmjs" "^4.2.1" + "@polkadot/wasm-crypto-wasm" "^4.2.1" + +"@polkadot/x-fetch@^7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-fetch/-/x-fetch-7.4.1.tgz#70dc3f648981f24b32afbcfb5b59e2000c72f4b2" + integrity sha512-ot7VcBVVSnrh+Kt0I+p/YISsenRFpmFl6sBGk4qz90JlPbrmuc93iTTwyImi1QaT6wYBEGGcM56wyfTxkzGG4g== + dependencies: + "@babel/runtime" "^7.15.4" + "@polkadot/x-global" "7.4.1" + "@types/node-fetch" "^2.5.12" + node-fetch "^2.6.2" + +"@polkadot/x-global@7.4.1", "@polkadot/x-global@^7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-7.4.1.tgz#66f7f8a5d0208832773a4606c56d10e7927552fc" + integrity sha512-am24TT18b3H028ERjOtfrMt1MBIU4PN17n7+tpDmnS09HA+6ebfLlVTSU5gDWNu9p0EjzE0gOMTJIUw62mzkkg== + dependencies: + "@babel/runtime" "^7.15.4" + +"@polkadot/x-randomvalues@7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-7.4.1.tgz#e48d6c7fa869f5f871b2d18aa8b864c9802e9aeb" + integrity sha512-7XRXcII5zoGXXpRInR61DZsWW3XWqkOWctbrWSgT5psrw9rGmHs2iyRa8lsqtGUAFCiFM0FcRwSJ/hbRodgLKQ== + dependencies: + "@babel/runtime" "^7.15.4" + "@polkadot/x-global" "7.4.1" + +"@polkadot/x-textdecoder@7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-7.4.1.tgz#e0e0bc375d5aa7fad8929a7ea1c279884c57ad26" + integrity sha512-7tbwF8u1SJGS/AUWee3ZukcyW6o03ZVbgvXYcPtd+Xfx8WXUuUih0bJVeF7B0HevenBpqCWjsdcAQIJOcHOBpg== + dependencies: + "@babel/runtime" "^7.15.4" + "@polkadot/x-global" "7.4.1" + +"@polkadot/x-textencoder@7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-7.4.1.tgz#0411213c6ab3f6f80af074f49ed12174c3e28775" + integrity sha512-QYdSQ8mGj3LXGSWQOUKh/3ZlmDgSaHA+nKmIWwgdzXStfy77ErQbIo+AVQsDSdbr+bDAteugWPO+AoSBAqBkHg== + dependencies: + "@babel/runtime" "^7.15.4" + "@polkadot/x-global" "7.4.1" + +"@polkadot/x-ws@^7.4.1": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@polkadot/x-ws/-/x-ws-7.4.1.tgz#94b310e3385dabf550adba99a2a06cbf03a737cb" + integrity sha512-OLM61XX8Ut8NiCqKjraDr+t8WNFGZEuhOOzyPiFfUYqSML12U0/xrdbkS2AQTrtey4Cxv7iJB9GWCjn0amM4LQ== + dependencies: + "@babel/runtime" "^7.15.4" + "@polkadot/x-global" "7.4.1" + "@types/websocket" "^1.0.4" + websocket "^1.0.34" + "@sapphire/async-queue@^1.1.4": version "1.1.4" resolved "https://registry.yarnpkg.com/@sapphire/async-queue/-/async-queue-1.1.4.tgz#ae431310917a8880961cebe8e59df6ffa40f2957" @@ -698,6 +906,13 @@ dependencies: "@babel/types" "^7.3.0" +"@types/bn.js@^4.11.6": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + "@types/body-parser@*": version "1.19.1" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.1.tgz#0c0174c42a7d017b818303d4b5d969cb0b75929c" @@ -784,6 +999,14 @@ "@types/node" "*" form-data "^3.0.0" +"@types/node-fetch@^2.5.12": + version "2.5.12" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" + integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== + dependencies: + "@types/node" "*" + form-data "^3.0.0" + "@types/node@*": version "16.3.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.3.0.tgz#1836664e4fad13b51b07eb6e882a53925e6543c4" @@ -832,6 +1055,13 @@ resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== +"@types/websocket@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8" + integrity sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA== + dependencies: + "@types/node" "*" + "@types/ws@^7.4.7": version "7.4.7" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" @@ -1147,11 +1377,33 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base-x@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" + integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +blakejs@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.1.tgz#bf313053978b2cd4c444a48795710be05c785702" + integrity sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg== + +bn.js@^4.11.9, bn.js@^4.12.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + body-parser@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" @@ -1183,6 +1435,11 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" @@ -1218,6 +1475,13 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +bufferutil@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.3.tgz#66724b756bed23cd7c28c4d306d7994f9943cc6b" + integrity sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw== + dependencies: + node-gyp-build "^4.2.0" + bytes@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" @@ -1285,6 +1549,14 @@ ci-info@^3.1.1: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== +cipher-base@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + cjs-module-lexer@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.1.tgz#2fd46d9906a126965aa541345c499aaa18e8cd73" @@ -1379,6 +1651,17 @@ cookie@0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== +create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -1410,6 +1693,19 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" +cuint@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= + +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" + data-urls@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -1419,7 +1715,7 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -debug@2.6.9: +debug@2.6.9, debug@^2.2.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -1552,6 +1848,13 @@ dynamic-dedupe@^0.3.0: dependencies: xtend "^4.0.0" +ed2curve@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/ed2curve/-/ed2curve-0.3.0.tgz#322b575152a45305429d546b071823a93129a05d" + integrity sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ== + dependencies: + tweetnacl "1.x.x" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -1562,6 +1865,19 @@ electron-to-chromium@^1.3.723: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.771.tgz#c4aa601e6420e11926095f75fe803956a1b4bd81" integrity sha512-zHMomTqkpnAD9W5rhXE1aiU3ogGFrqWzdvM4C6222SREiqsWQb2w0S7P2Ii44qCaGimmAP1z+OydllM438uJyA== +elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + emittery@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" @@ -1584,6 +1900,32 @@ enquirer@^2.3.5: dependencies: ansi-colors "^4.1.1" +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +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" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -1764,6 +2106,11 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -1832,6 +2179,13 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" +ext@^1.1.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.5.0.tgz#e93b97ae0cb23f8370380f6107d2d2b7887687ad" + integrity sha512-+ONcYoWj/SoQwUofMr94aGu05Ou4FepKi7N7b+O8T4jVfyIsZQV1/xeS8jpaBzF0csAk0KLXoHCxU7cKYZjo1Q== + dependencies: + type "^2.5.0" + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -2058,6 +2412,32 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -2160,7 +2540,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2170,6 +2550,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +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== + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -2712,6 +3097,11 @@ jest@^27.2.0: import-local "^3.0.2" jest-cli "^27.2.0" +js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -2879,6 +3269,15 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -2934,6 +3333,16 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -2976,6 +3385,11 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + nock@^13.1.3: version "13.1.3" resolved "https://registry.yarnpkg.com/nock/-/nock-13.1.3.tgz#110b005965654a8ffb798e87bad18b467bff15f9" @@ -2991,6 +3405,18 @@ node-fetch@^2.6.1: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== +node-fetch@^2.6.2: + version "2.6.5" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd" + integrity sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" + integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -3268,6 +3694,15 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -3275,6 +3710,11 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + regexpp@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" @@ -3334,6 +3774,14 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -3341,11 +3789,23 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +rxjs@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.3.0.tgz#39fe4f3461dc1e50be1475b2b85a0a88c1e938c6" + integrity sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw== + dependencies: + tslib "~2.1.0" + safe-buffer@5.1.2, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -3358,6 +3818,11 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" +scryptsy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" + integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== + semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" @@ -3404,6 +3869,14 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +sha.js@^2.4.0: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -3497,6 +3970,13 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.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" + strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" @@ -3640,6 +4120,11 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + tree-kill@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" @@ -3730,6 +4215,11 @@ tslib@^2.3.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +tslib@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -3737,6 +4227,11 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +tweetnacl@1.x.x, tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -3779,6 +4274,16 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +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.5.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" + integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -3808,6 +4313,18 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +utf-8-validate@^5.0.2: + version "5.0.5" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.5.tgz#dd32c2e82c72002dc9f02eb67ba6761f43456ca1" + integrity sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ== + dependencies: + node-gyp-build "^4.2.0" + +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= + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -3858,6 +4375,11 @@ walker@^1.0.7: dependencies: makeerror "1.0.x" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -3868,6 +4390,18 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== +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-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -3880,6 +4414,14 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" @@ -3950,11 +4492,23 @@ xtend@^4.0.0: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +xxhashjs@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" + integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== + dependencies: + cuint "^0.2.2" + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"