From 72dfecd935b1247dffd2a1e8461089971bc82a55 Mon Sep 17 00:00:00 2001 From: Christoph-Samuel Pitter Date: Thu, 4 Nov 2021 17:40:37 +0400 Subject: [PATCH 1/6] automate generation of a jsonfile with all the address as output --- Dockerfile | 4 +- README.md | 46 +-------------------- bridge/deploy_bridge_and_du2.sh | 6 ++- deploy_du2_factories.js | 25 ++++++++++++ index.js | 71 +++++++++++++++++++++++++++------ preload_parity_images.sh | 1 + run.sh | 12 ++++++ 7 files changed, 106 insertions(+), 59 deletions(-) create mode 100755 run.sh diff --git a/Dockerfile b/Dockerfile index a1822db..939bf62 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,5 +26,7 @@ RUN npm --version COPY ./ ./ RUN npm ci --only=production ENV DEBUG=* -CMD node index.js && ./bridge/deploy_bridge_and_du2.sh + +# run deployments and combine their outputs (addresses) into config.json +CMD ./run.sh diff --git a/README.md b/README.md index e25f36b..41f5925 100644 --- a/README.md +++ b/README.md @@ -25,51 +25,7 @@ Private Keys: ## Dev docker addresses -This script generates the following Ethereum addresses: - -### Dev "mainnet" (localhost:8545): -* DATAcoin address: 0xbAA81A0179015bE47Ad439566374F2Bae098686F -* Marketplace2 address: 0xF1371c0f40528406dc4f4cAf89924eA9Da49E866 -* OTHERcoin address: 0x642D2B84A32A9A92FEc78CeAA9488388b3704898 -* UniswapAdaptor address: 0xE4eA76e830a659282368cA2e7E4d18C4AE52D8B3 -* UniswapFactory address: 0xd2D23b73A67208a90CBfEE1381415329954f54E2 -* Tracker NodeRegistry: 0xBFCF120a8fD17670536f1B27D9737B775b2FD4CF -* ENS: 0x92E8435EB56fD01BF4C79B66d47AC1A94338BB03 -* FIFSRegistrar for TLD (top level domain) 'eth': 0x57B81a9442805f88c4617B506206531e72d96290 -* PublicResolver (reusable): 0xBc0c81a318D57ae54dA28DE69184A9c3aE9a1e1c -* Uniswap2 router: 0xeE1bC9a7BFF1fFD913f4c97B6177D47E804E1920 -* Uniswap2Adapter: 0x0bADa0acE1d16ABf1ce1aAED9Bc7Ce231ECc35b5 - -Bridge related: -* foreign_amb: 0xaFA0dc5Ad21796C9106a36D68f69aAD69994BB64 -* dedicated DATA foreign_erc_mediator: 0xedD2aa644a6843F2e5133Fe3d6BD3F4080d97D9F -* foreign omnibridge: 0x6346Ed242adE018Bd9320D5E3371c377BAB29c31 -* foreign_erc20: 0xbAA81A0179015bE47Ad439566374F2Bae098686F - -DataUnion related: -* foreign_du_factory: 0x4bbcBeFBEC587f6C4AF9AF9B48847caEa1Fe81dA - - -### Dev "xdai" (localhost:8546) -* Storage NodeRegistry: 0xbAA81A0179015bE47Ad439566374F2Bae098686F -* Uniswap2 router: 0xd2D23b73A67208a90CBfEE1381415329954f54E2 -* BinanceAdapter: 0xdc5F6368cd31330adC259386e78604a5E29E9415 -* StreamRegistry: 0xa86863053cECFD9f6f861e0Fd39a042238411b75 -* Chainlink oracle: 0xD94D41F23F1D42C51Ab61685e5617BBC858e5871 -* LINK token contract: 0x3387F44140ea19100232873a5aAf9E46608c791E -* ENScache: 0xD1d514082ED630687a5DCB85406130eD0745fA06 -* Stream Storage Registry: 0xE4eA76e830a659282368cA2e7E4d18C4AE52D8B3 - -Bridge related: -* home_amb: 0xaFA0dc5Ad21796C9106a36D68f69aAD69994BB64 -* home_erc677: 0x73Be21733CC5D08e1a14Ea9a399fb27DB3BEf8fF -* dedicated DATA home_erc_mediator: 0xedD2aa644a6843F2e5133Fe3d6BD3F4080d97D9F -* home omnibridge: 0x41B89Db86BE735c03A9296437E39F5FDAdC4c678 - -DataUnion related: -* home_du_factory: 0x4A4c4759eb3b7ABee079f832850cD3D0dC48D927 - - +The contract addresses generated by these scripts are written into [config.json]. ## Running smart-contracts-init container is no longer part of streamr-docker-dev. Instead we use the docker-compose.yml file here to build the preloaded parity images diff --git a/bridge/deploy_bridge_and_du2.sh b/bridge/deploy_bridge_and_du2.sh index 9c1c1df..9d545d0 100755 --- a/bridge/deploy_bridge_and_du2.sh +++ b/bridge/deploy_bridge_and_du2.sh @@ -9,6 +9,7 @@ CONTRACTS=streamr/tokenbridge-contracts AMBRESULTS="bridgeDeploymentResultsAMB.json" ERC677RESULTS="bridgeDeploymentResultsERC677.json" +OMNIBRIDGERESULTS="bridgeDeploymentResultsOmnibridge.json" echo "1. Deploying AMB" TASK=amb @@ -39,8 +40,11 @@ CONTRACTS=poanetwork/omnibridge TASK=omnibridge ENV="-e HOME_AMB_BRIDGE=$HOME_AMB_BRIDGE -e FOREIGN_AMB_BRIDGE=$FOREIGN_AMB_BRIDGE" docker run --name $TASK $ENV --env-file omnibridgeMediator.env $CONTRACTS deploy.sh -docker cp $TASK:/contracts/deploy/bridgeDeploymentResults.json $ERC677RESULTS +docker cp $TASK:/contracts/deploy/bridgeDeploymentResults.json $OMNIBRIDGERESULTS docker rm $TASK +export FOREIGN_OMNIBRIDGE=`jq -r .foreignBridge.foreignBridgeMediator.address` < $OMNIBRIDGERESULTS +export HOME_OMNIBRIDGE=`jq -r .homeBridge.homeBridgeMediator.address` < $OMNIBRIDGERESULTS + echo "3. Deploying DataUnion and Factory Contracts" node ../deploy_du2_factories.js diff --git a/deploy_du2_factories.js b/deploy_du2_factories.js index f4316b8..90e73d3 100644 --- a/deploy_du2_factories.js +++ b/deploy_du2_factories.js @@ -1,3 +1,5 @@ +const fs = require("fs") + const { ContractFactory, Wallet, @@ -81,6 +83,29 @@ async function deployDUFactories(){ let factMainnet = await dtx.deployed() console.log(`factMainnet: ${factMainnet.address}`) + fs.writeFileSync("du-addresses.json", JSON.stringify({ + mainnet: { + dataUnionFactory: factMainnet.address, + dataUnionTemplate: duforeign.address, + tokenMigrator: mainnetMigrationMgr.address, + + // env variables that are set in deploy_bridge_and_du2.sh + tokenMediator: process.env.FOREIGN_ERC677_MEDIATOR, + amb: process.env.FOREIGN_AMB_BRIDGE, + omnibridge: process.env.FOREIGN_OMNIBRIDGE, + }, + xdai: { + dataUnionFactory: factSidechain.address, + dataUnionTemplate: duhome.address, + tokenMigrator: sidechainMigrationMgr.address, + + // env variables that are set in deploy_bridge_and_du2.sh + token: process.env.HOME_ERC677, + tokenMediator: process.env.HOME_ERC677_MEDIATOR, + amb: process.env.HOME_AMB_BRIDGE, + omnibridge: process.env.HOME_OMNIBRIDGE, + } + })) } async function start() { diff --git a/index.js b/index.js index daced80..e1a7101 100644 --- a/index.js +++ b/index.js @@ -96,12 +96,11 @@ function getTestWallet(name, index) { } // these come from the next step, but we can predict the addresses +// TODO: don't hard-code, just read from output values const sidechainDataCoin = '0x73Be21733CC5D08e1a14Ea9a399fb27DB3BEf8fF' const sidechainSingleTokenMediator = '0xedD2aa644a6843F2e5133Fe3d6BD3F4080d97D9F' const chainlinkNodeAddress = '0x7b5F1610920d5BAf00D684929272213BaF962eFe' const chainlinkJobId = 'c99333d032ed4cb8967b956c7f0329b5' -let nodeRegistryAddress = '' -let streamRegistryAddress = '' async function getProducts() { // return await (await fetch(`${streamrUrl}/api/v1/products?publicAccess=true`)).json() @@ -146,20 +145,22 @@ function getRootNodeFromTLD(tld) { } async function deployNodeRegistry(wallet, initialNodes, initialMetadata) { - const strDeploy = new ContractFactory(NodeRegistry.abi, NodeRegistry.bytecode, wallet) - const strDeployTx = await strDeploy.deploy(wallet.address, false, initialNodes, initialMetadata, {gasLimit: 6000000} ) - const str = await strDeployTx.deployed() - nodeRegistryAddress = str.address - log(`NodeRegistry deployed at ${str.address}`) - let nodes = await str.getNodes() + const factory = new ContractFactory(NodeRegistry.abi, NodeRegistry.bytecode, wallet) + const tx = await factory.deploy(wallet.address, false, initialNodes, initialMetadata, {gasLimit: 6000000} ) + const contract = await tx.deployed() + nodeRegistryAddress = contract.address + log(`NodeRegistry deployed at ${contract.address}`) + let nodes = await contract.getNodes() log(`NodeRegistry nodes : ${JSON.stringify(nodes)}`) + return contract } -async function deployStreamStorageRegistry(wallet) { +async function deployStreamStorageRegistry(wallet, nodeRegistryAddress) { const strDeploy = new ContractFactory(StreamStorageRegistry.abi, StreamStorageRegistry.bytecode, wallet) const strDeployTx = await strDeploy.deploy(streamRegistryAddress, nodeRegistryAddress, wallet.address, {gasLimit: 6000000} ) const str = await strDeployTx.deployed() log(`StreamStorageRegistry deployed at ${str.address}`) + return str } async function deployUniswap2(wallet) { @@ -338,7 +339,7 @@ async function smartContractInitialization() { initialNodes.push('0xf2C195bE194a2C91e93Eacb1d6d55a00552a85E2') initialMetadata.push('{"ws": "ws://10.200.10.1:30303", "http": "http://10.200.10.1:30303"}') //1st NodeRegistry deployed here. 2nd below - await deployNodeRegistry(wallet, initialNodes, initialMetadata) + const trackerNodeRegistry = await deployNodeRegistry(wallet, initialNodes, initialMetadata) const ethwei = parseEther("1") let rate = await datatokenExchange.getTokenToEthInputPrice(ethwei) @@ -402,7 +403,7 @@ async function smartContractInitialization() { initialMetadata = [] initialNodes.push('0xde1112f631486CfC759A50196853011528bC5FA0') initialMetadata.push('{"http": "http://10.200.10.1:8891"}') - await deployNodeRegistry(sidechainWallet, initialNodes, initialMetadata) + const storageNodeRegistry = await deployNodeRegistry(sidechainWallet, initialNodes, initialMetadata) log(`deploy Uniswap2 mainnet`) const router = await deployUniswap2(wallet) @@ -463,15 +464,18 @@ async function smartContractInitialization() { log('Old token getUpgradeState: %d, expected: 3', await oldToken.getUpgradeState()) log(`Minting ${mintTokenAmount} DATAv2 tokens to following addresses:`) + const keys = {} for (const [projectName, testWalletCount] of projects) { + keys[projectName] = [] for (let i = 0; i < testWalletCount; i++) { const testWallet = getTestWallet(projectName, i) log(" %s (%s #%d)", testWallet.address, projectName, i) await token.mint(testWallet.address, mintTokenAmount) + keys[projectName].push(testWallet.privateKey) } } - await deployStreamStorageRegistry(sidechainWallet) + const streamStorageRegistry = await deployStreamStorageRegistry(sidechainWallet, storageNodeRegistry) //put additions here //all TXs should now be confirmed: @@ -501,6 +505,49 @@ async function smartContractInitialization() { //await tx2.wait(1) } } + + // DataUnion and bridge (AMB) configs will be added in deploy_du2_factories.js and combined with this in Dockerfile into config.json + fs.writeFileSync("addresses.json", JSON.stringify({ + mainnet: { + url: "http://10.200.10.1:8545", + chainId: 8995, + coreApi: "0xf3E5A65851C3779f468c9EcB32E6f25D9D68601a", + + token: token.address, + oldToken: oldToken.address, + otherToken: token2.address, + nodeRegistry: trackerNodeRegistry.address, + + // Uniswap adapters (for Marketplace) + uniswapAdapter: uniswapAdaptor.address, + uniswapFactory: uniswapFactory.address, + uniswap2Adapter: uniswap2Adapter.address, + uniswap2Router: router.address, + + // ENS + ens: ens.address, + fifs: fifs.address, + ensResolver: resolver.address, + }, + xdai: { + url: "http://10.200.10.1:8546", + chainId: 8997, + + streamRegistry: streamRegistry.address, + storageNodeRegistry: storageNodeRegistry.address, + streamStorageRegistry: streamStorageRegistry.address, + + // DU2, for withdrawing from Data Union to other chains (e.g. BSC) + binanceAdapter: binanceAdapter.address, + uniswap2Router: uniswapRouterSidechain.address, + + // ENS caching in sidechain, to be able to tell who owns an ENS name (and has the right to create streams to that namespace) + ensCache: ensCache.address, + chainlinkOracle: oracle.address, + linkToken: linkToken.address, + }, + keys + })) } smartContractInitialization() diff --git a/preload_parity_images.sh b/preload_parity_images.sh index 17d9e9e..bd4dfc6 100755 --- a/preload_parity_images.sh +++ b/preload_parity_images.sh @@ -26,6 +26,7 @@ sleep 5s docker-compose up -d smart-contracts-init INITSTATUS=`docker wait streamr-dev-smart-contracts-init` docker logs streamr-dev-smart-contracts-init &> $LOG +docker exec streamr-dev-smart-contracts-init /bin/bash -c 'cat config.json' > config.json echo "streamr-dev-smart-contracts-init finished with status $INITSTATUS. Logs in $LOG" test $INITSTATUS -ne 0 && echo "streamr-dev-smart-contracts-init failed" && exit 1 docker exec streamr-dev-parity-sidechain-node0 /bin/bash -c 'mv /home/parity/parity_data /home/parity/parity_data.default' diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..5626392 --- /dev/null +++ b/run.sh @@ -0,0 +1,12 @@ +#!/bin/bash -eux + +node index.js +./bridge/deploy_bridge_and_du2.sh + +# wait until index.js finishes +until [ -f addresses.json ]; +do + sleep 5s +done + +jq -s '.[0] * .[1]' addresses.json bridge/du-addresses.json > config.json From 8092c997d163f508688b9419f03c5f583c899097 Mon Sep 17 00:00:00 2001 From: Christoph-Samuel Pitter Date: Fri, 5 Nov 2021 10:59:00 +0400 Subject: [PATCH 2/6] fix: fixing problems with deployment script --- index.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/index.js b/index.js index e1a7101..60594e4 100644 --- a/index.js +++ b/index.js @@ -116,7 +116,7 @@ async function getProducts() { // AutoNonceWallet allows for omitting .wait()ing for the transactions as long as no reads are done // from https://github.com/ethers-io/ethers.js/issues/319 class AutoNonceWallet extends Wallet { - noncePromise = null; + noncePromise = null sendTransaction(transaction) { if (transaction.nonce == null) { if (this.noncePromise == null) { @@ -155,7 +155,7 @@ async function deployNodeRegistry(wallet, initialNodes, initialMetadata) { return contract } -async function deployStreamStorageRegistry(wallet, nodeRegistryAddress) { +async function deployStreamStorageRegistry(wallet, nodeRegistryAddress, streamRegistryAddress) { const strDeploy = new ContractFactory(StreamStorageRegistry.abi, StreamStorageRegistry.bytecode, wallet) const strDeployTx = await strDeploy.deploy(streamRegistryAddress, nodeRegistryAddress, wallet.address, {gasLimit: 6000000} ) const str = await strDeployTx.deployed() @@ -231,8 +231,8 @@ async function deployStreamRegistry() { const streamRegistryFactory = new ContractFactory(StreamRegistry.abi, StreamRegistry.bytecode, sidechainWalletStreamReg) const streamRegistryFactoryTx = await streamRegistryFactory.deploy(ensCache.address, sidechainWalletStreamReg.address) const streamRegistry = await streamRegistryFactoryTx.deployed() - streamRegistryAddress = streamRegistry.address log(`Streamregistry deployed at ${streamRegistry.address}`) + return streamRegistry } async function smartContractInitialization() { @@ -428,7 +428,7 @@ async function smartContractInitialization() { const binanceAdapter = await dtx.deployed() log(`sidechain binanceAdapter ${binanceAdapter.address}`) - await deployStreamRegistry() + const streamRegistry = await deployStreamRegistry() // TODO: move these deployments to the top once address change pains are solved log(`Deploying test DATAv1 from ${wallet.address}`) @@ -475,7 +475,7 @@ async function smartContractInitialization() { } } - const streamStorageRegistry = await deployStreamStorageRegistry(sidechainWallet, storageNodeRegistry) + const streamStorageRegistry = await deployStreamStorageRegistry(sidechainWallet, storageNodeRegistry.address, streamRegistry.address) //put additions here //all TXs should now be confirmed: @@ -507,7 +507,7 @@ async function smartContractInitialization() { } // DataUnion and bridge (AMB) configs will be added in deploy_du2_factories.js and combined with this in Dockerfile into config.json - fs.writeFileSync("addresses.json", JSON.stringify({ + const addressJsonString = JSON.stringify({ mainnet: { url: "http://10.200.10.1:8545", chainId: 8995, @@ -547,7 +547,9 @@ async function smartContractInitialization() { linkToken: linkToken.address, }, keys - })) + }) + console.log(addressJsonString) + fs.writeFileSync("addresses.json", addressJsonString) } smartContractInitialization() From 7585ea2b4fea4e6f093cbd61fd581ff62072294c Mon Sep 17 00:00:00 2001 From: Christoph-Samuel Pitter Date: Fri, 5 Nov 2021 11:16:12 +0400 Subject: [PATCH 3/6] fix: got linting to work, fixed lint issues, fixed uninitialised references --- .eslintrc | 3 - .eslintrc.js | 17 + index.js | 939 ++++++++++++++++++++++++++------------------------- 3 files changed, 489 insertions(+), 470 deletions(-) delete mode 100644 .eslintrc create mode 100644 .eslintrc.js diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 3478d9b..0000000 --- a/.eslintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "eslint-config-streamr-ts" -} diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..5039cfe --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,17 @@ +module.exports = { + env: { + commonjs: true, + es2021: true, + node: true + }, + extends: [ + 'standard' + ], + parserOptions: { + ecmaVersion: 12, + requireConfigFile: false + }, + rules: { + }, + parser: '@babel/eslint-parser' +} diff --git a/index.js b/index.js index 60594e4..26f78fb 100644 --- a/index.js +++ b/index.js @@ -1,39 +1,39 @@ -const fs = require("fs") -const Web3 = require("web3") +const fs = require('fs') +const Web3 = require('web3') const { - Contract, - ContractFactory, - utils: {computeAddress, parseEther, formatEther, namehash, id, bigNumberify}, - Wallet, - providers: {JsonRpcProvider} -} = require("ethers") - -const TestTokenJson = require("./ethereumContractJSONs/TestToken.json") -const OldTokenJson = require("./ethereumContractJSONs/CrowdsaleToken.json") -const MarketplaceJson = require("./ethereumContractJSONs/Marketplace.json") -const Marketplace2Json = require("./ethereumContractJSONs/Marketplace2.json") -const UniswapAdaptor = require("./ethereumContractJSONs/UniswapAdaptor.json") -const Uniswap2Adapter = require("./ethereumContractJSONs/Uniswap2Adapter.json") -const NodeRegistry = require("./ethereumContractJSONs/NodeRegistry.json") -const ENSRegistry = require("./ethereumContractJSONs/ENSRegistry.json") -const FIFSRegistrar = require("./ethereumContractJSONs/FIFSRegistrar.json") -const PublicResolver = require("./ethereumContractJSONs/PublicResolver.json") -const DATAv2 = require("./ethereumContractJSONs/DATAv2.json") -const DataTokenMigrator = require("./ethereumContractJSONs/DataTokenMigrator.json") -const BinanceAdapter = require("./ethereumContractJSONs/BinanceAdapter.json") - -//Uniswap v2 -const UniswapV2Factory = require("./node_modules/@uniswap/v2-core/build/UniswapV2Factory.json") -const UniswapV2Router02 = require("./node_modules/@uniswap/v2-periphery/build/UniswapV2Router02.json") + Contract, + ContractFactory, + utils: { computeAddress, parseEther, formatEther, namehash, id, bigNumberify }, + Wallet, + providers: { JsonRpcProvider } +} = require('ethers') + +const TestTokenJson = require('./ethereumContractJSONs/TestToken.json') +const OldTokenJson = require('./ethereumContractJSONs/CrowdsaleToken.json') +const MarketplaceJson = require('./ethereumContractJSONs/Marketplace.json') +const Marketplace2Json = require('./ethereumContractJSONs/Marketplace2.json') +const UniswapAdaptor = require('./ethereumContractJSONs/UniswapAdaptor.json') +const Uniswap2Adapter = require('./ethereumContractJSONs/Uniswap2Adapter.json') +const NodeRegistry = require('./ethereumContractJSONs/NodeRegistry.json') +const ENSRegistry = require('./ethereumContractJSONs/ENSRegistry.json') +const FIFSRegistrar = require('./ethereumContractJSONs/FIFSRegistrar.json') +const PublicResolver = require('./ethereumContractJSONs/PublicResolver.json') +const DATAv2 = require('./ethereumContractJSONs/DATAv2.json') +const DataTokenMigrator = require('./ethereumContractJSONs/DataTokenMigrator.json') +const BinanceAdapter = require('./ethereumContractJSONs/BinanceAdapter.json') + +// Uniswap v2 +const UniswapV2Factory = require('./node_modules/@uniswap/v2-core/build/UniswapV2Factory.json') +const UniswapV2Router02 = require('./node_modules/@uniswap/v2-periphery/build/UniswapV2Router02.json') // const ExampleSlidingWindowOracle = require("./node_modules/@uniswap/v2-periphery/build/ExampleSlidingWindowOracle.json"); -const WETH9 = require("./node_modules/@uniswap/v2-periphery/build/WETH9.json") +const WETH9 = require('./node_modules/@uniswap/v2-periphery/build/WETH9.json') -//Uniswap v1 -const uniswap_exchange_abi = JSON.parse(fs.readFileSync("./abi/uniswap_exchange.json", "utf-8")) -const uniswap_factory_abi = JSON.parse(fs.readFileSync("./abi/uniswap_factory.json", "utf-8")) -const uniswap_exchange_bytecode = fs.readFileSync("./bytecode/uniswap_exchange.txt", "utf-8") -const uniswap_factory_bytecode = fs.readFileSync("./bytecode/uniswap_factory.txt", "utf-8") +// Uniswap v1 +const uniswapExchangeAbi = JSON.parse(fs.readFileSync('./abi/uniswap_exchange.json', 'utf-8')) +const uniswapFactoryAbi = JSON.parse(fs.readFileSync('./abi/uniswap_factory.json', 'utf-8')) +const uniswapExchangeBytecode = fs.readFileSync('./bytecode/uniswap_exchange.txt', 'utf-8') +const uniswapFactoryBytecode = fs.readFileSync('./bytecode/uniswap_factory.txt', 'utf-8') // Streamregistry const LinkToken = require('./ethereumContractJSONs/LinkToken.json') @@ -45,54 +45,54 @@ const StreamStorageRegistry = require('./ethereumContractJSONs/StreamStorageRegi const products = require('./products.json') -const chainURL = process.env.CHAIN_URL || "http://10.200.10.1:8545" -const sidechainURL = process.env.SIDECHAIN_URL || "http://10.200.10.1:8546" +const chainURL = process.env.CHAIN_URL || 'http://10.200.10.1:8545' +const sidechainURL = process.env.SIDECHAIN_URL || 'http://10.200.10.1:8546' // const streamrUrl = process.env.EE_URL || "http://10.200.10.1:8081/streamr-core" // production: "https://www.streamr.com" -const log = require("debug")("eth-init") +const log = require('debug')('eth-init') const futureTime = 4449513600 // DATAv1 token supply before the upgrade (real mainnet number) // See totalSupply at https://etherscan.io/address/0x0cf0ee63788a0849fe5297f3407f701e122cc023#readContract -const oldSupply = parseEther("987154514") +const oldSupply = parseEther('987154514') // how much to mint to each of the privateKeys -const mintTokenAmount = parseEther("1000000") +const mintTokenAmount = parseEther('1000000') // this wallet will deploy all contracts and "own" them if applicable -const defaultPrivateKey = "0x5e98cce00cff5dea6b454889f359a4ec06b9fa6b88e9d69b86de8e1c81887da0" -const privKeyStreamRegistry = "0x4059de411f15511a85ce332e7a428f36492ab4e87c7830099dadbf130f1896ae" +const defaultPrivateKey = '0x5e98cce00cff5dea6b454889f359a4ec06b9fa6b88e9d69b86de8e1c81887da0' +const privKeyStreamRegistry = '0x4059de411f15511a85ce332e7a428f36492ab4e87c7830099dadbf130f1896ae' // "testrpc" mnemonic wallets, will have DATAv1 and DATAv2 tokens in them const privateKeys = [ - "0x5e98cce00cff5dea6b454889f359a4ec06b9fa6b88e9d69b86de8e1c81887da0", // used!! - "0xe5af7834455b7239881b85be89d905d6881dcb4751063897f12be1b0dd546bdb", // used!! - "0x4059de411f15511a85ce332e7a428f36492ab4e87c7830099dadbf130f1896ae", // used!! - "0x633a182fb8975f22aaad41e9008cb49a432e9fdfef37f151e9e7c54e96258ef9", // use this for new deployments - "0x957a8212980a9a39bf7c03dcbeea3c722d66f2b359c669feceb0e3ba8209a297", - "0xfe1d528b7e204a5bdfb7668a1ed3adfee45b4b96960a175c9ef0ad16dd58d728", - "0xd7609ae3a29375768fac8bc0f8c2f6ac81c5f2ffca2b981e6cf15460f01efe14", - "0xb1abdb742d3924a45b0a54f780f0f21b9d9283b231a0a0b35ce5e455fa5375e7", - "0x2cd9855d17e01ce041953829398af7e48b24ece04ff9d0e183414de54dc52285", + '0x5e98cce00cff5dea6b454889f359a4ec06b9fa6b88e9d69b86de8e1c81887da0', // used!! + '0xe5af7834455b7239881b85be89d905d6881dcb4751063897f12be1b0dd546bdb', // used!! + '0x4059de411f15511a85ce332e7a428f36492ab4e87c7830099dadbf130f1896ae', // used!! + '0x633a182fb8975f22aaad41e9008cb49a432e9fdfef37f151e9e7c54e96258ef9', // use this for new deployments + '0x957a8212980a9a39bf7c03dcbeea3c722d66f2b359c669feceb0e3ba8209a297', + '0xfe1d528b7e204a5bdfb7668a1ed3adfee45b4b96960a175c9ef0ad16dd58d728', + '0xd7609ae3a29375768fac8bc0f8c2f6ac81c5f2ffca2b981e6cf15460f01efe14', + '0xb1abdb742d3924a45b0a54f780f0f21b9d9283b231a0a0b35ce5e455fa5375e7', + '0x2cd9855d17e01ce041953829398af7e48b24ece04ff9d0e183414de54dc52285' ] // single-use wallets for tests, listed projects' wallets have DATAv2 tokens on them // [ "project-name", testWalletCount ] const projects = [ - ["js-client", 100], - ["java-client", 20], - ["marketplace-contracts", 10], - ["network-contracts", 10], - ["data-union-contracts", 10], - ["broker", 10], - ["network", 100], - ["core-api", 10], - ["core-frontend", 10], - ["...add your own here", 1], + ['js-client', 100], + ['java-client', 20], + ['marketplace-contracts', 10], + ['network-contracts', 10], + ['data-union-contracts', 10], + ['broker', 10], + ['network', 100], + ['core-api', 10], + ['core-frontend', 10], + ['...add your own here', 1] ] -function getTestWallet(name, index) { - const hash = id(name + (index || "")) - return new Wallet(hash) +function getTestWallet (name, index) { + const hash = id(name + (index || '')) + return new Wallet(hash) } // these come from the next step, but we can predict the addresses @@ -102,9 +102,9 @@ const sidechainSingleTokenMediator = '0xedD2aa644a6843F2e5133Fe3d6BD3F4080d97D9F const chainlinkNodeAddress = '0x7b5F1610920d5BAf00D684929272213BaF962eFe' const chainlinkJobId = 'c99333d032ed4cb8967b956c7f0329b5' -async function getProducts() { - // return await (await fetch(`${streamrUrl}/api/v1/products?publicAccess=true`)).json() - return products +async function getProducts () { + // return await (await fetch(`${streamrUrl}/api/v1/products?publicAccess=true`)).json() + return products } // function sleep(ms) { @@ -117,15 +117,15 @@ async function getProducts() { // from https://github.com/ethers-io/ethers.js/issues/319 class AutoNonceWallet extends Wallet { noncePromise = null - sendTransaction(transaction) { - if (transaction.nonce == null) { - if (this.noncePromise == null) { - this.noncePromise = this.provider.getTransactionCount(this.address) - } - transaction.nonce = this.noncePromise - this.noncePromise = this.noncePromise.then((nonce) => (nonce + 1)) + sendTransaction (transaction) { + if (transaction.nonce == null) { + if (this.noncePromise == null) { + this.noncePromise = this.provider.getTransactionCount(this.address) } - return super.sendTransaction(transaction) + transaction.nonce = this.noncePromise + this.noncePromise = this.noncePromise.then((nonce) => (nonce + 1)) + } + return super.sendTransaction(transaction) } } @@ -137,419 +137,424 @@ class AutoNonceWallet extends Wallet { * * @param {string} tld plain text tld, for example: 'eth' */ -function getRootNodeFromTLD(tld) { - return { - namehash: namehash(tld), - sha3: Web3.utils.sha3(tld) - } +function getRootNodeFromTLD (tld) { + return { + namehash: namehash(tld), + sha3: Web3.utils.sha3(tld) + } } -async function deployNodeRegistry(wallet, initialNodes, initialMetadata) { - const factory = new ContractFactory(NodeRegistry.abi, NodeRegistry.bytecode, wallet) - const tx = await factory.deploy(wallet.address, false, initialNodes, initialMetadata, {gasLimit: 6000000} ) - const contract = await tx.deployed() - nodeRegistryAddress = contract.address - log(`NodeRegistry deployed at ${contract.address}`) - let nodes = await contract.getNodes() - log(`NodeRegistry nodes : ${JSON.stringify(nodes)}`) - return contract +async function deployNodeRegistry (wallet, initialNodes, initialMetadata) { + const factory = new ContractFactory(NodeRegistry.abi, NodeRegistry.bytecode, wallet) + const tx = await factory.deploy(wallet.address, false, initialNodes, initialMetadata, { gasLimit: 6000000 }) + const contract = await tx.deployed() + log(`NodeRegistry deployed at ${contract.address}`) + const nodes = await contract.getNodes() + log(`NodeRegistry nodes : ${JSON.stringify(nodes)}`) + return contract } -async function deployStreamStorageRegistry(wallet, nodeRegistryAddress, streamRegistryAddress) { - const strDeploy = new ContractFactory(StreamStorageRegistry.abi, StreamStorageRegistry.bytecode, wallet) - const strDeployTx = await strDeploy.deploy(streamRegistryAddress, nodeRegistryAddress, wallet.address, {gasLimit: 6000000} ) - const str = await strDeployTx.deployed() - log(`StreamStorageRegistry deployed at ${str.address}`) - return str +async function deployStreamStorageRegistry (wallet, nodeRegistryAddress, streamRegistryAddress) { + const strDeploy = new ContractFactory(StreamStorageRegistry.abi, StreamStorageRegistry.bytecode, wallet) + const strDeployTx = await strDeploy.deploy(streamRegistryAddress, nodeRegistryAddress, wallet.address, { gasLimit: 6000000 }) + const str = await strDeployTx.deployed() + log(`StreamStorageRegistry deployed at ${str.address}`) + return str } -async function deployUniswap2(wallet) { - let deployer = new ContractFactory(WETH9.abi, WETH9.bytecode, wallet) - let tx = await deployer.deploy() - const weth = await tx.deployed() - log(`WETH deployed to ${weth.address}`) - - deployer = new ContractFactory(UniswapV2Factory.abi, UniswapV2Factory.bytecode, wallet) - tx = await deployer.deploy(wallet.address) - const factory = await tx.deployed() - log(`Uniswap2 factory deployed to ${factory.address}`) - - deployer = new ContractFactory(UniswapV2Router02.abi, UniswapV2Router02.bytecode, wallet) - tx = await deployer.deploy(factory.address, weth.address) - const router = await tx.deployed() - log(`Uniswap2 router deployed to ${router.address}`) - return router +async function deployUniswap2 (wallet) { + let deployer = new ContractFactory(WETH9.abi, WETH9.bytecode, wallet) + let tx = await deployer.deploy() + const weth = await tx.deployed() + log(`WETH deployed to ${weth.address}`) + + deployer = new ContractFactory(UniswapV2Factory.abi, UniswapV2Factory.bytecode, wallet) + tx = await deployer.deploy(wallet.address) + const factory = await tx.deployed() + log(`Uniswap2 factory deployed to ${factory.address}`) + + deployer = new ContractFactory(UniswapV2Router02.abi, UniswapV2Router02.bytecode, wallet) + tx = await deployer.deploy(factory.address, weth.address) + const router = await tx.deployed() + log(`Uniswap2 router deployed to ${router.address}`) + return router } -async function ethersWallet(url, privateKey) { - let provider = new JsonRpcProvider(url) - try { - await provider.getNetwork() - } catch (e) { - console.error(e) - process.exit(1) - } - return new AutoNonceWallet(privateKey, provider) +async function ethersWallet (url, privateKey) { + const provider = new JsonRpcProvider(url) + try { + await provider.getNetwork() + } catch (e) { + console.error(e) + process.exit(1) + } + return new AutoNonceWallet(privateKey, provider) } -async function deployStreamRegistry() { - const sidechainWalletStreamReg = await ethersWallet(sidechainURL, privKeyStreamRegistry) - - log('Sending some Ether to chainlink node address') - await sidechainWalletStreamReg.sendTransaction({ - to: chainlinkNodeAddress, - value: parseEther('100') - }) - - log('Deploying Streamregistry and chainlink contracts to sidechain:') - const linkTokenFactory = new ContractFactory(LinkToken.abi, LinkToken.bytecode, sidechainWalletStreamReg) - const linkTokenFactoryTx = await linkTokenFactory.deploy() - const linkToken = await linkTokenFactoryTx.deployed() - log(`Link Token deployed at ${linkToken.address}`) - - const oracleFactory = new ContractFactory(ChainlinkOracle.compilerOutput.abi, - ChainlinkOracle.compilerOutput.evm.bytecode.object, sidechainWalletStreamReg) - const oracleFactoryTx = await oracleFactory.deploy(linkToken.address) - const oracle = await oracleFactoryTx.deployed() - log(`Chainlink Oracle deployed at ${oracle.address}`) - const tokenaddrFromOracle = await oracle.getChainlinkToken() - log(`Chainlink Oracle token pointing to ${tokenaddrFromOracle}`) - await oracle.setFulfillmentPermission(chainlinkNodeAddress, true) - const permission = await oracle.getAuthorizationStatus(chainlinkNodeAddress) - log(`Chainlink Oracle permission for ${chainlinkNodeAddress} is ${permission}`) - - const ensCacheFactory = new ContractFactory(ENSCache.abi, ENSCache.bytecode, sidechainWalletStreamReg) - const ensCacheFactoryTx = await ensCacheFactory.deploy(oracle.address, chainlinkJobId) - const ensCache = await ensCacheFactoryTx.deployed() - log(`ENSCache deployed at ${ensCache.address}`) - log(`ENSCache setting Link token address ${linkToken.address}`) - await ensCache.setChainlinkTokenAddress(linkToken.address) - - log('Sending some Link to ENSCache') - await linkToken.transfer(ensCache.address, bigNumberify('1000000000000000000000')) // 1000 link - - const streamRegistryFactory = new ContractFactory(StreamRegistry.abi, StreamRegistry.bytecode, sidechainWalletStreamReg) - const streamRegistryFactoryTx = await streamRegistryFactory.deploy(ensCache.address, sidechainWalletStreamReg.address) - const streamRegistry = await streamRegistryFactoryTx.deployed() - log(`Streamregistry deployed at ${streamRegistry.address}`) - return streamRegistry +async function deployStreamRegistry () { + const sidechainWalletStreamReg = await ethersWallet(sidechainURL, privKeyStreamRegistry) + + log('Sending some Ether to chainlink node address') + await sidechainWalletStreamReg.sendTransaction({ + to: chainlinkNodeAddress, + value: parseEther('100') + }) + + log('Deploying Streamregistry and chainlink contracts to sidechain:') + const linkTokenFactory = new ContractFactory(LinkToken.abi, LinkToken.bytecode, sidechainWalletStreamReg) + const linkTokenFactoryTx = await linkTokenFactory.deploy() + const linkToken = await linkTokenFactoryTx.deployed() + log(`Link Token deployed at ${linkToken.address}`) + + const oracleFactory = new ContractFactory(ChainlinkOracle.compilerOutput.abi, + ChainlinkOracle.compilerOutput.evm.bytecode.object, sidechainWalletStreamReg) + const oracleFactoryTx = await oracleFactory.deploy(linkToken.address) + const oracle = await oracleFactoryTx.deployed() + log(`Chainlink Oracle deployed at ${oracle.address}`) + const tokenaddrFromOracle = await oracle.getChainlinkToken() + log(`Chainlink Oracle token pointing to ${tokenaddrFromOracle}`) + await oracle.setFulfillmentPermission(chainlinkNodeAddress, true) + const permission = await oracle.getAuthorizationStatus(chainlinkNodeAddress) + log(`Chainlink Oracle permission for ${chainlinkNodeAddress} is ${permission}`) + + const ensCacheFactory = new ContractFactory(ENSCache.abi, ENSCache.bytecode, sidechainWalletStreamReg) + const ensCacheFactoryTx = await ensCacheFactory.deploy(oracle.address, chainlinkJobId) + const ensCache = await ensCacheFactoryTx.deployed() + log(`ENSCache deployed at ${ensCache.address}`) + log(`ENSCache setting Link token address ${linkToken.address}`) + await ensCache.setChainlinkTokenAddress(linkToken.address) + + log('Sending some Link to ENSCache') + await linkToken.transfer(ensCache.address, bigNumberify('1000000000000000000000')) // 1000 link + + const streamRegistryFactory = new ContractFactory(StreamRegistry.abi, StreamRegistry.bytecode, sidechainWalletStreamReg) + const streamRegistryFactoryTx = await streamRegistryFactory.deploy(ensCache.address, sidechainWalletStreamReg.address) + const streamRegistry = await streamRegistryFactoryTx.deployed() + log(`Streamregistry deployed at ${streamRegistry.address}`) + return { + streamRegistry: streamRegistry.address, + ensCache: ensCache.address, + chainlinkOracle: oracle.address, + linkToken: linkToken.address + } } -async function smartContractInitialization() { - const wallet = await ethersWallet(chainURL, defaultPrivateKey) - const sidechainWallet = await ethersWallet(sidechainURL, defaultPrivateKey) - - // log(`Deploying test DATAv2 from ${wallet.address}`) - // const tokenDeployer = await new ContractFactory(TestTokenJson.abi, TestTokenJson.bytecode, wallet) - // const tokenDeployTx = await tokenDeployer.deploy("Test DATAv2", "\ud83e\udd84") // unicorn - // const token = await tokenDeployTx.deployed() - // log(`New DATAv2 ERC20 deployed at ${token.address}`) - - // log(`Deploying test DATAv2 from ${wallet.address}`) - const tokenDeployer = await new ContractFactory(DATAv2.abi, DATAv2.bytecode, wallet) - const tokenDeployTx = await tokenDeployer.deploy() - const token = await tokenDeployTx.deployed() - log(`New DATAv2 ERC20 deployed at ${token.address}`) - - // log(`Deploying Marketplace1 contract from ${wallet.address}`) - const marketDeployer1 = new ContractFactory(MarketplaceJson.abi, MarketplaceJson.bytecode, wallet) - const marketDeployTx1 = await marketDeployer1.deploy(token.address, wallet.address) - const market1 = await marketDeployTx1.deployed() - log(`Marketplace1 deployed at ${market1.address}`) - - // log(`Deploying Marketplace2 contract from ${wallet.address}`) - const marketDeployer2 = new ContractFactory(Marketplace2Json.abi, Marketplace2Json.bytecode, wallet) - const marketDeployTx2 = await marketDeployer2.deploy(token.address, wallet.address, market1.address) - const market = await marketDeployTx2.deployed() - log(`Marketplace2 deployed at ${market.address}`) - - // log(`Deploying Uniswap Factory contract from ${wallet.address}`) - const uniswapFactoryDeployer = new ContractFactory(uniswap_factory_abi, uniswap_factory_bytecode, wallet) - const uniswapFactoryDeployTx = await uniswapFactoryDeployer.deploy() - const uniswapFactory = await uniswapFactoryDeployTx.deployed() - log(`Uniswap factory deployed at ${uniswapFactory.address}`) - - // log(`Deploying Uniswap Exchange template contract from ${wallet.address}`) - const uniswapExchangeDeployer = new ContractFactory(uniswap_exchange_abi, uniswap_exchange_bytecode, wallet) - const uniswapExchangeDeployTx = await uniswapExchangeDeployer.deploy() - const uniswapExchangeTemplate = await uniswapExchangeDeployTx.deployed() - log(`Uniswap exchange template deployed at ${uniswapExchangeTemplate.address}`) - - // log(`Deploying UniswapAdaptor contract from ${wallet.address}`) - const uniswapAdaptorDeployer = new ContractFactory(UniswapAdaptor.abi, UniswapAdaptor.bytecode, wallet) - const uniswapAdaptorDeployTx = await uniswapAdaptorDeployer.deploy(market.address, uniswapFactory.address, token.address) - const uniswapAdaptor = await uniswapAdaptorDeployTx.deployed() - log(`UniswapAdaptor deployed at ${uniswapAdaptor.address}`) - - //another ERC20 that's not datacoin for testing buy with Uniswap - // log(`Deploying test OTHERcoin from ${wallet.address}`) - const tokenDeployer2 = new ContractFactory(TestTokenJson.abi, TestTokenJson.bytecode, wallet) - const tokenDeployTx2 = await tokenDeployer2.deploy("Test OTHERcoin", "COIN") - const token2 = await tokenDeployTx2.deployed() - log(`Test OTHERcoin deployed at ${token2.address}`) - - //Note: TestToken contract automatically mints 100000 to owner - - log('Add minter: %s', wallet.address) - const addMinterTx = await token.grantRole(id("MINTER_ROLE"), wallet.address) - await addMinterTx.wait() - - log(`Minting ${mintTokenAmount} DATAv2 tokens to following addresses:`) - for (const address of privateKeys.map(computeAddress)) { - log(" %s", address) - await token.mint(address, mintTokenAmount) - } +async function smartContractInitialization () { + const wallet = await ethersWallet(chainURL, defaultPrivateKey) + const sidechainWallet = await ethersWallet(sidechainURL, defaultPrivateKey) + + // log(`Deploying test DATAv2 from ${wallet.address}`) + // const tokenDeployer = await new ContractFactory(TestTokenJson.abi, TestTokenJson.bytecode, wallet) + // const tokenDeployTx = await tokenDeployer.deploy("Test DATAv2", "\ud83e\udd84") // unicorn + // const token = await tokenDeployTx.deployed() + // log(`New DATAv2 ERC20 deployed at ${token.address}`) + + // log(`Deploying test DATAv2 from ${wallet.address}`) + const tokenDeployer = await new ContractFactory(DATAv2.abi, DATAv2.bytecode, wallet) + const tokenDeployTx = await tokenDeployer.deploy() + const token = await tokenDeployTx.deployed() + log(`New DATAv2 ERC20 deployed at ${token.address}`) + + // log(`Deploying Marketplace1 contract from ${wallet.address}`) + const marketDeployer1 = new ContractFactory(MarketplaceJson.abi, MarketplaceJson.bytecode, wallet) + const marketDeployTx1 = await marketDeployer1.deploy(token.address, wallet.address) + const market1 = await marketDeployTx1.deployed() + log(`Marketplace1 deployed at ${market1.address}`) + + // log(`Deploying Marketplace2 contract from ${wallet.address}`) + const marketDeployer2 = new ContractFactory(Marketplace2Json.abi, Marketplace2Json.bytecode, wallet) + const marketDeployTx2 = await marketDeployer2.deploy(token.address, wallet.address, market1.address) + const market = await marketDeployTx2.deployed() + log(`Marketplace2 deployed at ${market.address}`) + + // log(`Deploying Uniswap Factory contract from ${wallet.address}`) + const uniswapFactoryDeployer = new ContractFactory(uniswapFactoryAbi, uniswapFactoryBytecode, wallet) + const uniswapFactoryDeployTx = await uniswapFactoryDeployer.deploy() + const uniswapFactory = await uniswapFactoryDeployTx.deployed() + log(`Uniswap factory deployed at ${uniswapFactory.address}`) + + // log(`Deploying Uniswap Exchange template contract from ${wallet.address}`) + const uniswapExchangeDeployer = new ContractFactory(uniswapExchangeAbi, uniswapExchangeBytecode, wallet) + const uniswapExchangeDeployTx = await uniswapExchangeDeployer.deploy() + const uniswapExchangeTemplate = await uniswapExchangeDeployTx.deployed() + log(`Uniswap exchange template deployed at ${uniswapExchangeTemplate.address}`) + + // log(`Deploying UniswapAdaptor contract from ${wallet.address}`) + const uniswapAdaptorDeployer = new ContractFactory(UniswapAdaptor.abi, UniswapAdaptor.bytecode, wallet) + const uniswapAdaptorDeployTx = await uniswapAdaptorDeployer.deploy(market.address, uniswapFactory.address, token.address) + const uniswapAdaptor = await uniswapAdaptorDeployTx.deployed() + log(`UniswapAdaptor deployed at ${uniswapAdaptor.address}`) + + // another ERC20 that's not datacoin for testing buy with Uniswap + // log(`Deploying test OTHERcoin from ${wallet.address}`) + const tokenDeployer2 = new ContractFactory(TestTokenJson.abi, TestTokenJson.bytecode, wallet) + const tokenDeployTx2 = await tokenDeployer2.deploy('Test OTHERcoin', 'COIN') + const token2 = await tokenDeployTx2.deployed() + log(`Test OTHERcoin deployed at ${token2.address}`) + + // Note: TestToken contract automatically mints 100000 to owner + + log('Add minter: %s', wallet.address) + const addMinterTx = await token.grantRole(id('MINTER_ROLE'), wallet.address) + await addMinterTx.wait() + + log(`Minting ${mintTokenAmount} DATAv2 tokens to following addresses:`) + for (const address of privateKeys.map(computeAddress)) { + log(' %s', address) + await token.mint(address, mintTokenAmount) + } + + log('Init Uniswap1 factory') + await uniswapFactory.initializeFactory(uniswapExchangeTemplate.address) + log(`Init Uniswap1 exchange for DATAcoin token ${token.address}`) + await uniswapFactory.createExchange(token.address, { gasLimit: 6000000 }) + log(`Init Uniswap1 exchange for OTHERcoin token ${token2.address}`) + const uniswapTx = await uniswapFactory.createExchange(token2.address, { gasLimit: 6000000 }) + await uniswapTx.wait() // need wait here to call read methods below + + const datatokenExchangeAddress = await uniswapFactory.getExchange(token.address) + log(`DATAcoin traded at Uniswap1 exchange ${datatokenExchangeAddress}`) + const othertokenExchangeAddress = await uniswapFactory.getExchange(token2.address) + log(`OTHERcoin traded at Uniswap1 exchange ${othertokenExchangeAddress}`) + const datatokenExchange = new Contract(datatokenExchangeAddress, uniswapExchangeAbi, wallet) + const othertokenExchange = new Contract(othertokenExchangeAddress, uniswapExchangeAbi, wallet) + + // wallet starts with 1000 ETH and 100000 of each token + // add 10 ETH liquidity to tokens, set initial exchange rates + const amtEth = parseEther('40') + const amtToken = parseEther('1000') // 1 ETH ~= 10 DATAcoin + const amtToken2 = parseEther('10000') // 1 ETH ~= 100 OTHERcoin + + await token.approve(datatokenExchangeAddress, amtToken) + await token2.approve(othertokenExchangeAddress, amtToken2) + + await datatokenExchange.addLiquidity(amtToken, amtToken, futureTime, { gasLimit: 6000000, value: amtEth }) + await othertokenExchange.addLiquidity(amtToken2, amtToken2, futureTime, { gasLimit: 6000000, value: amtEth }) + + log(`Added liquidity to uniswap exchanges: ${formatEther(amtToken)} DATAcoin, ${formatEther(amtToken2)} OTHERcoin`) + + log(`Deploying NodeRegistry contract 1 (tracker registry) from ${wallet.address}`) + let initialNodes = [] + let initialMetadata = [] + initialNodes.push('0xb9e7cEBF7b03AE26458E32a059488386b05798e8') + initialMetadata.push('{"ws": "ws://10.200.10.1:30301", "http": "http://10.200.10.1:30301"}') + initialNodes.push('0x0540A3e144cdD81F402e7772C76a5808B71d2d30') + initialMetadata.push('{"ws": "ws://10.200.10.1:30302", "http": "http://10.200.10.1:30302"}') + initialNodes.push('0xf2C195bE194a2C91e93Eacb1d6d55a00552a85E2') + initialMetadata.push('{"ws": "ws://10.200.10.1:30303", "http": "http://10.200.10.1:30303"}') + // 1st NodeRegistry deployed here. 2nd below + const trackerNodeRegistry = await deployNodeRegistry(wallet, initialNodes, initialMetadata) + + const ethwei = parseEther('1') + let rate = await datatokenExchange.getTokenToEthInputPrice(ethwei) + log(`1 DATAtoken buys ${formatEther(rate)} ETH`) + rate = await othertokenExchange.getTokenToEthInputPrice(ethwei) + log(`1 OTHERtoken buys ${formatEther(rate)} ETH`) + + // deployment steps based on https://github.com/ensdomains/ens/blob/2a6785c3b5fc27269eb3bb18b9d1245d1f01d6c8/migrations/2_deploy_contracts.js#L30 + log('Deploying ENS') + const ensDeploy = new ContractFactory(ENSRegistry.abi, ENSRegistry.bytecode, wallet) + const ensDeployTx = await ensDeploy.deploy() + const ens = await ensDeployTx.deployed() + log(`ENS deployed at ${ens.address}`) + const rootNode = getRootNodeFromTLD('eth') + log('Deploying FIFSRegistrar') + const fifsDeploy = new ContractFactory(FIFSRegistrar.abi, FIFSRegistrar.bytecode, wallet) + const fifsDeployTx = await fifsDeploy.deploy(ens.address, rootNode.namehash) + const fifs = await fifsDeployTx.deployed() + log(`FIFSRegistrar deployed at ${fifs.address}`) + let tx = await ens.setSubnodeOwner('0x0000000000000000000000000000000000000000000000000000000000000000', rootNode.sha3, fifs.address) + await tx.wait() + const resDeploy = new ContractFactory(PublicResolver.abi, PublicResolver.bytecode, wallet) + const resDeployTx = await resDeploy.deploy(ens.address) + const resolver = await resDeployTx.deployed() + log(`PublicResolver deployed at ${resolver.address}`) + + const domains = ['testdomain1', 'testdomain2'] + const addresses = ['0x4178baBE9E5148c6D5fd431cD72884B07Ad855a0', '0xdC353aA3d81fC3d67Eb49F443df258029B01D8aB'] + for (let i = 0; i < domains.length; i++) { + const domain = domains[i] + const owner = wallet.address + const domainAddress = addresses[i] + const fullname = domain + '.eth' + const fullhash = namehash(fullname) + let tx + + log(`setting up ENS domain ${domain} with owner ${owner}, pointing to address ${domainAddress}`) + tx = await fifs.register(Web3.utils.sha3(domain), owner) + await tx.wait() + log('called regsiter') - log("Init Uniswap1 factory") - await uniswapFactory.initializeFactory(uniswapExchangeTemplate.address) - log(`Init Uniswap1 exchange for DATAcoin token ${token.address}`) - await uniswapFactory.createExchange(token.address, {gasLimit: 6000000}) - log(`Init Uniswap1 exchange for OTHERcoin token ${token2.address}`) - const uniswapTx = await uniswapFactory.createExchange(token2.address, {gasLimit: 6000000}) - await uniswapTx.wait() // need wait here to call read methods below - - let datatoken_exchange_address = await uniswapFactory.getExchange(token.address) - log(`DATAcoin traded at Uniswap1 exchange ${datatoken_exchange_address}`) - let othertoken_exchange_address = await uniswapFactory.getExchange(token2.address) - log(`OTHERcoin traded at Uniswap1 exchange ${othertoken_exchange_address}`) - let datatokenExchange = new Contract(datatoken_exchange_address, uniswap_exchange_abi, wallet) - let othertokenExchange = new Contract(othertoken_exchange_address, uniswap_exchange_abi, wallet) - - // wallet starts with 1000 ETH and 100000 of each token - // add 10 ETH liquidity to tokens, set initial exchange rates - let amt_eth = parseEther("40") - let amt_token = parseEther("1000") // 1 ETH ~= 10 DATAcoin - let amt_token2 = parseEther("10000") // 1 ETH ~= 100 OTHERcoin - - await token.approve(datatoken_exchange_address, amt_token) - await token2.approve(othertoken_exchange_address, amt_token2) - - await datatokenExchange.addLiquidity(amt_token, amt_token, futureTime, {gasLimit: 6000000, value: amt_eth}) - await othertokenExchange.addLiquidity(amt_token2, amt_token2, futureTime, {gasLimit: 6000000, value: amt_eth}) - - log(`Added liquidity to uniswap exchanges: ${formatEther(amt_token)} DATAcoin, ${formatEther(amt_token2)} OTHERcoin`) - - log(`Deploying NodeRegistry contract 1 (tracker registry) from ${wallet.address}`) - var initialNodes = [] - var initialMetadata = [] - initialNodes.push('0xb9e7cEBF7b03AE26458E32a059488386b05798e8') - initialMetadata.push('{"ws": "ws://10.200.10.1:30301", "http": "http://10.200.10.1:30301"}') - initialNodes.push('0x0540A3e144cdD81F402e7772C76a5808B71d2d30') - initialMetadata.push('{"ws": "ws://10.200.10.1:30302", "http": "http://10.200.10.1:30302"}') - initialNodes.push('0xf2C195bE194a2C91e93Eacb1d6d55a00552a85E2') - initialMetadata.push('{"ws": "ws://10.200.10.1:30303", "http": "http://10.200.10.1:30303"}') - //1st NodeRegistry deployed here. 2nd below - const trackerNodeRegistry = await deployNodeRegistry(wallet, initialNodes, initialMetadata) - - const ethwei = parseEther("1") - let rate = await datatokenExchange.getTokenToEthInputPrice(ethwei) - log(`1 DATAtoken buys ${formatEther(rate)} ETH`) - rate = await othertokenExchange.getTokenToEthInputPrice(ethwei) - log(`1 OTHERtoken buys ${formatEther(rate)} ETH`) - - //deployment steps based on https://github.com/ensdomains/ens/blob/2a6785c3b5fc27269eb3bb18b9d1245d1f01d6c8/migrations/2_deploy_contracts.js#L30 - log("Deploying ENS") - const ensDeploy = new ContractFactory(ENSRegistry.abi, ENSRegistry.bytecode, wallet) - const ensDeployTx = await ensDeploy.deploy() - const ens = await ensDeployTx.deployed() - log(`ENS deployed at ${ens.address}`) - const rootNode = getRootNodeFromTLD('eth') - log("Deploying FIFSRegistrar") - const fifsDeploy = new ContractFactory(FIFSRegistrar.abi, FIFSRegistrar.bytecode, wallet) - const fifsDeployTx = await fifsDeploy.deploy(ens.address, rootNode.namehash) - const fifs = await fifsDeployTx.deployed() - log(`FIFSRegistrar deployed at ${fifs.address}`) - tx = await ens.setSubnodeOwner('0x0000000000000000000000000000000000000000000000000000000000000000', rootNode.sha3, fifs.address) + tx = await ens.setResolver(fullhash, resolver.address) await tx.wait() - const resDeploy = new ContractFactory(PublicResolver.abi, PublicResolver.bytecode, wallet) - const resDeployTx = await resDeploy.deploy(ens.address) - const resolver = await resDeployTx.deployed() - log(`PublicResolver deployed at ${resolver.address}`) - - const domains = ['testdomain1', 'testdomain2'] - const addresses = ['0x4178baBE9E5148c6D5fd431cD72884B07Ad855a0', '0xdC353aA3d81fC3d67Eb49F443df258029B01D8aB'] - for (var i = 0; i < domains.length; i++){ - const domain = domains[i] - const owner = wallet.address - const domainAddress = addresses[i] - const fullname = domain + ".eth" - const fullhash = namehash(fullname) - - log(`setting up ENS domain ${domain} with owner ${owner}, pointing to address ${domainAddress}`) - tx = await fifs.register(Web3.utils.sha3(domain), owner) - tr = await tx.wait() - log(`called regsiter`) - - tx = await ens.setResolver(fullhash, resolver.address) - tr = await tx.wait() - log('called setResolver') - - //Ethers wont call the 2-arg setAddr. 60 is default = COIN_TYPE_ETH. - //see https://github.com/ensdomains/resolvers/blob/master/contracts/profiles/AddrResolver.sol - tx = await resolver.setAddr(fullhash, 60, domainAddress) - tr = await tx.wait() - log(`called setAddr. done registering ${fullname} as ${domainAddress}`) - - //transfer ownership - tx = await ens.setOwner(fullhash, addresses[i]) - tr = await tx.wait() - log(`transferred ownership to ${addresses[i]}`) - } - log("ENS init complete") - - //deploy 2nd NodeRegistry: - log(`Deploying NodeRegistry contract 2 (storage node registry) to sidechain from ${sidechainWallet.address}`) - initialNodes = [] - initialMetadata = [] - initialNodes.push('0xde1112f631486CfC759A50196853011528bC5FA0') - initialMetadata.push('{"http": "http://10.200.10.1:8891"}') - const storageNodeRegistry = await deployNodeRegistry(sidechainWallet, initialNodes, initialMetadata) - - log(`deploy Uniswap2 mainnet`) - const router = await deployUniswap2(wallet) - log(`deploy Uniswap2 sidechain`) - const uniswapRouterSidechain = await deployUniswap2(sidechainWallet) - - tx = await token.approve(router.address, amt_token) - //await tx.wait() - tx = await token2.approve(router.address, amt_token2) + log('called setResolver') + + // Ethers wont call the 2-arg setAddr. 60 is default = COIN_TYPE_ETH. + // see https://github.com/ensdomains/resolvers/blob/master/contracts/profiles/AddrResolver.sol + tx = await resolver.setAddr(fullhash, 60, domainAddress) await tx.wait() - log(`addLiquidity Uniswap2 mainnet`) - tx = await router.addLiquidity(token.address, token2.address, amt_token, amt_token2, 0, 0, wallet.address, futureTime) - - let cf = new ContractFactory(Uniswap2Adapter.abi, Uniswap2Adapter.bytecode, wallet) - let dtx = await cf.deploy(market.address, router.address, token.address) - const uniswap2Adapter = await dtx.deployed() - log(`Uniswap2Adapter ${uniswap2Adapter.address}`) - - cf = new ContractFactory(BinanceAdapter.abi, BinanceAdapter.bytecode, sidechainWallet) - //constructor(address dataCoin_, address honeyswapRouter_, address bscBridge_, address convertToCoin_, address liquidityToken_) public { - dtx = await cf.deploy(sidechainDataCoin, uniswapRouterSidechain.address, sidechainSingleTokenMediator, sidechainDataCoin, sidechainDataCoin) - const binanceAdapter = await dtx.deployed() - log(`sidechain binanceAdapter ${binanceAdapter.address}`) - - const streamRegistry = await deployStreamRegistry() - - // TODO: move these deployments to the top once address change pains are solved - log(`Deploying test DATAv1 from ${wallet.address}`) - const oldTokenDeployer = new ContractFactory(OldTokenJson.abi, OldTokenJson.bytecode, wallet) - const oldTokenDeployTx = await oldTokenDeployer.deploy("Test DATAv1", "\uD83D\uDC34", 0, 18, true) // horse face - const oldToken = await oldTokenDeployTx.deployed() - log(`Old DATAv1 ERC20 deployed at ${oldToken.address}`) - - log(`Deploying DataTokenMigrator from ${wallet.address}`) - const migratorDeployer = new ContractFactory(DataTokenMigrator.abi, DataTokenMigrator.bytecode, wallet) - const migratorDeployTx = await migratorDeployer.deploy(oldToken.address, token.address) - const migrator = await migratorDeployTx.deployed() - log(`New DataTokenMigrator at ${migrator.address}`) - - log('Set up the old token and mint %s test-DATAv1 (in total) to following:', oldSupply) - await oldToken.setReleaseAgent(wallet.address) - const mintAgentTx = await oldToken.setMintAgent(wallet.address, true) - await mintAgentTx.wait() - for (const address of privateKeys.map(computeAddress)) { - log(" " + address) - await oldToken.mint(address, mintTokenAmount) - } - await oldToken.mint(wallet.address, oldSupply.sub(mintTokenAmount.mul(privateKeys.length))) - const oldTokenReleaseTx = await oldToken.releaseTokenTransfer() - await oldTokenReleaseTx.wait() - log('Old token getUpgradeState: %d, expected: 2', await oldToken.getUpgradeState()) - - log('Set migrator as UpgradeAgent => start test-DATAv1 upgrade') - const upgradeTx1 = await token.mint(migrator.address, await oldToken.totalSupply()) - await upgradeTx1.wait() - const upgradeTx2 = await oldToken.setUpgradeAgent(migrator.address) - await upgradeTx2.wait() - log('Old token getUpgradeState: %d, expected: 3', await oldToken.getUpgradeState()) - - log(`Minting ${mintTokenAmount} DATAv2 tokens to following addresses:`) - const keys = {} - for (const [projectName, testWalletCount] of projects) { - keys[projectName] = [] - for (let i = 0; i < testWalletCount; i++) { - const testWallet = getTestWallet(projectName, i) - log(" %s (%s #%d)", testWallet.address, projectName, i) - await token.mint(testWallet.address, mintTokenAmount) - keys[projectName].push(testWallet.privateKey) - } - } + log(`called setAddr. done registering ${fullname} as ${domainAddress}`) - const streamStorageRegistry = await deployStreamStorageRegistry(sidechainWallet, storageNodeRegistry.address, streamRegistry.address) - //put additions here - - //all TXs should now be confirmed: - log("Loading test products from core") - let products - try { - products = await getProducts() - } catch (e) { - console.error(e) - process.exit(1) + // transfer ownership + tx = await ens.setOwner(fullhash, addresses[i]) + await tx.wait() + log(`transferred ownership to ${addresses[i]}`) + } + log('ENS init complete') + + // deploy 2nd NodeRegistry: + log(`Deploying NodeRegistry contract 2 (storage node registry) to sidechain from ${sidechainWallet.address}`) + initialNodes = [] + initialMetadata = [] + initialNodes.push('0xde1112f631486CfC759A50196853011528bC5FA0') + initialMetadata.push('{"http": "http://10.200.10.1:8891"}') + const storageNodeRegistry = await deployNodeRegistry(sidechainWallet, initialNodes, initialMetadata) + + log('deploy Uniswap2 mainnet') + const router = await deployUniswap2(wallet) + log('deploy Uniswap2 sidechain') + const uniswapRouterSidechain = await deployUniswap2(sidechainWallet) + + tx = await token.approve(router.address, amtToken) + // await tx.wait() + tx = await token2.approve(router.address, amtToken2) + await tx.wait() + log('addLiquidity Uniswap2 mainnet') + tx = await router.addLiquidity(token.address, token2.address, amtToken, amtToken2, 0, 0, wallet.address, futureTime) + + let cf = new ContractFactory(Uniswap2Adapter.abi, Uniswap2Adapter.bytecode, wallet) + let dtx = await cf.deploy(market.address, router.address, token.address) + const uniswap2Adapter = await dtx.deployed() + log(`Uniswap2Adapter ${uniswap2Adapter.address}`) + + cf = new ContractFactory(BinanceAdapter.abi, BinanceAdapter.bytecode, sidechainWallet) + // constructor(address dataCoin_, address honeyswapRouter_, address bscBridge_, address convertToCoin_, address liquidityToken_) public { + dtx = await cf.deploy(sidechainDataCoin, uniswapRouterSidechain.address, sidechainSingleTokenMediator, sidechainDataCoin, sidechainDataCoin) + const binanceAdapter = await dtx.deployed() + log(`sidechain binanceAdapter ${binanceAdapter.address}`) + + const { streamRegistry, ensCache, chainlinkOracle, linkToken } = await deployStreamRegistry() + + // TODO: move these deployments to the top once address change pains are solved + log(`Deploying test DATAv1 from ${wallet.address}`) + const oldTokenDeployer = new ContractFactory(OldTokenJson.abi, OldTokenJson.bytecode, wallet) + const oldTokenDeployTx = await oldTokenDeployer.deploy('Test DATAv1', '\uD83D\uDC34', 0, 18, true) // horse face + const oldToken = await oldTokenDeployTx.deployed() + log(`Old DATAv1 ERC20 deployed at ${oldToken.address}`) + + log(`Deploying DataTokenMigrator from ${wallet.address}`) + const migratorDeployer = new ContractFactory(DataTokenMigrator.abi, DataTokenMigrator.bytecode, wallet) + const migratorDeployTx = await migratorDeployer.deploy(oldToken.address, token.address) + const migrator = await migratorDeployTx.deployed() + log(`New DataTokenMigrator at ${migrator.address}`) + + log('Set up the old token and mint %s test-DATAv1 (in total) to following:', oldSupply) + await oldToken.setReleaseAgent(wallet.address) + const mintAgentTx = await oldToken.setMintAgent(wallet.address, true) + await mintAgentTx.wait() + for (const address of privateKeys.map(computeAddress)) { + log(' ' + address) + await oldToken.mint(address, mintTokenAmount) + } + await oldToken.mint(wallet.address, oldSupply.sub(mintTokenAmount.mul(privateKeys.length))) + const oldTokenReleaseTx = await oldToken.releaseTokenTransfer() + await oldTokenReleaseTx.wait() + log('Old token getUpgradeState: %d, expected: 2', await oldToken.getUpgradeState()) + + log('Set migrator as UpgradeAgent => start test-DATAv1 upgrade') + const upgradeTx1 = await token.mint(migrator.address, await oldToken.totalSupply()) + await upgradeTx1.wait() + const upgradeTx2 = await oldToken.setUpgradeAgent(migrator.address) + await upgradeTx2.wait() + log('Old token getUpgradeState: %d, expected: 3', await oldToken.getUpgradeState()) + + log(`Minting ${mintTokenAmount} DATAv2 tokens to following addresses:`) + const keys = {} + for (const [projectName, testWalletCount] of projects) { + keys[projectName] = [] + for (let i = 0; i < testWalletCount; i++) { + const testWallet = getTestWallet(projectName, i) + log(' %s (%s #%d)', testWallet.address, projectName, i) + await token.mint(testWallet.address, mintTokenAmount) + keys[projectName].push(testWallet.privateKey) } - - log(`Adding ${products.length} products to Marketplace`) - for (const p of products) { - // free products not supported - if (p.pricePerSecond == 0) { - continue - } - console.log(`create ${p.id}`) - const tx = await market.createProduct(`0x${p.id}`, p.name, wallet.address, p.pricePerSecond, - p.priceCurrency == "DATA" ? 0 : 1, p.minimumSubscriptionInSeconds) - //await tx.wait(1) - if (p.state == "NOT_DEPLOYED") { - console.log(`delete ${p.id}`) - await tx.wait(1) - await market.deleteProduct(`0x${p.id}`) - //await tx2.wait(1) - } + } + + const streamStorageRegistry = await deployStreamStorageRegistry(sidechainWallet, storageNodeRegistry.address, streamRegistry) + // put additions here + + // all TXs should now be confirmed: + log('Loading test products from core') + let products + try { + products = await getProducts() + } catch (e) { + console.error(e) + process.exit(1) + } + + log(`Adding ${products.length} products to Marketplace`) + for (const p of products) { + // free products not supported + if (p.pricePerSecond === 0) { + continue } - - // DataUnion and bridge (AMB) configs will be added in deploy_du2_factories.js and combined with this in Dockerfile into config.json - const addressJsonString = JSON.stringify({ - mainnet: { - url: "http://10.200.10.1:8545", - chainId: 8995, - coreApi: "0xf3E5A65851C3779f468c9EcB32E6f25D9D68601a", - - token: token.address, - oldToken: oldToken.address, - otherToken: token2.address, - nodeRegistry: trackerNodeRegistry.address, - - // Uniswap adapters (for Marketplace) - uniswapAdapter: uniswapAdaptor.address, - uniswapFactory: uniswapFactory.address, - uniswap2Adapter: uniswap2Adapter.address, - uniswap2Router: router.address, - - // ENS - ens: ens.address, - fifs: fifs.address, - ensResolver: resolver.address, - }, - xdai: { - url: "http://10.200.10.1:8546", - chainId: 8997, - - streamRegistry: streamRegistry.address, - storageNodeRegistry: storageNodeRegistry.address, - streamStorageRegistry: streamStorageRegistry.address, - - // DU2, for withdrawing from Data Union to other chains (e.g. BSC) - binanceAdapter: binanceAdapter.address, - uniswap2Router: uniswapRouterSidechain.address, - - // ENS caching in sidechain, to be able to tell who owns an ENS name (and has the right to create streams to that namespace) - ensCache: ensCache.address, - chainlinkOracle: oracle.address, - linkToken: linkToken.address, - }, - keys - }) - console.log(addressJsonString) - fs.writeFileSync("addresses.json", addressJsonString) + console.log(`create ${p.id}`) + const tx = await market.createProduct(`0x${p.id}`, p.name, wallet.address, p.pricePerSecond, + p.priceCurrency === 'DATA' ? 0 : 1, p.minimumSubscriptionInSeconds) + // await tx.wait(1) + if (p.state === 'NOT_DEPLOYED') { + console.log(`delete ${p.id}`) + await tx.wait(1) + await market.deleteProduct(`0x${p.id}`) + // await tx2.wait(1) + } + } + + // DataUnion and bridge (AMB) configs will be added in deploy_du2_factories.js and combined with this in Dockerfile into config.json + const addressJsonString = JSON.stringify({ + mainnet: { + url: 'http://10.200.10.1:8545', + chainId: 8995, + coreApi: '0xf3E5A65851C3779f468c9EcB32E6f25D9D68601a', + + token: token.address, + oldToken: oldToken.address, + otherToken: token2.address, + nodeRegistry: trackerNodeRegistry.address, + + // Uniswap adapters (for Marketplace) + uniswapAdapter: uniswapAdaptor.address, + uniswapFactory: uniswapFactory.address, + uniswap2Adapter: uniswap2Adapter.address, + uniswap2Router: router.address, + + // ENS + ens: ens.address, + fifs: fifs.address, + ensResolver: resolver.address + }, + xdai: { + url: 'http://10.200.10.1:8546', + chainId: 8997, + + streamRegistry: streamRegistry.address, + storageNodeRegistry: storageNodeRegistry.address, + streamStorageRegistry: streamStorageRegistry.address, + + // DU2, for withdrawing from Data Union to other chains (e.g. BSC) + binanceAdapter: binanceAdapter.address, + uniswap2Router: uniswapRouterSidechain.address, + + // ENS caching in sidechain, to be able to tell who owns an ENS name (and has the right to create streams to that namespace) + ensCache, + chainlinkOracle, + linkToken + }, + keys + }) + console.log(addressJsonString) + fs.writeFileSync('addresses.json', addressJsonString) } smartContractInitialization() From 4497127d6557f8de74eb42e3c14e2bf14236dcd5 Mon Sep 17 00:00:00 2001 From: Christoph-Samuel Pitter Date: Fri, 5 Nov 2021 16:35:55 +0400 Subject: [PATCH 4/6] feat: publish to npm of output, linted some file, fixed creation of output json file --- .eslintrc.js | 35 +- bridge/deploy_bridge_and_du2.sh | 3 + docker-compose.yml | 1 + index.js | 878 +++++----- npm-publish.sh | 5 + package-lock.json | 2658 +++++++++++++++++++++++++++++-- package.json | 10 +- preload_parity_images.sh | 2 +- run.sh | 5 +- 9 files changed, 3013 insertions(+), 584 deletions(-) create mode 100755 npm-publish.sh diff --git a/.eslintrc.js b/.eslintrc.js index 5039cfe..6bfc5bc 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,17 +1,22 @@ module.exports = { - env: { - commonjs: true, - es2021: true, - node: true - }, - extends: [ - 'standard' - ], - parserOptions: { - ecmaVersion: 12, - requireConfigFile: false - }, - rules: { - }, - parser: '@babel/eslint-parser' + env: { + commonjs: true, + es2021: true, + node: true + }, + extends: [ + 'eslint-config-streamr-ts' + ], + parserOptions: { + ecmaVersion: 12, + requireConfigFile: false + }, + rules: { + "space-before-function-paren": ["error", { + "anonymous": "always", + "named": "never", + "asyncArrow": "always" + }], + }, + parser: '@babel/eslint-parser' } diff --git a/bridge/deploy_bridge_and_du2.sh b/bridge/deploy_bridge_and_du2.sh index 9d545d0..1cb1c5d 100755 --- a/bridge/deploy_bridge_and_du2.sh +++ b/bridge/deploy_bridge_and_du2.sh @@ -43,6 +43,9 @@ docker run --name $TASK $ENV --env-file omnibridgeMediator.env $CONTRACTS deploy docker cp $TASK:/contracts/deploy/bridgeDeploymentResults.json $OMNIBRIDGERESULTS docker rm $TASK +# TODO: the following set env vars to empty because $OMNIBRIDGERESULTS is empty +# reason is probably that /contracts/deploy/bridgeDeploymentResults.json isn't where expected +# need to investigate what the poanetwork/omnibridge deploy.sh produces export FOREIGN_OMNIBRIDGE=`jq -r .foreignBridge.foreignBridgeMediator.address` < $OMNIBRIDGERESULTS export HOME_OMNIBRIDGE=`jq -r .homeBridge.homeBridgeMediator.address` < $OMNIBRIDGERESULTS diff --git a/docker-compose.yml b/docker-compose.yml index 4117185..524ea23 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -44,3 +44,4 @@ services: CHAIN_URL: http://10.200.10.1:8545 volumes: - /var/run/docker.sock:/var/run/docker.sock + - ./output:/output diff --git a/index.js b/index.js index 26f78fb..604046b 100644 --- a/index.js +++ b/index.js @@ -1,11 +1,11 @@ const fs = require('fs') const Web3 = require('web3') const { - Contract, - ContractFactory, - utils: { computeAddress, parseEther, formatEther, namehash, id, bigNumberify }, - Wallet, - providers: { JsonRpcProvider } + Contract, + ContractFactory, + utils: { computeAddress, parseEther, formatEther, namehash, id, bigNumberify }, + Wallet, + providers: { JsonRpcProvider } } = require('ethers') const TestTokenJson = require('./ethereumContractJSONs/TestToken.json') @@ -49,7 +49,7 @@ const chainURL = process.env.CHAIN_URL || 'http://10.200.10.1:8545' const sidechainURL = process.env.SIDECHAIN_URL || 'http://10.200.10.1:8546' // const streamrUrl = process.env.EE_URL || "http://10.200.10.1:8081/streamr-core" // production: "https://www.streamr.com" -const log = require('debug')('eth-init') +const log = console.log //require('debug')('eth-init') const futureTime = 4449513600 // DATAv1 token supply before the upgrade (real mainnet number) @@ -65,34 +65,34 @@ const privKeyStreamRegistry = '0x4059de411f15511a85ce332e7a428f36492ab4e87c78300 // "testrpc" mnemonic wallets, will have DATAv1 and DATAv2 tokens in them const privateKeys = [ - '0x5e98cce00cff5dea6b454889f359a4ec06b9fa6b88e9d69b86de8e1c81887da0', // used!! - '0xe5af7834455b7239881b85be89d905d6881dcb4751063897f12be1b0dd546bdb', // used!! - '0x4059de411f15511a85ce332e7a428f36492ab4e87c7830099dadbf130f1896ae', // used!! - '0x633a182fb8975f22aaad41e9008cb49a432e9fdfef37f151e9e7c54e96258ef9', // use this for new deployments - '0x957a8212980a9a39bf7c03dcbeea3c722d66f2b359c669feceb0e3ba8209a297', - '0xfe1d528b7e204a5bdfb7668a1ed3adfee45b4b96960a175c9ef0ad16dd58d728', - '0xd7609ae3a29375768fac8bc0f8c2f6ac81c5f2ffca2b981e6cf15460f01efe14', - '0xb1abdb742d3924a45b0a54f780f0f21b9d9283b231a0a0b35ce5e455fa5375e7', - '0x2cd9855d17e01ce041953829398af7e48b24ece04ff9d0e183414de54dc52285' + '0x5e98cce00cff5dea6b454889f359a4ec06b9fa6b88e9d69b86de8e1c81887da0', // used!! + '0xe5af7834455b7239881b85be89d905d6881dcb4751063897f12be1b0dd546bdb', // used!! + '0x4059de411f15511a85ce332e7a428f36492ab4e87c7830099dadbf130f1896ae', // used!! + '0x633a182fb8975f22aaad41e9008cb49a432e9fdfef37f151e9e7c54e96258ef9', // use this for new deployments + '0x957a8212980a9a39bf7c03dcbeea3c722d66f2b359c669feceb0e3ba8209a297', + '0xfe1d528b7e204a5bdfb7668a1ed3adfee45b4b96960a175c9ef0ad16dd58d728', + '0xd7609ae3a29375768fac8bc0f8c2f6ac81c5f2ffca2b981e6cf15460f01efe14', + '0xb1abdb742d3924a45b0a54f780f0f21b9d9283b231a0a0b35ce5e455fa5375e7', + '0x2cd9855d17e01ce041953829398af7e48b24ece04ff9d0e183414de54dc52285' ] // single-use wallets for tests, listed projects' wallets have DATAv2 tokens on them // [ "project-name", testWalletCount ] const projects = [ - ['js-client', 100], - ['java-client', 20], - ['marketplace-contracts', 10], - ['network-contracts', 10], - ['data-union-contracts', 10], - ['broker', 10], - ['network', 100], - ['core-api', 10], - ['core-frontend', 10], - ['...add your own here', 1] + ['jsClient', 100], + ['javaClient', 20], + ['marketplaceContracts', 10], + ['networkContracts', 10], + ['dataUnionContracts', 10], + ['broker', 10], + ['network', 100], + ['coreApi', 10], + ['coreFrontend', 10], + ['...add your own here', 1] ] -function getTestWallet (name, index) { - const hash = id(name + (index || '')) - return new Wallet(hash) +function getTestWallet(name, index) { + const hash = id(name + (index || '')) + return new Wallet(hash) } // these come from the next step, but we can predict the addresses @@ -102,9 +102,9 @@ const sidechainSingleTokenMediator = '0xedD2aa644a6843F2e5133Fe3d6BD3F4080d97D9F const chainlinkNodeAddress = '0x7b5F1610920d5BAf00D684929272213BaF962eFe' const chainlinkJobId = 'c99333d032ed4cb8967b956c7f0329b5' -async function getProducts () { - // return await (await fetch(`${streamrUrl}/api/v1/products?publicAccess=true`)).json() - return products +async function getProducts() { + // return await (await fetch(`${streamrUrl}/api/v1/products?publicAccess=true`)).json() + return products } // function sleep(ms) { @@ -117,15 +117,15 @@ async function getProducts () { // from https://github.com/ethers-io/ethers.js/issues/319 class AutoNonceWallet extends Wallet { noncePromise = null - sendTransaction (transaction) { - if (transaction.nonce == null) { - if (this.noncePromise == null) { - this.noncePromise = this.provider.getTransactionCount(this.address) + sendTransaction(transaction) { + if (transaction.nonce == null) { + if (this.noncePromise == null) { + this.noncePromise = this.provider.getTransactionCount(this.address) + } + transaction.nonce = this.noncePromise + this.noncePromise = this.noncePromise.then((nonce) => (nonce + 1)) } - transaction.nonce = this.noncePromise - this.noncePromise = this.noncePromise.then((nonce) => (nonce + 1)) - } - return super.sendTransaction(transaction) + return super.sendTransaction(transaction) } } @@ -137,424 +137,422 @@ class AutoNonceWallet extends Wallet { * * @param {string} tld plain text tld, for example: 'eth' */ -function getRootNodeFromTLD (tld) { - return { - namehash: namehash(tld), - sha3: Web3.utils.sha3(tld) - } +function getRootNodeFromTLD(tld) { + return { + namehash: namehash(tld), + sha3: Web3.utils.sha3(tld) + } } -async function deployNodeRegistry (wallet, initialNodes, initialMetadata) { - const factory = new ContractFactory(NodeRegistry.abi, NodeRegistry.bytecode, wallet) - const tx = await factory.deploy(wallet.address, false, initialNodes, initialMetadata, { gasLimit: 6000000 }) - const contract = await tx.deployed() - log(`NodeRegistry deployed at ${contract.address}`) - const nodes = await contract.getNodes() - log(`NodeRegistry nodes : ${JSON.stringify(nodes)}`) - return contract +async function deployNodeRegistry(wallet, initialNodes, initialMetadata) { + const factory = new ContractFactory(NodeRegistry.abi, NodeRegistry.bytecode, wallet) + const tx = await factory.deploy(wallet.address, false, initialNodes, initialMetadata, { gasLimit: 6000000 }) + const contract = await tx.deployed() + log(`NodeRegistry deployed at ${contract.address}`) + const nodes = await contract.getNodes() + log(`NodeRegistry nodes : ${JSON.stringify(nodes)}`) + return contract } -async function deployStreamStorageRegistry (wallet, nodeRegistryAddress, streamRegistryAddress) { - const strDeploy = new ContractFactory(StreamStorageRegistry.abi, StreamStorageRegistry.bytecode, wallet) - const strDeployTx = await strDeploy.deploy(streamRegistryAddress, nodeRegistryAddress, wallet.address, { gasLimit: 6000000 }) - const str = await strDeployTx.deployed() - log(`StreamStorageRegistry deployed at ${str.address}`) - return str +async function deployStreamStorageRegistry(wallet, nodeRegistryAddress, streamRegistryAddress) { + const strDeploy = new ContractFactory(StreamStorageRegistry.abi, StreamStorageRegistry.bytecode, wallet) + const strDeployTx = await strDeploy.deploy(streamRegistryAddress, nodeRegistryAddress, wallet.address, { gasLimit: 6000000 }) + const str = await strDeployTx.deployed() + log(`StreamStorageRegistry deployed at ${str.address}`) + return str } -async function deployUniswap2 (wallet) { - let deployer = new ContractFactory(WETH9.abi, WETH9.bytecode, wallet) - let tx = await deployer.deploy() - const weth = await tx.deployed() - log(`WETH deployed to ${weth.address}`) - - deployer = new ContractFactory(UniswapV2Factory.abi, UniswapV2Factory.bytecode, wallet) - tx = await deployer.deploy(wallet.address) - const factory = await tx.deployed() - log(`Uniswap2 factory deployed to ${factory.address}`) - - deployer = new ContractFactory(UniswapV2Router02.abi, UniswapV2Router02.bytecode, wallet) - tx = await deployer.deploy(factory.address, weth.address) - const router = await tx.deployed() - log(`Uniswap2 router deployed to ${router.address}`) - return router +async function deployUniswap2(wallet) { + let deployer = new ContractFactory(WETH9.abi, WETH9.bytecode, wallet) + let tx = await deployer.deploy() + const weth = await tx.deployed() + log(`WETH deployed to ${weth.address}`) + + deployer = new ContractFactory(UniswapV2Factory.abi, UniswapV2Factory.bytecode, wallet) + tx = await deployer.deploy(wallet.address) + const factory = await tx.deployed() + log(`Uniswap2 factory deployed to ${factory.address}`) + + deployer = new ContractFactory(UniswapV2Router02.abi, UniswapV2Router02.bytecode, wallet) + tx = await deployer.deploy(factory.address, weth.address) + const router = await tx.deployed() + log(`Uniswap2 router deployed to ${router.address}`) + return router } -async function ethersWallet (url, privateKey) { - const provider = new JsonRpcProvider(url) - try { - await provider.getNetwork() - } catch (e) { - console.error(e) - process.exit(1) - } - return new AutoNonceWallet(privateKey, provider) +async function ethersWallet(url, privateKey) { + const provider = new JsonRpcProvider(url) + try { + await provider.getNetwork() + } catch (e) { + console.error(e) + process.exit(1) + } + return new AutoNonceWallet(privateKey, provider) } -async function deployStreamRegistry () { - const sidechainWalletStreamReg = await ethersWallet(sidechainURL, privKeyStreamRegistry) - - log('Sending some Ether to chainlink node address') - await sidechainWalletStreamReg.sendTransaction({ - to: chainlinkNodeAddress, - value: parseEther('100') - }) - - log('Deploying Streamregistry and chainlink contracts to sidechain:') - const linkTokenFactory = new ContractFactory(LinkToken.abi, LinkToken.bytecode, sidechainWalletStreamReg) - const linkTokenFactoryTx = await linkTokenFactory.deploy() - const linkToken = await linkTokenFactoryTx.deployed() - log(`Link Token deployed at ${linkToken.address}`) - - const oracleFactory = new ContractFactory(ChainlinkOracle.compilerOutput.abi, - ChainlinkOracle.compilerOutput.evm.bytecode.object, sidechainWalletStreamReg) - const oracleFactoryTx = await oracleFactory.deploy(linkToken.address) - const oracle = await oracleFactoryTx.deployed() - log(`Chainlink Oracle deployed at ${oracle.address}`) - const tokenaddrFromOracle = await oracle.getChainlinkToken() - log(`Chainlink Oracle token pointing to ${tokenaddrFromOracle}`) - await oracle.setFulfillmentPermission(chainlinkNodeAddress, true) - const permission = await oracle.getAuthorizationStatus(chainlinkNodeAddress) - log(`Chainlink Oracle permission for ${chainlinkNodeAddress} is ${permission}`) - - const ensCacheFactory = new ContractFactory(ENSCache.abi, ENSCache.bytecode, sidechainWalletStreamReg) - const ensCacheFactoryTx = await ensCacheFactory.deploy(oracle.address, chainlinkJobId) - const ensCache = await ensCacheFactoryTx.deployed() - log(`ENSCache deployed at ${ensCache.address}`) - log(`ENSCache setting Link token address ${linkToken.address}`) - await ensCache.setChainlinkTokenAddress(linkToken.address) - - log('Sending some Link to ENSCache') - await linkToken.transfer(ensCache.address, bigNumberify('1000000000000000000000')) // 1000 link - - const streamRegistryFactory = new ContractFactory(StreamRegistry.abi, StreamRegistry.bytecode, sidechainWalletStreamReg) - const streamRegistryFactoryTx = await streamRegistryFactory.deploy(ensCache.address, sidechainWalletStreamReg.address) - const streamRegistry = await streamRegistryFactoryTx.deployed() - log(`Streamregistry deployed at ${streamRegistry.address}`) - return { - streamRegistry: streamRegistry.address, - ensCache: ensCache.address, - chainlinkOracle: oracle.address, - linkToken: linkToken.address - } +async function deployStreamRegistry() { + const sidechainWalletStreamReg = await ethersWallet(sidechainURL, privKeyStreamRegistry) + + log('Sending some Ether to chainlink node address') + await sidechainWalletStreamReg.sendTransaction({ + to: chainlinkNodeAddress, + value: parseEther('100') + }) + + log('Deploying Streamregistry and chainlink contracts to sidechain:') + const linkTokenFactory = new ContractFactory(LinkToken.abi, LinkToken.bytecode, sidechainWalletStreamReg) + const linkTokenFactoryTx = await linkTokenFactory.deploy() + const linkToken = await linkTokenFactoryTx.deployed() + log(`Link Token deployed at ${linkToken.address}`) + + const oracleFactory = new ContractFactory(ChainlinkOracle.compilerOutput.abi, + ChainlinkOracle.compilerOutput.evm.bytecode.object, sidechainWalletStreamReg) + const oracleFactoryTx = await oracleFactory.deploy(linkToken.address) + const oracle = await oracleFactoryTx.deployed() + log(`Chainlink Oracle deployed at ${oracle.address}`) + const tokenaddrFromOracle = await oracle.getChainlinkToken() + log(`Chainlink Oracle token pointing to ${tokenaddrFromOracle}`) + await oracle.setFulfillmentPermission(chainlinkNodeAddress, true) + const permission = await oracle.getAuthorizationStatus(chainlinkNodeAddress) + log(`Chainlink Oracle permission for ${chainlinkNodeAddress} is ${permission}`) + + const ensCacheFactory = new ContractFactory(ENSCache.abi, ENSCache.bytecode, sidechainWalletStreamReg) + const ensCacheFactoryTx = await ensCacheFactory.deploy(oracle.address, chainlinkJobId) + const ensCache = await ensCacheFactoryTx.deployed() + log(`ENSCache deployed at ${ensCache.address}`) + log(`ENSCache setting Link token address ${linkToken.address}`) + await ensCache.setChainlinkTokenAddress(linkToken.address) + + log('Sending some Link to ENSCache') + await linkToken.transfer(ensCache.address, bigNumberify('1000000000000000000000')) // 1000 link + + const streamRegistryFactory = new ContractFactory(StreamRegistry.abi, StreamRegistry.bytecode, sidechainWalletStreamReg) + const streamRegistryFactoryTx = await streamRegistryFactory.deploy(ensCache.address, sidechainWalletStreamReg.address) + const streamRegistry = await streamRegistryFactoryTx.deployed() + log(`Streamregistry deployed at ${streamRegistry.address}`) + return { + streamRegistry: streamRegistry.address, + ensCache: ensCache.address, + chainlinkOracle: oracle.address, + linkToken: linkToken.address + } } -async function smartContractInitialization () { - const wallet = await ethersWallet(chainURL, defaultPrivateKey) - const sidechainWallet = await ethersWallet(sidechainURL, defaultPrivateKey) - - // log(`Deploying test DATAv2 from ${wallet.address}`) - // const tokenDeployer = await new ContractFactory(TestTokenJson.abi, TestTokenJson.bytecode, wallet) - // const tokenDeployTx = await tokenDeployer.deploy("Test DATAv2", "\ud83e\udd84") // unicorn - // const token = await tokenDeployTx.deployed() - // log(`New DATAv2 ERC20 deployed at ${token.address}`) - - // log(`Deploying test DATAv2 from ${wallet.address}`) - const tokenDeployer = await new ContractFactory(DATAv2.abi, DATAv2.bytecode, wallet) - const tokenDeployTx = await tokenDeployer.deploy() - const token = await tokenDeployTx.deployed() - log(`New DATAv2 ERC20 deployed at ${token.address}`) - - // log(`Deploying Marketplace1 contract from ${wallet.address}`) - const marketDeployer1 = new ContractFactory(MarketplaceJson.abi, MarketplaceJson.bytecode, wallet) - const marketDeployTx1 = await marketDeployer1.deploy(token.address, wallet.address) - const market1 = await marketDeployTx1.deployed() - log(`Marketplace1 deployed at ${market1.address}`) - - // log(`Deploying Marketplace2 contract from ${wallet.address}`) - const marketDeployer2 = new ContractFactory(Marketplace2Json.abi, Marketplace2Json.bytecode, wallet) - const marketDeployTx2 = await marketDeployer2.deploy(token.address, wallet.address, market1.address) - const market = await marketDeployTx2.deployed() - log(`Marketplace2 deployed at ${market.address}`) - - // log(`Deploying Uniswap Factory contract from ${wallet.address}`) - const uniswapFactoryDeployer = new ContractFactory(uniswapFactoryAbi, uniswapFactoryBytecode, wallet) - const uniswapFactoryDeployTx = await uniswapFactoryDeployer.deploy() - const uniswapFactory = await uniswapFactoryDeployTx.deployed() - log(`Uniswap factory deployed at ${uniswapFactory.address}`) - - // log(`Deploying Uniswap Exchange template contract from ${wallet.address}`) - const uniswapExchangeDeployer = new ContractFactory(uniswapExchangeAbi, uniswapExchangeBytecode, wallet) - const uniswapExchangeDeployTx = await uniswapExchangeDeployer.deploy() - const uniswapExchangeTemplate = await uniswapExchangeDeployTx.deployed() - log(`Uniswap exchange template deployed at ${uniswapExchangeTemplate.address}`) - - // log(`Deploying UniswapAdaptor contract from ${wallet.address}`) - const uniswapAdaptorDeployer = new ContractFactory(UniswapAdaptor.abi, UniswapAdaptor.bytecode, wallet) - const uniswapAdaptorDeployTx = await uniswapAdaptorDeployer.deploy(market.address, uniswapFactory.address, token.address) - const uniswapAdaptor = await uniswapAdaptorDeployTx.deployed() - log(`UniswapAdaptor deployed at ${uniswapAdaptor.address}`) - - // another ERC20 that's not datacoin for testing buy with Uniswap - // log(`Deploying test OTHERcoin from ${wallet.address}`) - const tokenDeployer2 = new ContractFactory(TestTokenJson.abi, TestTokenJson.bytecode, wallet) - const tokenDeployTx2 = await tokenDeployer2.deploy('Test OTHERcoin', 'COIN') - const token2 = await tokenDeployTx2.deployed() - log(`Test OTHERcoin deployed at ${token2.address}`) - - // Note: TestToken contract automatically mints 100000 to owner - - log('Add minter: %s', wallet.address) - const addMinterTx = await token.grantRole(id('MINTER_ROLE'), wallet.address) - await addMinterTx.wait() - - log(`Minting ${mintTokenAmount} DATAv2 tokens to following addresses:`) - for (const address of privateKeys.map(computeAddress)) { - log(' %s', address) - await token.mint(address, mintTokenAmount) - } - - log('Init Uniswap1 factory') - await uniswapFactory.initializeFactory(uniswapExchangeTemplate.address) - log(`Init Uniswap1 exchange for DATAcoin token ${token.address}`) - await uniswapFactory.createExchange(token.address, { gasLimit: 6000000 }) - log(`Init Uniswap1 exchange for OTHERcoin token ${token2.address}`) - const uniswapTx = await uniswapFactory.createExchange(token2.address, { gasLimit: 6000000 }) - await uniswapTx.wait() // need wait here to call read methods below - - const datatokenExchangeAddress = await uniswapFactory.getExchange(token.address) - log(`DATAcoin traded at Uniswap1 exchange ${datatokenExchangeAddress}`) - const othertokenExchangeAddress = await uniswapFactory.getExchange(token2.address) - log(`OTHERcoin traded at Uniswap1 exchange ${othertokenExchangeAddress}`) - const datatokenExchange = new Contract(datatokenExchangeAddress, uniswapExchangeAbi, wallet) - const othertokenExchange = new Contract(othertokenExchangeAddress, uniswapExchangeAbi, wallet) - - // wallet starts with 1000 ETH and 100000 of each token - // add 10 ETH liquidity to tokens, set initial exchange rates - const amtEth = parseEther('40') - const amtToken = parseEther('1000') // 1 ETH ~= 10 DATAcoin - const amtToken2 = parseEther('10000') // 1 ETH ~= 100 OTHERcoin - - await token.approve(datatokenExchangeAddress, amtToken) - await token2.approve(othertokenExchangeAddress, amtToken2) - - await datatokenExchange.addLiquidity(amtToken, amtToken, futureTime, { gasLimit: 6000000, value: amtEth }) - await othertokenExchange.addLiquidity(amtToken2, amtToken2, futureTime, { gasLimit: 6000000, value: amtEth }) - - log(`Added liquidity to uniswap exchanges: ${formatEther(amtToken)} DATAcoin, ${formatEther(amtToken2)} OTHERcoin`) - - log(`Deploying NodeRegistry contract 1 (tracker registry) from ${wallet.address}`) - let initialNodes = [] - let initialMetadata = [] - initialNodes.push('0xb9e7cEBF7b03AE26458E32a059488386b05798e8') - initialMetadata.push('{"ws": "ws://10.200.10.1:30301", "http": "http://10.200.10.1:30301"}') - initialNodes.push('0x0540A3e144cdD81F402e7772C76a5808B71d2d30') - initialMetadata.push('{"ws": "ws://10.200.10.1:30302", "http": "http://10.200.10.1:30302"}') - initialNodes.push('0xf2C195bE194a2C91e93Eacb1d6d55a00552a85E2') - initialMetadata.push('{"ws": "ws://10.200.10.1:30303", "http": "http://10.200.10.1:30303"}') - // 1st NodeRegistry deployed here. 2nd below - const trackerNodeRegistry = await deployNodeRegistry(wallet, initialNodes, initialMetadata) - - const ethwei = parseEther('1') - let rate = await datatokenExchange.getTokenToEthInputPrice(ethwei) - log(`1 DATAtoken buys ${formatEther(rate)} ETH`) - rate = await othertokenExchange.getTokenToEthInputPrice(ethwei) - log(`1 OTHERtoken buys ${formatEther(rate)} ETH`) - - // deployment steps based on https://github.com/ensdomains/ens/blob/2a6785c3b5fc27269eb3bb18b9d1245d1f01d6c8/migrations/2_deploy_contracts.js#L30 - log('Deploying ENS') - const ensDeploy = new ContractFactory(ENSRegistry.abi, ENSRegistry.bytecode, wallet) - const ensDeployTx = await ensDeploy.deploy() - const ens = await ensDeployTx.deployed() - log(`ENS deployed at ${ens.address}`) - const rootNode = getRootNodeFromTLD('eth') - log('Deploying FIFSRegistrar') - const fifsDeploy = new ContractFactory(FIFSRegistrar.abi, FIFSRegistrar.bytecode, wallet) - const fifsDeployTx = await fifsDeploy.deploy(ens.address, rootNode.namehash) - const fifs = await fifsDeployTx.deployed() - log(`FIFSRegistrar deployed at ${fifs.address}`) - let tx = await ens.setSubnodeOwner('0x0000000000000000000000000000000000000000000000000000000000000000', rootNode.sha3, fifs.address) - await tx.wait() - const resDeploy = new ContractFactory(PublicResolver.abi, PublicResolver.bytecode, wallet) - const resDeployTx = await resDeploy.deploy(ens.address) - const resolver = await resDeployTx.deployed() - log(`PublicResolver deployed at ${resolver.address}`) - - const domains = ['testdomain1', 'testdomain2'] - const addresses = ['0x4178baBE9E5148c6D5fd431cD72884B07Ad855a0', '0xdC353aA3d81fC3d67Eb49F443df258029B01D8aB'] - for (let i = 0; i < domains.length; i++) { - const domain = domains[i] - const owner = wallet.address - const domainAddress = addresses[i] - const fullname = domain + '.eth' - const fullhash = namehash(fullname) - let tx - - log(`setting up ENS domain ${domain} with owner ${owner}, pointing to address ${domainAddress}`) - tx = await fifs.register(Web3.utils.sha3(domain), owner) - await tx.wait() - log('called regsiter') - - tx = await ens.setResolver(fullhash, resolver.address) - await tx.wait() - log('called setResolver') +async function smartContractInitialization() { + const wallet = await ethersWallet(chainURL, defaultPrivateKey) + const sidechainWallet = await ethersWallet(sidechainURL, defaultPrivateKey) + + // log(`Deploying test DATAv2 from ${wallet.address}`) + // const tokenDeployer = await new ContractFactory(TestTokenJson.abi, TestTokenJson.bytecode, wallet) + // const tokenDeployTx = await tokenDeployer.deploy("Test DATAv2", "\ud83e\udd84") // unicorn + // const token = await tokenDeployTx.deployed() + // log(`New DATAv2 ERC20 deployed at ${token.address}`) + + // log(`Deploying test DATAv2 from ${wallet.address}`) + const tokenDeployer = await new ContractFactory(DATAv2.abi, DATAv2.bytecode, wallet) + const tokenDeployTx = await tokenDeployer.deploy() + const token = await tokenDeployTx.deployed() + log(`New DATAv2 ERC20 deployed at ${token.address}`) + + // log(`Deploying Marketplace1 contract from ${wallet.address}`) + const marketDeployer1 = new ContractFactory(MarketplaceJson.abi, MarketplaceJson.bytecode, wallet) + const marketDeployTx1 = await marketDeployer1.deploy(token.address, wallet.address) + const market1 = await marketDeployTx1.deployed() + log(`Marketplace1 deployed at ${market1.address}`) + + // log(`Deploying Marketplace2 contract from ${wallet.address}`) + const marketDeployer2 = new ContractFactory(Marketplace2Json.abi, Marketplace2Json.bytecode, wallet) + const marketDeployTx2 = await marketDeployer2.deploy(token.address, wallet.address, market1.address) + const market = await marketDeployTx2.deployed() + log(`Marketplace2 deployed at ${market.address}`) + + log(`Deploying Uniswap Factory contract from ${wallet.address}`) + const uniswapFactoryDeployer = new ContractFactory(uniswapFactoryAbi, uniswapFactoryBytecode, wallet) + const uniswapFactoryDeployTx = await uniswapFactoryDeployer.deploy() + const uniswapFactory = await uniswapFactoryDeployTx.deployed() + log(`Uniswap factory deployed at ${uniswapFactory.address}`) + + // log(`Deploying Uniswap Exchange template contract from ${wallet.address}`) + const uniswapExchangeDeployer = new ContractFactory(uniswapExchangeAbi, uniswapExchangeBytecode, wallet) + const uniswapExchangeDeployTx = await uniswapExchangeDeployer.deploy() + const uniswapExchangeTemplate = await uniswapExchangeDeployTx.deployed() + log(`Uniswap exchange template deployed at ${uniswapExchangeTemplate.address}`) + + // log(`Deploying UniswapAdaptor contract from ${wallet.address}`) + const uniswapAdaptorDeployer = new ContractFactory(UniswapAdaptor.abi, UniswapAdaptor.bytecode, wallet) + const uniswapAdaptorDeployTx = await uniswapAdaptorDeployer.deploy(market.address, uniswapFactory.address, token.address) + const uniswapAdaptor = await uniswapAdaptorDeployTx.deployed() + log(`UniswapAdaptor deployed at ${uniswapAdaptor.address}`) + + // another ERC20 that's not datacoin for testing buy with Uniswap + // log(`Deploying test OTHERcoin from ${wallet.address}`) + const tokenDeployer2 = new ContractFactory(TestTokenJson.abi, TestTokenJson.bytecode, wallet) + const tokenDeployTx2 = await tokenDeployer2.deploy('Test OTHERcoin', 'COIN') + const token2 = await tokenDeployTx2.deployed() + log(`Test OTHERcoin deployed at ${token2.address}`) + + // Note: TestToken contract automatically mints 100000 to owner + + log('Add minter: %s', wallet.address) + const addMinterTx = await token.grantRole(id('MINTER_ROLE'), wallet.address) + await addMinterTx.wait() + + log(`Minting ${mintTokenAmount} DATAv2 tokens to following addresses:`) + for (const address of privateKeys.map(computeAddress)) { + log(' %s', address) + await token.mint(address, mintTokenAmount) + } - // Ethers wont call the 2-arg setAddr. 60 is default = COIN_TYPE_ETH. - // see https://github.com/ensdomains/resolvers/blob/master/contracts/profiles/AddrResolver.sol - tx = await resolver.setAddr(fullhash, 60, domainAddress) + log('Init Uniswap1 factory') + await uniswapFactory.initializeFactory(uniswapExchangeTemplate.address) + log(`Init Uniswap1 exchange for DATAcoin token ${token.address}`) + await uniswapFactory.createExchange(token.address, { gasLimit: 6000000 }) + log(`Init Uniswap1 exchange for OTHERcoin token ${token2.address}`) + const uniswapTx = await uniswapFactory.createExchange(token2.address, { gasLimit: 6000000 }) + await uniswapTx.wait() // need wait here to call read methods below + + const datatokenExchangeAddress = await uniswapFactory.getExchange(token.address) + log(`DATAcoin traded at Uniswap1 exchange ${datatokenExchangeAddress}`) + const othertokenExchangeAddress = await uniswapFactory.getExchange(token2.address) + log(`OTHERcoin traded at Uniswap1 exchange ${othertokenExchangeAddress}`) + const datatokenExchange = new Contract(datatokenExchangeAddress, uniswapExchangeAbi, wallet) + const othertokenExchange = new Contract(othertokenExchangeAddress, uniswapExchangeAbi, wallet) + + // wallet starts with 1000 ETH and 100000 of each token + // add 10 ETH liquidity to tokens, set initial exchange rates + const amtEth = parseEther('40') + const amtToken = parseEther('1000') // 1 ETH ~= 10 DATAcoin + const amtToken2 = parseEther('10000') // 1 ETH ~= 100 OTHERcoin + + await token.approve(datatokenExchangeAddress, amtToken) + await token2.approve(othertokenExchangeAddress, amtToken2) + + await datatokenExchange.addLiquidity(amtToken, amtToken, futureTime, { gasLimit: 6000000, value: amtEth }) + await othertokenExchange.addLiquidity(amtToken2, amtToken2, futureTime, { gasLimit: 6000000, value: amtEth }) + + log(`Added liquidity to uniswap exchanges: ${formatEther(amtToken)} DATAcoin, ${formatEther(amtToken2)} OTHERcoin`) + + log(`Deploying NodeRegistry contract 1 (tracker registry) from ${wallet.address}`) + let initialNodes = [] + let initialMetadata = [] + initialNodes.push('0xb9e7cEBF7b03AE26458E32a059488386b05798e8') + initialMetadata.push('{"ws": "ws://10.200.10.1:30301", "http": "http://10.200.10.1:30301"}') + initialNodes.push('0x0540A3e144cdD81F402e7772C76a5808B71d2d30') + initialMetadata.push('{"ws": "ws://10.200.10.1:30302", "http": "http://10.200.10.1:30302"}') + initialNodes.push('0xf2C195bE194a2C91e93Eacb1d6d55a00552a85E2') + initialMetadata.push('{"ws": "ws://10.200.10.1:30303", "http": "http://10.200.10.1:30303"}') + // 1st NodeRegistry deployed here. 2nd below + const trackerNodeRegistry = await deployNodeRegistry(wallet, initialNodes, initialMetadata) + + const ethwei = parseEther('1') + let rate = await datatokenExchange.getTokenToEthInputPrice(ethwei) + log(`1 DATAtoken buys ${formatEther(rate)} ETH`) + rate = await othertokenExchange.getTokenToEthInputPrice(ethwei) + log(`1 OTHERtoken buys ${formatEther(rate)} ETH`) + + // deployment steps based on https://github.com/ensdomains/ens/blob/2a6785c3b5fc27269eb3bb18b9d1245d1f01d6c8/migrations/2_deploy_contracts.js#L30 + log('Deploying ENS') + const ensDeploy = new ContractFactory(ENSRegistry.abi, ENSRegistry.bytecode, wallet) + const ensDeployTx = await ensDeploy.deploy() + const ens = await ensDeployTx.deployed() + log(`ENS deployed at ${ens.address}`) + const rootNode = getRootNodeFromTLD('eth') + log('Deploying FIFSRegistrar') + const fifsDeploy = new ContractFactory(FIFSRegistrar.abi, FIFSRegistrar.bytecode, wallet) + const fifsDeployTx = await fifsDeploy.deploy(ens.address, rootNode.namehash) + const fifs = await fifsDeployTx.deployed() + log(`FIFSRegistrar deployed at ${fifs.address}`) + let tx = await ens.setSubnodeOwner('0x0000000000000000000000000000000000000000000000000000000000000000', rootNode.sha3, fifs.address) await tx.wait() - log(`called setAddr. done registering ${fullname} as ${domainAddress}`) - - // transfer ownership - tx = await ens.setOwner(fullhash, addresses[i]) + const resDeploy = new ContractFactory(PublicResolver.abi, PublicResolver.bytecode, wallet) + const resDeployTx = await resDeploy.deploy(ens.address) + const resolver = await resDeployTx.deployed() + log(`PublicResolver deployed at ${resolver.address}`) + + const domains = ['testdomain1', 'testdomain2'] + const addresses = ['0x4178baBE9E5148c6D5fd431cD72884B07Ad855a0', '0xdC353aA3d81fC3d67Eb49F443df258029B01D8aB'] + for (let i = 0; i < domains.length; i++) { + const domain = domains[i] + const owner = wallet.address + const domainAddress = addresses[i] + const fullname = domain + '.eth' + const fullhash = namehash(fullname) + let tx + + log(`setting up ENS domain ${domain} with owner ${owner}, pointing to address ${domainAddress}`) + tx = await fifs.register(Web3.utils.sha3(domain), owner) + await tx.wait() + log('called regsiter') + + tx = await ens.setResolver(fullhash, resolver.address) + await tx.wait() + log('called setResolver') + + // Ethers wont call the 2-arg setAddr. 60 is default = COIN_TYPE_ETH. + // see https://github.com/ensdomains/resolvers/blob/master/contracts/profiles/AddrResolver.sol + tx = await resolver.setAddr(fullhash, 60, domainAddress) + await tx.wait() + log(`called setAddr. done registering ${fullname} as ${domainAddress}`) + + // transfer ownership + tx = await ens.setOwner(fullhash, addresses[i]) + await tx.wait() + log(`transferred ownership to ${addresses[i]}`) + } + log('ENS init complete') + + // deploy 2nd NodeRegistry: + log(`Deploying NodeRegistry contract 2 (storage node registry) to sidechain from ${sidechainWallet.address}`) + initialNodes = [] + initialMetadata = [] + initialNodes.push('0xde1112f631486CfC759A50196853011528bC5FA0') + initialMetadata.push('{"http": "http://10.200.10.1:8891"}') + const storageNodeRegistry = await deployNodeRegistry(sidechainWallet, initialNodes, initialMetadata) + + log('deploy Uniswap2 mainnet') + const router = await deployUniswap2(wallet) + log('deploy Uniswap2 sidechain') + const uniswapRouterSidechain = await deployUniswap2(sidechainWallet) + + tx = await token.approve(router.address, amtToken) + // await tx.wait() + tx = await token2.approve(router.address, amtToken2) await tx.wait() - log(`transferred ownership to ${addresses[i]}`) - } - log('ENS init complete') - - // deploy 2nd NodeRegistry: - log(`Deploying NodeRegistry contract 2 (storage node registry) to sidechain from ${sidechainWallet.address}`) - initialNodes = [] - initialMetadata = [] - initialNodes.push('0xde1112f631486CfC759A50196853011528bC5FA0') - initialMetadata.push('{"http": "http://10.200.10.1:8891"}') - const storageNodeRegistry = await deployNodeRegistry(sidechainWallet, initialNodes, initialMetadata) - - log('deploy Uniswap2 mainnet') - const router = await deployUniswap2(wallet) - log('deploy Uniswap2 sidechain') - const uniswapRouterSidechain = await deployUniswap2(sidechainWallet) - - tx = await token.approve(router.address, amtToken) - // await tx.wait() - tx = await token2.approve(router.address, amtToken2) - await tx.wait() - log('addLiquidity Uniswap2 mainnet') - tx = await router.addLiquidity(token.address, token2.address, amtToken, amtToken2, 0, 0, wallet.address, futureTime) - - let cf = new ContractFactory(Uniswap2Adapter.abi, Uniswap2Adapter.bytecode, wallet) - let dtx = await cf.deploy(market.address, router.address, token.address) - const uniswap2Adapter = await dtx.deployed() - log(`Uniswap2Adapter ${uniswap2Adapter.address}`) - - cf = new ContractFactory(BinanceAdapter.abi, BinanceAdapter.bytecode, sidechainWallet) - // constructor(address dataCoin_, address honeyswapRouter_, address bscBridge_, address convertToCoin_, address liquidityToken_) public { - dtx = await cf.deploy(sidechainDataCoin, uniswapRouterSidechain.address, sidechainSingleTokenMediator, sidechainDataCoin, sidechainDataCoin) - const binanceAdapter = await dtx.deployed() - log(`sidechain binanceAdapter ${binanceAdapter.address}`) - - const { streamRegistry, ensCache, chainlinkOracle, linkToken } = await deployStreamRegistry() - - // TODO: move these deployments to the top once address change pains are solved - log(`Deploying test DATAv1 from ${wallet.address}`) - const oldTokenDeployer = new ContractFactory(OldTokenJson.abi, OldTokenJson.bytecode, wallet) - const oldTokenDeployTx = await oldTokenDeployer.deploy('Test DATAv1', '\uD83D\uDC34', 0, 18, true) // horse face - const oldToken = await oldTokenDeployTx.deployed() - log(`Old DATAv1 ERC20 deployed at ${oldToken.address}`) - - log(`Deploying DataTokenMigrator from ${wallet.address}`) - const migratorDeployer = new ContractFactory(DataTokenMigrator.abi, DataTokenMigrator.bytecode, wallet) - const migratorDeployTx = await migratorDeployer.deploy(oldToken.address, token.address) - const migrator = await migratorDeployTx.deployed() - log(`New DataTokenMigrator at ${migrator.address}`) - - log('Set up the old token and mint %s test-DATAv1 (in total) to following:', oldSupply) - await oldToken.setReleaseAgent(wallet.address) - const mintAgentTx = await oldToken.setMintAgent(wallet.address, true) - await mintAgentTx.wait() - for (const address of privateKeys.map(computeAddress)) { - log(' ' + address) - await oldToken.mint(address, mintTokenAmount) - } - await oldToken.mint(wallet.address, oldSupply.sub(mintTokenAmount.mul(privateKeys.length))) - const oldTokenReleaseTx = await oldToken.releaseTokenTransfer() - await oldTokenReleaseTx.wait() - log('Old token getUpgradeState: %d, expected: 2', await oldToken.getUpgradeState()) - - log('Set migrator as UpgradeAgent => start test-DATAv1 upgrade') - const upgradeTx1 = await token.mint(migrator.address, await oldToken.totalSupply()) - await upgradeTx1.wait() - const upgradeTx2 = await oldToken.setUpgradeAgent(migrator.address) - await upgradeTx2.wait() - log('Old token getUpgradeState: %d, expected: 3', await oldToken.getUpgradeState()) - - log(`Minting ${mintTokenAmount} DATAv2 tokens to following addresses:`) - const keys = {} - for (const [projectName, testWalletCount] of projects) { - keys[projectName] = [] - for (let i = 0; i < testWalletCount; i++) { - const testWallet = getTestWallet(projectName, i) - log(' %s (%s #%d)', testWallet.address, projectName, i) - await token.mint(testWallet.address, mintTokenAmount) - keys[projectName].push(testWallet.privateKey) + log('addLiquidity Uniswap2 mainnet') + tx = await router.addLiquidity(token.address, token2.address, amtToken, amtToken2, 0, 0, wallet.address, futureTime) + + let cf = new ContractFactory(Uniswap2Adapter.abi, Uniswap2Adapter.bytecode, wallet) + let dtx = await cf.deploy(market.address, router.address, token.address) + const uniswap2Adapter = await dtx.deployed() + log(`Uniswap2Adapter ${uniswap2Adapter.address}`) + + cf = new ContractFactory(BinanceAdapter.abi, BinanceAdapter.bytecode, sidechainWallet) + // constructor(address dataCoin_, address honeyswapRouter_, address bscBridge_, address convertToCoin_, address liquidityToken_) public { + dtx = await cf.deploy(sidechainDataCoin, uniswapRouterSidechain.address, sidechainSingleTokenMediator, sidechainDataCoin, sidechainDataCoin) + const binanceAdapter = await dtx.deployed() + log(`sidechain binanceAdapter ${binanceAdapter.address}`) + + const { streamRegistry, ensCache, chainlinkOracle, linkToken } = await deployStreamRegistry() + + // TODO: move these deployments to the top once address change pains are solved + log(`Deploying test DATAv1 from ${wallet.address}`) + const oldTokenDeployer = new ContractFactory(OldTokenJson.abi, OldTokenJson.bytecode, wallet) + const oldTokenDeployTx = await oldTokenDeployer.deploy('Test DATAv1', '\uD83D\uDC34', 0, 18, true) // horse face + const oldToken = await oldTokenDeployTx.deployed() + log(`Old DATAv1 ERC20 deployed at ${oldToken.address}`) + + log(`Deploying DataTokenMigrator from ${wallet.address}`) + const migratorDeployer = new ContractFactory(DataTokenMigrator.abi, DataTokenMigrator.bytecode, wallet) + const migratorDeployTx = await migratorDeployer.deploy(oldToken.address, token.address) + const migrator = await migratorDeployTx.deployed() + log(`New DataTokenMigrator at ${migrator.address}`) + + log('Set up the old token and mint %s test-DATAv1 (in total) to following:', oldSupply) + await oldToken.setReleaseAgent(wallet.address) + const mintAgentTx = await oldToken.setMintAgent(wallet.address, true) + await mintAgentTx.wait() + for (const address of privateKeys.map(computeAddress)) { + log(' ' + address) + await oldToken.mint(address, mintTokenAmount) } - } - - const streamStorageRegistry = await deployStreamStorageRegistry(sidechainWallet, storageNodeRegistry.address, streamRegistry) - // put additions here - - // all TXs should now be confirmed: - log('Loading test products from core') - let products - try { - products = await getProducts() - } catch (e) { - console.error(e) - process.exit(1) - } - - log(`Adding ${products.length} products to Marketplace`) - for (const p of products) { - // free products not supported - if (p.pricePerSecond === 0) { - continue + await oldToken.mint(wallet.address, oldSupply.sub(mintTokenAmount.mul(privateKeys.length))) + const oldTokenReleaseTx = await oldToken.releaseTokenTransfer() + await oldTokenReleaseTx.wait() + log('Old token getUpgradeState: %d, expected: 2', await oldToken.getUpgradeState()) + + log('Set migrator as UpgradeAgent => start test-DATAv1 upgrade') + const upgradeTx1 = await token.mint(migrator.address, await oldToken.totalSupply()) + await upgradeTx1.wait() + const upgradeTx2 = await oldToken.setUpgradeAgent(migrator.address) + await upgradeTx2.wait() + log('Old token getUpgradeState: %d, expected: 3', await oldToken.getUpgradeState()) + + log(`Minting ${mintTokenAmount} DATAv2 tokens to following addresses:`) + const keys = {} + for (const [projectName, testWalletCount] of projects) { + keys[projectName] = [] + for (let i = 0; i < testWalletCount; i++) { + const testWallet = getTestWallet(projectName, i) + log(' %s (%s #%d)', testWallet.address, projectName, i) + await token.mint(testWallet.address, mintTokenAmount) + keys[projectName].push(testWallet.privateKey) + } + } + + const streamStorageRegistry = await deployStreamStorageRegistry(sidechainWallet, storageNodeRegistry.address, streamRegistry) + // put additions here + + // all TXs should now be confirmed: + log('Loading test products from core') + let products + try { + products = await getProducts() + } catch (e) { + console.error(e) + process.exit(1) } - console.log(`create ${p.id}`) - const tx = await market.createProduct(`0x${p.id}`, p.name, wallet.address, p.pricePerSecond, - p.priceCurrency === 'DATA' ? 0 : 1, p.minimumSubscriptionInSeconds) - // await tx.wait(1) - if (p.state === 'NOT_DEPLOYED') { - console.log(`delete ${p.id}`) - await tx.wait(1) - await market.deleteProduct(`0x${p.id}`) - // await tx2.wait(1) + + log(`Adding ${products.length} products to Marketplace`) + for (const p of products) { + // free products not supported + if (p.pricePerSecond === 0) { + continue + } + log(`create ${p.id}`) + try { + await market.createProduct(`0x${p.id}`, p.name, wallet.address, p.pricePerSecond, + p.priceCurrency === 'DATA' ? 0 : 1, p.minimumSubscriptionInSeconds) + // TODO: maybe deleteProduct that are NOT_DEPLOYED + // That step was removed because market.deleteProduct hung for some reason + } catch (e) { + log(`Create product failed: ${e}`) + } } - } - - // DataUnion and bridge (AMB) configs will be added in deploy_du2_factories.js and combined with this in Dockerfile into config.json - const addressJsonString = JSON.stringify({ - mainnet: { - url: 'http://10.200.10.1:8545', - chainId: 8995, - coreApi: '0xf3E5A65851C3779f468c9EcB32E6f25D9D68601a', - - token: token.address, - oldToken: oldToken.address, - otherToken: token2.address, - nodeRegistry: trackerNodeRegistry.address, - - // Uniswap adapters (for Marketplace) - uniswapAdapter: uniswapAdaptor.address, - uniswapFactory: uniswapFactory.address, - uniswap2Adapter: uniswap2Adapter.address, - uniswap2Router: router.address, - - // ENS - ens: ens.address, - fifs: fifs.address, - ensResolver: resolver.address - }, - xdai: { - url: 'http://10.200.10.1:8546', - chainId: 8997, - - streamRegistry: streamRegistry.address, - storageNodeRegistry: storageNodeRegistry.address, - streamStorageRegistry: streamStorageRegistry.address, - - // DU2, for withdrawing from Data Union to other chains (e.g. BSC) - binanceAdapter: binanceAdapter.address, - uniswap2Router: uniswapRouterSidechain.address, - - // ENS caching in sidechain, to be able to tell who owns an ENS name (and has the right to create streams to that namespace) - ensCache, - chainlinkOracle, - linkToken - }, - keys - }) - console.log(addressJsonString) - fs.writeFileSync('addresses.json', addressJsonString) + + // DataUnion and bridge (AMB) configs will be added in deploy_du2_factories.js and combined with this in Dockerfile into config.json + const addressJsonString = JSON.stringify({ + mainnet: { + url: 'http://10.200.10.1:8545', + chainId: 8995, + coreApi: '0xf3E5A65851C3779f468c9EcB32E6f25D9D68601a', + + token: token.address, + oldToken: oldToken.address, + otherToken: token2.address, + nodeRegistry: trackerNodeRegistry.address, + + // Uniswap adapters (for Marketplace) + uniswapAdapter: uniswapAdaptor.address, + uniswapFactory: uniswapFactory.address, + uniswap2Adapter: uniswap2Adapter.address, + uniswap2Router: router.address, + + // ENS + ens: ens.address, + fifs: fifs.address, + ensResolver: resolver.address + }, + xdai: { + url: 'http://10.200.10.1:8546', + chainId: 8997, + + streamRegistry, + storageNodeRegistry: storageNodeRegistry.address, + streamStorageRegistry: streamStorageRegistry.address, + + // DU2, for withdrawing from Data Union to other chains (e.g. BSC) + binanceAdapter: binanceAdapter.address, + uniswap2Router: uniswapRouterSidechain.address, + + // ENS caching in sidechain, to be able to tell who owns an ENS name (and has the right to create streams to that namespace) + ensCache, + chainlinkOracle, + linkToken + } + }) + log(addressJsonString) + fs.writeFileSync('addresses.json', addressJsonString) } -smartContractInitialization() +smartContractInitialization().catch(console.error) diff --git a/npm-publish.sh b/npm-publish.sh new file mode 100755 index 0000000..0fc66a3 --- /dev/null +++ b/npm-publish.sh @@ -0,0 +1,5 @@ +#!/bin/bash -eux + +cd npm-package +npm version patch +npm publish diff --git a/package-lock.json b/package-lock.json index 76d3cce..11f2f20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,11 +17,15 @@ "web3": "1.2.4" }, "devDependencies": { + "@babel/eslint-parser": "^7.16.0", "@typescript-eslint/eslint-plugin": "^4.22.1", "@typescript-eslint/parser": "^4.22.1", - "eslint": "^7.25.0", + "eslint": "^7.32.0", + "eslint-config-standard": "^16.0.3", "eslint-config-streamr-ts": "^4.0.1", - "eslint-plugin-promise": "^5.1.0", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^5.1.1", "typescript": "^4.4.4" } }, @@ -34,6 +38,299 @@ "@babel/highlight": "^7.10.4" } }, + "node_modules/@babel/compat-data": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz", + "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "peer": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.0.tgz", + "integrity": "sha512-c+AsYOHjI+FgCa+ifLd8sDXp4U4mjkfFgL9NdQWhuA731kAUJs0WdJIXET4A14EJAR9Jv9FFF/MzPWJfV9Oirw==", + "dev": true, + "dependencies": { + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.0.tgz", + "integrity": "sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { "version": "7.15.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", @@ -43,13 +340,38 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { + "node_modules/@babel/helper-validator-option": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true, + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", + "dev": true, + "peer": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -128,6 +450,105 @@ "node": ">=4" } }, + "node_modules/@babel/parser": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", + "dev": true, + "peer": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template/node_modules/@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", @@ -254,6 +675,12 @@ "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, "node_modules/@types/node": { "version": "12.20.33", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.33.tgz", @@ -622,6 +1049,25 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "node_modules/array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -631,6 +1077,23 @@ "node": ">=8" } }, + "node_modules/array.prototype.flat": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -924,6 +1387,30 @@ } ] }, + "node_modules/browserslist": { + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", + "dev": true, + "peer": true, + "dependencies": { + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, "node_modules/bs58": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", @@ -1049,6 +1536,19 @@ "node": ">=8" } }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1058,6 +1558,17 @@ "node": ">=6" } }, + "node_modules/caniuse-lite": { + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", + "dev": true, + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -1160,6 +1671,16 @@ "node": ">= 0.6" } }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, "node_modules/cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", @@ -1431,6 +1952,18 @@ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1519,6 +2052,13 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "node_modules/electron-to-chromium": { + "version": "1.3.889", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.889.tgz", + "integrity": "sha512-suEUoPTD1mExjL9TdmH7cvEiWJVM2oEiAi+Y1p0QKxI2HcRlT44qDTP2c1aZmVwRemIPYOpxmV7CxQCOWcm4XQ==", + "dev": true, + "peer": true + }, "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -1567,6 +2107,57 @@ "node": ">=8.6" } }, + "node_modules/es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es5-ext": { "version": "0.10.53", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", @@ -1596,6 +2187,16 @@ "ext": "^1.1.2" } }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1664,28 +2265,246 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-standard": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", + "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peerDependencies": { + "eslint": "^7.12.1", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^4.2.1 || ^5.0.0" + } + }, + "node_modules/eslint-config-streamr-ts": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-streamr-ts/-/eslint-config-streamr-ts-4.0.1.tgz", + "integrity": "sha512-rQ662Tlqt1mQDvAJSf1jrMGjuzZF2MXnrc0Ae1RfiQNsAC1fhIABbgTRUa3bV0vW+RQUkpLTp8UHMClKoB3glQ==", + "dev": true, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.22.1", + "@typescript-eslint/parser": "^4.22.1", + "eslint": "^7.25.0", + "eslint-plugin-promise": "^5.1.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", + "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "find-up": "^2.1.0", + "pkg-dir": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.25.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz", + "integrity": "sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.0", + "has": "^1.0.3", + "is-core-module": "^2.7.0", + "is-glob": "^4.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.5", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.11.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "dependencies": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/eslint-config-streamr-ts": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-streamr-ts/-/eslint-config-streamr-ts-4.0.1.tgz", - "integrity": "sha512-rQ662Tlqt1mQDvAJSf1jrMGjuzZF2MXnrc0Ae1RfiQNsAC1fhIABbgTRUa3bV0vW+RQUkpLTp8UHMClKoB3glQ==", + "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^4.22.1", - "@typescript-eslint/parser": "^4.22.1", - "eslint": "^7.25.0", - "eslint-plugin-promise": "^5.1.0" + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-node/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-promise": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz", - "integrity": "sha512-NGmI6BH5L12pl7ScQHbg7tvtk4wPxxj8yPHH47NvSmMtFneC077PSeY3huFj06ZWZvtbfxSPt3RuOQD5XcR4ng==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.1.tgz", + "integrity": "sha512-XgdcdyNzHfmlQyweOPTxmc7pIsS6dE4MvwhXWMQ2Dxs1XAL2GJDilUsjWen6TWik0aSI+zD/PqocZBblcm9rdA==", "dev": true, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -2228,6 +3047,18 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -2313,12 +3144,42 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -2330,6 +3191,22 @@ "node": ">=6" } }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -2461,6 +3338,27 @@ "node": ">=6" } }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2478,6 +3376,18 @@ "node": "*" } }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-to-string-tag-x": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", @@ -2489,6 +3399,21 @@ "node": "*" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -2695,6 +3620,20 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -2703,6 +3642,73 @@ "node": ">= 0.10" } }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2752,6 +3758,18 @@ "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" }, + "node_modules/is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -2761,6 +3779,21 @@ "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", @@ -2777,6 +3810,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-retry-allowed": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", @@ -2785,6 +3834,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -2793,11 +3851,53 @@ "node": ">=0.10.0" } }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -2855,6 +3955,19 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "peer": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", @@ -2881,6 +3994,18 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, + "node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -2951,6 +4076,19 @@ "node": ">= 0.8.0" } }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -3253,6 +4391,13 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true, + "peer": true + }, "node_modules/normalize-url": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", @@ -3284,15 +4429,68 @@ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "engines": { - "node": "*" + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/oboe": { @@ -3355,6 +4553,30 @@ "node": ">=4" } }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/p-timeout": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", @@ -3366,6 +4588,15 @@ "node": ">=4" } }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3403,6 +4634,15 @@ "node": ">= 0.8" } }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -3421,6 +4661,12 @@ "node": ">=8" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -3460,6 +4706,13 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true, + "peer": true + }, "node_modules/picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -3499,6 +4752,18 @@ "node": ">=0.10.0" } }, + "node_modules/pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "dependencies": { + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -3748,6 +5013,19 @@ "node": ">=0.10.0" } }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -4012,6 +5290,20 @@ "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", @@ -4067,6 +5359,16 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -4135,6 +5437,32 @@ "node": ">=8" } }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4147,6 +5475,15 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", @@ -4406,6 +5743,16 @@ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/to-readable-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", @@ -4446,6 +5793,18 @@ "node": ">=0.8" } }, + "node_modules/tsconfig-paths": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", + "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -4550,6 +5909,21 @@ "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", @@ -5089,6 +6463,22 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -5124,84 +6514,309 @@ "xtend": "^4.0.0" } }, - "node_modules/xhr-request": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", - "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", - "dependencies": { - "buffer-to-arraybuffer": "^0.0.5", - "object-assign": "^4.1.1", - "query-string": "^5.0.1", - "simple-get": "^2.7.0", - "timed-out": "^4.0.1", - "url-set-query": "^1.0.0", - "xhr": "^2.0.4" + "node_modules/xhr-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "dependencies": { + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" + } + }, + "node_modules/xhr-request-promise": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", + "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", + "dependencies": { + "xhr-request": "^1.1.0" + } + }, + "node_modules/xhr2-cookies": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", + "integrity": "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=", + "dependencies": { + "cookiejar": "^2.1.1" + } + }, + "node_modules/xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz", + "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==", + "dev": true, + "peer": true + }, + "@babel/core": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "peer": true, + "requires": { + "@babel/highlight": "^7.16.0" + } + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "peer": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "peer": true + } + } + }, + "@babel/eslint-parser": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.0.tgz", + "integrity": "sha512-c+AsYOHjI+FgCa+ifLd8sDXp4U4mjkfFgL9NdQWhuA731kAUJs0WdJIXET4A14EJAR9Jv9FFF/MzPWJfV9Oirw==", + "dev": true, + "requires": { + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.0.tgz", + "integrity": "sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==", + "dev": true, + "peer": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "peer": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, - "node_modules/xhr-request-promise": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", - "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", - "dependencies": { - "xhr-request": "^1.1.0" + "@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.16.0" } }, - "node_modules/xhr2-cookies": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=", - "dependencies": { - "cookiejar": "^2.1.1" + "@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.16.0" } }, - "node_modules/xmlhttprequest": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", - "engines": { - "node": ">=0.4.0" + "@babel/helper-member-expression-to-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.16.0" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" + "@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.16.0" } }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", - "engines": { - "node": ">=0.10.32" + "@babel/helper-module-transforms": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.16.0" + } }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "@babel/helper-replace-supers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + }, + "@babel/helper-simple-access": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, + "peer": true, "requires": { - "@babel/highlight": "^7.10.4" + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { @@ -5210,13 +6825,32 @@ "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, - "@babel/highlight": { + "@babel/helper-validator-option": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "peer": true + }, + "@babel/helpers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -5279,6 +6913,85 @@ } } }, + "@babel/parser": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", + "dev": true, + "peer": true + }, + "@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "peer": true, + "requires": { + "@babel/highlight": "^7.16.0" + } + } + } + }, + "@babel/traverse": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "peer": true, + "requires": { + "@babel/highlight": "^7.16.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "peer": true + } + } + }, + "@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + } + }, "@eslint/eslintrc": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", @@ -5382,6 +7095,12 @@ "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, "@types/node": { "version": "12.20.33", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.33.tgz", @@ -5633,12 +7352,36 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "array-includes": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, + "array.prototype.flat": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0" + } + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -5889,6 +7632,20 @@ } } }, + "browserslist": { + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", + "dev": true, + "peer": true, + "requires": { + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, "bs58": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", @@ -5984,12 +7741,29 @@ } } }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, + "caniuse-lite": { + "version": "1.0.30001278", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", + "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", + "dev": true, + "peer": true + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -6074,6 +7848,16 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "peer": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, "cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", @@ -6296,6 +8080,15 @@ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -6372,6 +8165,13 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "electron-to-chromium": { + "version": "1.3.889", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.889.tgz", + "integrity": "sha512-suEUoPTD1mExjL9TdmH7cvEiWJVM2oEiAi+Y1p0QKxI2HcRlT44qDTP2c1aZmVwRemIPYOpxmV7CxQCOWcm4XQ==", + "dev": true, + "peer": true + }, "elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -6414,6 +8214,45 @@ "ansi-colors": "^4.1.1" } }, + "es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "es5-ext": { "version": "0.10.53", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", @@ -6443,6 +8282,13 @@ "ext": "^1.1.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "peer": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -6490,16 +8336,186 @@ "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "eslint-config-standard": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", + "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", + "dev": true, + "requires": {} + }, + "eslint-config-streamr-ts": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-streamr-ts/-/eslint-config-streamr-ts-4.0.1.tgz", + "integrity": "sha512-rQ662Tlqt1mQDvAJSf1jrMGjuzZF2MXnrc0Ae1RfiQNsAC1fhIABbgTRUa3bV0vW+RQUkpLTp8UHMClKoB3glQ==", + "dev": true, + "requires": {} + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-module-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", + "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "find-up": "^2.1.0", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.25.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz", + "integrity": "sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.0", + "has": "^1.0.3", + "is-core-module": "^2.7.0", + "is-glob": "^4.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.5", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.11.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "requires": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" }, "dependencies": { "eslint-utils": { @@ -6509,35 +8525,26 @@ "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, - "eslint-config-streamr-ts": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-streamr-ts/-/eslint-config-streamr-ts-4.0.1.tgz", - "integrity": "sha512-rQ662Tlqt1mQDvAJSf1jrMGjuzZF2MXnrc0Ae1RfiQNsAC1fhIABbgTRUa3bV0vW+RQUkpLTp8UHMClKoB3glQ==", - "dev": true, - "requires": {} - }, "eslint-plugin-promise": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz", - "integrity": "sha512-NGmI6BH5L12pl7ScQHbg7tvtk4wPxxj8yPHH47NvSmMtFneC077PSeY3huFj06ZWZvtbfxSPt3RuOQD5XcR4ng==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.1.tgz", + "integrity": "sha512-XgdcdyNzHfmlQyweOPTxmc7pIsS6dE4MvwhXWMQ2Dxs1XAL2GJDilUsjWen6TWik0aSI+zD/PqocZBblcm9rdA==", "dev": true, "requires": {} }, @@ -6980,6 +8987,15 @@ } } }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -7050,12 +9066,36 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "peer": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -7064,6 +9104,16 @@ "pump": "^3.0.0" } }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -7164,6 +9214,21 @@ "har-schema": "^2.0.0" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -7175,6 +9240,12 @@ "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, "has-to-string-tag-x": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", @@ -7183,6 +9254,15 @@ "has-symbol-support-x": "^1.4.1" } }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -7333,11 +9413,65 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -7374,12 +9508,27 @@ "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", @@ -7390,21 +9539,64 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-retry-allowed": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -7456,6 +9648,13 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "peer": true + }, "json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", @@ -7482,6 +9681,15 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -7541,6 +9749,16 @@ "type-check": "~0.4.0" } }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -7781,6 +9999,13 @@ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==" }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true, + "peer": true + }, "normalize-url": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", @@ -7812,6 +10037,41 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, "oboe": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.4.tgz", @@ -7860,6 +10120,24 @@ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, "p-timeout": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", @@ -7868,6 +10146,12 @@ "p-finally": "^1.0.0" } }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -7899,6 +10183,12 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -7911,6 +10201,12 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -7944,6 +10240,13 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true, + "peer": true + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -7968,6 +10271,15 @@ "pinkie": "^2.0.0" } }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -8155,6 +10467,16 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -8363,6 +10685,17 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", @@ -8395,6 +10728,13 @@ "is-fullwidth-code-point": "^3.0.0" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "peer": true + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -8446,6 +10786,26 @@ "strip-ansi": "^6.0.1" } }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -8455,6 +10815,12 @@ "ansi-regex": "^5.0.1" } }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, "strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", @@ -8659,6 +11025,13 @@ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "peer": true + }, "to-readable-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", @@ -8687,6 +11060,18 @@ "punycode": "^2.1.1" } }, + "tsconfig-paths": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", + "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -8763,6 +11148,18 @@ "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, "unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", @@ -9218,6 +11615,19 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", diff --git a/package.json b/package.json index c3a5af7..cfcaa59 100644 --- a/package.json +++ b/package.json @@ -18,11 +18,15 @@ "web3": "1.2.4" }, "devDependencies": { - "eslint-config-streamr-ts": "^4.0.1", - "eslint": "^7.25.0", - "eslint-plugin-promise": "^5.1.0", + "@babel/eslint-parser": "^7.16.0", "@typescript-eslint/eslint-plugin": "^4.22.1", "@typescript-eslint/parser": "^4.22.1", + "eslint": "^7.32.0", + "eslint-config-standard": "^16.0.3", + "eslint-config-streamr-ts": "^4.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^5.1.1", "typescript": "^4.4.4" } } diff --git a/preload_parity_images.sh b/preload_parity_images.sh index bd4dfc6..342480c 100755 --- a/preload_parity_images.sh +++ b/preload_parity_images.sh @@ -26,7 +26,7 @@ sleep 5s docker-compose up -d smart-contracts-init INITSTATUS=`docker wait streamr-dev-smart-contracts-init` docker logs streamr-dev-smart-contracts-init &> $LOG -docker exec streamr-dev-smart-contracts-init /bin/bash -c 'cat config.json' > config.json +cp output/config.json npm-package echo "streamr-dev-smart-contracts-init finished with status $INITSTATUS. Logs in $LOG" test $INITSTATUS -ne 0 && echo "streamr-dev-smart-contracts-init failed" && exit 1 docker exec streamr-dev-parity-sidechain-node0 /bin/bash -c 'mv /home/parity/parity_data /home/parity/parity_data.default' diff --git a/run.sh b/run.sh index 5626392..11b5f7b 100755 --- a/run.sh +++ b/run.sh @@ -1,5 +1,7 @@ #!/bin/bash -eux +# This file is run from Dockerfile, everything happens inside the streamr-dev-smart-contracts-init container. + node index.js ./bridge/deploy_bridge_and_du2.sh @@ -9,4 +11,5 @@ do sleep 5s done -jq -s '.[0] * .[1]' addresses.json bridge/du-addresses.json > config.json +# The resulting config.json is copied out of the container to the host in preload_parity_images.sh +jq -s '.[0] * .[1]' addresses.json bridge/du-addresses.json > output/config.json From 7ab6b3ad7608df8d35e2d005cca7e2535f65df0a Mon Sep 17 00:00:00 2001 From: Christoph-Samuel Pitter Date: Mon, 8 Nov 2021 10:54:30 +0400 Subject: [PATCH 5/6] feat: added npm export package of config.json output file --- npm-package/config.json | 43 ++++++++++++++++++++++++++++++++++++++++ npm-package/index.d.ts | 2 ++ npm-package/index.js | 1 + npm-package/package.json | 9 +++++++++ 4 files changed, 55 insertions(+) create mode 100644 npm-package/config.json create mode 100644 npm-package/index.d.ts create mode 100644 npm-package/index.js create mode 100644 npm-package/package.json diff --git a/npm-package/config.json b/npm-package/config.json new file mode 100644 index 0000000..d7455cf --- /dev/null +++ b/npm-package/config.json @@ -0,0 +1,43 @@ +{ + "mainnet": { + "url": "http://10.200.10.1:8545", + "chainId": 8995, + "coreApi": "0xf3E5A65851C3779f468c9EcB32E6f25D9D68601a", + "token": "0xbAA81A0179015bE47Ad439566374F2Bae098686F", + "oldToken": "0x6d0F3bF9aD2455b4F62f22fFD21317e1E3eEFE5C", + "otherToken": "0x642D2B84A32A9A92FEc78CeAA9488388b3704898", + "nodeRegistry": "0xBFCF120a8fD17670536f1B27D9737B775b2FD4CF", + "uniswapAdapter": "0xE4eA76e830a659282368cA2e7E4d18C4AE52D8B3", + "uniswapFactory": "0xd2D23b73A67208a90CBfEE1381415329954f54E2", + "uniswap2Adapter": "0x0bADa0acE1d16ABf1ce1aAED9Bc7Ce231ECc35b5", + "uniswap2Router": "0xeE1bC9a7BFF1fFD913f4c97B6177D47E804E1920", + "ens": "0x92E8435EB56fD01BF4C79B66d47AC1A94338BB03", + "fifs": "0x57B81a9442805f88c4617B506206531e72d96290", + "ensResolver": "0xBc0c81a318D57ae54dA28DE69184A9c3aE9a1e1c", + "dataUnionFactory": "0x4bbcBeFBEC587f6C4AF9AF9B48847caEa1Fe81dA", + "dataUnionTemplate": "0x7bFBAe10AE5b5eF45e2aC396E0E605F6658eF3Bc", + "tokenMigrator": "0x352328769A92EfD179c6f61b57778868Bb3Ac13b", + "tokenMediator": "0xedD2aa644a6843F2e5133Fe3d6BD3F4080d97D9F", + "amb": "0xaFA0dc5Ad21796C9106a36D68f69aAD69994BB64", + "omnibridge": "" + }, + "xdai": { + "url": "http://10.200.10.1:8546", + "chainId": 8997, + "streamRegistry": "0xa86863053cECFD9f6f861e0Fd39a042238411b75", + "storageNodeRegistry": "0xbAA81A0179015bE47Ad439566374F2Bae098686F", + "streamStorageRegistry": "0xE4eA76e830a659282368cA2e7E4d18C4AE52D8B3", + "binanceAdapter": "0xdc5F6368cd31330adC259386e78604a5E29E9415", + "uniswap2Router": "0xd2D23b73A67208a90CBfEE1381415329954f54E2", + "ensCache": "0xD1d514082ED630687a5DCB85406130eD0745fA06", + "chainlinkOracle": "0xD94D41F23F1D42C51Ab61685e5617BBC858e5871", + "linkToken": "0x3387F44140ea19100232873a5aAf9E46608c791E", + "dataUnionFactory": "0x4A4c4759eb3b7ABee079f832850cD3D0dC48D927", + "dataUnionTemplate": "0x36afc8c9283CC866b8EB6a61C6e6862a83cd6ee8", + "tokenMigrator": "0x1deF1497DF0e103D58Fd14C4f8e0365fe5F94423", + "token": "0x73Be21733CC5D08e1a14Ea9a399fb27DB3BEf8fF", + "tokenMediator": "0xedD2aa644a6843F2e5133Fe3d6BD3F4080d97D9F", + "amb": "0xaFA0dc5Ad21796C9106a36D68f69aAD69994BB64", + "omnibridge": "" + } +} diff --git a/npm-package/index.d.ts b/npm-package/index.d.ts new file mode 100644 index 0000000..9112261 --- /dev/null +++ b/npm-package/index.d.ts @@ -0,0 +1,2 @@ +export const mainnet; +export const xdai; diff --git a/npm-package/index.js b/npm-package/index.js new file mode 100644 index 0000000..5332377 --- /dev/null +++ b/npm-package/index.js @@ -0,0 +1 @@ +module.exports = require("./config.json") diff --git a/npm-package/package.json b/npm-package/package.json new file mode 100644 index 0000000..89b9e08 --- /dev/null +++ b/npm-package/package.json @@ -0,0 +1,9 @@ +{ + "name": "streamr-dev-config", + "version": "1.0.1", + "description": "Addresses of Streamr-related contracts (and other Ethereum configuration) in the Docker dev environment", + "main": "index.js", + "types": "index.d.ts", + "author": "Streamr Network AG", + "license": "MIT" +} From 68cf1030c43f4ca60c7ce585df5e40f9016c8d31 Mon Sep 17 00:00:00 2001 From: Christoph-Samuel Pitter Date: Mon, 8 Nov 2021 11:31:18 +0400 Subject: [PATCH 6/6] fix: trying to fix travis build --- package-lock.json | 1087 ++++++++++++++++++++++----------------------- 1 file changed, 538 insertions(+), 549 deletions(-) diff --git a/package-lock.json b/package-lock.json index 11f2f20..2884a23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,12 +30,16 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, + "peer": true, "dependencies": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { @@ -79,45 +83,6 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/highlight": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "peer": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/eslint-parser": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.0.tgz", @@ -136,15 +101,6 @@ "eslint": "^7.5.0 || ^8.0.0" } }, - "node_modules/@babel/eslint-parser/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", @@ -179,16 +135,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-function-name": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", @@ -379,77 +325,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/parser": { "version": "7.16.2", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", @@ -478,19 +353,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/highlight": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/traverse": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", @@ -512,29 +374,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/highlight": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", @@ -569,6 +408,21 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/eslintrc/node_modules/ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -593,9 +447,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, "node_modules/@nodelib/fs.scandir": { @@ -682,9 +536,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "12.20.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.33.tgz", - "integrity": "sha512-5XmYX2GECSa+CxMYaFsr2mrql71Q4EvHjKS+ox/SiwSdaASMoBIWE6UmZqFO+VX1jIcsYLStI4FFoB6V7FeIYw==" + "version": "12.20.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.36.tgz", + "integrity": "sha512-+5haRZ9uzI7rYqzDznXgkuacqb6LJhAti8mzZKWxIXn/WEtvB+GHVJ7AuMwcN1HMvXOSJcrvA6PPoYHYOYYebA==" }, "node_modules/@types/pbkdf2": { "version": "3.1.0", @@ -734,6 +588,21 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/experimental-utils": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", @@ -842,6 +711,21 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/visitor-keys": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", @@ -906,14 +790,6 @@ "semver": "^6.3.0" } }, - "node_modules/@web3-js/scrypt-shim/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@web3-js/websocket": { "version": "1.0.30", "resolved": "https://registry.npmjs.org/@web3-js/websocket/-/websocket-1.0.30.tgz", @@ -1016,18 +892,15 @@ } }, "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, "node_modules/any-promise": { @@ -1095,9 +968,9 @@ } }, "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dependencies": { "safer-buffer": "~2.1.0" } @@ -1160,9 +1033,9 @@ "dev": true }, "node_modules/base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", "dependencies": { "safe-buffer": "^5.0.1" } @@ -1575,19 +1448,17 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4" } }, "node_modules/chownr": { @@ -1613,21 +1484,18 @@ } }, "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "color-name": "1.1.3" } }, "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "node_modules/combined-stream": { @@ -2053,9 +1921,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "node_modules/electron-to-chromium": { - "version": "1.3.889", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.889.tgz", - "integrity": "sha512-suEUoPTD1mExjL9TdmH7cvEiWJVM2oEiAi+Y1p0QKxI2HcRlT44qDTP2c1aZmVwRemIPYOpxmV7CxQCOWcm4XQ==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true, "peer": true }, @@ -2203,15 +2071,12 @@ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, "node_modules/eslint": { @@ -2489,16 +2354,7 @@ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": ">=4" } }, "node_modules/eslint-plugin-promise": { @@ -2553,6 +2409,76 @@ "node": ">=10" } }, + "node_modules/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/eslint-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", @@ -2577,6 +2503,30 @@ "node": ">=4" } }, + "node_modules/eslint/node_modules/globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/eslint/node_modules/ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -2586,6 +2536,33 @@ "node": ">= 4" } }, + "node_modules/eslint/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", @@ -2635,9 +2612,9 @@ } }, "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" @@ -2656,9 +2633,9 @@ } }, "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" @@ -3257,18 +3234,13 @@ } }, "node_modules/globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, + "peer": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/globby": { @@ -3360,12 +3332,12 @@ } }, "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/has-symbol-support-x": { @@ -3572,9 +3544,9 @@ ] }, "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true, "engines": { "node": ">= 4" @@ -3995,15 +3967,19 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, + "peer": true, "dependencies": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" }, "bin": { "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, "node_modules/jsonfile": { @@ -4089,12 +4065,6 @@ "node": ">=4" } }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -4127,6 +4097,12 @@ "node": ">=10" } }, + "node_modules/lru-cache/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/make-dir": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", @@ -4293,11 +4269,6 @@ "yallist": "^3.0.0" } }, - "node_modules/minipass/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, "node_modules/minizlib": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", @@ -5163,18 +5134,11 @@ } }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "bin": { "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" } }, "node_modules/send": { @@ -5359,6 +5323,39 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -5517,15 +5514,15 @@ } }, "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/swarm-js": { @@ -5612,13 +5609,12 @@ } }, "node_modules/table": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", - "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.3.tgz", + "integrity": "sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==", "dev": true, "dependencies": { "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", @@ -5714,11 +5710,6 @@ } ] }, - "node_modules/tar/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -5805,6 +5796,18 @@ "strip-bom": "^3.0.0" } }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -6569,10 +6572,9 @@ } }, "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yauzl": { "version": "2.10.0", @@ -6586,12 +6588,13 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, + "peer": true, "requires": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { @@ -6621,37 +6624,8 @@ "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "peer": true, - "requires": { - "@babel/highlight": "^7.16.0" - } - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "peer": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "peer": true - } + "semver": "^6.3.0", + "source-map": "^0.5.0" } }, "@babel/eslint-parser": { @@ -6663,14 +6637,6 @@ "eslint-scope": "^5.1.1", "eslint-visitor-keys": "^2.1.0", "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, "@babel/generator": { @@ -6696,15 +6662,6 @@ "@babel/helper-validator-option": "^7.14.5", "browserslist": "^4.16.6", "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "peer": true - } } }, "@babel/helper-function-name": { @@ -6853,64 +6810,6 @@ "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "@babel/parser": { @@ -6930,18 +6829,6 @@ "@babel/code-frame": "^7.16.0", "@babel/parser": "^7.16.0", "@babel/types": "^7.16.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "peer": true, - "requires": { - "@babel/highlight": "^7.16.0" - } - } } }, "@babel/traverse": { @@ -6960,25 +6847,6 @@ "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "peer": true, - "requires": { - "@babel/highlight": "^7.16.0" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "peer": true - } } }, "@babel/types": { @@ -7009,6 +6877,15 @@ "strip-json-comments": "^3.1.1" }, "dependencies": { + "globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -7029,9 +6906,9 @@ } }, "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, "@nodelib/fs.scandir": { @@ -7102,9 +6979,9 @@ "dev": true }, "@types/node": { - "version": "12.20.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.33.tgz", - "integrity": "sha512-5XmYX2GECSa+CxMYaFsr2mrql71Q4EvHjKS+ox/SiwSdaASMoBIWE6UmZqFO+VX1jIcsYLStI4FFoB6V7FeIYw==" + "version": "12.20.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.36.tgz", + "integrity": "sha512-+5haRZ9uzI7rYqzDznXgkuacqb6LJhAti8mzZKWxIXn/WEtvB+GHVJ7AuMwcN1HMvXOSJcrvA6PPoYHYOYYebA==" }, "@types/pbkdf2": { "version": "3.1.0", @@ -7136,6 +7013,17 @@ "regexpp": "^3.1.0", "semver": "^7.3.5", "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@typescript-eslint/experimental-utils": { @@ -7193,6 +7081,17 @@ "is-glob": "^4.0.1", "semver": "^7.3.5", "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@typescript-eslint/visitor-keys": { @@ -7238,13 +7137,6 @@ "requires": { "scryptsy": "^2.1.0", "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } } }, "@web3-js/websocket": { @@ -7325,12 +7217,12 @@ "dev": true }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^2.0.1" + "color-convert": "^1.9.0" } }, "any-promise": { @@ -7383,9 +7275,9 @@ } }, "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "requires": { "safer-buffer": "~2.1.0" } @@ -7439,9 +7331,9 @@ "dev": true }, "base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", "requires": { "safe-buffer": "^5.0.1" } @@ -7770,13 +7662,14 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "chownr": { @@ -7802,18 +7695,18 @@ } }, "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "color-name": "~1.1.4" + "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "combined-stream": { @@ -8166,9 +8059,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.889", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.889.tgz", - "integrity": "sha512-suEUoPTD1mExjL9TdmH7cvEiWJVM2oEiAi+Y1p0QKxI2HcRlT44qDTP2c1aZmVwRemIPYOpxmV7CxQCOWcm4XQ==", + "version": "1.3.890", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", + "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true, "peer": true }, @@ -8295,9 +8188,9 @@ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "eslint": { @@ -8348,6 +8241,55 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, "eslint-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", @@ -8365,11 +8307,44 @@ } } }, + "globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -8532,12 +8507,6 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true } } }, @@ -8608,9 +8577,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -8625,9 +8594,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -9155,13 +9124,11 @@ } }, "globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "requires": { - "type-fest": "^0.20.2" - } + "peer": true }, "globby": { "version": "11.0.4", @@ -9230,9 +9197,9 @@ "dev": true }, "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "has-symbol-support-x": { @@ -9377,9 +9344,9 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true }, "import-fresh": { @@ -9682,12 +9649,13 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, + "peer": true, "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" } }, "jsonfile": { @@ -9759,12 +9727,6 @@ "path-exists": "^3.0.0" } }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -9789,6 +9751,14 @@ "dev": true, "requires": { "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, "make-dir": { @@ -9918,13 +9888,6 @@ "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } } }, "minizlib": { @@ -10578,13 +10541,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "send": { "version": "0.17.1", @@ -10726,6 +10685,32 @@ "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } } }, "source-map": { @@ -10844,12 +10829,12 @@ "dev": true }, "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "has-flag": "^3.0.0" } }, "swarm-js": { @@ -10923,13 +10908,12 @@ } }, "table": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", - "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.3.tgz", + "integrity": "sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==", "dev": true, "requires": { "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", @@ -10982,11 +10966,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" } } }, @@ -11070,6 +11049,17 @@ "json5": "^1.0.1", "minimist": "^1.2.0", "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } } }, "tslib": { @@ -11706,10 +11696,9 @@ "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" }, "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "yauzl": { "version": "2.10.0",